Statistics
| Branch: | Tag: | Revision:

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