
    zio                     @    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           	      b   d }|du r6d }t         j                  r$t         j                  j                  j                  }t        j
                  rt        j                  rdnd }t        || j                  t        j                  j                         || j                  |t        j                        S )N.T)loginr   
ha_enabledha_file_markers)gcurrent_userr   valuer   HA_COMPANIONHA_ROLEr   r   APPrsa_public_key
export_keyHA_FILE_MARKERS)r   access_tokenr   r   s       r   get_rdzRDiskDataDriver.get_rd    s    3  L~~,,22#00V^^T
$((C$6$6$A$A$C5Y]YdYd!63I3I
 	
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.get5   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   r4   r5   	add_childr
   is_dirid_value
startswithperm_str)r   instancer9   r:   r;   rD   parent_fr>   s           r   createzRDiskDataDriver.createV   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"   r4   r5   rG   r   deleter   rK   r9   r:   r;   r>   s         r   rP   zRDiskDataDriver.deletec   s9    [[]gg&&x{{'8'89

r   c                    | j                         }|j                  j                  |j                  j                        }|j                  dk(  s6|j                  j                  d      s|j                  j                  |_        |S rC   )r"   r4   r5   rG   r   rI   rJ   rQ   s         r   updatezRDiskDataDriver.updatei   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   rD   r&   r'   )r(   r)   r-   )r"   	Exceptionr4   r5   r/   r,   r   list_to_cmfitemsr7   r8   r0   )r   r(   r9   r:   r;   r=   rD   rfr?   obj_listload_fieldsrA   r>   	field_ffls                 r   listzRDiskDataDriver.listp   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 rO   )r"   create_rfile_from_templaterG   )r   dirnamefilenamer9   r:   r;   ress          r   r^   z*RDiskDataDriver.create_rfile_from_template   s(    [[]++GX>vvr   c                     | j                         }|j                  j                  |j                  j                        }|j                  |       y rO   )r"   r4   r5   rG   r   rename)r   rK   	target_idr9   r:   r;   r>   s          r   rc   zRDiskDataDriver.rename   s7    [[]gg&&x{{'8'89

9r   c                      y rO    r   s    r   commitzRDiskDataDriver.commit       r   c                      y rO   rf   rg   s    r   rollbackzRDiskDataDriver.rollback   ri   r   c                      y rO   rf   rg   s    r   before_requestzRDiskDataDriver.before_request   ri   r   c                      y rO   rf   )r   	cmf_models     r   dp_modelzRDiskDataDriver.dp_model   ri   r   c                      y rO   rf   )r   sa_models     r   ro   zRDiskDataDriver.cmf_model   ri   r   c                      y rO   rf   )r   dp_instances     r   is_instancezRDiskDataDriver.is_instance   ri   r   c                      y rO   rf   )r   models_s     r   make_modelszRDiskDataDriver.make_models   ri   r   c                      y)u,   Вернём кастомный запросNrf   )r   r9   r:   s      r   query_deprecatedz RDiskDataDriver.query_deprecated   s    r   c                 `    | j                  d       }|j                  j                  dd       y )NT)rF   exist_ok)r"   r4   rM   )r   r;   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)rF   r|   r+   )r"   r4   r5   	get_rfilerM   write)r   rG   r9   r:   r>   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 r   )r"   r4   r5   r   rM   stream_write)r   rG   r9   r:   r;   r>   s         r   r   zRDiskDataDriver.stream_write   sY    [[]gg&&r*,,r"CJJedDJA$)&)r   c                 p    | j                         }|j                  j                  |      }|j                  S rO   )r"   r4   r5   tmp_readonly_path)r   rG   r;   r>   s       r   r   z!RDiskDataDriver.tmp_readonly_path   s-    [[]gg&&r*$$$r   ).)__name__
__module____qualname__r   r"   r/   rM   rP   rS   r\   r^   rc   rh   rk   rm   rp   ro   ru   rx   rz   r}   r   r   r   rf   r   r   r   r      sq    )-D 2
*B4&0

;3#*%r   r   N)cmf.includecmf.data_providers.baser   r   rdiskr   r   rf   r   r   <module>r      s     : z%n z%r   