Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / api / spec.py @ 20a29096

History | View | Annotate | Download (11 kB)

1 3b1912f4 root
from synnefo.lib.commissioning.specificator import (
2 73fbaec4 Sofia Papagiannaki
    Specificator, Integer, Text, ListOf)
3 9a06d96f Olga Brani
4 9a06d96f Olga Brani
5 9a06d96f Olga Brani
class Name(Text):
6 9a06d96f Olga Brani
    def init(self):
7 9a06d96f Olga Brani
        self.opts.update({'regex': "[\w.:]+", 'maxlen': 512})
8 9a06d96f Olga Brani
Name = Name()
9 9a06d96f Olga Brani
10 9a06d96f Olga Brani
11 9a06d96f Olga Brani
class Email(Text):
12 9a06d96f Olga Brani
    def init(self):
13 9a06d96f Olga Brani
        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 9a06d96f Olga Brani
        self.opts.update({'regex': pattern, 'maxlen': 512})
15 9a06d96f Olga Brani
Email = Email()
16 9a06d96f Olga Brani
17 9a06d96f Olga Brani
18 9a06d96f Olga Brani
class Url(Text):
19 9a06d96f Olga Brani
    def init(self):
20 9a06d96f Olga Brani
        pattern = "(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)"
21 9a06d96f Olga Brani
        self.opts.update({'regex': pattern, 'maxlen': 512})
22 9a06d96f Olga Brani
Url = Url()
23 9a06d96f Olga Brani
24 9a06d96f Olga Brani
25 9a06d96f Olga Brani
class Filepath(Text):
26 9a06d96f Olga Brani
    def init(self):
27 9a06d96f Olga Brani
        self.opts.update({'regex': "", 'maxlen': 512})
28 9a06d96f Olga Brani
Filepath = Filepath()
29 9a06d96f Olga Brani
30 9a06d96f Olga Brani
31 9a06d96f Olga Brani
class Nonnegative(Integer):
32 9a06d96f Olga Brani
    def init(self):
33 9a06d96f Olga Brani
        self.opts.update({'minimum': 0})
34 9a06d96f Olga Brani
Nonnegative = Nonnegative()
35 9a06d96f Olga Brani
36 9a06d96f Olga Brani
37 9a06d96f Olga Brani
class Boolean(Integer):
38 9a06d96f Olga Brani
    def init(self):
39 9a06d96f Olga Brani
        self.opts.update({'minimum': 0, 'maximum': 1})
40 9a06d96f Olga Brani
Boolean = Boolean()
41 9a06d96f Olga Brani
42 9a06d96f Olga Brani
43 9a06d96f Olga Brani
Timepoint = Text(classname='Timepoint', maxlen=24)
44 9a06d96f Olga Brani
45 9a06d96f Olga Brani
46 9a06d96f Olga Brani
class AstakosAPI(Specificator):
47 9a06d96f Olga Brani
    def create_users(
48 9a06d96f Olga Brani
        self,
49 9a06d96f Olga Brani
        users=ListOf(
50 9a06d96f Olga Brani
            email=Email,
51 9a06d96f Olga Brani
            first_name=Name,
52 9a06d96f Olga Brani
            last_name=Name,
53 9a06d96f Olga Brani
            is_active=Boolean,
54 9a06d96f Olga Brani
            is_superuser=Boolean,
55 9a06d96f Olga Brani
            affiliation=Name,
56 9a06d96f Olga Brani
            password=Name,
57 9a06d96f Olga Brani
            provider=Name,
58 9a06d96f Olga Brani
            level=Nonnegative,
59 9a06d96f Olga Brani
            invitations=Nonnegative,
60 9a06d96f Olga Brani
            is_verified=Boolean,
61 9a06d96f Olga Brani
            third_party_identifier=Name,
62 9a06d96f Olga Brani
            email_verified=Boolean),
63 6c997921 Sofia Papagiannaki
        policies=ListOf(
64 6c997921 Sofia Papagiannaki
            resource=Name, capacity=Nonnegative, quantity=Nonnegative,
65 fa48d6fb Sofia Papagiannaki
            import_limit=Nonnegative, export_limit=Nonnegative),
66 9a06d96f Olga Brani
        groups=ListOf(Name),
67 9a06d96f Olga Brani
        permissions=ListOf(Name)
68 9a06d96f Olga Brani
    ):
