a
    b                     @   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 ur|| _ || _|d ur"|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _|| _|| _|| _d S Nr   )selfr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#    r&   l/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/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