o
    h
                     @   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 )Nregister_group_permission_panel)_permission_panel_classesr   r   	get_hooksappend)fn r   Z/var/www/html/ndineBlogger/venv/lib/python3.10/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r!|d| ji |S )N)POSTPUT)datafilesobjectinstance)requestmethodupdater   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 | ]}|d 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   sT   |   }|  }| r%tdd |D r%| |}|D ]}|  q|S | |S )Nc                 s   s    | ]}|  V  qd S N)is_valid)r,   panelr   r   r   	<genexpr>:   s    z9PermissionPanelFormsMixin.process_form.<locals>.<genexpr>)get_formr/   r1   all
form_validsaveform_invalid)r(   formpermission_panelsresponser2   r   r   r   process_form7   s   


z&PermissionPanelFormsMixin.process_formc                    sJ   d|vr
|   |d< t jdi |}|d D ]}|d  |j7  < q|S )Nr:   mediar   )r/   superget_context_datar=   )r(   r*   contextr2   	__class__r   r   r?   D   s   z*PermissionPanelFormsMixin.get_context_data)__name__
__module____qualname__r+   r/   r<   r?   __classcell__r   r   rA   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_keyurl_nameN)rC   rD   rE   _
page_titleadd_item_labelsearch_box_placeholdersearch_fieldscontext_object_namepaginate_byr   columnsr   r   r   r   rG   Q   s    rG   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!   r<   r(   r#   argsr*   r   r   r   postg   s   zCreateView.postN)rC   rD   rE   rP   rQ   success_messager\   r   r   r   r   rX   c   s    rX   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:indexr_   user)url	icon_name)r   r	   r   r   r!   pkr-   r   r   r   header_buttonsv   s   
zEditView.header_buttonsc                 O   s   |   | _|  S rY   )
get_objectr!   r<   rZ   r   r   r   r\      s   
zEditView.postN)
rC   rD   rE   rP   r]   error_messagerU   r   re   r\   r   r   r   r   r^   q   s    
r^   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)rC   rD   rE   rP   r]   rQ   confirmation_messager   r   r   r   rh      s    rh   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 )GroupViewSetr_   rI   FrJ   rH   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)r[   r`   r_   )rd   z+Accessing the list of users in a group via z is deprecated, use z	 instead.)	r   get_url_namer   r   r   rd   r   r   r   )r#   rd   
legacy_urlnew_urlr-   r   r   view   s   z%GroupViewSet.users_view.<locals>.viewr   )r(   ro   r   r-   r   
users_view   s   zGroupViewSet.users_viewc                    s   t  jdi dd i|S )Nusage_url_namer   )r>   get_common_view_kwargs)r(   r*   rA   r   r   rr      s   
z#GroupViewSet.get_common_view_kwargsc                 C   s   t S r0   )r   )r(   
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/$rk   )rI   )r>   get_urlpatternsr   rp   r-   rA   r   r   ru      s   zGroupViewSet.get_urlpatterns)F)rC   rD   rE   iconr   modelorderingadd_to_reference_index	menu_namerP   
menu_label
menu_orderadd_to_settings_menurG   index_view_classrX   add_view_classr^   edit_view_classrh   delete_view_classcopy_view_enabledtemplate_prefixpropertyrp   rr   rt   ru   rF   r   r   rA   r   rj      s(    

rj   ))warningsr   django.contrib.auth.modelsr   django.shortcutsr   r   django.urlsr   r   django.utils.functionalr   django.utils.translationr	   r
   rP   wagtailr   wagtail.admin.ui.tablesr   wagtail.admin.utilsr   wagtail.admin.viewsr   wagtail.admin.viewsets.modelr   wagtail.admin.widgets.buttonr   wagtail.users.formsr   r   wagtail.utils.deprecationr   r   r   r   rG   rX   r^   rh   rj   r   r   r   r   <module>   s.    
1