Statistics
| Branch: | Tag: | Revision:

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