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