
    SIg                     @    d dl T d dlmZ  G d dej                  ZdS )    )*)cmf_attachmentc                   
    e Zd Zed             Zed             Zed             Zed             Zed             Zed             Z	ed             Z
edd	 fd

            Zedd	 fd
            Zedd	d            Z xZS )CmfAttachmentc                    |                     d          }|                     d          }|r|sdS t          j        j        }t          j        j        }t
          j                            dd|gg dgd          }|                    d          r|r||k    rt          d	| d
d           dS |                    d          r|r||k    rt          d	| dd           dS dS dS dS )u}  Если установлен лимит на количество вложений, то мы подсчитываем их общее количество,
        и если оно превышает этот предел, то выводим алерт
        Исключаем изображения, которые добавляются copy-paste (self.embedded == True)nameparentN=)embeddedz!=TF)filterinclude_deletedCmfTaskuQ   Превышено количество добавляемых вложений (u_   ) в задачу.
                        Обратитесь к администраторуTabortCmfDocumentuc   ) в документ.
                        Обратитесь к администратору)
getgglobal_settingstask_attachment_max_countdocument_attachment_max_countmodelsr   count
startswith	cmf_alert)clskwargsr   r	   r   r   	att_counts          &./modules/api/models/cmf_attachment.pycheck_count_attachmentsz%CmfAttachment.check_count_attachments   s   
 zz&!!H%% 	6 	F$%$5$O!()(9(W%(..f7M7O7O7O7Q?D / F F	 i(( 	]%	]111 P  mF P P PW[] ] ] ] ] ] }-- 	])	]555 P  mJ P P PW[] ] ] ] ] ]		] 	] 	] 	]55    c                 >   |                     d          }t          j        j        r|sdS t          j        j        j        }d                    d |D                       }|                    dd                              d          }d |D             }d|vr't          d	d                    |           d
           |                    d          d         	                                }||v rdS t          d| dd                    |           d
           dS )u_   Проверяем расширение у добавляемого файла-вложенияr   N c              3   J   K   | ]}|                                 s|d v |V  dS ));,N)isalnum).0chars     r   	<genexpr>z5CmfAttachment.check_file_extension.<locals>.<genexpr>-   s@      (y(y$TXT`T`TbTb(yfjnxfxfxfxfxfxfx(y(yr    r$   r%   c                 Z    g | ](}|                                                                 )S  )striplower)r'   xs     r   
<listcomp>z6CmfAttachment.check_file_extension.<locals>.<listcomp>0   s*    "M"M"M17799??#4#4"M"M"Mr    .u   Ошибка: выбранный Вами файл не содержит расширения. Пожалуйста, загрузите файл с одним из следующих форматов: Tr   uu   Ошибка: выбранный Вами файл имеет неподдерживаемое расширение: ul   . Пожалуйста, загрузите файл с одним из следующих форматов: )
r   r   r   allowed_attachment_extensionsvaluejoinreplacesplitr   r-   )r   r   r   allowed_extensions_strcleaned_extensions_strraw_extensionsallowed_file_extensions	extensions           r   check_file_extensionz"CmfAttachment.check_file_extension&   s    zz&!! > 	d 	F!"!2!P!V!#(y(y:P(y(y(y!y!y/77SAAGGLL"M"Mn"M"M"Md??  F  cf  ck  ck  lC  cD  cD  F  F  NR  S  S  S  SJJsOOB'--//	///F  e  KT  e  e  BE  BJ  BJ  Kb  Bc  Bc  e  e  mq  	r  	r  	r  	r  	r  	rr    c                    |                     d          }|                     d          }|st          dd           |sdS d}|                    d          rt          j        j        }n&|                    d          rt          j        j        }|sdS t          |d	z  d
          }|r"||j        k    rt          d| dd           dS dS dS )uJ   Проверка ограничения вложения по объёмуsizer	   u   Не удалось проверить допустимый размер файла, так как соответствующий параметр не был переданTr   Nr   r   i@B    uE   Превышен допустимый размер вложения (u<    Мб). Обратитесь к администратору)	r   r   r   r   r   task_attachment_max_sizedocument_attachment_max_sizeroundr3   )r   r   size_current_attachmentr	   attachment_max_sizes        r   check_size_attachmentz#CmfAttachment.check_size_attachment8   sL    #)**V"4"4H%%& 	S  F  NR  S  S  S  S 	F"Y'' 	Q"#"3"L}-- 	Q"#"3"P" 	F #((?)(KQ"O"O 	}#:=P=V#V#V  p^q  p  p  p  x|  }  }  }  }  }  }	} 	}#V#Vr    c                    |                     dd          s t          j                            d          r | j        |i |}|d         S  | j        di |  | j        di |  | j        di |  | j        |i |}|d         S )Nr   F)raise_erroridr+   )r   r   CmfAccessListcheck_admin_modecreater<   r   rE   r   argsr   ress       r   
api_createzCmfAttachment.api_createS   s    ::j%(( 	F,@,Q,Q^c,Q,d,d 	#*d-f--Ct9  **6***##--f---!!++F+++cj$)&))4yr    c                 ,     | j         |i |}|d         S )NrH   )updaterL   s       r   
api_updatezCmfAttachment.api_update`   s"    cj$)&))4yr    c                 ~    |                      |                     d                    } |j        |i |}|d         S )Nr   )r   rH   )r   delete)r   rM   r   objrN   s        r   
api_deletezCmfAttachment.api_deletee   sA    ggVZZ11g22cj$)&))4yr    c                      | j         |i |}|j                                         	 |j                                         n!# t          $ r t          dd           Y nw xY w|d         S )Nu   Нет доступа!Tr   rH   )rK   r	   load_acl_check_writeCmfPermissionErrorr   rL   s       r   public_createzCmfAttachment.public_createk   s    cj$)&))
	<J''))))! 	< 	< 	<.d;;;;;;	<4ys   A A A N)fieldsc                
   |sg }d|vr|                     d            t                      j        |d|i|}|r|j        sd S 	 |j                                         n# t
          $ r Y d S w xY w|                                S Nr	   r\   )appendsuperr   r	   _acl_check_readrZ   get_versions)r   r\   rM   r   att	__class__s        r   public_get_versionsz!CmfAttachment.public_get_versionsw   s     	F6!!MM(###eggk499&99 	#* 	4	J&&((((! 	 	 	44	 !!!   A   
A.-A.c                    |sg }d|vr|                     d            t                      j        |d|i|}|r|j        sd S 	 |j                                         n# t
          $ r Y d S w xY w|S r^   )r_   r`   r   r	   ra   rZ   )r   r\   rM   r   rN   rd   s        r   
public_getzCmfAttachment.public_get   s     	F6!!MM(###eggk499&99 	#* 	4	J&&((((! 	 	 	44	 
rf   c                    t                      )N)CmfDeprecatedErrorr   r   r   r	   ra   rZ   	get_rfile)r   r\   rM   r   
attachments        r   public_get_rfilezCmfAttachment.public_get_rfile   s     !"""r    )__name__
__module____qualname__classmethodr   r<   rE   rO   rR   rV   r[   re   rh   rm   __classcell__)rd   s   @r   r   r      so       ] ] []< r r [r" } } [}4 
 
 [
   [   [
 	 	 [	 /3 " " " " " " ["& &*       [& ,0 = = = = [= = = = =r    r   N)cmf.includemodules.files.modelsr   r   r+   r    r   <module>ru      sd        / / / / / /i= i= i= i= i=N0 i= i= i= i= i=r    