Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / api / spec.py @ 6c997921

History | View | Annotate | Download (10.9 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, export_limit),
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
        update=Boolean,
100
        policies=ListOf(service=Name, resource=Name, upimit=Nonnegative)
101
    ):
102
        rejected = ListOf(resource=Name, reason=Text())
103
        return rejected
104

    
105
    def remove_user_policies(
106
        self,
107
        pk=Nonnegative,
108
        policies=ListOf(service=Name, resource=Name)
109
    ):
110
        rejected = ListOf(service=Name, resource=Name)
111
        return rejected
112

    
113
    def add_user_permissions(
114
        self,
115
        pk=Nonnegative,
116
        permissions=ListOf(permission=Name)
117
    ):
118
        rejected = ListOf(permission=Name)
119
        return rejected
120

    
121
    def remove_user_permissions(
122
        self,
123
        pk=Nonnegative,
124
        permissions=ListOf(permission=Name)
125
    ):
126
        rejected = ListOf(permission=Name)
127
        return rejected
128

    
129
    def invite_users(
130
        self,
131
        sender=Email,
132
        data=ListOf(email=Email, realname=Name)
133
    ):
134
        rejected = ListOf(receiver=Email)
135
        return rejected
136

    
137
    def list_users(
138
        self,
139
        filter=ListOf(id=Nonnegative)
140
    ):
141
        return ListOf(
142
            activation_sent=Timepoint,
143
            affiliation=Name,
144
            auth_token=Name,
145
            auth_token_created=Timepoint,
146
            auth_token_expires=Timepoint,
147
            date_joined=Timepoint,
148
            date_signed_terms=Timepoint,
149
            email=Email,
150
            email_verified=Boolean,
151
            first_name=Name,
152
            has_credits=Boolean,
153
            has_signed_terms=Boolean,
154
            id=Nonnegative,
155
            invitations=Nonnegative,
156
            invitations_sent=ListOf(
157
                code=Name,
158
                consumed=Boolean,
159
                created=Timepoint,
160
                id=Nonnegative,
161
                realname=Name,
162
                username=Email
163
            ),
164
            is_active=Boolean,
165
            is_staff=Boolean,
166
            is_superuser=Boolean,
167
            is_verified=Boolean,
168
            last_login=Timepoint,
169
            last_name=Name,
170
            level=Nonnegative,
171
            password=Name,
172
            provider=Name,
173
            third_party_identifier=Name,
174
            updated=Timepoint,
175
            user_permissions=ListOf(
176
                codename=Name,
177
                id=Nonnegative,
178
                name=Name
179
            ),
180
            username=Name,
181
            astakos_groups=ListOf(
182
                approval_date=Timepoint,
183
                creation_date=Timepoint,
184
                desc=Text(),
185
                max_participants=Nonnegative,
186
                expiration_date=Timepoint,
187
                group_ptr=Url,
188
                homepage=Url,
189
                id=Nonnegative,
190
                issue_date=Timepoint,
191
                kind=Name,
192
                moderation_enabled=Boolean,
193
                name=Name,
194
                #permissions=ListOf(),
195
                policy=ListOf(id=Nonnegative, name=Name)
196
            )
197
        )
198

    
199
    def get_user_usage(
200
        self,
201
        user_id=Nonnegative
202
    ):
203
        return ListOf(
204
            name=Name,
205
            description=Text(),
206
            unit=Name,
207
            maxValue=Integer(),
208
            currValue=Integer()
209
        )
210

    
211
    def list_resources(self, filter=ListOf(id=Nonnegative)):
212
        return ListOf(
213
            desc=Text(),
214
            group=Name,
215
            id=Nonnegative,
216
            meta=ListOf(key=Name, value=Name),
217
            name=Name,
218
            service=Name,
219
            unit=Name
220
        )
221

    
222
    def add_services(
223
        self,
224
        services=ListOf(
225
            name=Name,
226
            url=Url,
227
            icon=Filepath,
228
            resources=ListOf(
229
                name=Name,
230
                desc=Text(),
231
                unit=Name,
232
                group=Name
233
            )
234
        )
235
    ):
236
        rejected = ListOf(service=Name)
237
        return rejected
238

    
239
    def update_services(
240
        self,
241
        services=ListOf(id=Nonnegative, url=Url, icon=Filepath)
242
    ):
243
        rejected = ListOf(service=Name)
244
        return rejected
245

    
246
    def remove_services(self, ids=ListOf(Nonnegative)):
247
        rejected = ListOf(service=Name)
248
        return rejected
249

    
250
    def add_resources(
251
        self,
252
        service_id=Nonnegative,
253
        update=Boolean,
254
        resources=ListOf(
255
            name=Name,
256
            resources=ListOf(
257
                name=Name,
258
                desc=Text(),
259
                unit=Name,
260
                group=Name)
261
        )
262
    ):
