o
    a"<fO%                     @   sX  d dl 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 eed
r<ejrIe d  dkrIejd G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eeZ G d!d" d"eZ!G d#d$ d$eZ"dS )%    N)get_version)settings)admin)model_format_dict)BLANK_CHOICE_DASH)template_localtime)ugettext_lazy)ExcelResponse$DJANGO_ADMIN_DISABLE_DELETE_SELECTED   delete_selectedc                   @   s   e Zd ZefddZdS )AdvancedActionsModelAdminc           	      C   sb   t | dr| jng }g | }t| |D ]\}}}||v r q||t| j f}|| q|S )zq
        Return a list of choices for use in a form object.  Each choice is a tuple (name, description).
        actions_exclude)hasattrr   six
itervaluesget_actionsr   optsappend)	selfrequestdefault_choicesr   choicesfuncnamedescriptionchoice r   K/var/www/html/kck/venv/lib/python3.10/site-packages/django_admin/djadmin.pyget_action_choices$   s   z,AdvancedActionsModelAdmin.get_action_choicesN)__name__
__module____qualname__r   r   r   r   r   r   r   #   s    r   c                   @   $   e Zd ZdgZdd Zede_dS )DeleteModelAdminoverride_delete_selectedc                 C   s   |D ]}|  || qd S N)delete_model)
modeladminr   querysetqueryr   r   r   r%   5   s   z)DeleteModelAdmin.override_delete_selectedz'Delete selected %(verbose_name_plural)sN)r    r!   r"   actionsr%   _short_descriptionr   r   r   r   r$   2       r$   c                   @   r#   )ExportExcelModelAdminexport_excelc                 C   s4   t tdrtjpt | do| j}t|| jjj|dS )NDJANGO_EXCEL_RESPONSE	force_csvoutput_namer2   )r   r   r1   r2   r	   model_metaverbose_name_plural)r(   r   r)   r2   r   r   r   r0   ?   s    z"ExportExcelModelAdmin.export_excelz0Export selected %(verbose_name_plural)s as ExcelN)r    r!   r"   r+   r0   r,   r-   r   r   r   r   r/   <   r.   r/   c                   @   s4   e Zd ZdgZdd Zdd Zdd Zede_d	S )
AdvancedExportExcelModelAdminadvanced_export_excelc                 C   s4   d |}tt||rt|| S tt||S )Nzget_{0}_display)formatunicoder   getattrr   )r(   r*   field	foo_fieldr   r   r   
excel_itemI   s   
*z(AdvancedExportExcelModelAdmin.excel_itemc                    s0    fdd|D }|r|t  | S |S )Nc                    s   g | ]}  |qS r   )r?   .0r=   r(   r*   r   r   
<listcomp>N   s    z<AdvancedExportExcelModelAdmin.excel_data.<locals>.<listcomp>)listadd_extra_excel_fields)r(   r   r*   model_fieldshas_extra_excel_fieldsr?   r   rB   r   
excel_dataM   s   z(AdvancedExportExcelModelAdmin.excel_datac           
         s   t d}t d}t d}t d}t d |r tjn	dd jjjD |r5fddD |r:jn
 rCtj n}|rPfd	d|D n|}|g}| fd
