+
    TjN                     B   ^ RI t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIH	t	H
t
 ^ RIHt ^ RIHtHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt  ! R R]
]4      t ! R R]4      t  ! R R]4      t! ! R R] 4      t" ! R R]]4      t# ! R R]!4      t$R# )    N)forms)checks)
FieldError)ContentFileFile)	ImageFile)Storagedefault_storage)validate_file_name)signals)DatabaseDefault)Field)DeferredAttribute)
AltersData)gettext_lazyc                   
  a a ] tR t^t oV 3R ltR tR tR tR tR t	R t
]! ]]	]
4      t]R 4       t]R	 4       t]R
 4       tRR ltR]n        R tRR ltR]n        RR ltR]n        ]R 4       tR tR tR tRtVtV ;t# )	FieldFilec                p   < \         SV `  R V4       Wn        W n        VP                  V n        RV n        R # )NT)super__init__instancefieldstorage
_committed)selfr   r   name	__class__s   &&&&R/var/www/idalgo/venv/lib/python3.14/site-packages/django/db/models/fields/files.pyr   FieldFile.__init__   s.    t$ 
}}    c                v    \        VR 4      '       d   V P                  VP                  8H  # V P                  V8H  # )r   )hasattrr   )r   others   &&r   __eq__FieldFile.__eq__   s3     5&!!99

**yyE!!r    c                ,    \        V P                  4      # N)hashr   r   s   &r   __hash__FieldFile.__hash__"   s    DIIr    c                b    V '       g'   \        R V P                  P                  ,          4      hR# )z2The '%s' attribute has no file associated with it.N)
ValueErrorr   r   r)   s   &r   _require_fileFieldFile._require_file)   s'    DtzzV  r    c                    V P                  4        \        V R R4      f,   V P                  P                  V P                  R4      V n        V P
                  # )_fileNrb)r.   getattrr   openr   r1   r)   s   &r   	_get_fileFieldFile._get_file/   sC    4$'/**499d;DJzzr    c                    Wn         R # r'   r1   r   files   &&r   	_set_fileFieldFile._set_file5   s    
r    c                
    V = R # r'   r8   r)   s   &r   	_del_fileFieldFile._del_file8   s    Jr    c                l    V P                  4        V P                  P                  V P                  4      # r'   )r.   r   pathr   r)   s   &r   rA   FieldFile.path=   s'    ||  ++r    c                l    V P                  4        V P                  P                  V P                  4      # r'   )r.   r   urlr   r)   s   &r   rD   FieldFile.urlB   s'    ||		**r    c                    V P                  4        V P                  '       g   V P                  P                  # V P                  P                  V P
                  4      # r'   )r.   r   r:   sizer   r   r)   s   &r   rG   FieldFile.sizeG   s>    99>>!||  ++r    c                    V P                  4        \        V R R4      f.   V P                  P                  V P                  V4      V n        V # V P
                  P                  V4       V # r1   N)r.   r3   r   r4   r   r:   )r   modes   &&r   r4   FieldFile.openN   sW    4$'/))$))T:DI  IINN4 r    Tc                \    \        V P                  V P                  P                  V4       R # r'   )setattrr   r   attnamer   r   contents   &&&r   _set_instance_attribute!FieldFile._set_instance_attribute]   s    tzz1148r    c                L   V P                   P                  V P                  V4      pV P                  P	                  WV P                   P
                  R 7      V n        V P                  V P                  V4       RV n        V'       d   V P                  P	                  4        R# R# ))
