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