d|D 7 }t tdrktj	prt dorj
}	t|jjj|	dS )Nexcel_headersexcel_headers_mappingexcel_fieldsexcel_fields_excludeextra_excel_fieldsc                 S   s   g | ]}|j qS r   r   rA   fr   r   r   rC   X   s    zGAdvancedExportExcelModelAdmin.advanced_export_excel.<locals>.<listcomp>c                    s   g | ]}|t  jvr|qS r   )setrL   r@   r(   r   r   rC   Z   s    c                    s   g | ]
} j |p|qS r   )rJ   get)rA   headerrR   r   r   rC   ]       c                    s   g | ]
} | qS r   )rH   )rA   r*   rG   rF   r(   r   r   r   rC   `   rU   r1   r2   r3   )r   rD   rK   r5   r6   fieldsrI   rM   r   r1   r2   r	   r7   )
r(   r   r)   has_excel_headershas_excel_headers_mappinghas_excel_fieldshas_excel_fields_excluderI   rH   r2   r   rV   r   r9   Q   s   




"  z3AdvancedExportExcelModelAdmin.advanced_export_excelz9Advanced Export selected %(verbose_name_plural)s as ExcelN)	r    r!   r"   r+   r?   rH   r9   r,   r-   r   r   r   r   r8   F   s    r8   c                   @      e Zd ZdZdddZdS )ReadonlyModelAdminz Readonly for Update. Nc                 C   s\   t | dsd| _|r"tt| jtdd | jjjD t| j B S tt| jt| j S )Nreadonly_fields_excluder   c                 s       | ]}|j V  qd S r&   rN   rO   r   r   r   	<genexpr>o       z9ReadonlyModelAdmin.get_readonly_fields.<locals>.<genexpr>r   r^   tuplerQ   readonly_fieldsr5   r6   rW   r   r   objr   r   r   get_readonly_fieldsk   s
   
0z&ReadonlyModelAdmin.get_readonly_fieldsr&   r    r!   r"   __doc__rg   r   r   r   r   r]   i       r]   c                   @   r\   )Readonly2ModelAdminz Readonly for Add/Update. Nc                 C   s@   t | dsd| _tt| jtdd | jjjD t| j B S )Nr^   r   c                 s   r_   r&   rN   rO   r   r   r   r`   x   ra   z:Readonly2ModelAdmin.get_readonly_fields.<locals>.<genexpr>rb   re   r   r   r   rg   u   s   
0z'Readonly2ModelAdmin.get_readonly_fieldsr&   rh   r   r   r   r   rk   s   rj   rk   c                       sZ   e Zd ZdZdZ fddZ fddZdd Zdd
dZdd Z	dd Z
dd Z  ZS )ReadOnlyModelAdminz$ Disables all editing capabilities. zadmin/readonly_form.htmlc                       t t| j|i | d S r&   )superrl   __init__r   argskwargs	__class__r   r   ro         zReadOnlyModelAdmin.__init__c                    "   t t| |}d|v r|d= |S Nr   )rn   rl   r   r   r   r+   rs   r   r   r         zReadOnlyModelAdmin.get_actionsc                 C      dS NFr   r   r   r   r   r   has_add_permission      z%ReadOnlyModelAdmin.has_add_permissionNc                 C   rz   r{   r   re   r   r   r   has_delete_permission   r~   z(ReadOnlyModelAdmin.has_delete_permissionc                 C      d S r&   r   r   r   rf   formchanger   r   r   
save_model   r~   zReadOnlyModelAdmin.save_modelc                 C   r   r&   r   re   r   r   r   r'      r~   zReadOnlyModelAdmin.delete_modelc                 C   r   r&   r   )r   r   r   formsetsr   r   r   r   save_related   r~   zReadOnlyModelAdmin.save_relatedr&   )r    r!   r"   ri   change_form_templatero   r   r}   r   r   r'   r   __classcell__r   r   rs   r   rl   {   s    
rl   c                       s:   e Zd ZdZ fddZdd ZdddZd	d
 Z  ZS )ChangeOnlyModelAdminz# Disables add/delete capabilities. c                    rv   rw   )rn   r   r   rx   rs   r   r   r      ry   z ChangeOnlyModelAdmin.get_actionsc                 C   rz   r{   r   r|   r   r   r   r}      r~   z'ChangeOnlyModelAdmin.has_add_permissionNc                 C   rz   r{   r   re   r   r   r   r      r~   z*ChangeOnlyModelAdmin.has_delete_permissionc                 C   r   r&   r   re   r   r   r   r'      r~   z!ChangeOnlyModelAdmin.delete_modelr&   )	r    r!   r"   ri   r   r}   r   r'   r   r   r   rs   r   r      s    
r   c                   @   s   e Zd ZdZdZdd ZdS )DeleteonlyModelAdminz# Disables add/change capabilities. zadmin/deleteonly_form.htmlc                 C   rz   r{   r   r|   r   r   r   r}      r~   z'DeleteonlyModelAdmin.has_add_permissionN)r    r!   r"   ri   r   r}   r   r   r   r   r      s    r   c                   @   s   e Zd ZdZdS )DeleteOnlyModelAdminz4 Disables add/change capabilities, fields readonly. N)r    r!   r"   ri   r   r   r   r   r      s    r   c                       sB   e Zd ZdZdZ fddZ fddZddd	Zd
d Z  Z	S )AddOnlyModelAdminz8 Disables delete/change capabilities, fields readonly.. zadmin/addonly_form.htmlc                    rm   r&   )rn   r   ro   rp   rs   r   r   ro      ru   zAddOnlyModelAdmin.__init__c                    rv   rw   )rn   r   r   rx   rs   r   r   r      ry   zAddOnlyModelAdmin.get_actionsNc                 C   rz   r{   r   re   r   r   r   r      r~   z'AddOnlyModelAdmin.has_delete_permissionc                 C   r   r&   r   re   r   r   r   r'      r~   zAddOnlyModelAdmin.delete_modelr&   )
r    r!   r"   ri   r   ro   r   r   r'   r   r   r   rs   r   r      s    
r   c                   @   s   e Zd ZdZdd ZdS )#SpecifiedQuantityQuerySetModelAdminz, Can Only Exist Specified Quantity QuerySet c                 C   sN   |r|   t| dsd| _t| jtsJ | jj | jkr!d S |   d S )Nspecified_quantity_querysetr   )saver   r   
isinstanceintr5   objectscountr   r   r   r   r      s   
z.SpecifiedQuantityQuerySetModelAdmin.save_modelN)r    r!   r"   ri   r   r   r   r   r   r      s    r   )#r   djangor   django.confr   django.contribr   django.contrib.admin.utilsr   django.db.models.fieldsr   django.utils.timezoner   django.utils.translationr   r,   django_excel_responser	   r   r
   sitedisable_actionobjectr   r$   r/   r8   r]   rk   rl   r   r   r   r   r   r   r   r   r   <module>   s0   

#