max_lengthTN)	r   generate_filenamer   r   saverU   r   rR   r   )r   r   rQ   rW   s   &&&&r   rW   FieldFile.save`   sv    zz++DMM4@LL%%d

@U@U%V	$$TYY8 MM  r    c                z   V '       g   R # \        V R4      '       d   V P                  4        V =V P                  P	                  V P
                  4       R V n        \        V P                  V P                  P                  V P
                  4       RV n
        V'       d   V P                  P                  4        R # R # )Nr1   F)r"   closer:   r   deleter   rN   r   r   rO   r   rW   )r   rW   s   &&r   r[   FieldFile.deletel   s     4!!JJL	DII&	tzz11499=MM  r    c                L    \        V R R4      pVRJ ;'       g    VP                  # rJ   )r3   closedr9   s   & r   r^   FieldFile.closed   s&    tWd+t|**t{{*r    c                L    \        V R R4      pVe   VP                  4        R# R# rJ   )r3   rZ   r9   s   & r   rZ   FieldFile.close   s$    tWd+JJL r    c                Z    R V P                   RRRRRRRV P                  RV P                  /# )	r   r^   Fr   Tr1   Nr   r   )r   r   r   r)   s   &r   __getstate__FieldFile.__getstate__   s8    
 DIIe$TTZZ
 	
r    c                r    V P                   P                  V4       V P                  P                  V n        R # r'   )__dict__updater   r   )r   states   &&r   __setstate__FieldFile.__setstate__   s%    U#zz))r    )r   r1   r   r:   r   r   r   )r2   T)__name__
__module____qualname____firstlineno__r   r$   r*   r.   r5   r;   r>   propertyr:   rA   rD   rG   r4   alters_datarR   rW   r[   r^   rZ   rc   ri   __static_attributes____classdictcell____classcell__r   __classdict__s   @@r   r   r      s     " Iy)4D, , + + , , D9! D!$ F+ +

* *r    r   c                   @   a a ] tR t^t oRtRV 3R lltR tRtVtV ;t	# )FileDescriptoraw  
The descriptor for the file attribute on the model instance. Return a
FieldFile when accessed so you can write code like::

    >>> from myapp.models import MyModel
    >>> instance = MyModel.objects.get(pk=1)
    >>> instance.file.size

Assign a file object on assignment so you can do::

    >>> with open('/path/to/hello.world') as f:
    ...     instance.file = File(f)
c                P  < Vf   V # \         SV `  W4      p\        V\        4      '       g   VfK   V P                  P                  WP                  V4      pWAP                  V P                  P                  &   EM\        V\        4      '       d_   V P                  P                  WP                  V P                  P                  4      pWAP                  V P                  P                  &   EM\        V\        4      '       dw   \        V\        4      '       ga   V P                  P                  WP                  VP                  4      pW5n        RVn        WQP                  V P                  P                  &   M\        V\        4      '       dF   \        VR4      '       g4   Wn        V P                  Vn        V P                  P"                  Vn        M+\        V\        4      '       d   WP                   Jd   Wn        VP                  V P                  P                  ,          # )NFr   )r   __get__
isinstancestrr   
attr_classrf   rO   r   
db_defaultr   r   r   r:   r   r"   r   r   )r   r   clsr:   attr	file_copyr   s   &&&   r   rz   FileDescriptor.__get__   s   K wx- dC  DL::((::tDD48djj001 o..::((::tzz?T?TUD48djj001 d##JtY,G,G

--h

DIINI!N#(I 4=djj001 i((w1G1G$MDJ::--DL i((X]]-J$M   !3!344r    c                J    W!P                   V P                  P                  &   R # r'   )rf   r   rO   )r   r   values   &&&r   __set__FileDescriptor.__set__   s    05$**,,-r     r'   )
rl   rm   rn   ro   __doc__rz   r   rr   rs   rt   ru   s   @@r   rx   rx      s     ;5z6 6r    rx   c                      a a ] tR t^t o]t]t]! R4      t	RV 3R llt
V 3R ltR tR tV 3R ltR tV 3R ltV 3R	 ltV 3R
 ltR tR tV 3R ltRtVtV ;t# )	FileFieldr   c                  < R V9   V n         Ve   TM\        V n        \        V P                  4      '       d   V P                  V n        V P                  4       V n        \        V P                  \        4      '       gG   \        V P                  P                  : R\        P                  : R\        P                  : 24      hW0n        VP                  R^d4       \        SV `8  ! W3/ VB  R# )primary_keyNz(.storage must be a subclass/instance of .rU   )_primary_key_set_explicitlyr
   r   callable_storage_callabler{   r	   	TypeErrorr   rn   rm   	upload_to
setdefaultr   r   )r   verbose_namer   r   r   kwargsr   s   &&&&&,r   r   FileField.__init__   s     ,9F+B(")"5w?DLL!!%)\\D"<<>DLdllG44 33**,,	  #,,6v6r    c                h   < . \         SV `  ! R/ VB OV P                  4       OV P                  4       O# Nr   )r   check_check_primary_key_check_upload_tor   r   r   s   &,r   r   FileField.check  sE    
W]$V$
$$&
 ""$
 	
r    c                    V P                   '       d6   \        P                  ! R V P                  P                  ,          V RR7      .# . # )z/'primary_key' is not a valid argument for a %s.zfields.E201)objid)r   r   Errorr   rl   r)   s   &r   r   FileField._check_primary_key  sF    +++Enn--.$	  Ir    c                    \        V P                  \        4      '       dX   V P                  P                  R 4      '       d7   \        P
                  ! RV P                  P                  ,          V RRR7      .# . # )/zH%s's 'upload_to' argument must be a relative path, not an absolute path.zfields.E202zRemove the leading slash.)r   r   hint)r{   r   r|   
