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