/
opt
/
gsutil
/
gslib
/
utils
/
__pycache__
/
up file
home
a +(Wg�2 � @ s� d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlZddlmZ ddl m Z G d d � d e�Z G dd� de�ZG d d� de�Zdd� ZdS )z7Contains helper objects for changing and deleting ACLs.� )�absolute_import)�print_function)�division)�unicode_literalsN)�CommandException)�storage_v1_messagesc @ s e Zd ZdZdZdZdS )� ChangeType�User�Group�ProjectN)�__name__� __module__�__qualname__�USER�GROUP�PROJECT� r r �%/opt/gsutil/gslib/utils/acl_helper.pyr s r c @ s� e Zd ZdZddgZddgZddgZdgZd gZee e e e Z d Z dZe efZdZ d ZdZdZdZdddddddd�Zdd� Zdd� Zdd� Zdd� Zdd� Zdd � Zd!d"� Zd#d$� Zd%d&� Zd'S )(� AclChangez6Represents a logical change to an access control list.�AllAuthenticatedUsers�AllUsers�UserById� GroupById�UserByEmail�GroupByEmail� GroupByDomainr �allUsers�allAuthenticatedUsers)zproject-editors-zproject-owners-zproject-viewers-zgroup-zuser-zdomain-zproject-�READER�WRITER�OWNER)�R�WZFC�O�READ�WRITE�FULL_CONTROLc C s$ d| _ || _| �||� | �� dS )a< Creates an AclChange object. Args: acl_change_descriptor: An acl change as described in the "ch" section of the "acl" command's help. scope_type: Either ChangeType.USER or ChangeType.GROUP or ChangeType.PROJECT, specifying the extent of the scope. � N)� identifier�raw_descriptor�_Parse� _Validate)�selfZacl_change_descriptor� scope_typer r r �__init__@ s zAclChange.__init__c C s d� | j| j| j�S )NzAclChange<{0}|{1}|{2}>)�formatr- �permr( �r, r r r �__str__O s �zAclChange.__str__c C s� dd� }|� d�dkr$td�|���|�d�\}}|�� }|| jv rR| j| | _n|| _||�}|dkr|d�|�| _|| _nZ|dv r�d �||�| _|| _n<|d kr�d | _n,|dkr�d| _n|dkr�d| _|| _n|| _d S )z Parses an ACL Change descriptor.c S s@ ddddddd�}|� � D ] \}}t�|| tj�r| S qd S )Nz!^(AllAuthenticatedUsers|AllAuth)$z^(AllUsers|All)$z^.+@.+\..+$z^[0-9A-Fa-f]{64}$z^[^@]+\.[^@]+$z(owners|editors|viewers)\-.+$)r r �Email�Id�Domainr )�items�re�match� IGNORECASE)�textZre_mapZtype_string�regexr r r �_ClassifyScopeIdentifierV s �z2AclChange._Parse.<locals>._ClassifyScopeIdentifier�:� z%{0} is an invalid change description.r5 z{0}ByDomain)r3 r4 z{0}By{1}r r r N) �countr r/ �split�upper�permission_shorthand_mappingr0 r- r( )r, Zchange_descriptorr- r<