69 9a06d96f Olga Brani
        rejected = ListOf(user=Email, reason=Text())
70 9a06d96f Olga Brani
        return rejected
71 9a06d96f Olga Brani
72 9a06d96f Olga Brani
    def update_users(
73 9a06d96f Olga Brani
        self,
74 9a06d96f Olga Brani
        users=ListOf(
75 9a06d96f Olga Brani
            pk=Nonnegative,
76 9a06d96f Olga Brani
            renew_token=Boolean,
77 9a06d96f Olga Brani
            data=ListOf(
78 9a06d96f Olga Brani
                first_name=Name,
79 9a06d96f Olga Brani
                last_name=Name,
80 9a06d96f Olga Brani
                is_active=Boolean,
81 9a06d96f Olga Brani
                is_superuser=Boolean,
82 9a06d96f Olga Brani
                affiliation=Name,
83 9a06d96f Olga Brani
                password=Name,
84 9a06d96f Olga Brani
                provider=Name,
85 9a06d96f Olga Brani
                level=Nonnegative,
86 9a06d96f Olga Brani
                invitations=Nonnegative,
87 9a06d96f Olga Brani
                is_verified=Boolean,
88 9a06d96f Olga Brani
                third_party_identifier=Name,
89 9a06d96f Olga Brani
                email_verified=Boolean
90 9a06d96f Olga Brani
            )
91 9a06d96f Olga Brani
        )
92 9a06d96f Olga Brani
    ):
93 9a06d96f Olga Brani
        rejected = ListOf(user_id=Nonnegative, reason=Text())
94 9a06d96f Olga Brani
        return rejected
95 9a06d96f Olga Brani
96 9a06d96f Olga Brani
    def add_user_policies(
97 9a06d96f Olga Brani
        self,
98 9a06d96f Olga Brani
        pk=Nonnegative,
99 fa48d6fb Sofia Papagiannaki
        policies=ListOf(
100 fa48d6fb Sofia Papagiannaki
            resource=Name, capacity=Nonnegative, quantity=Nonnegative,
101 fa48d6fb Sofia Papagiannaki
            import_limit=Nonnegative, export_limit=Nonnegative, update=Boolean)
102 9a06d96f Olga Brani
    ):
103 9a06d96f Olga Brani
        rejected = ListOf(resource=Name, reason=Text())
104 9a06d96f Olga Brani
        return rejected
105 9a06d96f Olga Brani
106 9a06d96f Olga Brani
    def remove_user_policies(
107 9a06d96f Olga Brani
        self,
108 9a06d96f Olga Brani
        pk=Nonnegative,
109 9a06d96f Olga Brani
        policies=ListOf(service=Name, resource=Name)
110 9a06d96f Olga Brani
    ):
111 9a06d96f Olga Brani
        rejected = ListOf(service=Name, resource=Name)
112 9a06d96f Olga Brani
        return rejected
113 9a06d96f Olga Brani
114 9a06d96f Olga Brani
    def add_user_permissions(
115 9a06d96f Olga Brani
        self,
116 9a06d96f Olga Brani
        pk=Nonnegative,
117 9a06d96f Olga Brani
        permissions=ListOf(permission=Name)
118 9a06d96f Olga Brani
    ):
119 9a06d96f Olga Brani
        rejected = ListOf(permission=Name)
120 9a06d96f Olga Brani
        return rejected
121 9a06d96f Olga Brani
122 9a06d96f Olga Brani
    def remove_user_permissions(
123 9a06d96f Olga Brani
        self,
124 9a06d96f Olga Brani
        pk=Nonnegative,
125 9a06d96f Olga Brani
        permissions=ListOf(permission=Name)
126 9a06d96f Olga Brani
    ):
127 9a06d96f Olga Brani
        rejected = ListOf(permission=Name)
128 9a06d96f Olga Brani
        return rejected
129 9a06d96f Olga Brani
130 9a06d96f Olga Brani
    def invite_users(
131 9a06d96f Olga Brani
        self,
132 9a06d96f Olga Brani
        sender=Email,
133 9a06d96f Olga Brani
        data=ListOf(email=Email, realname=Name)
134 9a06d96f Olga Brani
    ):
135 9a06d96f Olga Brani
        rejected = ListOf(receiver=Email)
136 9a06d96f Olga Brani
        return rejected
