
    Mf<%                     B   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        r. e            d          dk    rej                            d            G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d ee          Z  G d! d"e          Z! G d# d$e          Z"dS )%    N)get_version)settings)admin)model_format_dict)BLANK_CHOICE_DASH)template_localtime)ExcelResponse)gettext_lazy$DJANGO_ADMIN_DISABLE_DELETE_SELECTED   delete_selectedc                       e Zd ZefdZdS )AdvancedActionsModelAdminc                    t          | d          r| j        ng }g |z   }t          j        |                     |                    D ]9\  }}}||v r||t          | j                  z  f}|                    |           :|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choices	            S/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/django_admin/djadmin.pyget_action_choicesz,AdvancedActionsModelAdmin.get_action_choices$   s     3:$@Q2R2RZ$..XZ&'*~d6F6Fw6O6O'P'P 	# 	##D$&&K*;DI*F*FFGFNN6""""    N)__name__
__module____qualname__r   r!    r"   r    r   r   #   s+        :K      r"   r   c                   :    e Zd ZdgZd Z ed          e_        dS )DeleteModelAdminoverride_delete_selectedc                 <    |D ]}|                      ||           d S N)delete_model)
modeladminr   querysetquerys       r    r)   z)DeleteModelAdmin.override_delete_selected5   s4     	4 	4E##GU3333	4 	4r"   z'Delete selected %(verbose_name_plural)sN)r#   r$   r%   actionsr)   _short_descriptionr&   r"   r    r(   r(   2   s=        )*G4 4 4 233]1^1^...r"   r(   c                   :    e Zd ZdgZd Z ed          e_        dS )ExportExcelModelAdminexport_excelc                     t          t          d          rt          j        pt          | d          o| j        }t	          || j        j        j        |          S )NDJANGO_EXCEL_RESPONSE	force_csvoutput_namer8   )r   r   r7   r8   r	   model_metaverbose_name_plural)r-   r   r.   r8   s       r    r5   z"ExportExcelModelAdmin.export_excel?   so    X'>??bHDb  chopz  }H  iI  iI  ib  NX  Nb	X:3C3I3]irssssr"   z0Export selected %(verbose_name_plural)s as ExcelN)r#   r$   r%   r0   r5   r1   r2   r&   r"   r    r4   r4   <   s?        Gt t t &'Q'Z%[%[L"""r"   r4   c                   F    e Zd ZdgZd Zd Zd Z ed          e_        dS )AdvancedExportExcelModelAdminadvanced_export_excelc                     d                     |          }t          t          ||          r t          ||                      nt	          t          ||                              S )Nzget_{0}_display)formatstrr   getattrr   )r-   r/   field	foo_fields       r    
excel_itemz(AdvancedExportExcelModelAdmin.excel_itemI   s`    %,,U33	'%2K2Kz,75),,...QcdklqsxdydyQzQz{{{r"   c                 x      fd|D             }|r&|t                               |                    z   n|S )Nc                 <    g | ]}                     |          S r&   )rG   ).0rE   r-   r/   s     r    
<listcomp>z<AdvancedExportExcelModelAdmin.excel_data.<locals>.<listcomp>N   s)    TTTej++E599TTTr"   )listadd_extra_excel_fields)r-   r   r/   model_fieldshas_extra_excel_fieldsrG   s   ` `   r    
excel_dataz(AdvancedExportExcelModelAdmin.excel_dataM   sN    TTTTT|TTT
Wm}zD!B!B7E!R!RSSSSs}}r"   c                 x   
 t           d          }t           d          }t           d          }t           d          }t           d          
|rt           j                  nd  j        j        j        D             |r fdD             |r j        n
rt           j                  z   n}|r fd|D             n|}|g}|
 fd	|D             z  }t          t          d
          rt          j	        pt           d          o j
        }	t          | j        j        j        |	          S )Nexcel_headersexcel_headers_mappingexcel_fieldsexcel_fields_excludeextra_excel_fieldsc                     g | ]	}|j         
S r&   r   rJ   fs     r    rK   zGAdvancedExportExcelModelAdmin.advanced_export_excel.<locals>.<listcomp>X   s    N}N}N}Z[qvN}N}N}r"   c                 @    g | ]}|t          j                  v|S r&   )setrU   )rJ   rE   r-   s     r    rK   zGAdvancedExportExcelModelAdmin.advanced_export_excel.<locals>.<listcomp>Z   s/    qqqeuCPZPoLpLp?p?pE?p?p?pr"   c                 H    g | ]}j                             |          p|S r&   )rS   get)rJ   headerr-   s     r    rK   zGAdvancedExportExcelModelAdmin.advanced_export_excel.<locals>.<listcomp>]   s0    nnnV\*:>>vFFP&nnnr"   c                 @    g | ]}                     |          S r&   )rP   )rJ   r/   rO   rN   r-   r   s     r    rK   zGAdvancedExportExcelModelAdmin.advanced_export_excel.<locals>.<listcomp>`   s/    yyyglz,,We\Kabbyyyr"   r7   r8   r9   )r   rL   rT   r;   r<   fieldsrR   rV   r   r7   r8   r	   r=   )r-   r   r.   has_excel_headershas_excel_headers_mappinghas_excel_fieldshas_excel_fields_excluderR   rP   r8   rO   rN   s   ``        @@r    r@   z3AdvancedExportExcelModelAdmin.advanced_export_excelQ   s   #J@@$+J8O$P$P!":~>>#*:7M#N#N !(5I!J!J8H}tJ3444N}N}_i_o_u_|N}N}N}# 	rqqqq|qqqL4E  l
00  CY  MkL[_`j`}[~[~L~L~  _k sL  _nnnn`mnnnn  R_#_
yyyyyyypxyyyy
X'>??bHDb  chopz  }H  iI  iI  ib  NX  Nb	ZZ5E5K5_ktuuuur"   z9Advanced Export selected %(verbose_name_plural)s as ExcelN)	r#   r$   r%   r0   rG   rP   r@   r1   r2   r&   r"   r    r?   r?   F   sd        &'G| | |~ ~ ~v v v* /0a0l.m.m+++r"   r?   c                       e Zd ZdZddZdS )ReadonlyModelAdminz Readonly for Update. Nc                 ^   t          | d          sd| _        |r_t          t          | j                  t          d | j        j        j        D                       t          | j                  z
  z            S t          t          | j                  t          | j                  z
            S )Nreadonly_fields_excluder&   c              3   $   K   | ]}|j         V  d S r+   rX   rY   s     r    	<genexpr>z9ReadonlyModelAdmin.get_readonly_fields.<locals>.<genexpr>o   s$      8a8aA8a8a8a8a8a8ar"   r   ri   tupler\   readonly_fieldsr;   r<   ra   r   r   objs      r    get_readonly_fieldsz&ReadonlyModelAdmin.get_readonly_fieldsk   s    t677 	.+-D( 	GT122S8a8aIYI`8a8a8a5a5adghl  iE  eF  eF  6F  F  G  G  GS-..T5Q1R1RRSSSr"   r+   r#   r$   r%   __doc__rq   r&   r"   r    rg   rg   i   s4          T T T T T Tr"   rg   c                       e Zd ZdZddZdS )Readonly2ModelAdminz Readonly for Add/Update. Nc                     t          | d          sd| _        t          t          | j                  t          d | j        j        j        D                       t          | j                  z
  z            S )Nri   r&   c              3   $   K   | ]}|j         V  d S r+   rX   rY   s     r    rk   z:Readonly2ModelAdmin.get_readonly_fields.<locals>.<genexpr>x   s$      4]4]QV4]4]4]4]4]4]r"   rl   ro   s      r    rq   z'Readonly2ModelAdmin.get_readonly_fieldsu   s    t677 	.+-D(S-..4]4]TZEUE\4]4]4]1]1]`cdh  eA  aB  aB  2B  B  C  C  	Cr"   r+   rr   r&   r"   r    ru   ru   s   s4        $$C C C C C Cr"   ru   c                   P     e Zd ZdZdZ fdZ fdZd ZddZd Z	d	 Z
