Statistics
| Branch: | Tag: | Revision:

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