Change menu ``Report`` to ``Usage``
[astakos] / snf-astakos-app / astakos / im / api / spec.py
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_usage(
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