B
    P\                 @   s   d dl mZ 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 )    )absolute_import)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 )N)r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   )selfr   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"    r$   ;lib/python3.7/site-packages/openpyxl/workbook/protection.py__init__8   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_password[   s    z(WorkbookProtection.set_workbook_passwordc             C   s   | j S )z7Return the workbook password value, regardless of hash.)r(   )r#   r$   r$   r%   r   a   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   f   s    c             C   s   |st |}|| _dS )z)Set a revision password on this workbook.N)r   _revisions_password)r#   r)   r*   r$   r$   r%   set_revisions_passwordk   s    z)WorkbookProtection.set_revisions_passwordc             C   s   | j S )z8Return the revisions password value, regardless of hash.)r,   )r#   r$   r$   r%   r   q   s    z$WorkbookProtection.revisionsPasswordc             C   s   |  | dS )z7Set a revisions password directly, forcing a hash step.N)r-   )r#   r)   r$   r$   r%   r   v   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   r-   )clsZnoder#   )	__class__r$   r%   r/   {   s    zWorkbookProtection.from_tree)NNNNNNNNNNNNNNN)r'   F)r'   F)(__name__
__module____qualname__r(   r,   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"   Z	__attrs__r&   r+   propertyr   setterr-   r   classmethodr/   __classcell__r$   r$   )r2   r%   r      sV   












              


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fileSharingT)r   Nc             C   s.   || _ || _|| _|| _|| _|| _|| _d S )N)readOnlyRecommendeduserNamereservationPasswordalgorithmName	hashValue	saltValue	spinCount)r#   r<   r=   r>   r?   r@   rA   rB   r$   r$   r%   r&      s    	zFileSharing.__init__)NNNNNNN)r3   r4   r5   r6   r	   r<   r   r=   r   r>   r?   r   r@   rA   r   rB   r&   r$   r$   r$   r%   r;      s   






      r;   N)Z
__future__r   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DocumentSecurityr;   r$   r$   r$   r%   <module>   s   (
m