
    *.+h7                     F    d dl T d dlmZmZ d dlmZ  G d de          ZdS )    )*)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dS )RDiskDataDriverN)	ds_confignamec                <    || _         |d         | _        || _        d S )Nuri)configr   r
   )selfr	   r
   _args_kwargss        $./modules/rdisk/data_driver/rdisk.py__init__zRDiskDataDriver.__init__   s     U#			    .c                     d }|du r$d }t           j        rt           j        j        j        }t	          || j        t          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    sg    3  L~ 3,2$(C$6$A$A$C$C5Y]Yd
 
 
 	
r   c                 :   |                     dd          }|                                 }|r	|d         }n3|                     d          r|d         }|d         d         }nt          t          |t          j        j                  r|j        }|j        	                    ||          }|sd S |                     d          }	t                                          ||	|          }
d	D ]0}||	v r*t          |
|                              |	|         
           1|
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'CCZZ!! 	&X&G!*Q-CC%%c3:-.. 	)Cg&&s%&88 	4jj+,,xx%%cCu%MM; 	G 	GJS  j))..c*o.FFFr   c                    |                                  }|j        j        }|j                            |          }|                    |j        j        |j        j                  }|j        |j        _	        |j
        |j
        _	        d S N)r   	parent_idr   r/   r0   	add_childr
   is_dirid_valueperm_str)r   instancer4   r5   r6   r?   parent_fr9   s           r   createzRDiskDataDriver.createT   sm    [[]]&,	7++I66  !4ho6KLL V#&<   r   c                     |                                  }|j                            |j        j                  }|                                 |S r>   )r   r/   r0   rB   r   deleter   rE   r4   r5   r6   r9   s         r   rI   zRDiskDataDriver.delete`   s;    [[]]g&&x{'899

r   c                     |                                  }|j                            |j        j                  }|j        j        |_        |S r>   )r   r/   r0   rB   r   rD   rJ   s         r   updatezRDiskDataDriver.updatef   s;    [[]]g&&x{'899(.r   c                 &   |                                  }|d         }|st          d          |d         d         dk    r|d         d         }|j                            |          }|                    d          }|j        sg S t                                          |j        ||          }	i }
dD ]}||v r||         |
|<   |
rC|	D ]@}|
                                D ])\  }}t          ||          
                    |	           *A|	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.listl   sF   [[]]" 	ecddd1:a=K''
1I)))44B**/00C; 	xx++BKE+JJHK? > >
$$.1*oK
+ H# H HC1<1B1B1D1D H H-
IZ0055Y5GGGGHO%%r   c                 d    |                                  }|                    ||          }|j        S r>   )r   create_rfile_from_templaterB   )r   dirnamefilenamer4   r5   r6   ress          r   rW   z*RDiskDataDriver.create_rfile_from_template   s+    [[]]++GX>>vr   c                     |                                  }|j                            |j        j                  }|                    |           d S r>   )r   r/   r0   rB   r   rename)r   rE   	target_idr4   r5   r6   r9   s          r   r\   zRDiskDataDriver.rename   sA    [[]]g&&x{'899

9r   c                     d S r>    r   s    r   commitzRDiskDataDriver.commit       r   c                     d S r>   r_   r`   s    r   rollbackzRDiskDataDriver.rollback   rb   r   c                     d S r>   r_   r`   s    r   before_requestzRDiskDataDriver.before_request   rb   r   c                     d S r>   r_   )r   	cmf_models     r   dp_modelzRDiskDataDriver.dp_model   rb   r   c                     d S r>   r_   )r   sa_models     r   rh   zRDiskDataDriver.cmf_model   rb   r   c                     d S r>   r_   )r   dp_instances     r   is_instancezRDiskDataDriver.is_instance   rb   r   c                     d S r>   r_   )r   models_s     r   make_modelszRDiskDataDriver.make_models   rb   r   c                     dS )u,   Вернём кастомный запросNr_   )r   r4   r5   s      r   query_deprecatedz RDiskDataDriver.query_deprecated   s      r   c                 h    |                      d           }|j                            dd           d S )NT)rA   exist_ok)r   r/   rG   )r   r6   s     r   init_dbzRDiskDataDriver.init_db   s1    [[
dT22222r   c                     |                                  j                            |          }|s?|                                                      |          }|                    ddd            |j        |i | d S NFT)rA   ru   r&   )r   r/   r0   	get_rfilerG   write)r   rB   r4   r5   r9   s        r   rz   zRDiskDataDriver.write   sy    kkmm 11"55 	B++--))"--CJJedDJAAA	4"6"""""r   c                     |                                  }|j                            |          }|s-|                    |          }|                    ddd            |j        |i | d S rx   )r   r/   r0   ry   rG   stream_write)r   rB   r4   r5   r6   r9   s         r   r|   zRDiskDataDriver.stream_write   st    [[]]g&&r** 	B,,r""CJJedDJAAA$)&)))))r   c                 l    |                                  }|j                            |          }|j        S r>   )r   r/   r0   tmp_readonly_path)r   rB   r6   r9   s       r   r~   z!RDiskDataDriver.tmp_readonly_path   s-    [[]]g&&r**$$r   ).)__name__
__module____qualname__r   r   r*   rG   rI   rL   rU   rW   r\   ra   rd   rf   ri   rh   rn   rq   rs   rv   rz   r|   r~   r_   r   r   r   r      sd       )-D     2

 

 

 

&  B0 0 0    & & &0  
  
              ; ; ;3 3 3# # #* * *% % % % %r   r   N)cmf.includecmf.data_providers.baser   r   rdiskr   r   r_   r   r   <module>r      sy        : : : : : : : :      v% v% v% v% v%n v% v% v% v% v%r   