§
    ¤”jiK  ã                   óV  — d dl Z 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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  G d„ de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!dS )é    N)Úforms)Úchecks)ÚFile)Ú	ImageFile)ÚStorageÚdefault_storage)Úvalidate_file_name)Úsignals)ÚDatabaseDefault)ÚField)ÚDeferredAttribute)Ú
AltersData)Úgettext_lazyc                   ó  ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	 e
eee	¦  «        Ze
d„ ¦   «         Ze
d	„ ¦   «         Ze
d
„ ¦   «         Zdd„Zde_        dd„Zde_        dd„Zde_        e
d„ ¦   «         Zd„ Zd„ Zd„ Zˆ xZS )Ú	FieldFilec                 óŽ   •— t          ¦   «                              d |¦  «         || _        || _        |j        | _        d| _        d S )NT)ÚsuperÚ__init__ÚinstanceÚfieldÚstorageÚ
_committed)Úselfr   r   ÚnameÚ	__class__s       €úl/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/django/db/models/fields/files.pyr   zFieldFile.__init__   s?   ø€ Ý‰Œ×Ò˜˜tÑ$Ô$Ð$Ø ˆŒØˆŒ
Ø”}ˆŒØˆŒˆˆó    c                 óX   — t          |d¦  «        r| j        |j        k    S | j        |k    S )Nr   )Úhasattrr   )r   Úothers     r   Ú__eq__zFieldFile.__eq__   s2   € õ �5˜&Ñ!Ô!ð 	+Ø”9 ¤
Ò*Ð*ØŒy˜EÒ!Ð!r   c                 ó*   — t          | j        ¦  «        S ©N)Úhashr   ©r   s    r   Ú__hash__zFieldFile.__hash__!   s   € Ý�D”I‰ŒÐr   c                 óB   — | st          d| j        j        z  ¦  «        ‚d S )Nz2The '%s' attribute has no file associated with it.)Ú
ValueErrorr   r   r%   s    r   Ú_require_filezFieldFile._require_file(   s2   € Øð 	ÝØDÀtÄzÄÑVñô ð ð	ð 	r   c                 ó¤   — |                       ¦   «          t          | dd ¦  «        €%| j                             | j        d¦  «        | _        | j        S )NÚ_fileÚrb)r)   Úgetattrr   Úopenr   r+   r%   s    r   Ú	_get_filezFieldFile._get_file.   sI   € Ø×ÒÑÔÐÝ�4˜ $Ñ'Ô'Ð/Øœ×*Ò*¨4¬9°dÑ;Ô;ˆDŒJØŒzÐr   c                 ó   — || _         d S r#   ©r+   ©r   Úfiles     r   Ú	_set_filezFieldFile._set_file4   s   € ØˆŒ
ˆ
ˆ
r   c                 ó
   — | ` d S r#   r1   r%   s    r   Ú	_del_filezFieldFile._del_file7   s   € ØˆJˆJˆJr   c                 óh   — |                       ¦   «          | j                             | j        ¦  «        S r#   )r)   r   Úpathr   r%   s    r   r8   zFieldFile.path<   s,   € à×ÒÑÔÐØŒ|× Ò  ¤Ñ+Ô+Ð+r   c                 óh   — |                       ¦   «          | j                             | j        ¦  «        S r#   )r)   r   Úurlr   r%   s    r   r:   zFieldFile.urlA   s,   € à×ÒÑÔÐØŒ|×Ò ¤	Ñ*Ô*Ð*r   c                 óŽ   — |                       ¦   «          | j        s| j        j        S | j                             | j        ¦  «        S r#   )r)   r   r3   Úsizer   r   r%   s    r   r<   zFieldFile.sizeF   s@   € à×ÒÑÔÐØŒð 	"Ø”9”>Ð!ØŒ|× Ò  ¤Ñ+Ô+Ð+r   r,   c                 óÐ   — |                       ¦   «          t          | dd ¦  «        €&| j                             | j        |¦  «        | _        n| j                             |¦  «         | S ©Nr+   )r)   r-   r   r.   r   r3   )r   Úmodes     r   r.   zFieldFile.openM   s\   € Ø×ÒÑÔÐÝ�4˜ $Ñ'Ô'Ð/Øœ×)Ò)¨$¬)°TÑ:Ô:ˆDŒIˆIàŒI�NŠN˜4Ñ Ô Ð Øˆr   Tc                 ó0  — | j                              | j        |¦  «        }| j                             ||| j         j        ¬¦  «        | _        t          | j        | j         j        | j        ¦  «         d| _	        |r| j                             ¦   «          d S d S )N)Ú
max_lengthT)
r   Úgenerate_filenamer   r   ÚsaverA   r   ÚsetattrÚattnamer   )r   r   ÚcontentrC   s       r   rC   zFieldFile.save\   sŽ   € ØŒz×+Ò+¨D¬M¸4Ñ@Ô@ˆØ”L×%Ò% d¨GÀÄ
Ô@UÐ%ÑVÔVˆŒ	Ý�”˜tœzÔ1°4´9Ñ=Ô=Ð=ØˆŒð ð 	!ØŒM×ÒÑ Ô Ð Ð Ð ð	!ð 	!r   c                 ó8  — | sd S t          | d¦  «        r|                      ¦   «          | `| j                             | j        ¦  «         d | _        t          | j        | j        j	        | j        ¦  «         d| _
        |r| j                             ¦   «          d S d S )Nr+   F)r   Úcloser3   r   Údeleter   rD   r   r   rE   r   rC   )r   rC   s     r   rI   zFieldFile.deleteh   s¢   € Øð 	ØˆFõ �4˜Ñ!Ô!ð 	Ø�JŠJ‰LŒLˆLØ�	àŒ×Ò˜DœIÑ&Ô&Ð&àˆŒ	Ý�”˜tœzÔ1°4´9Ñ=Ô=Ð=ØˆŒàð 	!ØŒM×ÒÑ Ô Ð Ð Ð ð	!ð 	!r   c                 ó:   — t          | dd ¦  «        }|d u p|j        S r>   )r-   Úclosedr2   s     r   rK   zFieldFile.closed|   s$   € å�t˜W dÑ+Ô+ˆØ�tˆ|Ð*˜tœ{Ð*r   c                 óX   — t          | dd ¦  «        }|�|                     ¦   «          d S d S r>   )r-   rH   r2   s     r   rH   zFieldFile.close�   s2   € Ý�t˜W dÑ+Ô+ˆØÐØ�JŠJ‰LŒLˆLˆLˆLð Ðr   c                 ó2   — | j         ddd | j        | j        dœS )NFT)r   rK   r   r+   r   r   )r   r   r   r%   s    r   Ú__getstate__zFieldFile.__getstate__†   s+   € ð
 ”IØØØØœØ”Zð
