U
    rÎ·h�  ã                   @   s„   d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
 d dlmZmZmZmZmZ d dlmZ G dd„ deƒZeZG dd„ deƒZd	S )
é    )ÚSerialisable)ÚAliasÚTypedÚStringÚFloatÚIntegerÚBoolÚNoneSetÚSet)ÚExtensionListÚ	HexBinaryÚGuidÚRelationÚBase64Binary)Úhash_passwordc                       s,  e Zd Zd\ZZdZedƒZedd�Z	edƒZ
edd�Zedd�ZedƒZedd�ZedƒZedd�Zed	ƒZedd�Zedd�Zedd�Zedd�Zedd�Zedd�Zedd�Zedd�Zd
Zddd„Zddd„Ze dd„ ƒZ!e!j"dd„ ƒZ!ddd„Z#e dd„ ƒZ$e$j"dd„ ƒZ$e%‡ fdd„ƒZ&‡  Z'S )ÚWorkbookProtection)NNZ
workbookPrÚworkbookPasswordT©Ú
allow_noneÚrevisionsPasswordÚlockStructureÚlockWindowsÚlockRevision©r   ÚworkbookPasswordCharacterSetr   ÚrevisionsPasswordCharacterSetr   r   r   ÚrevisionsAlgorithmNameÚrevisionsHashValueÚrevisionsSaltValueÚrevisionsSpinCountÚworkbookAlgorithmNameÚworkbookHashValueÚworkbookSaltValueÚworkbookSpinCountNc                 C   sn   |d k	r|| _ || _|d k	r"|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _|| _|| _|| _d S ©Nr   )Úselfr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   © r&   ú@/tmp/pip-unpacked-wheel-49e_hfpc/openpyxl/workbook/protection.pyÚ__init__7   s"    zWorkbookProtection.__init__Ú Fc                 C   s   |st |ƒ}|| _dS )z Set a password on this workbook.N)r   Ú_workbook_password©r%   ÚvalueÚalready_hashedr&   r&   r'   Úset_workbook_passwordZ   s    z(WorkbookProtection.set_workbook_passwordc                 C   s   | j S )z7Return the workbook password value, regardless of hash.)r*   ©r%   r&   r&   r'   r   `   s    z#WorkbookProtection.workbookPasswordc                 C   s   |   |¡ dS )z6Set a workbook password directly, forcing a hash step.N)r.   ©r%   r,   r&   r&   r'   r   e   s    c                 C   s   |st |ƒ}|| _dS )z)Set a revision password on this workbook.N)r   Ú_revisions_passwordr+   r&   r&   r'   Úset_revisions_passwordj   s    z)WorkbookProtection.set_revisions_passwordc                 C   s   | j S )z8Return the revisions password value, regardless of hash.)r1   r/   r&   r&   r'   r   p   s    z$WorkbookProtection.revisionsPasswordc                 C   s   |   |¡ dS )z7Set a revisions password directly, forcing a hash step.N)r2   r0   r&   r&   r'   r   u   s    c                    sH   t t| ƒ |¡}|jr*|j| d¡dd� |jrD|j| d¡dd� |S )z0Don't hash passwords when deserialising from XMLr   T)r-   r   )Úsuperr   Ú	from_treer   r.   Úgetr   r2   )ÚclsÚnoder%   ©Ú	__class__r&   r'   r4   z   s    zWorkbookProtection.from_tree)NNNNNNNNNNNNNNN)r)   F)r)   F)(Ú__name__Ú
__module__Ú__qualname__r*   r1   Útagnamer   Zworkbook_passwordr   r   Zrevision_passwordr   r   r   Zlock_structurer   Zlock_windowsr   Zlock_revisionr   r   r   r   r   r   r    r!   r"   r#   Ú	__attrs__r(   r.   Úpropertyr   Úsetterr2   r   Úclassmethodr4   Ú__classcell__r&   r&   r8   r'   r      sb   












               ñ
#





r   c                   @   s`   e Zd ZdZedd�Zedd�Zedd�Z	edd�Z
edd�Zedd�Zedd�Zddd„ZdS )ÚFileSharingZfileSharingTr   Nc                 C   s.   || _ || _|| _|| _|| _|| _|| _d S r$   )ÚreadOnlyRecommendedÚuserNameÚreservationPasswordÚalgorithmNameÚ	hashValueÚ	saltValueÚ	spinCount)r%   rD   rE   rF   rG   rH   rI   rJ   r&   r&   r'   r(   ”   s    	zFileSharing.__init__)NNNNNNN)r:   r;   r<   r=   r   rD   r   rE   r   rF   rG   r   rH   rI   r   rJ   r(   r&   r&   r&   r'   rC   ˆ   s    






       ùrC   N)Z!openpyxl.descriptors.serialisabler   Zopenpyxl.descriptorsr   r   r   r   r   r   r	   r
   Zopenpyxl.descriptors.excelr   r   r   r   r   Zopenpyxl.utils.protectionr   r   ZDocumentSecurityrC   r&   r&   r&   r'   Ú<module>   s   (
m