
    R}bg@                     L   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 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 dZdZ G d de          Z e Z!d Z" G d de
          Z#e#Z$e G d de                      Z%e%Z&dS )    N)BytesIO)copyfileobj)SpooledTemporaryFile)ImproperlyConfigured)File)	safe_join)deconstructible)Dropbox)ApiError)
CommitInfo)FolderMetadata)UploadSessionCursor)	WriteMode)BaseStorage)get_available_overwrite_name)settingd   addc                       e Zd ZdS )DropboxStorageExceptionN)__name__
__module____qualname__     l/home/e360mart.nyusoft.in/public_html/e360mart_env/lib/python3.11/site-packages/storages/backends/dropbox.pyr   r      s        Dr   r   c                 ^    |                     |           r|t          |           d          }|S N)
startswithlen)prefixnames     r   removeprefixr#   $   s/    v #CKKMM"Kr   c                   8    e Zd Zd Zd Zd Z eee          ZdS )DropboxFilec                 0    || _         || _        d | _        d S r   )r"   _storage_file)selfr"   storages      r   __init__zDropboxFile.__init__+   s    	


r   c                    | j         t                      | _         | j        j                            | j                  \  }}|j        dk    rBt          |j                  5 }t          || j                    d d d            n# 1 swxY w Y   n-t          d                    |j        | j                            | j                             d           | j         S )N   z7Dropbox server returned a {} response when accessing {}r   )r(   r   r'   clientfiles_downloadr"   status_coder   contentr   r   formatseek)r)   file_metadataresponsefile_contents       r   	_get_filezDropboxFile._get_file0   s   :-//DJ '+m&:&I&I$)&T&T#M8#s**X-.. :,dj999: : : : : : : : : : : : : : : .MTT ,di   
 JOOAzs   !BB
Bc                     || _         d S r   )r(   )r)   values     r   	_set_filezDropboxFile._set_fileC   s    


r   N)r   r   r   r+   r7   r:   propertyfiler   r   r   r%   r%   *   sN          
  &   8Iy))DDDr   r%   c                   r     e Zd ZdZdZd fd	Zd Zd Zd Zd Z	d	 Z
d
 Zd ZddZd Zd Zd fd	Z xZS )DropboxStoragez:Dropbox Storage class for Django pluggable storage system.i  @ Nc                     t                      j        dd|i| | j        0t          | j        | j        | j        g          st          d          t          | j        | j        | j        | j        | j	                  | _
        t          | d          r(t          j        dt                     | j        | _        d S d S )Noauth2_access_tokenzYou must configure an auth token at'settings.DROPBOX_OAUTH2_TOKEN' or 'setting.DROPBOX_APP_KEY', 'setting.DROPBOX_APP_SECRET' and 'setting.DROPBOX_OAUTH2_REFRESH_TOKEN'.)app_key
app_secretoauth2_refresh_tokentimeoutlocationzSetting `root_path` with name `location` is deprecated and will be removed in a future version of django-storages. Please update the name from `location` to `root_path`r   )superr+   r@   allrA   rB   rC   r   r
   rD   r.   hasattrwarningswarnDeprecationWarningrE   	root_path)r)   r@   settings	__class__s      r   r+   zDropboxStorage.__init__R   s    MM-@MHMMM#+C\4?D,EF5
 5
+ '>   $L!%!:L
 
 
 4$$ 	+M6 #	   "]DNNN	+ 	+r   c           
          t          dd          t          d          t          d          t          d          t          d          t          dt                    t          dt                    d	S )
NDROPBOX_ROOT_PATH/DROPBOX_OAUTH2_TOKENDROPBOX_APP_KEYDROPBOX_APP_SECRETDROPBOX_OAUTH2_REFRESH_TOKENDROPBOX_TIMEOUTDROPBOX_WRITE_MODE)rL   r@   rA   rB   rC   rD   
write_mode)r   _DEFAULT_TIMEOUT_DEFAULT_MODE)r)   s    r   get_default_settingsz#DropboxStorage.get_default_settingsq   sl     !4c::#*+A#B#B011!"677$+,J$K$K02BCC!"6FF
 
 	
r   c                 d    |dk    rd}t          | j        |                              dd          S )NrQ    \)r   rL   replacer)   r"   s     r   
_full_pathzDropboxStorage._full_path|   s2    3;;D..66tSAAAr   c                 `    | j                             |                     |                     d S r   )r.   files_deletera   r`   s     r   deletezDropboxStorage.delete   s*      !6!677777r   c                     	 t          | j                            |                     |                              S # t          $ r Y dS w xY w)NF)boolr.   files_get_metadatara   r   r`   s     r   existszDropboxStorage.exists   sS    	66tt7L7LMMNNN 	 	 	55	s   9< 
A
	A