ð 
ð 	
r   c                 ó\   — | j                              |¦  «         | j        j        | _        d S r#   )Ú__dict__Úupdater   r   )r   Ústates     r   Ú__setstate__zFieldFile.__setstate__“   s(   € ØŒ×Ò˜UÑ#Ô#Ð#Ø”zÔ)ˆŒˆˆr   )r,   ©T)Ú__name__Ú
__module__Ú__qualname__r   r!   r&   r)   r/   r4   r6   Úpropertyr3   r8   r:   r<   r.   Úalters_datarC   rI   rK   rH   rN   rS   Ú__classcell__©r   s   @r   r   r      s–  ø€ € € € € ðð ð ð ð ð"ð "ð "ðð ð ðð ð ðð ð ðð ð ðð ð ð ˆ8�I˜y¨)Ñ4Ô4€Dàð,ð ,ñ „Xð,ð ð+ð +ñ „Xð+ð ð,ð ,ñ „Xð,ðð ð ð ð €DÔð!ð !ð !ð !ð €DÔð!ð !ð !ð !ð$ €FÔàð+ð +ñ „Xð+ðð ð ð

ð 
ð 
ð*ð *ð *ð *ð *ð *ð *r   r   c                   ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚFileDescriptora›  
    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)
    Nc                 óˆ  •— |€| S t          ¦   «                              ||¦  «        }t          |t          ¦  «        s|€7| j                             || j        |¦  «        }||j        | j        j        <   �n7t          |t          ¦  «        r@| j                             || j        | j        j	        ¦  «        }||j        | j        j        <   nât          |t          ¦  «        r^t          |t          ¦  «        sI| j                             || j        |j        ¦  «        }||_        d|_        ||j        | j        j        <   not          |t          ¦  «        r5t          |d¦  «        s%||_        | j        |_        | j        j        |_        n%t          |t          ¦  «        r||j        ur||_        |j        | j        j                 S )NFr   )r   Ú__get__Ú
