
    ^Og                     N   S SK r S SKrS SKrS SKJrJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJr   S SKJr  SrS S
KJr  S SKJrJr  SrSq\(       a   " S S\5      rO " S S\5      r " S S\5      rS r\" 5       r\" 5       " 5       r\" \5      " 5       r g! \\	4 a    S	r Nkf = f)    N)basenamedirname)ManifestStaticFilesStorage)ImproperlyConfigured)ContentFile)get_storage_classFileSystemStorage)S3BotoStorageTF)settings)IMAGE_CACHE_STORAGESTATICFILES_STORAGEfrankic                   L   ^  \ rS rSrU 4S jrU 4S jrU 4S jrU 4S jrSrU =r	$ )LocallyMirroredS3BotoStorage   c                 f   > [         [        U ]
  " U0 UD6  [        [        R
                  S9U l        g )N)location)superr   __init__r	   r   S3_MIRROR_ROOTmirror)selfargskwargs	__class__s      R/Users/admin/workspace/ai/Jarvis/env/lib/python3.13/site-packages/image/storage.pyr   %LocallyMirroredS3BotoStorage.__init__   s*    .>OO+X5L5LMDK    c                 2  > [         [        U ]  U5         U R                  R                  U5        g ! [         aZ    U R                  R                  U5      n[        R
                  R                  U5      (       a  [        R                  " U5         g  g f = fN)	r   r   deleter   OSErrorpathosexistsrmdir)r   name	full_pathr   s      r   r!   #LocallyMirroredS3BotoStorage.delete!   sq    .<TB(""4( ( KK,,T2	77>>),,HHY' -(s   2 ABBc                    > U R                   R                  U5      nU(       a  g[        [        U ]  U5      nU(       a&  U R                   R	                  U[        S5      5        gg)NT F)r   r%   r   r   _saver   )r   r'   exists_localexists_remoter   s       r   r%   #LocallyMirroredS3BotoStorage.exists*   sQ    ;;--d3L %&BD PQU V KK%%dKO<r   c                 x   > [         [        U ]  X5      nU R                  R                  U[	        S5      5        U$ )Nr+   )r   r   r,   r   r   )r   r'   contentcleaned_namer   s       r   r,   "LocallyMirroredS3BotoStorage._save5   s3     !=tJ4YLKKdKO4r   )r   )
__name__
__module____qualname____firstlineno__r   r!   r%   r,   __static_attributes____classcell__r   s   @r   r   r      s    	N	(			  	 r   r   c                       \ rS rSrS rSrg)r   :   c                     [        S5      e)NzPIn order to use LocallyMirroredS3BotoStorage you need to install django-storages)ImportError)r   r   r   s      r   r   r   ;   s    pqqr    N)r4   r5   r6   r7   r   r8   r?   r   r   r   r   :   s    	rr   c                   L   ^  \ rS rSrSrSU 4S jjrU 4S jrSU 4S jjrSrU =r	$ )	ImageCacheStorage?   Fc                    > Uc  [         R                  nUc  [         R                  nU(       d  [        S5      e[        [
        U ]  " X/UQ70 UD6  g NzIMAGE_CACHE_ROOT not defined.)r   IMAGE_CACHE_ROOTIMAGE_CACHE_URLr   r   rA   r   )r   r   base_urlr   r   r   s        r   r   ImageCacheStorage.__init__B   sN    00H//H&'FGG/TTTVTr   c                 b   > U R                   (       d  [        S5      e[        [        U ]  U5      $ rD   )r   r   r   rA   r#   )r   r'   r   s     r   r#   ImageCacheStorage.pathK   s)    }}&'FGG&2488r   c                 >   > [         [        U ]  U[        U5      US9  g )N)
max_length)r   rA   saver   )r   r'   r1   rL   r   s       r   rM   ImageCacheStorage.saveP   s     +D+g2FS]+^r   r?   )NNr    )
r4   r5   r6   r7   autogen_requiredr   r#   rM   r8   r9   r:   s   @r   rA   rA   ?   s     U9
_ _r   rA   c                      [         (       a  [         $ [        (       a  [        [        5      n O
[        5       n U " 5       q [         $ r    )STORAGEsettings_IMAGE_CACHE_STORAGEr   )storage_classs    r   get_storagerT   T   s1    w##)*FG)+oGNr   )!hashlibr$   sysos.pathr   r   "django.contrib.staticfiles.storager   django.core.exceptionsr   django.core.files.baser   django.core.files.storager   r	   storages.backends.s3botor
   BOTO_IS_AVAILABLEr>   imager   image.settingsr   rR   r   
__author__rQ   r   objectrA   rT   MEDIA_STORAGESTATIC_STORAGEr?   r   r   <module>rd      s     	 
 % I 7 . J6  c

 }  <rv r
_) _*	 "m !#%"#679c 	)* s   B 
B$#B$