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