root / snf-astakos-app / astakos / im / api / spec.py @ 6c997921
History | View | Annotate | Download (10.9 kB)
1 |
from synnefo.lib.commissioning.specificator import ( |
---|---|
2 |
Specificator, Integer, Text, ListOf) |
3 |
|
4 |
|
5 |
class Name(Text): |
6 |
def init(self): |
7 |
self.opts.update({'regex': "[\w.:]+", 'maxlen': 512}) |
8 |
Name = Name() |
9 |
|
10 |
|
11 |
class Email(Text): |
12 |
def init(self): |
13 |
pattern = "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"
|
14 |
self.opts.update({'regex': pattern, 'maxlen': 512}) |
15 |
Email = Email() |
16 |
|
17 |
|
18 |
class Url(Text): |
19 |
def init(self): |
20 |
pattern = "(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)"
|
21 |
self.opts.update({'regex': pattern, 'maxlen': 512}) |
22 |
Url = Url() |
23 |
|
24 |
|
25 |
class Filepath(Text): |
26 |
def init(self): |
27 |
self.opts.update({'regex': "", 'maxlen': 512}) |
28 |
Filepath = Filepath() |
29 |
|
30 |
|
31 |
class Nonnegative(Integer): |
32 |
def init(self): |
33 |
self.opts.update({'minimum': 0}) |
34 |
Nonnegative = Nonnegative() |
35 |
|
36 |
|
37 |
class Boolean(Integer): |
38 |
def init(self): |
39 |
self.opts.update({'minimum': 0, 'maximum': 1}) |
40 |
Boolean = Boolean() |
41 |
|
42 |
|
43 |
Timepoint = Text(classname='Timepoint', maxlen=24) |
44 |
|
45 |
|
46 |
class AstakosAPI(Specificator): |
47 |
def create_users( |
48 |
self,
|
49 |
users=ListOf( |
50 |
email=Email, |
51 |
first_name=Name, |
52 |
last_name=Name, |
53 |
is_active=Boolean, |
54 |
is_superuser=Boolean, |
55 |
affiliation=Name, |
56 |
password=Name, |
57 |
provider=Name, |
58 |
level=Nonnegative, |
59 |
invitations=Nonnegative, |
60 |
is_verified=Boolean, |
61 |
third_party_identifier=Name, |
62 |
email_verified=Boolean), |
63 |
policies=ListOf( |
64 |
resource=Name, capacity=Nonnegative, quantity=Nonnegative, |
65 |
import_limit, export_limit), |
66 |
groups=ListOf(Name), |
67 |
permissions=ListOf(Name) |
68 |
): |
69 |
rejected = ListOf(user=Email, reason=Text()) |
70 |
return rejected
|
71 |
|
72 |
def update_users( |
73 |
self,
|
74 |
users=ListOf( |
75 |
pk=Nonnegative, |
76 |
renew_token=Boolean, |
77 |
data=ListOf( |
78 |
first_name=Name, |
79 |
last_name=Name, |
80 |
is_active=Boolean, |
81 |
is_superuser=Boolean, |
82 |
affiliation=Name, |
83 |
password=Name, |
84 |
provider=Name, |
85 |
level=Nonnegative, |
86 |
invitations=Nonnegative, |
87 |
is_verified=Boolean, |
88 |
third_party_identifier=Name, |
89 |
email_verified=Boolean |
90 |
) |
91 |
) |
92 |
): |
93 |
rejected = ListOf(user_id=Nonnegative, reason=Text()) |
94 |
return rejected
|
95 |
|
96 |
def add_user_policies( |
97 |
self,
|
98 |
pk=Nonnegative, |
99 |
update=Boolean, |
100 |
policies=ListOf(service=Name, resource=Name, upimit=Nonnegative) |
101 |
): |
102 |
rejected = ListOf(resource=Name, reason=Text()) |
103 |
return rejected
|
104 |
|
105 |
def remove_user_policies( |
106 |
self,
|
107 |
pk=Nonnegative, |
108 |
policies=ListOf(service=Name, resource=Name) |
109 |
): |
110 |
rejected = ListOf(service=Name, resource=Name) |
111 |
return rejected
|
112 |
|
113 |
def add_user_permissions( |
114 |
self,
|
115 |
pk=Nonnegative, |
116 |
permissions=ListOf(permission=Name) |
117 |
): |
118 |
rejected = ListOf(permission=Name) |
119 |
return rejected
|
120 |
|
121 |
def remove_user_permissions( |
122 |
self,
|
123 |
pk=Nonnegative, |
124 |
permissions=ListOf(permission=Name) |
125 |
): |
126 |
rejected = ListOf(permission=Name) |
127 |
return rejected
|
128 |
|
129 |
def invite_users( |
130 |
self,
|
131 |
sender=Email, |
132 |
data=ListOf(email=Email, realname=Name) |
133 |
): |
134 |
rejected = ListOf(receiver=Email) |
135 |
return rejected
|
136 |
|
137 |
def list_users( |
138 |
self,
|
139 |
filter=ListOf(id=Nonnegative) |
140 |
): |
141 |
return ListOf(
|
142 |
activation_sent=Timepoint, |
143 |
affiliation=Name, |
144 |
auth_token=Name, |
145 |
auth_token_created=Timepoint, |
146 |
auth_token_expires=Timepoint, |
147 |
date_joined=Timepoint, |
148 |
date_signed_terms=Timepoint, |
149 |
email=Email, |
150 |
email_verified=Boolean, |
151 |
first_name=Name, |
152 |
has_credits=Boolean, |
153 |
has_signed_terms=Boolean, |
154 |
id=Nonnegative, |
155 |
invitations=Nonnegative, |
156 |
invitations_sent=ListOf( |
157 |
code=Name, |
158 |
consumed=Boolean, |
159 |
created=Timepoint, |
160 |
id=Nonnegative, |
161 |
realname=Name, |
162 |
username=Email |
163 |
), |
164 |
is_active=Boolean, |
165 |
is_staff=Boolean, |
166 |
is_superuser=Boolean, |
167 |
is_verified=Boolean, |
168 |
last_login=Timepoint, |
169 |
last_name=Name, |
170 |
level=Nonnegative, |
171 |
password=Name, |
172 |
provider=Name, |
173 |
third_party_identifier=Name, |
174 |
updated=Timepoint, |
175 |
user_permissions=ListOf( |
176 |
codename=Name, |
177 |
id=Nonnegative, |
178 |
name=Name |
179 |
), |
180 |
username=Name, |
181 |
astakos_groups=ListOf( |
182 |
approval_date=Timepoint, |
183 |
creation_date=Timepoint, |
184 |
desc=Text(), |
185 |
max_participants=Nonnegative, |
186 |
expiration_date=Timepoint, |
187 |
group_ptr=Url, |
188 |
homepage=Url, |
189 |
id=Nonnegative, |
190 |
issue_date=Timepoint, |
191 |
kind=Name, |
192 |
moderation_enabled=Boolean, |
193 |
name=Name, |
194 |
#permissions=ListOf(),
|
195 |
policy=ListOf(id=Nonnegative, name=Name) |
196 |
) |
197 |
) |
198 |
|
199 |
def get_user_usage( |
200 |
self,
|
201 |
user_id=Nonnegative |
202 |
): |
203 |
return ListOf(
|
204 |
name=Name, |
205 |
description=Text(), |
206 |
unit=Name, |
207 |
maxValue=Integer(), |
208 |
currValue=Integer() |
209 |
) |
210 |
|
211 |
def list_resources(self, filter=ListOf(id=Nonnegative)): |
212 |
return ListOf(
|
213 |
desc=Text(), |
214 |
group=Name, |
215 |
id=Nonnegative, |
216 |
meta=ListOf(key=Name, value=Name), |
217 |
name=Name, |
218 |
service=Name, |
219 |
unit=Name |
220 |
) |
221 |
|
222 |
def add_services( |
223 |
self,
|
224 |
services=ListOf( |
225 |
name=Name, |
226 |
url=Url, |
227 |
icon=Filepath, |
228 |
resources=ListOf( |
229 |
name=Name, |
230 |
desc=Text(), |
231 |
unit=Name, |
232 |
group=Name |
233 |
) |
234 |
) |
235 |
): |
236 |
rejected = ListOf(service=Name) |
237 |
return rejected
|
238 |
|
239 |
def update_services( |
240 |
self,
|
241 |
services=ListOf(id=Nonnegative, url=Url, icon=Filepath) |
242 |
): |
243 |
rejected = ListOf(service=Name) |
244 |
return rejected
|
245 |
|
246 |
def remove_services(self, ids=ListOf(Nonnegative)): |
247 |
rejected = ListOf(service=Name) |
248 |
return rejected
|
249 |
|
250 |
def add_resources( |
251 |
self,
|
252 |
service_id=Nonnegative, |
253 |
update=Boolean, |
254 |
resources=ListOf( |
255 |
name=Name, |
256 |
resources=ListOf( |
257 |
name=Name, |
258 |
desc=Text(), |
259 |
unit=Name, |
260 |
group=Name) |
261 |
) |
262 |
): |
263 |
rejected = ListOf(service=Name) |
264 |
return rejected
|
265 |
|
266 |
def remove_resources( |
267 |
self,
|
268 |
service_id=Nonnegative, |
269 |
ids=ListOf(Nonnegative) |
270 |
): |
271 |
rejected = ListOf(Name) |
272 |
return rejected
|
273 |
|
274 |
def create_groups( |
275 |
self,
|
276 |
groups=ListOf( |
277 |
name=Name, |
278 |
kind=Name, |
279 |
homepage=Url, |
280 |
desc=Text(), |
281 |
policies=ListOf(resource=Name, upimit=Nonnegative), |
282 |
issue_date=Timepoint, |
283 |
expiration_date=Timepoint, |
284 |
moderation_enabled=Boolean, |
285 |
participants=Nonnegative, |
286 |
permissions=ListOf(permission=Name), |
287 |
members=ListOf(user=Email, is_approved=Boolean), |
288 |
owners=ListOf(user=Email) |
289 |
) |
290 |
): |
291 |
rejected = ListOf(group=Name) |
292 |
return rejected
|
293 |
|
294 |
def enable_groups(self, data=ListOf(group=Name)): |
295 |
rejected = ListOf(group=Name) |
296 |
return rejected
|
297 |
|
298 |
def search_groups(self, key=Name): |
299 |
return ListOf(
|
300 |
group=Name, |
301 |
kind=Nonnegative, |
302 |
homepage=Url, |
303 |
desc=Text(), |
304 |
creation_date=Timepoint, |
305 |
issue_date=Timepoint, |
306 |
expiration_date=Timepoint, |
307 |
moderation_enabled=Boolean, |
308 |
participants=Nonnegative, |
309 |
owner=ListOf(user=Email), |
310 |
policies=ListOf(resource=Name, upimit=Nonnegative), |
311 |
members=ListOf(user=Email, is_approved=Boolean) |
312 |
) |
313 |
|
314 |
def list_groups(self): |
315 |
return ListOf(
|
316 |
group=Name, |
317 |
kind=Nonnegative, |
318 |
homepage=Url, |
319 |
desc=Text(), |
320 |
creation_date=Timepoint, |
321 |
issue_date=Timepoint, |
322 |
expiration_date=Timepoint, |
323 |
moderation_enabled=Boolean, |
324 |
participants=Nonnegative, |
325 |
owners=ListOf(user=Email), |
326 |
policies=ListOf(resource=Name, upimit=Nonnegative), |
327 |
members=ListOf(user=Email, is_approved=Boolean) |
328 |
) |
329 |
|
330 |
def add_owners( |
331 |
self,
|
332 |
data=ListOf(group=Name, owners=ListOf(user=Email)) |
333 |
): |
334 |
rejected = ListOf(user=Email) |
335 |
return rejected
|
336 |
|
337 |
def remove_owners( |
338 |
self,
|
339 |
data=ListOf(group=Name, owners=ListOf(user=Email)) |
340 |
): |
341 |
rejected = ListOf(user=Email) |
342 |
return rejected
|
343 |
|
344 |
def add_members( |
345 |
self,
|
346 |
data=ListOf(group=Name, members=ListOf(user=Email)) |
347 |
): |
348 |
rejected = ListOf(user=Email) |
349 |
return rejected
|
350 |
|
351 |
def remove_members( |
352 |
self,
|
353 |
data=ListOf(group=Name, members=ListOf(user=Email)) |
354 |
): |
355 |
rejected = ListOf(user=Email) |
356 |
return rejected
|
357 |
|
358 |
def add_policies( |
359 |
self,
|
360 |
data=ListOf(group=Name, resource=Name, upimit=Nonnegative) |
361 |
): |
362 |
rejected = ListOf(group=Name, resource=Name) |
363 |
return rejected
|
364 |
|
365 |
def remove_group_policies( |
366 |
self,
|
367 |
data=ListOf(group=Name, resource=Name, upimit=Nonnegative) |
368 |
): |
369 |
rejected = ListOf(group=Name, resource=Name) |
370 |
return rejected
|
371 |
|
372 |
def update_group_policies( |
373 |
self, data=ListOf(group=Name, resource=Name, upimit=Nonnegative)
|
374 |
): |
375 |
rejected = ListOf(group=Name, resource=Name) |
376 |
return rejected
|
377 |
|
378 |
def approve_members( |
379 |
self,
|
380 |
data=ListOf(group=Name, members=ListOf(user=Email)) |
381 |
): |
382 |
rejected = ListOf(user=Email) |
383 |
return rejected
|
384 |
|
385 |
def disapprove_members( |
386 |
self,
|
387 |
data=ListOf(group=Name, members=ListOf(user=Email)) |
388 |
): |
389 |
rejected = ListOf(user=Email) |
390 |
return rejected
|
391 |
|
392 |
def add_group_permissions( |
393 |
self,
|
394 |
data=ListOf(group=Name, permission=Name) |
395 |
): |
396 |
rejected = ListOf(group=Name, permission=Name) |
397 |
return rejected
|
398 |
|
399 |
def delete_group_permissions( |
400 |
self,
|
401 |
data=ListOf(group=Name, permission=Name) |
402 |
): |
403 |
rejected = ListOf(group=Name, permission=Name) |
404 |
return rejected
|
405 |
|
406 |
def list_resource_units(self): |
407 |
return ListOf(Name)
|
408 |
|
409 |
def get_approval_terms(self, term=Nonnegative): |
410 |
return Text()
|
411 |
|
412 |
def add_approval_terms(self, location=Filepath): |
413 |
return Nonnegative
|
414 |
|
415 |
# def change_emails():
|
416 |
# pass
|