137 9a06d96f Olga Brani
138 9a06d96f Olga Brani
    def list_users(
139 9a06d96f Olga Brani
        self,
140 9a06d96f Olga Brani
        filter=ListOf(id=Nonnegative)
141 9a06d96f Olga Brani
    ):
142 9a06d96f Olga Brani
        return ListOf(
143 9a06d96f Olga Brani
            activation_sent=Timepoint,
144 9a06d96f Olga Brani
            affiliation=Name,
145 9a06d96f Olga Brani
            auth_token=Name,
146 9a06d96f Olga Brani
            auth_token_created=Timepoint,
147 9a06d96f Olga Brani
            auth_token_expires=Timepoint,
148 9a06d96f Olga Brani
            date_joined=Timepoint,
149 9a06d96f Olga Brani
            date_signed_terms=Timepoint,
150 9a06d96f Olga Brani
            email=Email,
151 9a06d96f Olga Brani
            email_verified=Boolean,
152 9a06d96f Olga Brani
            first_name=Name,
153 9a06d96f Olga Brani
            has_credits=Boolean,
154 9a06d96f Olga Brani
            has_signed_terms=Boolean,
155 9a06d96f Olga Brani
            id=Nonnegative,
156 9a06d96f Olga Brani
            invitations=Nonnegative,
157 9a06d96f Olga Brani
            invitations_sent=ListOf(
158 9a06d96f Olga Brani
                code=Name,
159 9a06d96f Olga Brani
                consumed=Boolean,
160 9a06d96f Olga Brani
                created=Timepoint,
161 9a06d96f Olga Brani
                id=Nonnegative,
162 9a06d96f Olga Brani
                realname=Name,
163 9a06d96f Olga Brani
                username=Email
164 9a06d96f Olga Brani
            ),
165 9a06d96f Olga Brani
            is_active=Boolean,
166 9a06d96f Olga Brani
            is_staff=Boolean,
167 9a06d96f Olga Brani
            is_superuser=Boolean,
168 9a06d96f Olga Brani
            is_verified=Boolean,
169 9a06d96f Olga Brani
            last_login=Timepoint,
170 9a06d96f Olga Brani
            last_name=Name,
171 9a06d96f Olga Brani
            level=Nonnegative,
172 9a06d96f Olga Brani
            password=Name,
173 9a06d96f Olga Brani
            provider=Name,
174 9a06d96f Olga Brani
            third_party_identifier=Name,
175 9a06d96f Olga Brani
            updated=Timepoint,
176 9a06d96f Olga Brani
            user_permissions=ListOf(
177 9a06d96f Olga Brani
                codename=Name,
178 9a06d96f Olga Brani
                id=Nonnegative,
179 9a06d96f Olga Brani
                name=Name
180 9a06d96f Olga Brani
            ),
181 9a06d96f Olga Brani
            username=Name,
182 9a06d96f Olga Brani
            astakos_groups=ListOf(
183 9a06d96f Olga Brani
                approval_date=Timepoint,
184 9a06d96f Olga Brani
                creation_date=Timepoint,
185 9a06d96f Olga Brani
                desc=Text(),
186 9a06d96f Olga Brani
                max_participants=Nonnegative,
187 9a06d96f Olga Brani
                expiration_date=Timepoint,
188 9a06d96f Olga Brani
                group_ptr=Url,
189 9a06d96f Olga Brani
                homepage=Url,
190 9a06d96f Olga Brani
                id=Nonnegative,
191 9a06d96f Olga Brani
                issue_date=Timepoint,
192 9a06d96f Olga Brani
                kind=Name,
193 9a06d96f Olga Brani
                moderation_enabled=Boolean,
194 9a06d96f Olga Brani
                name=Name,
195 9a06d96f Olga Brani
                #permissions=ListOf(),
196 9a06d96f Olga Brani
                policy=ListOf(id=Nonnegative, name=Name)
197 9a06d96f Olga Brani
            )
198 9a06d96f Olga Brani
        )
199 9a06d96f Olga Brani
200 666c7490 Sofia Papagiannaki
    def get_user_usage(
201 9a06d96f Olga Brani
        self,
202 9a06d96f Olga Brani
        user_id=Nonnegative
203 9a06d96f Olga Brani
    ):
204 9a06d96f Olga Brani
        return ListOf(
205 9a06d96f Olga Brani
            name=Name,
206 9a06d96f Olga Brani
            description=Text(),
207 9a06d96f Olga Brani
            unit=Name,
208 9a06d96f Olga Brani
            maxValue=Integer(),
209 9a06d96f Olga Brani
            currValue=Integer()
210 9a06d96f Olga Brani
        )