c                 (   g g }}|                      |          }|dk    rd}| j                            |          }|j        D ]L}t	          |t
                    r|                    |j                   2|                    |j                   M||fS )NrQ   r]   )ra   r.   files_list_folderentries
isinstancer   appendr"   )r)   pathdirectoriesfiles	full_pathmetadataentrys          r   listdirzDropboxStorage.listdir   s    UOOD))	I;00;;% 	) 	)E%00 )""5:....UZ((((E!!r   c                 j    | j                             |                     |                    }|j        S r   )r.   rg   ra   size)r)   r"   rr   s      r   rv   zDropboxStorage.size   s+    ;11$//$2G2GHH}r   c                     	 | j                             |                     |                    }|j        S # t          $ r Y d S w xY wr   )r.   files_get_temporary_linkra   linkr   )r)   r"   medias      r   urlzDropboxStorage.url   sR    	K889N9NOOE: 	 	 	44	s   36 
AArbc                 L    t          |                     |          |           }|S r   )r%   ra   )r)   r"   moderemote_files       r   _openzDropboxStorage._open   s#    !$//$"7"7>>r   c                    |                                  |j        | j        k    rU| j                            |                                |                     |          t          | j                             n)| 	                    ||                     |                     |
                                 t          | j        |                              d          S )N)r~   rQ   )openrv   
CHUNK_SIZEr.   files_uploadreadra   r   rX   _chunked_uploadcloser#   rL   lstrip)r)   r"   r1   s      r   _savezDropboxStorage._save   s    <4?**K$$ 5 5Ido<V<V %       $//$*?*?@@@ DND1188===r   c                    | j                             |                    | j                            }t	          |j        |                                          }t          |t          | j	                            }|                                |j
        k     r|j
        |                                z
  | j        k    r5| j                             |                    | j                  ||           nL| j                             |                    | j                  |           |                                |_        |                                |j
        k     d S d S )N)
session_idoffset)rn   r~   )r.   files_upload_session_startr   r   r   r   tellr   r   rX   rv   files_upload_session_finishfiles_upload_session_append_v2r   )r)   r1   	dest_pathupload_sessioncursorcommits         r   r   zDropboxStorage._chunked_upload   s6   ??LL))
 
 %%0
 
 
 4?1K1KLLLllnnw|++w||~~-$/AA77LL1166    ::LL116   !( llnnw|++++++r   c                     |                      |          }| j        dk    rt          ||          S t                                          ||          S )z+Overwrite existing file with the same name.	overwrite)ra   rX   r   rF   get_available_name)r)   r"   
max_lengthrN   s      r   r   z!DropboxStorage.get_available_name   sK    t$$?k))/jAAAww))$
;;;r   r   )r|   )r   r   r   __doc__r   r+   r[   ra   rd   rh   rt   rv   r{   r   r   r   r   __classcell__)rN   s   @r   r>   r>   L   s       DD J+ + + + + +>	
 	
 	
B B B
8 8 8  " " "       > > >/ / /(< < < < < < < < < <r   r>   )'rI   ior   shutilr   tempfiler   django.core.exceptionsr   django.core.files.baser   django.utils._osr   django.utils.deconstructr	   dropboxr
   dropbox.exceptionsr   dropbox.filesr   r   r   r   storages.baser   storages.utilsr   r   rY   rZ   	Exceptionr   DropBoxStorageExceptionr#   r%   DropBoxFiler>   DropBoxStorager   r   r   <module>r      s  
              ) ) ) ) ) ) 7 7 7 7 7 7 ' ' ' ' ' ' & & & & & & 4 4 4 4 4 4       ' ' ' ' ' ' $ $ $ $ $ $ ( ( ( ( ( ( - - - - - - # # # # # # % % % % % % 7 7 7 7 7 7 " " " " " " 	 	 	 	 	i 	 	 	 2   * * * * *$ * * *>  B< B< B< B< B<[ B< B< B<J  r   