Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/boto/s3/acl.py @ 0:26e78fe6e8c4 draft
"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author | shellac |
---|---|
date | Sat, 02 May 2020 07:14:21 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:26e78fe6e8c4 |
---|---|
1 # Copyright (c) 2006,2007 Mitch Garnaat http://garnaat.org/ | |
2 # | |
3 # Permission is hereby granted, free of charge, to any person obtaining a | |
4 # copy of this software and associated documentation files (the | |
5 # "Software"), to deal in the Software without restriction, including | |
6 # without limitation the rights to use, copy, modify, merge, publish, dis- | |
7 # tribute, sublicense, and/or sell copies of the Software, and to permit | |
8 # persons to whom the Software is furnished to do so, subject to the fol- | |
9 # lowing conditions: | |
10 # | |
11 # The above copyright notice and this permission notice shall be included | |
12 # in all copies or substantial portions of the Software. | |
13 # | |
14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
15 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- | |
16 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT | |
17 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |
18 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
19 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | |
20 # IN THE SOFTWARE. | |
21 | |
22 from boto.s3.user import User | |
23 | |
24 | |
25 CannedACLStrings = ['private', 'public-read', | |
26 'public-read-write', 'authenticated-read', | |
27 'bucket-owner-read', 'bucket-owner-full-control', | |
28 'log-delivery-write'] | |
29 | |
30 | |
31 class Policy(object): | |
32 | |
33 def __init__(self, parent=None): | |
34 self.parent = parent | |
35 self.namespace = None | |
36 self.acl = None | |
37 | |
38 def __repr__(self): | |
39 grants = [] | |
40 for g in self.acl.grants: | |
41 if g.id == self.owner.id: | |
42 grants.append("%s (owner) = %s" % (g.display_name, g.permission)) | |
43 else: | |
44 if g.type == 'CanonicalUser': | |
45 u = g.display_name | |
46 elif g.type == 'Group': | |
47 u = g.uri | |
48 else: | |
49 u = g.email_address | |
50 grants.append("%s = %s" % (u, g.permission)) | |
51 return "<Policy: %s>" % ", ".join(grants) | |
52 | |
53 def startElement(self, name, attrs, connection): | |
54 if name == 'AccessControlPolicy': | |
55 self.namespace = attrs.get('xmlns', None) | |
56 return None | |
57 if name == 'Owner': | |
58 self.owner = User(self) | |
59 return self.owner | |
60 elif name == 'AccessControlList': | |
61 self.acl = ACL(self) | |
62 return self.acl | |
63 else: | |
64 return None | |
65 | |
66 def endElement(self, name, value, connection): | |
67 if name == 'Owner': | |
68 pass | |
69 elif name == 'AccessControlList': | |
70 pass | |
71 else: | |
72 setattr(self, name, value) | |
73 | |
74 def to_xml(self): | |
75 if self.namespace is not None: | |
76 s = '<AccessControlPolicy xmlns="{0}">'.format(self.namespace) | |
77 else: | |
78 s = '<AccessControlPolicy>' | |
79 s += self.owner.to_xml() | |
80 s += self.acl.to_xml() | |
81 s += '</AccessControlPolicy>' | |
82 return s | |
83 | |
84 | |
85 class ACL(object): | |
86 | |
87 def __init__(self, policy=None): | |
88 self.policy = policy | |
89 self.grants = [] | |
90 | |
91 def add_grant(self, grant): | |
92 self.grants.append(grant) | |
93 | |
94 def add_email_grant(self, permission, email_address): | |
95 grant = Grant(permission=permission, type='AmazonCustomerByEmail', | |
96 email_address=email_address) | |
97 self.grants.append(grant) | |
98 | |
99 def add_user_grant(self, permission, user_id, display_name=None): | |
100 grant = Grant(permission=permission, type='CanonicalUser', id=user_id, display_name=display_name) | |
101 self.grants.append(grant) | |
102 | |
103 def startElement(self, name, attrs, connection): | |
104 if name == 'Grant': | |
105 self.grants.append(Grant(self)) | |
106 return self.grants[-1] | |
107 else: | |
108 return None | |
109 | |
110 def endElement(self, name, value, connection): | |
111 if name == 'Grant': | |
112 pass | |
113 else: | |
114 setattr(self, name, value) | |
115 | |
116 def to_xml(self): | |
117 s = '<AccessControlList>' | |
118 for grant in self.grants: | |
119 s += grant.to_xml() | |
120 s += '</AccessControlList>' | |
121 return s | |
122 | |
123 | |
124 class Grant(object): | |
125 | |
126 NameSpace = 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' | |
127 | |
128 def __init__(self, permission=None, type=None, id=None, | |
129 display_name=None, uri=None, email_address=None): | |
130 self.permission = permission | |
131 self.id = id | |
132 self.display_name = display_name | |
133 self.uri = uri | |
134 self.email_address = email_address | |
135 self.type = type | |
136 | |
137 def startElement(self, name, attrs, connection): | |
138 if name == 'Grantee': | |
139 self.type = attrs['xsi:type'] | |
140 return None | |
141 | |
142 def endElement(self, name, value, connection): | |
143 if name == 'ID': | |
144 self.id = value | |
145 elif name == 'DisplayName': | |
146 self.display_name = value | |
147 elif name == 'URI': | |
148 self.uri = value | |
149 elif name == 'EmailAddress': | |
150 self.email_address = value | |
151 elif name == 'Grantee': | |
152 pass | |
153 elif name == 'Permission': | |
154 self.permission = value | |
155 else: | |
156 setattr(self, name, value) | |
157 | |
158 def to_xml(self): | |
159 s = '<Grant>' | |
160 s += '<Grantee %s xsi:type="%s">' % (self.NameSpace, self.type) | |
161 if self.type == 'CanonicalUser': | |
162 s += '<ID>%s</ID>' % self.id | |
163 s += '<DisplayName>%s</DisplayName>' % self.display_name | |
164 elif self.type == 'Group': | |
165 s += '<URI>%s</URI>' % self.uri | |
166 else: | |
167 s += '<EmailAddress>%s</EmailAddress>' % self.email_address | |
168 s += '</Grantee>' | |
169 s += '<Permission>%s</Permission>' % self.permission | |
170 s += '</Grant>' | |
171 return s |