d
 Z xZS )ReadOnlyModelAdminz$ Disables all editing capabilities. zadmin/readonly_form.htmlc                 H     t          t          |           j        |i | d S r+   )superry   __init__r   argskwargs	__class__s      r    r|   zReadOnlyModelAdmin.__init__   s,    0 $''0$A&AAAAAr"   c                 f    t          t          |                               |          }d|v r|d= |S Nr   )r{   ry   r   r   r   r0   r   s      r    r   zReadOnlyModelAdmin.get_actions   s:    *D11==gFF'')*r"   c                     dS NFr&   r   r   s     r    has_add_permissionz%ReadOnlyModelAdmin.has_add_permission       ur"   Nc                     dS r   r&   ro   s      r    has_delete_permissionz(ReadOnlyModelAdmin.has_delete_permission   r   r"   c                     d S r+   r&   r   r   rp   formchanges        r    
save_modelzReadOnlyModelAdmin.save_model       r"   c                     d S r+   r&   ro   s      r    r,   zReadOnlyModelAdmin.delete_model   r   r"   c                     d S r+   r&   )r   r   r   formsetsr   s        r    save_relatedzReadOnlyModelAdmin.save_related   r   r"   r+   )r#   r$   r%   rs   change_form_templater|   r   r   r   r   r,   r   __classcell__r   s   @r    ry   ry   {   s        ..5B B B B B                   r"   ry   c                   6     e Zd ZdZ fdZd ZddZd Z xZS )ChangeOnlyModelAdminz# Disables add/delete capabilities. c                 f    t          t          |                               |          }d|v r|d= |S r   )r{   r   r   r   s      r    r   z ChangeOnlyModelAdmin.get_actions   s:    ,d33??HH'')*r"   c                     dS r   r&   r   s     r    r   z'ChangeOnlyModelAdmin.has_add_permission   r   r"   Nc                     dS r   r&   ro   s      r    r   z*ChangeOnlyModelAdmin.has_delete_permission   r   r"   c                     d S r+   r&   ro   s      r    r,   z!ChangeOnlyModelAdmin.delete_model   r   r"   r+   )	r#   r$   r%   rs   r   r   r   r,   r   r   s   @r    r   r      sp        --               r"   r   c                       e Zd ZdZdZd ZdS )DeleteonlyModelAdminz# Disables add/change capabilities. zadmin/deleteonly_form.htmlc                     dS r   r&   r   s     r    r   z'DeleteonlyModelAdmin.has_add_permission   r   r"   N)r#   r$   r%   rs   r   r   r&   r"   r    r   r      s/        --7    r"   r   c                       e Zd ZdZdS )DeleteOnlyModelAdminz4 Disables add/change capabilities, fields readonly. N)r#   r$   r%   rs   r&   r"   r    r   r      s        >>>>r"   r   c                   >     e Zd ZdZdZ fdZ fdZddZd Z xZ	S )	AddOnlyModelAdminz8 Disables delete/change capabilities, fields readonly.. zadmin/addonly_form.htmlc                 H     t          t          |           j        |i | d S r+   )r{   r   r|   r}   s      r    r|   zAddOnlyModelAdmin.__init__   s,    /&&/@@@@@@r"   c                 f    t          t          |                               |          }d|v r|d= |S r   )r{   r   r   r   s      r    r   zAddOnlyModelAdmin.get_actions   s:    )400<<WEE'')*r"   Nc                     dS r   r&   ro   s      r    r   z'AddOnlyModelAdmin.has_delete_permission   r   r"   c                     d S r+   r&   ro   s      r    r,   zAddOnlyModelAdmin.delete_model   r   r"   r+   )
r#   r$   r%   rs   r   r|   r   r   r,   r   r   s   @r    r   r      s        BB4A A A A A             r"   r   c                       e Zd ZdZd ZdS )#SpecifiedQuantityQuerySetModelAdminz, Can Only Exist Specified Quantity QuerySet c                    |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intr;   objectscountr   s        r    r   z.SpecifiedQuantityQuerySetModelAdmin.save_model   s     	HHJJJt:;; 	1/0D,$:C@@@@@:##%%)IIIF




r"   N)r#   r$   r%   rs   r   r&   r"   r    r   r      s)        66    r"   r   )#r   djangor   django.confr   django.contribr   django.contrib.admin.utilsr   django.db.models.fieldsr   django.utils.timezoner   django_excel_responser	   
django_sixr
   r1   r   r   sitedisable_actionobjectr   r(   r4   r?   rg   ru   ry   r   r   r   r   r   r&   r"   r    <module>r      s!   


                               8 8 8 8 8 8 5 5 5 5 5 5 4 4 4 4 4 4 / / / / / / ( ( ( ( ( ( wx?@@ 5HDq 5" {}}Q1
!!"3444       _ _ _ _ _v _ _ _\ \ \ \ \F \ \ \ n  n  n  n  nF  n  n  nFT T T T T T T TC C C C C& C C C    +   :    6   $    6   ? ? ? ? ?-/C ? ? ?    *   (    &     r"   