startswithr   r   r   rl   r)   s   &r   r   FileField._check_upload_to"  sd    dnnc**t~~/H/H/M/M%'+~~'>'>?$4  Ir    c                   < \         SV `  4       w  rr4VP                  R 4      ^d8X  d   VR  V P                  VR&   \	        V RV P
                  4      pV\        Jd   WTR&   WW43# )rU   r   r   r   )r   deconstructgetr   r3   r   r
   )r   r   rA   argsr   r   r   s   &     r   r   FileField.deconstruct0  sj    #(7#6#8 D::l#s*|$"nn{$ 3T\\B/) '94''r    c                    R # )r   r   r)   s   &r   get_internal_typeFileField.get_internal_type:  s    r    c                D   < \         SV `  V4      pVf   R # \        V4      # r'   )r   get_prep_valuer|   )r   r   r   s   &&r   r   FileField.get_prep_value=  s&    &u- =5zr    c                z  < \         SV `  W4      pVP                  f[   VP                  eM   \	        RV P                   R24      p\        VP                  \        4      '       d   VP                  R4       VhV'       d;   VP                  '       g)   VP                  VP                  VP                  RR7       V# )Nz	File for z4 must have the name attribute specified to be saved.z&Pass a 'name' argument to ContentFile.F)rW   )r   pre_saver   r1   r   r{   r   add_noter   rW   r:   )r   model_instanceaddr:   excr   s   &&&  r   r   FileField.pre_saveE  s    w499!7DII; '< <C $**k22EFIIIdiiI7r    c                t   < \         SV `  ! W3/ VB  \        WP                  V P	                  V 4      4       R # r'   )r   contribute_to_classrN   rO   descriptor_classr   r   r   r   r   s   &&&,r   r   FileField.contribute_to_classU  s.    #C88\\4#8#8#>?r    c                X   \        V P                  4      '       d   V P                  W4      pMV\        P                  P                  4       P	                  \        V P                  4      4      p\        P                  ! W24      p\        VRR7      pV P                  P                  V4      # )z
Apply (if callable) or prepend (if a string) upload_to to the filename,
then delegate further processing of the name to the storage backend.
Until the storage layer, all file paths are expected to be Unix style
(with forward slashes).
T)allow_relative_path)r   r   datetimenowstrftimer|   	posixpathjoinr   r   rV   )r   r   filenamedirnames   &&& r   rV   FileField.generate_filenameY  sx     DNN##~~h9H''++-66s4>>7JKG ~~g8H%hDI||--h77r    c                R    Ve#   \        YP                  T;'       g    R4       R # R # )N )rN   r   )r   r   datas   &&&r   save_form_dataFileField.save_form_datah  s%    
  Hii4 r    c                `   < \         SV `  ! R/ R \        P                  RV P                  /VCB # )
form_classrU   r   )r   	formfieldr   r   rU   r   s   &,r   r   FileField.formfieldr  s;    w  
eoodoo 
 	
r    )r   r   r   r   )NNr   N)rl   rm   rn   ro   r   r}   rx   r   _descriptionr   r   r   r   r   r   r   r   r   rV   r   r   rr   rs   rt   ru   s   @@r   r   r      s_      J &F)K70
( @85
 
r    r   c                   6   a a ] tR tRt oRtV 3R ltRtVtV ;t# )ImageFileDescriptori|  z
Just like the FileDescriptor, but for ImageFields. The only difference is
assigning the width/height to the width_field/height_field, if appropriate.
c                   < VP                   P                  V P                  P                  4      p\        SV `  W4       Ve    V P                  P                  VRR7       R # R # )NT)force)rf   r   r   rO   r   r   update_dimension_fields)r   r   r   previous_filer   s   &&& r   r   ImageFileDescriptor.__set__  sS     ))--djj.@.@A( $JJ..xt.D %r    r   )	rl   rm   rn   ro   r   r   rr   rs   rt   ru   s   @@r   r   r   |  s     
E Er    r   c                   <   a a ] tR tRt oR tRV 3R lltRtVtV ;t# )ImageFieldFilei  c                    \        V P                  V P                  P                  V4       V P                  V P                  P
                  V P                  P                  &   R # r'   )rN   r   r   rO   r   rf   rP   s   &&&r   rR   &ImageFieldFile._set_instance_attribute  s@    tzz117; 6:YYtzz112r    c                N   < \        V R 4      '       d   V =\        SV `  V4       R# )_dimensions_cacheN)r"   r   r   r[   )r   rW   r   s   &&r   r[   ImageFieldFile.delete  s#    4,--&tr    r   rk   )	rl   rm   rn   ro   rR   r[   rr   rs   rt   ru   s   @@r   r   r     s     ? r    r   c                      a a ] tR tRt o]t]t]! R4      t	RV 3R llt