isinstanceÚstrr   Ú
attr_classrP   rE   r   Ú
db_defaultr   r   r   r3   r   r   r   r   )r   r   Úclsr3   ÚattrÚ	file_copyr   s         €r   r_   zFileDescriptor.__get__§   s�  ø€ ØÐØˆKõ ‰wŒw�Š˜x¨Ñ-Ô-ˆõ �d�CÑ Ô ð 	% D LØ”:×(Ò(¨°4´:¸tÑDÔDˆDØ48ˆHÔ˜dœjÔ0Ñ1Ñ1õ ˜�oÑ.Ô.ð 	%Ø”:×(Ò(¨°4´:¸t¼zÔ?TÑUÔUˆDØ48ˆHÔ˜dœjÔ0Ñ1Ð1õ ˜�dÑ#Ô#ð 	%­J°t½YÑ,GÔ,Gð 	%Øœ
×-Ò-¨h¸¼
ÀDÄIÑNÔNˆIØ!ˆIŒNØ#(ˆIÔ Ø4=ˆHÔ˜dœjÔ0Ñ1Ð1õ
 ˜�iÑ(Ô(ð 	%µ¸¸wÑ1GÔ1Gð 	%Ø$ˆDŒMØœˆDŒJØœ:Ô-ˆDŒLˆLõ ˜�iÑ(Ô(ð 	%¨X¸T¼]Ð-JÐ-JØ$ˆDŒMð Ô  ¤Ô!3Ô4Ð4r   c                 ó.   — ||j         | j        j        <   d S r#   )rP   r   rE   )r   r   Úvalues      r   Ú__set__zFileDescriptor.__set__ã   s   € Ø05ˆÔ˜$œ*Ô,Ñ-Ð-Ð-r   r#   )rU   rV   rW   Ú__doc__r_   ri   rZ   r[   s   @r   r]   r]   ˜   sW   ø€ € € € € ðð ð:5ð :5ð :5ð :5ð :5ð :5ðx6ð 6ð 6ð 6ð 6ð 6ð 6r   r]   c                   óš   ‡ — e Zd ZeZeZ ed¦  «        Z	 dˆ fd„	Z	ˆ fd„Z
d„ Zd„ Zˆ fd„Zd	„ Zˆ fd
„Zˆ fd„Zˆ fd„Zd„ Zd„ Zˆ fd„Zˆ xZS )Ú	FileFieldr   NÚ c                 ó¶  •— d|v | _         |pt          | _        t          | j        ¦  «        rt| j        | _        |                      ¦   «         | _        t          | j        t          ¦  «        s5t          | j        j	        ›dt          j
        ›dt          j	        ›�¦  «        ‚|| _        |                     dd¦  «          t          ¦   «         j        ||fi |¤Ž d S )NÚprimary_keyz(.storage must be a subclass/instance of ú.rA   éd   )Ú_primary_key_set_explicitlyr   r   ÚcallableÚ_storage_callabler`   r   Ú	TypeErrorr   rW   rV   Ú	upload_toÚ
setdefaultr   r   )r   Úverbose_namer   rv   r   Úkwargsr   s         €r   r   zFileField.__init__ñ   sß   ø€ ð ,9¸FÐ+BˆÔ(àÐ1¥/ˆŒÝ�D”LÑ!Ô!ð 	à%)¤\ˆDÔ"ØŸ<š<™>œ>ˆDŒLÝ˜dœl­GÑ4Ô4ð Ýð œÔ3Ð3Ð3ÝÔ*Ð*Ð*ÝÔ,Ð,ð	ñô ð ð #ˆŒà×Ò˜,¨Ñ,Ô,Ð,Ø�‰ŒÔ˜ tÐ6Ð6¨vÐ6Ð6Ð6Ð6Ð6r   c                 óŠ   •— g  t          ¦   «         j        di |¤Ž¢|                      ¦   «         ¢|                      ¦   «         ¢S ©N© )r   ÚcheckÚ_check_primary_keyÚ_check_upload_to©r   ry   r   s     €r   r}   zFileField.check	  sU   ø€ ð
Ø�U‰WŒWŒ]Ð$Ð$˜VÐ$Ð$ð
à×$Ò$Ñ&Ô&ð
ð ×"Ò"Ñ$Ô$ð
ð 	
r   c                 ó^   — | j         r%t          j        d| j        j        z  | d¬¦  «        gS g S )Nz/'primary_key' is not a valid argument for a %s.zfields.E201)ÚobjÚid)rr   r   ÚErrorr   rU   r%   s    r   r~   zFileField._check_primary_key  sH   € ØÔ+ð 
	å”ØEØ”nÔ-ñ.àØ$ð	ñ ô ðð ð ˆIr   c                 óº   — t          | j        t          ¦  «        r@| j                             d¦  «        r&t	          j        d| j        j        z  | dd¬¦  «        gS g S )Nú/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`   rv   ra   Ú
startswithr   r„   r   rU   r%   s    r   r   zFileField._check_upload_to  sm   € Ý�d”n¥cÑ*Ô*ð 	¨t¬~×/HÒ/HÈÑ/MÔ/Mð 	å”ð%Ø'+¤~Ô'>ñ?àØ$Ø4ðñ ô ðð ð ˆIr   c                 óî   •— t          ¦   «                              ¦   «         \  }}}}|                     d¦  «        dk    r|d= | j        |d<   t	          | d| j        ¦  «        }|t          ur||d<   ||||fS )NrA   rq   rv   rt   r   )r   ÚdeconstructÚgetrv   r-   r   r   )r   r   r8   Úargsry   r   r   s         €r   rŠ   zFileField.deconstruct+  s„   ø€ Ý#(¡7¤7×#6Ò#6Ñ#8Ô#8Ñ ˆˆd�D˜&Ø�:Š:�lÑ#Ô# sÒ*Ð*Ø�|Ð$Ø"œnˆˆ{ÑÝ˜$Ð 3°T´\ÑBÔBˆØ�/Ð)Ð)Ø 'ˆF�9ÑØ�T˜4 Ð'Ð'r   c                 ó   — dS )Nrl   r|   r%   s    r   Úget_internal_typezFileField.get_internal_type5  s   € Øˆ{r   c                 ól   •— t          ¦   «                              |¦  «        }|€d S t          |¦  «        S r#   )r   Úget_prep_valuera   )r   rh   r   s     €r   r�   zFileField.get_prep_value8  s2   ø€ Ý‘”×&Ò& uÑ-Ô-ˆð ˆ=Ø�4Ý�5‰zŒzÐr   c                 ó¢   •— t          ¦   «                              ||¦  «        }|r)|j        s"|                     |j        |j        d¬¦  «         |S )NF)rC   )r   Úpre_saver   rC   r   r3   )r   Úmodel_instanceÚaddr3   r   s       €r   r’   zFileField.pre_save@  sN   ø€ Ý‰wŒw×Ò °Ñ4Ô4ˆØð 	8˜œð 	8à�IŠI�d”i ¤°ˆIÑ7Ô7Ð7Øˆr   c                 ó�   •—  t          ¦   «         j        ||fi |¤Ž t          || j        |                      | ¦  «        ¦  «         d S r#   )r   Úcontribute_to_classrD   rE   Údescriptor_class©r   rd   r   ry   r   s       €r   r–   zFileField.contribute_to_classG  sL   ø€ Ø#�‰ŒÔ# C¨Ð8Ð8°Ð8Ð8Ð8Ý��T”\ 4×#8Ò#8¸Ñ#>Ô#>Ñ?Ô?Ð?Ð?Ð?r   c                 ó^  — t          | j        ¦  «        r|                      ||¦  «        }nXt          j                             ¦   «                              t          | j        ¦  «        ¦  «        }t          j        ||¦  «        }t          |d¬¦  «        }| j	         
                    |¦  «        S )a  
        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)rs   rv   ÚdatetimeÚnowÚstrftimera   Ú	posixpathÚjoinr	   r   rB   )r   r   ÚfilenameÚdirnames       r   rB   zFileField.generate_filenameK  s�   € õ �D”NÑ#Ô#ð 	9Ø—~’~ h°Ñ9Ô9ˆHˆHåÔ'×+Ò+Ñ-Ô-×6Ò6µs¸4¼>Ñ7JÔ7JÑKÔKˆGÝ ”~ g¨xÑ8Ô8ˆHÝ% hÀDÐIÑIÔIˆØŒ|×-Ò-¨hÑ7Ô7Ð7r   c                 ó>   — |�t          || j        |pd¦  «         d S d S )Nrm   )rD   r   )r   r   Údatas      r   Úsave_form_datazFileField.save_form_dataZ  s2   € ð
 Ðõ �H˜dœi¨¨°Ñ4Ô4Ð4Ð4Ð4ð Ðr   c                 ó^   •—  t          ¦   «         j        di t          j        | j        dœ|¥¤ŽS )N)Ú