211 9a06d96f Olga Brani
212 9a06d96f Olga Brani
    def list_resources(self, filter=ListOf(id=Nonnegative)):
213 9a06d96f Olga Brani
        return ListOf(
214 9a06d96f Olga Brani
            desc=Text(),
215 9a06d96f Olga Brani
            group=Name,
216 9a06d96f Olga Brani
            id=Nonnegative,
217 9a06d96f Olga Brani
            meta=ListOf(key=Name, value=Name),
218 9a06d96f Olga Brani
            name=Name,
219 9a06d96f Olga Brani
            service=Name,
220 9a06d96f Olga Brani
            unit=Name
221 9a06d96f Olga Brani
        )
222 9a06d96f Olga Brani
223 9a06d96f Olga Brani
    def add_services(
224 9a06d96f Olga Brani
        self,
225 9a06d96f Olga Brani
        services=ListOf(
226 9a06d96f Olga Brani
            name=Name,
227 9a06d96f Olga Brani
            url=Url,
228 9a06d96f Olga Brani
            icon=Filepath,
229 9a06d96f Olga Brani
            resources=ListOf(
230 9a06d96f Olga Brani
                name=Name,
231 9a06d96f Olga Brani
                desc=Text(),
232 9a06d96f Olga Brani
                unit=Name,
233 9a06d96f Olga Brani
                group=Name
234 9a06d96f Olga Brani
            )
235 9a06d96f Olga Brani
        )
236 9a06d96f Olga Brani
    ):
237 9a06d96f Olga Brani
        rejected = ListOf(service=Name)
238 9a06d96f Olga Brani
        return rejected
239 9a06d96f Olga Brani
240 9a06d96f Olga Brani
    def update_services(
241 9a06d96f Olga Brani
        self,
242 9a06d96f Olga Brani
        services=ListOf(id=Nonnegative, url=Url, icon=Filepath)
243 9a06d96f Olga Brani
    ):
244 9a06d96f Olga Brani
        rejected = ListOf(service=Name)
245 9a06d96f Olga Brani
        return rejected
246 9a06d96f Olga Brani
247 9a06d96f Olga Brani
    def remove_services(self, ids=ListOf(Nonnegative)):
248 9a06d96f Olga Brani
        rejected = ListOf(service=Name)
249 9a06d96f Olga Brani
        return rejected
250 9a06d96f Olga Brani
251 9a06d96f Olga Brani
    def add_resources(
252 9a06d96f Olga Brani
        self,
253 9a06d96f Olga Brani
        service_id=Nonnegative,
254 9a06d96f Olga Brani
        update=Boolean,
255 9a06d96f Olga Brani
        resources=ListOf(
256 9a06d96f Olga Brani
            name=Name,
257 9a06d96f Olga Brani
            resources=ListOf(
258 9a06d96f Olga Brani
                name=Name,
259 9a06d96f Olga Brani
                desc=Text(),
260 9a06d96f Olga Brani
                unit=Name,
261 9a06d96f Olga Brani
                group=Name)
262 9a06d96f Olga Brani
        )
263 9a06d96f Olga Brani
    ):
264 9a06d96f Olga Brani
        rejected = ListOf(service=Name)
265 9a06d96f Olga Brani
        return rejected
266 9a06d96f Olga Brani
267 9a06d96f Olga Brani
    def remove_resources(
268 9a06d96f Olga Brani
        self,
269 9a06d96f Olga Brani
        service_id=Nonnegative,
270 9a06d96f Olga Brani
        ids=ListOf(Nonnegative)
271 9a06d96f Olga Brani
    ):
272 9a06d96f Olga Brani
        rejected = ListOf(Name)
273 9a06d96f Olga Brani
        return rejected