V 3R ltR tV 3R ltV 3R ltRR ltV 3R	 ltR
tVtV ;t# )
ImageFieldi  Imagec                F   < W4uV n         V n        \        SV `  ! W3/ VB  R # r'   )width_fieldheight_fieldr   r   )r   r   r   r   r   r   r   s   &&&&&,r   r   ImageField.__init__  s'     /:+$+6v6r    c                H   < . \         SV `  ! R/ VB OV P                  4       O# r   )r   r   _check_image_library_installedr   s   &,r   r   ImageField.check  s2    
W]$V$
002
 	
r    c                l     ^ RI Hp . #   \         d    \        P                  ! RRT RR7      .u # i ; i)r   )r   z6Cannot use ImageField because Pillow is not installed.z]Get Pillow at https://pypi.org/project/Pillow/ or run command "python -m pip install Pillow".zfields.E210)r   r   r   )PILr   ImportErrorr   r   )r   r   s   & r   r   )ImageField._check_image_library_installed  sI    	! I  	LI $
 
	s   
 &33c                   < \         SV `  4       w  rr4V P                  '       d   V P                  VR &   V P                  '       d   V P                  VR&   WW43# )r   r   )r   r   r   r   )r   r   rA   r   r   r   s   &    r   r   ImageField.deconstruct  sX    #(7#6#8 D$($4$4F=!%)%6%6F>"4''r    c                  < \         SV `  ! W3/ VB  VP                  P                  '       gT   V P                  '       g   V P
                  '       d.   \        P                  P                  V P                  VR 7       R# R# R# ))senderN)
r   r   _metaabstractr   r   r   	post_initconnectr   r   s   &&&,r   r   ImageField.contribute_to_class  se    #C88 yy!!!t'7'7'74;L;L;L%%d&B&B3%O <M!r    c                   V P                   ;'       g    V P                  pV'       d   V P                  VP                  9  d   R# \	        WP                  4      pV'       g   V'       g   R# V P                   ;'       d#    \	        WP                   4      '       * ;'       g/    V P                  ;'       d    \	        WP                  4      '       * '       * pV'       d   V'       g   R# V'       d   VP
                  pVP                  p	MRpRp	V P                   '       d   \        WP                   V4       V P                  '       d   \        WP                  V	4       R# R# )a  
Update field's width and height fields, if defined.

This method is hooked up to model's post_init signal to update
dimensions after instantiating a model instance. However, dimensions
won't be updated if the dimensions fields are already populated. This
avoids unnecessary recalculation when loading an object from the
database.

Dimensions can be forced to update with force=True, which is how
ImageFileDescriptor.__set__ calls this method.
N)r   r   rO   rf   r3   widthheightrN   )
r   r   r   r   r   has_dimension_fieldsr:   dimension_fields_filledr   r   s
   &&&*,     r   r   "ImageField.update_dimension_fields  s     $//DD43D3D#t||8;L;L'L
 x. E IIgh8H8H&I"I P P!!NN'(<M<M*N&N#
 #5 JJE[[F EF H..6H//8 r    c                H   < \         SV `  ! R/ R \        P                  /VCB # )r   r   )r   r   r   r   r   s   &,r   r   ImageField.formfield  s2    w  
e..
 	
r    )r   r   )NNNN)F)rl   rm   rn   ro   r   r}   r   r   r   r   r   r   r   r   r   r   r   rr   rs   rt   ru   s   @@r   r   r     sC     J*G*K	7
$(P79r
 
r    r   )%r   r   djangor   django.corer   django.core.exceptionsr   django.core.files.baser   r   django.core.files.imagesr   django.core.files.storager	   r
   django.core.files.utilsr   django.db.modelsr   django.db.models.expressionsr   django.db.models.fieldsr   django.db.models.query_utilsr   django.db.models.utilsr   django.utils.translationr   r   r   rx   r   r   r   r   r   r    r   <module>r     s        - 4 . > 6 $ 8 ) : - 6F*j F*RM6& M6`M
 M
`E. E.Y	 y
 y
r    