a
    Dg
                     @   s:  d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dlm Z  da!dd Z"G dd dZ#G dd dej$Z$G dd de#ej%Z%G dd de#ej&Z&G dd dej'Z'G dd deZ(dS )    )warn)Group)get_object_or_404redirect)re_pathreverse)cached_property)gettext)gettext_lazy)hooks)TitleColumn)set_query_params)generic)ModelViewSet)HeaderButton)	GroupFormGroupPagePermissionFormSet)RemovedInWagtail70WarningNc                  C   s.   t d u r*tga tdD ]} t |   qt S )NZregister_group_permission_panel)_permission_panel_classesr   r   Z	get_hooksappend)fn r   Y/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/users/views/groups.pyget_permission_panel_classes   s
    r   c                       s4   e Zd Zdd Zdd Zdd Z fddZ  ZS )	PermissionPanelFormsMixinc                 C   sF   i }| j jdv r(|| j j| j jd t| drB|d| ji |S )N)POSTPUT)datafilesobjectinstance)requestmethodupdater   ZFILEShasattrr   )selfclskwargsr   r   r    get_permission_panel_form_kwargs!   s    
z:PermissionPanelFormsMixin.get_permission_panel_form_kwargsc                    s    fddt  D S )Nc                    s    g | ]}|f i   |qS r   )r(   ).0r&   r%   r   r   
<listcomp>2   s   zHPermissionPanelFormsMixin.get_permission_panel_forms.<locals>.<listcomp>)r   r*   r   r*   r   get_permission_panel_forms1   s    
z4PermissionPanelFormsMixin.get_permission_panel_formsc                 C   sX   |   }|  }| rJtdd |D rJ| |}|D ]}|  q8|S | |S d S )Nc                 s   s   | ]}|  V  qd S N)is_valid)r)   panelr   r   r   	<genexpr>:       z9PermissionPanelFormsMixin.process_form.<locals>.<genexpr>)Zget_formr,   r.   allZ
form_validsaveZform_invalid)r%   formpermission_panelsresponser/   r   r   r   process_form7   s    

z&PermissionPanelFormsMixin.process_formc                    sJ   d|vr|   |d< t jf i |}|d D ]}|d  |j7  < q.|S )Nr5   media)r,   superget_context_datar8   )r%   r'   contextr/   	__class__r   r   r:   D   s    z*PermissionPanelFormsMixin.get_context_data)__name__
__module____qualname__r(   r,   r7   r:   __classcell__r   r   r<   r   r       s   r   c                   @   sH   e Zd ZedZedZedZdgZdZdZ	e
dedddd	gZd
S )	IndexViewGroupszAdd a groupzSearch groupsnamegroups   Namezwagtailusers_groups:edit)labelsort_keyZurl_nameN)r>   r?   r@   _
page_titleZadd_item_labelZsearch_box_placeholderZsearch_fieldscontext_object_nameZpaginate_byr   columnsr   r   r   r   rB   Q   s   rB   c                   @   s$   e Zd ZedZedZdd ZdS )
CreateViewz	Add groupzGroup '%(object)s' created.c                 O   s   t  | _|  S z
        Handle POST requests: instantiate a form instance with the passed
        POST variables and then check if it's valid.
        )r   r   r7   r%   r!   argsr'   r   r   r   postg   s    zCreateView.postN)r>   r?   r@   rJ   rK   success_messagerR   r   r   r   r   rN   c   s   rN   c                   @   s4   e Zd ZedZedZdZedd Zdd Z	dS )	EditViewzGroup '%(object)s' updated.z+The group could not be saved due to errors.groupc                 C   s&   t tdttdd| jjiddgS )NzView users in this groupwagtailusers_users:indexrU   user)urlZ	icon_name)r   r	   r   r   r   pkr*   r   r   r   header_buttonsv   s    
zEditView.header_buttonsc                 O   s   |   | _|  S rO   )Z
get_objectr   r7   rP   r   r   r   rR      s    
zEditView.postN)
r>   r?   r@   rJ   rS   error_messagerL   r   rZ   rR   r   r   r   r   rT   q   s   
rT   c                   @   s$   e Zd ZedZedZedZdS )
DeleteViewzGroup '%(object)s' deleted.zDelete groupz+Are you sure you want to delete this group?N)r>   r?   r@   rJ   rS   rK   Zconfirmation_messager   r   r   r   r\      s   r\   c                       s|   e Zd ZdZeZdgZdZdZe	dZ
dZdZeZeZeZeZdZdZed	d
 Z fddZdddZ fddZ  ZS )GroupViewSetrU   rD   FrE   rC   iY  Tzwagtailusers/groups/c                    s    fdd}|S )Nc                    sP   t  d|fd}tt ddtt|dji}td| d| dt t|S )	Nusers)rQ   rV   rU   )rY   z+Accessing the list of users in a group via z is deprecated, use z	 instead.)	r   Zget_url_namer   r   r   rY   r   r   r   )r!   rY   Z
legacy_urlnew_urlr*   r   r   view   s    z%GroupViewSet.users_view.<locals>.viewr   )r%   r`   r   r*   r   
users_view   s    zGroupViewSet.users_viewc                    s   t  jf i dd i|S )NZusage_url_name)r9   get_common_view_kwargs)r%   r'   r<   r   r   rb      s    
z#GroupViewSet.get_common_view_kwargsc                 C   s   t S r-   )r   )r%   Z
for_updater   r   r   get_form_class   s    zGroupViewSet.get_form_classc                    s   t   td| jddg S )Nz(\d+)/users/$r^   )rD   )r9   get_urlpatternsr   ra   r*   r<   r   r   rd      s    zGroupViewSet.get_urlpatterns)F)r>   r?   r@   Ziconr   modelZorderingZadd_to_reference_indexZ	menu_namerJ   Z
menu_labelZ
menu_orderZadd_to_settings_menurB   Zindex_view_classrN   Zadd_view_classrT   Zedit_view_classr\   Zdelete_view_classZcopy_view_enabledZtemplate_prefixpropertyra   rb   rc   rd   rA   r   r   r<   r   r]      s&   

r]   ))warningsr   Zdjango.contrib.auth.modelsr   Zdjango.shortcutsr   r   Zdjango.urlsr   r   Zdjango.utils.functionalr   Zdjango.utils.translationr	   r
   rJ   Zwagtailr   Zwagtail.admin.ui.tablesr   Zwagtail.admin.utilsr   Zwagtail.admin.viewsr   Zwagtail.admin.viewsets.modelr   Zwagtail.admin.widgets.buttonr   Zwagtail.users.formsr   r   Zwagtail.utils.deprecationr   r   r   r   rB   rN   rT   r\   r]   r   r   r   r   <module>   s,   
1