274 9a06d96f Olga Brani
275 9a06d96f Olga Brani
    def create_groups(
276 9a06d96f Olga Brani
        self,
277 9a06d96f Olga Brani
        groups=ListOf(
278 9a06d96f Olga Brani
            name=Name,
279 820b18e0 Sofia Papagiannaki
            kind=Name,
280 9a06d96f Olga Brani
            homepage=Url,
281 9a06d96f Olga Brani
            desc=Text(),
282 9a06d96f Olga Brani
            policies=ListOf(resource=Name, upimit=Nonnegative),
283 9a06d96f Olga Brani
            issue_date=Timepoint,
284 9a06d96f Olga Brani
            expiration_date=Timepoint,
285 9a06d96f Olga Brani
            moderation_enabled=Boolean,
286 9a06d96f Olga Brani
            participants=Nonnegative,
287 9a06d96f Olga Brani
            permissions=ListOf(permission=Name),
288 9a06d96f Olga Brani
            members=ListOf(user=Email, is_approved=Boolean),
289 9a06d96f Olga Brani
            owners=ListOf(user=Email)
290 9a06d96f Olga Brani
        )
291 9a06d96f Olga Brani
    ):
292 9a06d96f Olga Brani
        rejected = ListOf(group=Name)
293 9a06d96f Olga Brani
        return rejected
294 9a06d96f Olga Brani
295 9a06d96f Olga Brani
    def enable_groups(self, data=ListOf(group=Name)):
296 9a06d96f Olga Brani
        rejected = ListOf(group=Name)
297 9a06d96f Olga Brani
        return rejected
298 9a06d96f Olga Brani
299 9a06d96f Olga Brani
    def search_groups(self, key=Name):
300 9a06d96f Olga Brani
        return ListOf(
301 9a06d96f Olga Brani
            group=Name,
302 820b18e0 Sofia Papagiannaki
            kind=Nonnegative,
303 9a06d96f Olga Brani
            homepage=Url,
304 9a06d96f Olga Brani
            desc=Text(),
305 9a06d96f Olga Brani
            creation_date=Timepoint,
306 9a06d96f Olga Brani
            issue_date=Timepoint,
307 9a06d96f Olga Brani
            expiration_date=Timepoint,
308 9a06d96f Olga Brani
            moderation_enabled=Boolean,
309 9a06d96f Olga Brani
            participants=Nonnegative,
310 9a06d96f Olga Brani
            owner=ListOf(user=Email),
311 9a06d96f Olga Brani
            policies=ListOf(resource=Name, upimit=Nonnegative),
312 9a06d96f Olga Brani
            members=ListOf(user=Email, is_approved=Boolean)
313 9a06d96f Olga Brani
        )
314 9a06d96f Olga Brani
315 9a06d96f Olga Brani
    def list_groups(self):
316 9a06d96f Olga Brani
        return ListOf(
317 9a06d96f Olga Brani
            group=Name,
318 820b18e0 Sofia Papagiannaki
            kind=Nonnegative,
319 9a06d96f Olga Brani
            homepage=Url,
320 9a06d96f Olga Brani
            desc=Text(),
321 9a06d96f Olga Brani
            creation_date=Timepoint,
322 9a06d96f Olga Brani
            issue_date=Timepoint,
323 9a06d96f Olga Brani
            expiration_date=Timepoint,
324 9a06d96f Olga Brani
            moderation_enabled=Boolean,
325 9a06d96f Olga Brani
            participants=Nonnegative,
326 9a06d96f Olga Brani
            owners=ListOf(user=Email),
327 9a06d96f Olga Brani
            policies=ListOf(resource=Name, upimit=Nonnegative),
328 9a06d96f Olga Brani
            members=ListOf(user=Email, is_approved=Boolean)
329 9a06d96f Olga Brani
        )
330 9a06d96f Olga Brani
331 9a06d96f Olga Brani
    def add_owners(
332 9a06d96f Olga Brani
        self,
333 9a06d96f Olga Brani
        data=ListOf(group=Name, owners=ListOf(user=Email))
334 9a06d96f Olga Brani
    ):
335 9a06d96f Olga Brani
        rejected = ListOf(user=Email)
336 9a06d96f Olga Brani
        return rejected
337 9a06d96f Olga Brani
338 9a06d96f Olga Brani
    def remove_owners(
339 9a06d96f Olga Brani
        self,
340 9a06d96f Olga Brani
        data=ListOf(group=Name, owners=ListOf(user=Email))
341 9a06d96f Olga Brani
    ):
342 9a06d96f Olga Brani
        rejected = ListOf(user=Email)
343 9a06d96f Olga Brani
        return rejected
344 9a06d96f Olga Brani
345 9a06d96f Olga Brani
    def add_members(
346 9a06d96f Olga Brani
        self,
347 9a06d96f Olga Brani
        data=ListOf(group=Name, members=ListOf(user=Email))
348 9a06d96f Olga Brani
    ):