form_classrA   r|   )r   Ú	formfieldr   rl   rA   r€   s     €r   r§   zFileField.formfieldd  sF   ø€ Ø �u‰wŒwÔ ð 
ð 
å#œoØ"œoðð ð ðð
ð 
ð 	
r   )NNrm   N)rU   rV   rW   r   rb   r]   r—   Ú_Údescriptionr   r}   r~   r   rŠ   rŽ   r�   r’   r–   rB   r¤   r§   rZ   r[   s   @r   rl   rl   ç   sF  ø€ € € € € ð €Jð &Ðà�!�F‘)”)€Kð CGð7ð 7ð 7ð 7ð 7ð 7ð0
ð 
ð 
ð 
ð 
ðð ð ðð ð ð(ð (ð (ð (ð (ðð ð ðð ð ð ð ðð ð ð ð ð@ð @ð @ð @ð @ð8ð 8ð 8ð5ð 5ð 5ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r   rl   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚImageFileDescriptorz£
    Just like the FileDescriptor, but for ImageFields. The only difference is
    assigning the width/height to the width_field/height_field, if appropriate.
    c                 óÔ   •— |j                              | j        j        ¦  «        }t	          ¦   «                              ||¦  «         |�| j                             |d¬¦  «         d S d S )NT)Úforce)rP   r‹   r   rE   r   ri   Úupdate_dimension_fields)r   r   rh   Úprevious_filer   s       €r   ri   zImageFileDescriptor.__set__t  sg   ø€ Ø Ô)×-Ò-¨d¬jÔ.@ÑAÔAˆÝ‰Œ�Š˜ %Ñ(Ô(Ð(ð Ð$ØŒJ×.Ò.¨x¸tÐ.ÑDÔDÐDÐDÐDð %Ð$r   )rU   rV   rW   rj   ri   rZ   r[   s   @r   r«   r«   n  sK   ø€ € € € € ðð ð
Eð Eð Eð Eð Eð Eð Eð Eð Er   r«   c                   ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )ÚImageFieldFileTc                 ón   •— t          | d¦  «        r| `t          ¦   «                              |¦  «         d S )NÚ_dimensions_cache)r   r³   r   rI   )r   rC   r   s     €r   rI   zImageFieldFile.delete†  s8   ø€ å�4Ð,Ñ-Ô-ð 	'ØÐ&Ý‰Œ�Š�tÑÔÐÐÐr   rT   )rU   rV   rW   rI   rZ   r[   s   @r   r±   r±   …  s=   ø€ € € € € ðð ð ð ð ð ð ð ð ð r   r±   c                   ó|   ‡ — e Zd ZeZeZ ed¦  «        Z	 	 	 	 dˆ fd„	Z	ˆ fd„Z
d„ Zˆ fd„Zˆ fd„Zdd	„Zˆ fd
„Zˆ xZS )Ú
ImageFieldÚImageNc                 ó\   •— ||c| _         | _         t          ¦   «         j        ||fi |¤Ž d S r#   )Úwidth_fieldÚheight_fieldr   r   )r   rx   r   r¸   r¹   ry   r   s         €r   r   zImageField.__init__’  s>   ø€ ð /:¸<Ð+ˆÔ˜$Ô+Ø�‰ŒÔ˜ tÐ6Ð6¨vÐ6Ð6Ð6Ð6Ð6r   c                 ób   •— g  t          ¦   «         j        di |¤Ž¢|                      ¦   «         ¢S r{   )r   r}   Ú_check_image_library_installedr€   s     €r   r}   zImageField.check�  s?   ø€ ð
Ø�U‰WŒWŒ]Ð$Ð$˜VÐ$Ð$ð
à×0Ò0Ñ2Ô2ð
ð 	
r   c                 óf   — 	 ddl m} g S # t          $ r t          j        dd| d¬¦  «        gcY S w xY w)Nr   )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»   z)ImageField._check_image_library_installed£  sv   € ð	Ø!Ð!Ð!Ð!Ð!Ð!ð ˆIøõ ð 	ð 	ð 	å”ØLðIð Ø$ðñ ô ð
ð 
ð 
ð 
ð	øøøs   ‚
 Š#0¯0c                 óž   •— t          ¦   «                              ¦   «         \  }}}}| j        r
| j        |d<   | j        r
| j        |d<   ||||fS )Nr¸   r¹   )r   rŠ   r¸   r¹   )r   r   r8   rŒ   ry   r   s        €r   rŠ   zImageField.deconstructµ  s`   ø€ Ý#(¡7¤7×#6Ò#6Ñ#8Ô#8Ñ ˆˆd�D˜&ØÔð 	5Ø$(Ô$4ˆF�=Ñ!ØÔð 	7Ø%)Ô%6ˆF�>Ñ"Ø�T˜4 Ð'Ð'r   c                 óÆ   •—  t          ¦   «         j        ||fi |¤Ž |j        j        s6| j        s| j        r*t          j                             | j	        |¬¦  «         d S d S d S )N)Úsender)
r   r–   Ú_metaÚabstractr¸   r¹   r
   Ú	post_initÚconnectr®   r˜   s       €r   r–   zImageField.contribute_to_class½  s‡   ø€ Ø#�‰ŒÔ# C¨Ð8Ð8°Ð8Ð8Ð8ð ŒyÔ!ð 	P tÔ'7ð 	P¸4Ô;Lð 	PÝÔ×%Ò% dÔ&BÈ3Ð%ÑOÔOÐOÐOÐOð	Pð 	Pð 	Pð 	Pr   Fc                 ó   — | j         p| j        }|r| j        |j        vrdS t	          || j        ¦  «        }|s|sdS | j         rt	          || j         ¦  «         p| j        ot	          || j        ¦  «          }|r|sdS |r|j        }|j        }	nd}d}	| j         rt          || j         |¦  «         | j        rt          || j        |	¦  «         dS dS )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¹   rE   rP   r-   ÚwidthÚheightrD   )
r   r   r­   rŒ   ry   Úhas_dimension_fieldsr3   Údimension_fields_filledrÇ   rÈ   s
             r   r®   z"ImageField.update_dimension_fieldsÇ  s.  € ð  $Ô/ÐD°4Ô3DÐØ#ð 	 t¤|¸8Ô;LÐ'LÐ'LØˆFõ
 �x ¤Ñ.Ô.ˆð ð 	˜Eð 	ØˆFð ÔÐI¥g¨h¸Ô8HÑ&IÔ&IÐ"Ið PØÔ!ÐN­'°(¸DÔ<MÑ*NÔ*NÐ&Nð#
Ðð #ð 	¨5ð 	ØˆFð ð 	Ø”JˆEØ”[ˆFˆFð ˆEØˆFð Ôð 	7Ý�H˜dÔ.°Ñ6Ô6Ð6ØÔð 	9Ý�H˜dÔ/°Ñ8Ô8Ð8Ð8Ð8ð	9ð 	9r   c                 óR   •—  t          ¦   «         j        di dt          j        i|¥¤ŽS )Nr¦   r|   )r   r§   r   rµ   r€   s     €r   r§   zImageField.formfield   s=   ø€ Ø �u‰wŒwÔ ð 
ð 
à�eÔ.ðàðð
ð 
ð 	
r   )NNNN)F)rU   rV   rW   r±   rb   r«   r—   r¨   r©   r   r}   r»   rŠ   r–   r®   r§   rZ   r[   s   @r   rµ   rµ   �  sð   ø€ € € € € Ø€JØ*ÐØ�!�G‘*”*€Kð ØØØð	7ð 	7ð 	7ð 	7ð 	7ð 	7ð
ð 
ð 
ð 
ð 
ðð ð ð$(ð (ð (ð (ð (ðPð Pð Pð Pð Pð79ð 79ð 79ð 79ðr
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r   rµ   )"r›   rž   Údjangor   Údjango.corer   Údjango.core.files.baser   Ú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   r]   rl   r«   r±   rµ   r|   r   r   ú<module>rØ      s0  ðØ €€€Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø .Ð .Ð .Ð .Ð .Ð .Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø $Ð $Ð $Ð $Ð $Ð $Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø )Ð )Ð )Ð )Ð )Ð )Ø :Ð :Ð :Ð :Ð :Ð :Ø -Ð -Ð -Ð -Ð -Ð -Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ðC*ð C*ð C*ð C*ð C*��jñ C*ô C*ð C*ðLL6ð L6ð L6ð L6ð L6Ð&ñ L6ô L6ð L6ð^D
ð D
ð D
ð D
ð D
�ñ D
ô D
ð D
ðNEð Eð Eð Eð E˜.ñ Eô Eð Eð.ð ð ð ð �Y 	ñ ô ð ðy
ð y
ð y
ð y
ð y
�ñ y
ô y
ð y
ð y
ð y
r   