Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / api / spec.py @ 3b1912f4

History | View | Annotate | Download (11 kB)

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_status(
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