349 9a06d96f Olga Brani
        rejected = ListOf(user=Email)
350 9a06d96f Olga Brani
        return rejected
351 9a06d96f Olga Brani
352 9a06d96f Olga Brani
    def remove_members(
353 9a06d96f Olga Brani
        self,
354 9a06d96f Olga Brani
        data=ListOf(group=Name, members=ListOf(user=Email))
355 9a06d96f Olga Brani
    ):
356 9a06d96f Olga Brani
        rejected = ListOf(user=Email)
357 9a06d96f Olga Brani
        return rejected
358 9a06d96f Olga Brani
359 9a06d96f Olga Brani
    def add_policies(
360 9a06d96f Olga Brani
        self,
361 9a06d96f Olga Brani
        data=ListOf(group=Name, resource=Name, upimit=Nonnegative)
362 9a06d96f Olga Brani
    ):
363 9a06d96f Olga Brani
        rejected = ListOf(group=Name, resource=Name)
364 9a06d96f Olga Brani
        return rejected
365 9a06d96f Olga Brani
366 9a06d96f Olga Brani
    def remove_group_policies(
367 9a06d96f Olga Brani
        self,
368 9a06d96f Olga Brani
        data=ListOf(group=Name, resource=Name, upimit=Nonnegative)
369 9a06d96f Olga Brani
    ):
370 9a06d96f Olga Brani
        rejected = ListOf(group=Name, resource=Name)
371 9a06d96f Olga Brani
        return rejected
372 9a06d96f Olga Brani
373 9a06d96f Olga Brani
    def update_group_policies(
374 9a06d96f Olga Brani
        self, data=ListOf(group=Name, resource=Name, upimit=Nonnegative)
375 9a06d96f Olga Brani
    ):
376 9a06d96f Olga Brani
        rejected = ListOf(group=Name, resource=Name)
377 9a06d96f Olga Brani
        return rejected
378 9a06d96f Olga Brani
379 9a06d96f Olga Brani
    def approve_members(
380 9a06d96f Olga Brani
        self,
381 9a06d96f Olga Brani
        data=ListOf(group=Name, members=ListOf(user=Email))
382 9a06d96f Olga Brani
    ):
383 9a06d96f Olga Brani
        rejected = ListOf(user=Email)
384 9a06d96f Olga Brani
        return rejected
385 9a06d96f Olga Brani
386 9a06d96f Olga Brani
    def disapprove_members(
387 9a06d96f Olga Brani
        self,
388 9a06d96f Olga Brani
        data=ListOf(group=Name, members=ListOf(user=Email))
389 9a06d96f Olga Brani
    ):
390 9a06d96f Olga Brani
        rejected = ListOf(user=Email)
391 9a06d96f Olga Brani
        return rejected
392 9a06d96f Olga Brani
393 9a06d96f Olga Brani
    def add_group_permissions(
394 9a06d96f Olga Brani
        self,
395 9a06d96f Olga Brani
        data=ListOf(group=Name, permission=Name)
396 9a06d96f Olga Brani
    ):
397 9a06d96f Olga Brani
        rejected = ListOf(group=Name, permission=Name)
398 9a06d96f Olga Brani
        return rejected
399 9a06d96f Olga Brani
400 9a06d96f Olga Brani
    def delete_group_permissions(
401 9a06d96f Olga Brani
        self,
402 9a06d96f Olga Brani
        data=ListOf(group=Name, permission=Name)
403 9a06d96f Olga Brani
    ):
404 9a06d96f Olga Brani
        rejected = ListOf(group=Name, permission=Name)
405 9a06d96f Olga Brani
        return rejected
406 9a06d96f Olga Brani
407 9a06d96f Olga Brani
    def list_resource_units(self):
408 9a06d96f Olga Brani
        return ListOf(Name)
409 9a06d96f Olga Brani
410 c0b26605 Sofia Papagiannaki
    def get_approval_terms(self, term=Nonnegative):
411 9a06d96f Olga Brani
        return Text()
412 9a06d96f Olga Brani
413 c0b26605 Sofia Papagiannaki
    def add_approval_terms(self, location=Filepath):
414 9a06d96f Olga Brani
        return Nonnegative
415 9a06d96f Olga Brani
416 9a06d96f Olga Brani
#     def change_emails():
417 9a06d96f Olga Brani
#         pass