U
    Vc7                     @   sf   d dl Z d dlZd dlZd dlZd dlZd dlZd dlT ejej	 Z
dddZG dd dejjZdS )	    N)*   c                 C   s   d dd t| D S )N c                 s   s   | ]}t tV  qd S N)secretschoicealphabet).0_ r   &/opt/crm/modules/rdisk/models/index.py	<genexpr>   s     zgen_token.<locals>.<genexpr>)joinrange)lengthr   r   r   	gen_token   s    r   c                   @   sh   e Zd ZdZedd Zedd Zedd Zdd	 Zd
d Z	dd Z
edd Zdd Zdd ZdS )CmfRFileTc                 C   s,   | j r
d S | jjr| jsd S tjd | j S Nz
rdisk/fileis_dirid
is_definedrequesthost_urlselfr   r   r   _download_url   s
    zCmfRFile._download_urlc                 C   s,   | j r
d S | jjr| jsd S tjd | j S r   r   r   r   r   r   _upload_url   s
    zCmfRFile._upload_urlc                 C   s   | j S r   )r   r   r   r   r   _code&   s    zCmfRFile._codec                 C   s   d S r   r   r   r   r   r   gen_id*   s    zCmfRFile.gen_idc                 C   s   d S r   r   r   r   r   r   gen_code-   s    zCmfRFile.gen_codec                 C   s   | j j| jj| d S r   )dpdata_driverwriter   value)r   datar   r   r   r#   0   s    zCmfRFile.writec                 C   s(   | j jj||| d}| j|dddgdS )N)modelr   namecode)fields)r!   r"   create_rfile_from_templateget)clsdirnamefilenamer   r   r   r   r*   3   s    z#CmfRFile.create_rfile_from_templatec                 O   sd  t jd}|rd}nt j d}|dkr|ddddd	}d
}| D ],\}}	| jjdd |	krD||} qqDtdnj|dkrd}|rd}nT|dkrd}nF|dkrd}n8|dkrd}n*|dkrd}n|dkrd}nt	d| t
jjj}
td|
 }|jddd d }| D ]b}| s,q| }t|}|d }|t k r`|  q|d }| j|kr|}qd }|r| }t|}tj|d! tj d"}t|d }|t kr|j}n|  |sNtd#}d$}d%|
 d&| d&| }t j d'tt d( | jjd)}|| }|j!jdd* |"t#| || | | j }|S )+Nz	127.0.0.1z127.0.0.1:8081/webdav/z/webdav/Zmsoffice)xlsZxltxlmZxlsmxlsxZxltmZxltxods)	ZppsZpptZpptmZpptxZpotmZpotxZppsmZppsxZodp)	docdotZdocmdocxZdotmZdotxZodthtmlZrtf)ZvsdZvsdmZvsdxZvstmZvstxZodg)excelZ
powerpointwordZvisiozms-{}:ofe|u|https://.uF   Не могу открыть файл в пакете Microsoft OfficeZlibreofficez
webdavs://z	webdav://Zkeynotez
keynote://Z	office365zoffice365://Z
googledocszgoogledocs://Z	activecrmzactivecrm://folderzdav://u)   Неизвестный редактор: z/opt/rdisk/sessions/T)exist_okparentsexpr.   jwt)keyr   W   Zs_r
   access_token   )r?   r>   r.   )r<   )$r   host
startswithitemsr   r$   splitformat
ValueError	Exceptiongcurrent_personloginpathlibPathmkdiriterdiris_file	read_textujsonloadstimeunlinkr+   jwtlibdecodeAPPrsa_public_key
export_keyintr'   r   cookiesparent
write_textdumps)r   editorargskwargsZis_localhostZ
webdav_urlZms_office_type_to_ext_mapprotocolkvrM   Z	login_dirZ
found_pathpZp_textZp_datar>   r.   Zsession_nameZjson_strjsonZ
jwt_headertokensecreturlr   r   r   gen_url_for_webdav8   s    







zCmfRFile.gen_url_for_webdavc              
   K   sN   z| j j| | W n. tk
rB } ztt| W 5 d }~X Y nX | |S r   )r!   r"   renameFileExistsError	cmf_alertstrr+   )r   	target_idrd   er   r   r   rn      s
    zCmfRFile.renameN)__name__
__module____qualname__no_cachepropertyr   r   r   r   r    r#   classmethodr*   rm   rn   r   r   r   r   r      s   



ur   )r   )rN   r   stringrV   r?   rX   rT   cmf.includeascii_lettersdigitsr   r   cmfmodels	BaseModelr   r   r   r   r   <module>   s   
