
    |q@i                     @    d dl  d dlmZmZ d dlmZ  G d de      Zy)    )*)BaseDataDriverMapper)RDiskc                       e Zd ZddddZddZd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)RDiskDataDriverN)	ds_confignamec                4    || _         |d   | _        || _        y )Nuri)configr   r
   )selfr	   r
   _args_kwargss        $./modules/rdisk/data_driver/rdisk.py__init__zRDiskDataDriver.__init__   s    U#	    c                     d }|du r6d }t         j                  r$t         j                  j                  j                  }t	        || j
                  t        j                  j                         || j                        S )N.)loginr   )
gcurrent_userr   valuer   r   APPrsa_public_key
export_keyr   )r   access_tokenr   s      r   get_rdzRDiskDataDriver.get_rd    sd    3  L~~,,22$((C$6$6$A$A$C5Y]YdYd
 	
r   c                    |j                  dd      }| j                         }|r|d   }n%|j                  d      r|d   }|d   d   }nt        t        |t        j
                  j                        r|j                  }|j                  j                  ||      }|sy |j                  d      }	t               j                  ||	|      }
d	D ]&  }||	v st        |
|      j                  |	|   
       ( |
S )NmkdirFr   filter   )r   full_fields_load)r"   modelparentparentschildrenfields)getr   NotImplementedError
isinstancecmfr)   CmfTyper   rootfind_child_by_idr   object_to_cmfgetattrload)r   r#   argskwargsr   rd_id_filterobjfflmobj
field_names               r   r*   zRDiskDataDriver.get3   s    

7E*[[]q'CZZ!X&G!*Q-C%%c3::--.))Cgg&&s%&8jj+,x%%cCu%M; 	GJS j)..c*o.F	G r   c                    | j                         }|j                  j                  }|j                  j	                  |      }|j                  |j                  j                  |j                  j                        }|j                  |j                  _	        |j                  dk(  s8|j                  j                  d      s|j                  |j                  _	        y y y Nz/obj)z/obj/zobj/)r   	parent_idr   r/   r0   	add_childr
   is_dirid_value
startswithperm_str)r   instancer4   r5   r6   r?   parent_fr9   s           r   createzRDiskDataDriver.createT   s    [[]&&,,	77++I6  !4!4hoo6K6KL VV& CFF$5$56G$H'*||H$ %I r   c                     | j                         }|j                  j                  |j                  j                        }|j                          |S N)r   r/   r0   rB   r   deleter   rF   r4   r5   r6   r9   s         r   rK   zRDiskDataDriver.deletea   s9    [[]gg&&x{{'8'89

r   c                    | j                         }|j                  j                  |j                  j                        }|j                  dk(  s6|j                  j                  d      s|j                  j                  |_        |S r>   )r   r/   r0   rB   r   rD   rE   rL   s         r   updatezRDiskDataDriver.updateg   sa    [[]gg&&x{{'8'89& CFF$5$56G$H#,,22CLr   c                    | j                         }|d   }|st        d      |d   d   dk(  r|d   d   }|j                  j                  |      }|j	                  d      }|j
                  sg S t               j                  |j
                  ||      }	i }
dD ]  }||v s||   |
|<    |
r;|	D ]6  }|
j                         D ]!  \  }}t        ||      j                  |	       # 8 |	S t        )
Nr    uE   Укажите filter, например ['parent_id', '==', '/Trash']r   r?   r!   r"   )r#   r$   r(   )r   	Exceptionr/   r0   r*   r'   r   list_to_cmfitemsr2   r3   r+   )r   r#   r4   r5   r6   r8   r?   rfr:   obj_listload_fieldsr<   r9   	field_ffls                 r   listzRDiskDataDriver.listn   s   [[]"cdd1:a=K'
1I)))4B**/0C;;	x++BKKE+JHK? >
$.1*oK
+> # HC1<1B1B1D H-
IZ055Y5GHH O%%r   c                 ^    | j                         }|j                  ||      }|j                  S rJ   )r   create_rfile_from_templaterB   )r   dirnamefilenamer4   r5   r6   ress          r   rY   z*RDiskDataDriver.create_rfile_from_template   s(    [[]++GX>vvr   c                     | j                         }|j                  j                  |j                  j                        }|j                  |       y rJ   )r   r/   r0   rB   r   rename)r   rF   	target_idr4   r5   r6   r9   s          r   r^   zRDiskDataDriver.rename   s7    [[]gg&&x{{'8'89

9r   c                      y rJ    r   s    r   commitzRDiskDataDriver.commit       r   c                      y rJ   ra   rb   s    r   rollbackzRDiskDataDriver.rollback   rd   r   c                      y rJ   ra   rb   s    r   before_requestzRDiskDataDriver.before_request   rd   r   c                      y rJ   ra   )r   	cmf_models     r   dp_modelzRDiskDataDriver.dp_model   rd   r   c                      y rJ   ra   )r   sa_models     r   rj   zRDiskDataDriver.cmf_model   rd   r   c                      y rJ   ra   )r   dp_instances     r   is_instancezRDiskDataDriver.is_instance   rd   r   c                      y rJ   ra   )r   models_s     r   make_modelszRDiskDataDriver.make_models   rd   r   c                      y)u,   Вернём кастомный запросNra   )r   r4   r5   s      r   query_deprecatedz RDiskDataDriver.query_deprecated   s    r   c                 `    | j                  d       }|j                  j                  dd       y )NT)rA   exist_ok)r   r/   rH   )r   r6   s     r   init_dbzRDiskDataDriver.init_db   s$    [[
dT2r   c                     | j                         j                  j                  |      }|s3| j                         j                  |      }|j	                  ddd        |j
                  |i | y NFT)rA   rw   r&   )r   r/   r0   	get_rfilerH   write)r   rB   r4   r5   r9   s        r   r|   zRDiskDataDriver.write   s\    kkm  11"5++-))"-CJJedDJA		4"6"r   c                     | j                         }|j                  j                  |      }|s%|j                  |      }|j	                  ddd        |j
                  |i | y rz   )r   r/   r0   r{   rH   stream_write)r   rB   r4   r5   r6   r9   s         r   r~   zRDiskDataDriver.stream_write   sY    [[]gg&&r*,,r"CJJedDJA$)&)r   c                 p    | j                         }|j                  j                  |      }|j                  S rJ   )r   r/   r0   tmp_readonly_path)r   rB   r6   r9   s       r   r   z!RDiskDataDriver.tmp_readonly_path   s-    [[]gg&&r*$$$r   ).)__name__
__module____qualname__r   r   r*   rH   rK   rN   rW   rY   r^   rc   rf   rh   rk   rj   rp   rs   ru   rx   r|   r~   r   ra   r   r   r   r      sq    )-D 2

&B4&0

;3#*%r   r   N)cmf.includecmf.data_providers.baser   r   rdiskr   r   ra   r   r   <module>r      s     : x%n x%r   