U
    ".h7                     @   s8   d dl T d dlmZmZ d dlmZ G dd deZdS )    )*)BaseDataDriverMapper)RDiskc                   @   s   e Zd ZdddddZd.ddZdd	 Zd
d Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- ZdS )/RDiskDataDriverN)	ds_confignamec                O   s   || _ |d | _|| _d S )Nuri)configr	   r   )selfr   r   _args_kwargs r   $./modules/rdisk/data_driver/rdisk.py__init__   s    
zRDiskDataDriver.__init__.c                 C   s<   d }|dkr d }t jr t jjj}t|| jtj || j	dS )N.)loginr
   )
gZcurrent_userr   valuer   r	   ZAPPZrsa_public_keyZ
export_keyr
   )r   Zaccess_tokenr   r   r   r   get_rd    s    
    zRDiskDataDriver.get_rdc                 O   s   | dd}|  }|r"|d }n$| drB|d }|d d }ntt|tjjrZ|j}|jj	||d}|srd S | d}	t
 j||	|d}
d	D ]"}||	krt|
|j|	| d
 q|
S )NmkdirFr   filter   )r   full_fields_load)r   modelparentparentschildrenfields)getr   NotImplementedError
isinstanceZcmfr   ZCmfTyper   rootfind_child_by_idr   Zobject_to_cmfgetattrload)r   r   argskwargsr   rdZ_id_filterobjfflZmobj
field_namer   r   r   r    3   s&    


zRDiskDataDriver.getc                 O   sH   |   }|jj}|j|}||jj|jj}|j|j_	|j
|j
_	d S N)r   	parent_idr   r#   r$   Z	add_childr   is_dirid_valueperm_str)r   instancer'   r(   r)   r/   Zparent_fr+   r   r   r   createT   s    
zRDiskDataDriver.createc                 O   s$   |   }|j|jj}|  |S r.   )r   r#   r$   r1   r   deleter   r4   r'   r(   r)   r+   r   r   r   r6   `   s    zRDiskDataDriver.deletec                 O   s&   |   }|j|jj}|jj|_|S r.   )r   r#   r$   r1   r   r3   r7   r   r   r   updatef   s    
zRDiskDataDriver.updatec                 O   s   |   }|d }|std|d d dkr|d d }|j|}|d}|jsXg S t j|j||d}	i }
dD ]}||krt|| |
|< qt|
r|	D ](}|
 D ]\}}t	||j
|d	 qq|	S td S )
Nr   uE   Укажите filter, например ['parent_id', '==', '/Trash']r   r/   r   r   )r   r   r   )r   	Exceptionr#   r$   r    r   r   Zlist_to_cmfitemsr%   r&   r!   )r   r   r'   r(   r)   r*   r/   Zrfr,   Zobj_listZload_fieldsr-   r+   Z	field_fflr   r   r   listl   s*    
zRDiskDataDriver.listc                 O   s   |   }|||}|jS r.   )r   create_rfile_from_templater1   )r   dirnamefilenamer'   r(   r)   resr   r   r   r<      s    z*RDiskDataDriver.create_rfile_from_templatec                 O   s&   |   }|j|jj}|| d S r.   )r   r#   r$   r1   r   rename)r   r4   Z	target_idr'   r(   r)   r+   r   r   r   r@      s    zRDiskDataDriver.renamec                 C   s   d S r.   r   r   r   r   r   commit   s    zRDiskDataDriver.commitc                 C   s   d S r.   r   rA   r   r   r   rollback   s    zRDiskDataDriver.rollbackc                 C   s   d S r.   r   rA   r   r   r   before_request   s    zRDiskDataDriver.before_requestc                 C   s   d S r.   r   )r   	cmf_modelr   r   r   dp_model   s    zRDiskDataDriver.dp_modelc                 C   s   d S r.   r   )r   Zsa_modelr   r   r   rE      s    zRDiskDataDriver.cmf_modelc                 C   s   d S r.   r   )r   Zdp_instancer   r   r   is_instance   s    zRDiskDataDriver.is_instancec                 C   s   d S r.   r   )r   Zmodels_r   r   r   make_models   s    zRDiskDataDriver.make_modelsc                 O   s   dS )u,   Вернём кастомный запросNr   )r   r'   r(   r   r   r   query_deprecated   s    z RDiskDataDriver.query_deprecatedc                 C   s   |  d }|jjddd d S )NT)r0   exist_ok)r   r#   r5   )r   r)   r   r   r   init_db   s    
zRDiskDataDriver.init_dbc                 O   sB   |   j|}|s2|   |}|jdddd |j|| d S NFT)r0   rJ   r   )r   r#   r$   	get_rfiler5   write)r   r1   r'   r(   r+   r   r   r   rN      s
    zRDiskDataDriver.writec                 O   sB   |   }|j|}|s2||}|jdddd |j|| d S rL   )r   r#   r$   rM   r5   stream_write)r   r1   r'   r(   r)   r+   r   r   r   rO      s    
zRDiskDataDriver.stream_writec                 C   s   |   }|j|}|jS r.   )r   r#   r$   tmp_readonly_path)r   r1   r)   r+   r   r   r   rP      s    z!RDiskDataDriver.tmp_readonly_path).)__name__
__module____qualname__r   r   r    r5   r6   r8   r;   r<   r@   rB   rC   rD   rF   rE   rG   rH   rI   rK   rN   rO   rP   r   r   r   r   r      s*   
!r   N)Zcmf.includeZcmf.data_providers.baser   r   rdiskr   r   r   r   r   r   <module>   s   