263
        rejected = ListOf(service=Name)
264
        return rejected
265

    
266
    def remove_resources(
267
        self,
268
        service_id=Nonnegative,
269
        ids=ListOf(Nonnegative)
270
    ):
271
        rejected = ListOf(Name)
272
        return rejected
273

    
274
    def create_groups(
275
        self,
276
        groups=ListOf(
277
            name=Name,
278
            kind=Name,
279
            homepage=Url,
280
            desc=Text(),
281
            policies=ListOf(resource=Name, upimit=Nonnegative),
282
            issue_date=Timepoint,
283
            expiration_date=Timepoint,
284
            moderation_enabled=Boolean,
285
            participants=Nonnegative,
286
            permissions=ListOf(permission=Name),
287
            members=ListOf(user=Email, is_approved=Boolean),
288
            owners=ListOf(user=Email)
289
        )
290
    ):
291
        rejected = ListOf(group=Name)
292
        return rejected
293

    
294
    def enable_groups(self, data=ListOf(group=Name)):
295
        rejected = ListOf(group=Name)
296
        return rejected
297

    
298
    def search_groups(self, key=Name):
299
        return ListOf(
300
            group=Name,
301
            kind=Nonnegative,
302
            homepage=Url,
303
            desc=Text(),
304
            creation_date=Timepoint,
305
            issue_date=Timepoint,
306
            expiration_date=Timepoint,
307
            moderation_enabled=Boolean,
308
            participants=Nonnegative,
309
            owner=ListOf(user=Email),
310
            policies=ListOf(resource=Name, upimit=Nonnegative),
311
            members=ListOf(user=Email, is_approved=Boolean)
312
        )
313

    
314
    def list_groups(self):
315
        return ListOf(
316
            group=Name,
317
            kind=Nonnegative,
318
            homepage=Url,
319
            desc=Text(),
320
            creation_date=Timepoint,
321
            issue_date=Timepoint,
322
            expiration_date=Timepoint,
323
            moderation_enabled=Boolean,
324
            participants=Nonnegative,
325
            owners=ListOf(user=Email),
326
            policies=ListOf(resource=Name, upimit=Nonnegative),
327
            members=ListOf(user=Email, is_approved=Boolean)
328
        )
329

    
330
    def add_owners(
331
        self,
332
        data=ListOf(group=Name, owners=ListOf(user=Email))
333
    ):
334
        rejected = ListOf(user=Email)
335
        return rejected
336

    
337
    def remove_owners(
338
        self,
339
        data=ListOf(group=Name, owners=ListOf(user=Email))
340
    ):
341
        rejected = ListOf(user=Email)
342
        return rejected
343

    
344
    def add_members(
345
        self,
346
        data=ListOf(group=Name, members=ListOf(user=Email))
347
    ):
348
        rejected = ListOf(user=Email)
349
        return rejected
350

    
351
    def remove_members(
352
        self,
353
        data=ListOf(group=Name, members=ListOf(user=Email))
354
    ):
355
        rejected = ListOf(user=Email)
356
        return rejected
357

    
358
    def add_policies(
359
        self,
360
        data=ListOf(group=Name, resource=Name, upimit=Nonnegative)
361
    ):
362
        rejected = ListOf(group=Name, resource=Name)
363
        return rejected
364

    
365
    def remove_group_policies(
366
        self,
367
        data=ListOf(group=Name, resource=Name, upimit=Nonnegative)
368
    ):
369
        rejected = ListOf(group=Name, resource=Name)
370
        return rejected
371

    
372
    def update_group_policies(
373
        self, data=ListOf(group=Name, resource=Name, upimit=Nonnegative)
374
    ):
375
        rejected = ListOf(group=Name, resource=Name)
376
        return rejected
377

    
378
    def approve_members(
379
        self,
380
        data=ListOf(group=Name, members=ListOf(user=Email))
381
    ):
382
        rejected = ListOf(user=Email)
383
        return rejected
384

    
385
    def disapprove_members(
386
        self,
387
        data=ListOf(group=Name, members=ListOf(user=Email))
388
    ):
389
        rejected = ListOf(user=Email)
390
        return rejected
391

    
392
    def add_group_permissions(
393
        self,
394
        data=ListOf(group=Name, permission=Name)
395
    ):
396
        rejected = ListOf(group=Name, permission=Name)
397
        return rejected
398

    
399
    def delete_group_permissions(
400
        self,
401
        data=ListOf(group=Name, permission=Name)
402
    ):
403
        rejected = ListOf(group=Name, permission=Name)
404
        return rejected
405

    
406
    def list_resource_units(self):
407
        return ListOf(Name)
408

    
409
    def get_approval_terms(self, term=Nonnegative):
410
        return Text()
411

    
412
    def add_approval_terms(self, location=Filepath):
413
        return Nonnegative
414

    
415
#     def change_emails():
416
#         pass