B
    bEf4                 @   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)Zconfigr	   r   )selfr   r   Z_argsZ_kwargs r   $./modules/rdisk/data_driver/rdisk.py__init__   s    
zRDiskDataDriver.__init__.c             C   s8   d }|dkr d }t jr t jjj}t|| jtj |dS )N.)login)	gZcurrent_userr   valuer   r	   ZAPPZrsa_public_keyZ
export_key)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}
x*d	D ]"}||	krt|
|j|	| d
 qW |
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idZ_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 )N)r   r   r   r+   r   delete)r
   r-   r"   r#   r$   r&   r   r   r   r/   `   s    zRDiskDataDriver.deletec             O   s&   |   }|j|jj}|jj|_|S )N)r   r   r   r+   r   r,   )r
   r-   r"   r#   r$   r&   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 }
x dD ]}||krv|| |
|< qvW |
rx4|	D ],}x&|
 D ]\}}t	||j
|d	 qW qW |	S td S )
Nr   uE   Укажите filter, например ['parent_id', '==', '/Trash']r   r)   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 )N)r   create_rfile_from_templater+   )r
   dirnamefilenamer"   r#   r$   Zresr   r   r   r4      s    z*RDiskDataDriver.create_rfile_from_templatec             O   s&   |   }|j|jj}|| d S )N)r   r   r   r+   r   rename)r
   r-   Z	target_idr"   r#   r$   r&   r   r   r   r7      s    zRDiskDataDriver.renamec             C   s   d S )Nr   )r
   r   r   r   commit   s    zRDiskDataDriver.commitc             C   s   d S )Nr   )r
   r   r   r   rollback   s    zRDiskDataDriver.rollbackc             C   s   d S )Nr   )r
   r   r   r   before_request   s    zRDiskDataDriver.before_requestc             C   s   d S )Nr   )r
   r   r   r   before_first_request   s    z$RDiskDataDriver.before_first_requestc             C   s   d S )Nr   )r
   	cmf_modelr   r   r   dp_model   s    zRDiskDataDriver.dp_modelc             C   s   d S )Nr   )r
   Zsa_modelr   r   r   r<      s    zRDiskDataDriver.cmf_modelc             C   s   d S )Nr   )r
   Zdp_instancer   r   r   is_instance   s    zRDiskDataDriver.is_instancec             C   s   d S )Nr   )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)r*   exist_ok)r   r   r.   )r
   r$   r   r   r   init_db   s    
zRDiskDataDriver.init_dbc             C   s   |   j|}|| d S )N)r   r   r   write)r
   r+   datar&   r   r   r   rC      s    zRDiskDataDriver.writec             O   sB   |   }|j|}|s2||}|jdddd |j|| d S )NFT)r*   rA   r   )r   r   r   Z	get_rfiler.   stream_write)r
   r+   r"   r#   r$   r&   r   r   r   rE      s    
zRDiskDataDriver.stream_write).)__name__
__module____qualname__r   r   r   r.   r/   r0   r3   r4   r7   r8   r9   r:   r;   r=   r<   r>   r?   r@   rB   rC   rE   r   r   r   r   r      s*   
!r   N)Zcmf.includeZcmf.data_providers.baser   r   Zrdiskr   r   r   r   r   r   <module>   s   