Statistics
| Branch: | Tag: | Revision:

root / snf-common / synnefo / lib / quotaholder / api / quotaholder.py @ d2b32360

History | View | Annotate | Download (12.8 kB)

1 4350ac98 Georgios D. Tsoukalas
# -*- coding: utf-8 -*-
2 4350ac98 Georgios D. Tsoukalas
#
3 3e5941c1 Giorgos Korfiatis
# Copyright 2012 GRNET S.A. All rights reserved.
4 3e5941c1 Giorgos Korfiatis
#
5 3e5941c1 Giorgos Korfiatis
# Redistribution and use in source and binary forms, with or
6 3e5941c1 Giorgos Korfiatis
# without modification, are permitted provided that the following
7 3e5941c1 Giorgos Korfiatis
# conditions are met:
8 3e5941c1 Giorgos Korfiatis
#
9 3e5941c1 Giorgos Korfiatis
#   1. Redistributions of source code must retain the above
10 3e5941c1 Giorgos Korfiatis
#      copyright notice, this list of conditions and the following
11 3e5941c1 Giorgos Korfiatis
#      disclaimer.
12 3e5941c1 Giorgos Korfiatis
#
13 3e5941c1 Giorgos Korfiatis
#   2. Redistributions in binary form must reproduce the above
14 3e5941c1 Giorgos Korfiatis
#      copyright notice, this list of conditions and the following
15 3e5941c1 Giorgos Korfiatis
#      disclaimer in the documentation and/or other materials
16 3e5941c1 Giorgos Korfiatis
#      provided with the distribution.
17 3e5941c1 Giorgos Korfiatis
#
18 3e5941c1 Giorgos Korfiatis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
19 3e5941c1 Giorgos Korfiatis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 3e5941c1 Giorgos Korfiatis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 3e5941c1 Giorgos Korfiatis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
22 3e5941c1 Giorgos Korfiatis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 3e5941c1 Giorgos Korfiatis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 3e5941c1 Giorgos Korfiatis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
25 3e5941c1 Giorgos Korfiatis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
26 3e5941c1 Giorgos Korfiatis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 3e5941c1 Giorgos Korfiatis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28 3e5941c1 Giorgos Korfiatis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 3e5941c1 Giorgos Korfiatis
# POSSIBILITY OF SUCH DAMAGE.
30 3e5941c1 Giorgos Korfiatis
#
31 3e5941c1 Giorgos Korfiatis
# The views and conclusions contained in the software and
32 3e5941c1 Giorgos Korfiatis
# documentation are those of the authors and should not be
33 3e5941c1 Giorgos Korfiatis
# interpreted as representing official policies, either expressed
34 3e5941c1 Giorgos Korfiatis
# or implied, of GRNET S.A.
35 3e5941c1 Giorgos Korfiatis
36 9f1a1bd0 Georgios D. Tsoukalas
37 f54beeea Giorgos Korfiatis
from synnefo.lib.commissioning import (CanonifyException, SpecifyException,
38 f54beeea Giorgos Korfiatis
                                       Specificator, Null, Integer, Text,
39 f54beeea Giorgos Korfiatis
                                       Tuple, ListOf, Dict, Args)
40 4350ac98 Georgios D. Tsoukalas
from random import choice, randint
41 9f1a1bd0 Georgios D. Tsoukalas
42 f3327431 Giorgos Korfiatis
Context             =   Dict(classname='Context', null=True, show=False)
43 9f1a1bd0 Georgios D. Tsoukalas
44 d4eaff2f Georgios D. Tsoukalas
class Name(Text):
45 9f1a1bd0 Georgios D. Tsoukalas
    def init(self):
46 c294cb93 Georgios D. Tsoukalas
        self.opts.update({'regex': "[\w.:@+/-]+", 'maxlen':512})
47 5b006999 Giorgos Korfiatis
        Text.init(self)
48 9f1a1bd0 Georgios D. Tsoukalas
49 4350ac98 Georgios D. Tsoukalas
    def _random_choice(self, kw):
50 4350ac98 Georgios D. Tsoukalas
        alphabet = u'abcdef_1233490.:@/-αβγδεζ'
51 ccdb658a Giorgos Korfiatis
        length = randint(1, 48)
52 4350ac98 Georgios D. Tsoukalas
        return ''.join(choice(alphabet) for _ in xrange(length))
53 4350ac98 Georgios D. Tsoukalas
54 9f1a1bd0 Georgios D. Tsoukalas
class Nonnegative(Integer):
55 9f1a1bd0 Georgios D. Tsoukalas
    def init(self):
56 9f1a1bd0 Georgios D. Tsoukalas
        self.opts.update({'minimum': 0})
57 9f1a1bd0 Georgios D. Tsoukalas
58 9f1a1bd0 Georgios D. Tsoukalas
class Positive(Integer):
59 9f1a1bd0 Georgios D. Tsoukalas
    def init(self):
60 9f1a1bd0 Georgios D. Tsoukalas
        self.opts.update({'minimum': 1})
61 9f1a1bd0 Georgios D. Tsoukalas
62 9f1a1bd0 Georgios D. Tsoukalas
Serial              =   Positive(classname='Serial')
63 9f1a1bd0 Georgios D. Tsoukalas
64 9f1a1bd0 Georgios D. Tsoukalas
ClientKey           =   Name(classname='ClientKey')
65 9f1a1bd0 Georgios D. Tsoukalas
Nothing             =   Null(classname='Nothing')
66 9f1a1bd0 Georgios D. Tsoukalas
67 9f1a1bd0 Georgios D. Tsoukalas
Entity              =   Name(classname='Entity')
68 9f1a1bd0 Georgios D. Tsoukalas
Owner               =   Name(classname='Owner')
69 3cd8d059 Giorgos Korfiatis
Key                 =   Text(classname='Key')
70 3cd8d059 Giorgos Korfiatis
NewKey              =   Text(classname='Newkey')
71 3cd8d059 Giorgos Korfiatis
OwnerKey            =   Text(classname='OwnerKey')
72 9f1a1bd0 Georgios D. Tsoukalas
Resource            =   Name(classname='Resource')
73 9f1a1bd0 Georgios D. Tsoukalas
Policy              =   Name(classname='Policy')
74 9f1a1bd0 Georgios D. Tsoukalas
75 bf96fd80 Sofia Papagiannaki
Quantity            =   Integer(classname='Quantity', null=True)
76 a2db0eb5 root
Capacity            =   Nonnegative(classname='Capacity', null=True)
77 a2db0eb5 root
ImportLimit         =   Nonnegative(classname='ImportLimit', null=True)
78 a2db0eb5 root
ExportLimit         =   Nonnegative(classname='ExportLimit', null=True)
79 4ec8c043 Giorgos Korfiatis
QuantityDelta       =   Integer(classname='QuantityDelta', null=True)
80 4ec8c043 Giorgos Korfiatis
CapacityDelta       =   Integer(classname='CapacityDelta', null=True)
81 4ec8c043 Giorgos Korfiatis
ImportLimitDelta    =   Integer(classname='ImportLimitDelta', null=True)
82 4ec8c043 Giorgos Korfiatis
ExportLimitDelta    =   Integer(classname='ExportLimitDelta', null=True)
83 9f1a1bd0 Georgios D. Tsoukalas
Imported            =   Nonnegative(classname='Imported')
84 9f1a1bd0 Georgios D. Tsoukalas
Exported            =   Nonnegative(classname='Exported')
85 d6662f65 root
Returned            =   Nonnegative(classname='Returned')
86 f590f930 Georgios D. Tsoukalas
Released            =   Nonnegative(classname='Released')
87 9f1a1bd0 Georgios D. Tsoukalas
Flags               =   Nonnegative(classname='Flags')
88 d793e5c4 Giorgos Korfiatis
Index               =   Nonnegative(classname='Index')
89 9f1a1bd0 Georgios D. Tsoukalas
90 f590f930 Georgios D. Tsoukalas
Timepoint           =   Text(classname='Timepoint', maxlen=24)
91 f590f930 Georgios D. Tsoukalas
Reason              =   Text(   classname   =   'Reason',
92 f590f930 Georgios D. Tsoukalas
                                regex       =   '(ACCEPT|REJECT):.*',
93 f590f930 Georgios D. Tsoukalas
                                maxlen      =   128         )
94 9f1a1bd0 Georgios D. Tsoukalas
95 9f1a1bd0 Georgios D. Tsoukalas
class QuotaholderAPI(Specificator):
96 9f1a1bd0 Georgios D. Tsoukalas
97 9f1a1bd0 Georgios D. Tsoukalas
    def create_entity   (
98 9f1a1bd0 Georgios D. Tsoukalas
                self,
99 9f1a1bd0 Georgios D. Tsoukalas
                context         =   Context,
100 9f1a1bd0 Georgios D. Tsoukalas
                create_entity   =   ListOf(Entity, Owner, Key, OwnerKey, nonempty=1)
101 9f1a1bd0 Georgios D. Tsoukalas
        ):
102 d793e5c4 Giorgos Korfiatis
        rejected = ListOf(Index)
103 9f1a1bd0 Georgios D. Tsoukalas
        return rejected
104 9f1a1bd0 Georgios D. Tsoukalas
105 d6662f65 root
    def set_entity_key  (
106 1dedc367 Georgios D. Tsoukalas
                self,
107 1dedc367 Georgios D. Tsoukalas
                context         =   Context,
108 1dedc367 Georgios D. Tsoukalas
                set_entity_key  =   ListOf(Entity, Key, NewKey)
109 1dedc367 Georgios D. Tsoukalas
        ):
110 1dedc367 Georgios D. Tsoukalas
        rejected = ListOf(Entity)
111 1dedc367 Georgios D. Tsoukalas
        return rejected
112 1dedc367 Georgios D. Tsoukalas
113 9f1a1bd0 Georgios D. Tsoukalas
    def list_entities   (
114 9f1a1bd0 Georgios D. Tsoukalas
                self,
115 9f1a1bd0 Georgios D. Tsoukalas
                context         =   Context,
116 9f1a1bd0 Georgios D. Tsoukalas
                entity          =   Entity,
117 9f1a1bd0 Georgios D. Tsoukalas
                key             =   Key
118 9f1a1bd0 Georgios D. Tsoukalas
        ):
119 9f1a1bd0 Georgios D. Tsoukalas
        entities = ListOf(Entity)
120 9f1a1bd0 Georgios D. Tsoukalas
        return entities
121 9f1a1bd0 Georgios D. Tsoukalas
122 9f1a1bd0 Georgios D. Tsoukalas
    def get_entity  (
123 9f1a1bd0 Georgios D. Tsoukalas
                self,
124 9f1a1bd0 Georgios D. Tsoukalas
                context     =   Context,
125 9f1a1bd0 Georgios D. Tsoukalas
                get_entity  =   ListOf(Entity, Key, nonempty=1)
126 9f1a1bd0 Georgios D. Tsoukalas
        ):
127 9f1a1bd0 Georgios D. Tsoukalas
        entities = ListOf(Entity, Owner)
128 9f1a1bd0 Georgios D. Tsoukalas
        return entities
129 9f1a1bd0 Georgios D. Tsoukalas
130 9f1a1bd0 Georgios D. Tsoukalas
    def get_limits  (
131 9f1a1bd0 Georgios D. Tsoukalas
                self,
132 9f1a1bd0 Georgios D. Tsoukalas
                context     =   Context,
133 72c4abd2 root
                get_limits  =   ListOf(Policy, nonempty=1)
134 9f1a1bd0 Georgios D. Tsoukalas
        ):
135 72c4abd2 root
        limits = ListOf(Policy, Quantity, Capacity,
136 72c4abd2 root
                        ImportLimit, ExportLimit)
137 9f1a1bd0 Georgios D. Tsoukalas
        return limits
138 9f1a1bd0 Georgios D. Tsoukalas
139 9f1a1bd0 Georgios D. Tsoukalas
    def set_limits  (
140 9f1a1bd0 Georgios D. Tsoukalas
                self,
141 9f1a1bd0 Georgios D. Tsoukalas
                context     =   Context,
142 72c4abd2 root
                set_limits  =   ListOf( Policy, Quantity, Capacity,
143 72c4abd2 root
                                        ImportLimit, ExportLimit,
144 9f1a1bd0 Georgios D. Tsoukalas
                                        nonempty=1 )
145 9f1a1bd0 Georgios D. Tsoukalas
        ):
146 72c4abd2 root
        rejected = ListOf(Policy)
147 9f1a1bd0 Georgios D. Tsoukalas
        return rejected
148 9f1a1bd0 Georgios D. Tsoukalas
149 9f1a1bd0 Georgios D. Tsoukalas
    def get_holding (
150 9f1a1bd0 Georgios D. Tsoukalas
                self,
151 9f1a1bd0 Georgios D. Tsoukalas
                context     =   Context,
152 9f1a1bd0 Georgios D. Tsoukalas
                get_holding =   ListOf(Entity, Resource, Key)
153 9f1a1bd0 Georgios D. Tsoukalas
        ):
154 9f1a1bd0 Georgios D. Tsoukalas
        holdings = ListOf(  Entity, Resource, Policy,
155 d6662f65 root
                            Imported, Exported, Returned, Released, Flags   )
156 9f1a1bd0 Georgios D. Tsoukalas
        return holdings
157 9f1a1bd0 Georgios D. Tsoukalas
158 9f1a1bd0 Georgios D. Tsoukalas
    def set_holding (
159 9f1a1bd0 Georgios D. Tsoukalas
                self,
160 9f1a1bd0 Georgios D. Tsoukalas
                context     =   Context,
161 9f1a1bd0 Georgios D. Tsoukalas
                set_holding =   ListOf(Entity, Resource, Key, Policy, Flags)
162 9f1a1bd0 Georgios D. Tsoukalas
        ):
163 9f1a1bd0 Georgios D. Tsoukalas
        rejected = ListOf(Entity, Resource, Policy)
164 9f1a1bd0 Georgios D. Tsoukalas
        return rejected
165 9f1a1bd0 Georgios D. Tsoukalas
166 a7cdc223 Giorgos Korfiatis
    def init_holding (
167 5b522bc3 Giorgos Korfiatis
                self,
168 4c00b904 Giorgos Korfiatis
                context      =   Context,
169 a7cdc223 Giorgos Korfiatis
                init_holding =   ListOf(Entity, Resource, Key, Policy,
170 a7cdc223 Giorgos Korfiatis
                                        Imported, Exported, Returned, Released,
171 a7cdc223 Giorgos Korfiatis
                                        Flags)
172 5b522bc3 Giorgos Korfiatis
        ):
173 5b522bc3 Giorgos Korfiatis
        rejected = ListOf(Index)
174 5b522bc3 Giorgos Korfiatis
        return rejected
175 5b522bc3 Giorgos Korfiatis
176 4c00b904 Giorgos Korfiatis
    def reset_holding (
177 4c00b904 Giorgos Korfiatis
                self,
178 4c00b904 Giorgos Korfiatis
                context       =   Context,
179 4c00b904 Giorgos Korfiatis
                reset_holding =   ListOf(Entity, Resource, Key,
180 4c00b904 Giorgos Korfiatis
                                        Imported, Exported, Returned, Released)
181 4c00b904 Giorgos Korfiatis
        ):
182 4c00b904 Giorgos Korfiatis
        rejected = ListOf(Index)
183 4c00b904 Giorgos Korfiatis
        return rejected
184 4c00b904 Giorgos Korfiatis
185 8dc7c13b Giorgos Korfiatis
    def release_holding (
186 8dc7c13b Giorgos Korfiatis
                self,
187 8dc7c13b Giorgos Korfiatis
                context         =   Context,
188 8dc7c13b Giorgos Korfiatis
                release_holding =   ListOf(Entity, Resource, Key)
189 8dc7c13b Giorgos Korfiatis
        ):
190 8dc7c13b Giorgos Korfiatis
        rejected = ListOf(Index)
191 8dc7c13b Giorgos Korfiatis
        return rejected
192 8dc7c13b Giorgos Korfiatis
193 9f1a1bd0 Georgios D. Tsoukalas
    def list_resources  (
194 9f1a1bd0 Georgios D. Tsoukalas
                self,
195 9f1a1bd0 Georgios D. Tsoukalas
                context     =   Context,
196 9f1a1bd0 Georgios D. Tsoukalas
                entity      =   Entity,
197 9f1a1bd0 Georgios D. Tsoukalas
                key         =   Key
198 9f1a1bd0 Georgios D. Tsoukalas
        ):
199 9f1a1bd0 Georgios D. Tsoukalas
        resources = ListOf(Resource)
200 9f1a1bd0 Georgios D. Tsoukalas
        return resources
201 9f1a1bd0 Georgios D. Tsoukalas
202 65f214a2 Georgios D. Tsoukalas
    def list_holdings   (
203 65f214a2 Georgios D. Tsoukalas
                self,
204 65f214a2 Georgios D. Tsoukalas
                context         =   Context,
205 65f214a2 Georgios D. Tsoukalas
                list_holdings   =   ListOf(Entity, Key)
206 65f214a2 Georgios D. Tsoukalas
        ):
207 65f214a2 Georgios D. Tsoukalas
208 65f214a2 Georgios D. Tsoukalas
        rejected = ListOf(Entity)
209 65f214a2 Georgios D. Tsoukalas
        holdings_list = ListOf(ListOf(Entity, Resource,
210 65f214a2 Georgios D. Tsoukalas
                                      Imported, Exported,
211 65f214a2 Georgios D. Tsoukalas
                                      Returned, Released))
212 65f214a2 Georgios D. Tsoukalas
        return Tuple(holdings_list, rejected)
213 65f214a2 Georgios D. Tsoukalas
214 9f1a1bd0 Georgios D. Tsoukalas
    def get_quota   (
215 9f1a1bd0 Georgios D. Tsoukalas
                self,
216 9f1a1bd0 Georgios D. Tsoukalas
                context     =   Context,
217 9f1a1bd0 Georgios D. Tsoukalas
                get_quota   =   ListOf(Entity, Resource, Key)
218 9f1a1bd0 Georgios D. Tsoukalas
        ):
219 9f1a1bd0 Georgios D. Tsoukalas
        quotas = ListOf(Entity, Resource,
220 9f1a1bd0 Georgios D. Tsoukalas
                        Quantity, Capacity,
221 9f1a1bd0 Georgios D. Tsoukalas
                        ImportLimit, ExportLimit,
222 9f1a1bd0 Georgios D. Tsoukalas
                        Imported, Exported,
223 d6662f65 root
                        Returned, Released,
224 9f1a1bd0 Georgios D. Tsoukalas
                        Flags)
225 9f1a1bd0 Georgios D. Tsoukalas
        return quotas
226 9f1a1bd0 Georgios D. Tsoukalas
227 9f1a1bd0 Georgios D. Tsoukalas
    def set_quota   (
228 9f1a1bd0 Georgios D. Tsoukalas
                self,
229 9f1a1bd0 Georgios D. Tsoukalas
                context     =   Context,
230 9f1a1bd0 Georgios D. Tsoukalas
                set_quota   =   ListOf( Entity, Resource, Key,
231 9f1a1bd0 Georgios D. Tsoukalas
                                        Quantity, Capacity,
232 9f1a1bd0 Georgios D. Tsoukalas
                                        ImportLimit, ExportLimit, Flags )
233 9f1a1bd0 Georgios D. Tsoukalas
        ):
234 9f1a1bd0 Georgios D. Tsoukalas
        rejected = ListOf(Entity, Resource)
235 9f1a1bd0 Georgios D. Tsoukalas
        return rejected
236 9f1a1bd0 Georgios D. Tsoukalas
237 4ec8c043 Giorgos Korfiatis
    def add_quota   (
238 4ec8c043 Giorgos Korfiatis
                self,
239 4ec8c043 Giorgos Korfiatis
                context     =   Context,
240 789d202d Giorgos Korfiatis
                clientkey   =   ClientKey,
241 789d202d Giorgos Korfiatis
                serial      =   Serial,
242 d2b32360 Giorgos Korfiatis
                sub_quota   =   ListOf( Entity, Resource, Key,
243 d2b32360 Giorgos Korfiatis
                                        QuantityDelta, CapacityDelta,
244 d2b32360 Giorgos Korfiatis
                                        ImportLimitDelta, ExportLimitDelta ),
245 4ec8c043 Giorgos Korfiatis
                add_quota   =   ListOf( Entity, Resource, Key,
246 4ec8c043 Giorgos Korfiatis
                                        QuantityDelta, CapacityDelta,
247 4ec8c043 Giorgos Korfiatis
                                        ImportLimitDelta, ExportLimitDelta )
248 4ec8c043 Giorgos Korfiatis
        ):
249 4ec8c043 Giorgos Korfiatis
        rejected = ListOf(Entity, Resource)
250 4ec8c043 Giorgos Korfiatis
        return rejected
251 4ec8c043 Giorgos Korfiatis
252 2fd11a01 Giorgos Korfiatis
    def query_serials   (
253 789d202d Giorgos Korfiatis
                self,
254 789d202d Giorgos Korfiatis
                context     =   Context,
255 789d202d Giorgos Korfiatis
                clientkey   =   ClientKey,
256 2fd11a01 Giorgos Korfiatis
                serials     =   ListOf(Serial)
257 2fd11a01 Giorgos Korfiatis
        ):
258 2fd11a01 Giorgos Korfiatis
        return ListOf(Serial)
259 2fd11a01 Giorgos Korfiatis
260 2fd11a01 Giorgos Korfiatis
    def ack_serials (
261 2fd11a01 Giorgos Korfiatis
                self,
262 2fd11a01 Giorgos Korfiatis
                context     =   Context,
263 2fd11a01 Giorgos Korfiatis
                clientkey   =   ClientKey,
264 2fd11a01 Giorgos Korfiatis
                serials     =   ListOf(Serial)
265 789d202d Giorgos Korfiatis
        ):
266 2fd11a01 Giorgos Korfiatis
        return Nothing
267 789d202d Giorgos Korfiatis
268 9f1a1bd0 Georgios D. Tsoukalas
    def issue_commission    (
269 9f1a1bd0 Georgios D. Tsoukalas
                self,
270 9f1a1bd0 Georgios D. Tsoukalas
                context     =   Context,
271 c3a709ad root
                target      =   Entity,
272 9f1a1bd0 Georgios D. Tsoukalas
                key         =   Key,
273 9f1a1bd0 Georgios D. Tsoukalas
                clientkey   =   ClientKey,
274 d6662f65 root
                name        =   Text(default=''),
275 9f1a1bd0 Georgios D. Tsoukalas
                provisions  =   ListOf(Entity, Resource, Quantity)
276 9f1a1bd0 Georgios D. Tsoukalas
        ):
277 9f1a1bd0 Georgios D. Tsoukalas
        return Serial
278 9f1a1bd0 Georgios D. Tsoukalas
279 9f1a1bd0 Georgios D. Tsoukalas
    def accept_commission   (
280 9f1a1bd0 Georgios D. Tsoukalas
                self,
281 9f1a1bd0 Georgios D. Tsoukalas
                context     =   Context,
282 9f1a1bd0 Georgios D. Tsoukalas
                clientkey   =   ClientKey,
283 d6662f65 root
                serials     =   ListOf(Serial),
284 d6662f65 root
                reason      =   Text(default='ACCEPT')
285 9f1a1bd0 Georgios D. Tsoukalas
        ):
286 9f1a1bd0 Georgios D. Tsoukalas
        return Nothing
287 9f1a1bd0 Georgios D. Tsoukalas
288 9f1a1bd0 Georgios D. Tsoukalas
    def reject_commission   (
289 9f1a1bd0 Georgios D. Tsoukalas
                self,
290 9f1a1bd0 Georgios D. Tsoukalas
                context     =   Context,
291 9f1a1bd0 Georgios D. Tsoukalas
                clientkey   =   ClientKey,
292 d6662f65 root
                serials     =   ListOf(Serial),
293 d6662f65 root
                reason      =   Text(default='REJECT')
294 9f1a1bd0 Georgios D. Tsoukalas
        ):
295 9f1a1bd0 Georgios D. Tsoukalas
        return Nothing
296 9f1a1bd0 Georgios D. Tsoukalas
297 9f1a1bd0 Georgios D. Tsoukalas
    def get_pending_commissions (
298 9f1a1bd0 Georgios D. Tsoukalas
                    self,
299 9f1a1bd0 Georgios D. Tsoukalas
                    context     =   Context,
300 9f1a1bd0 Georgios D. Tsoukalas
                    clientkey   =   ClientKey
301 9f1a1bd0 Georgios D. Tsoukalas
        ):
302 9f1a1bd0 Georgios D. Tsoukalas
        pending = ListOf(Serial)
303 9f1a1bd0 Georgios D. Tsoukalas
        return pending
304 9f1a1bd0 Georgios D. Tsoukalas
305 9f1a1bd0 Georgios D. Tsoukalas
    def resolve_pending_commissions (
306 9f1a1bd0 Georgios D. Tsoukalas
                    self,
307 9f1a1bd0 Georgios D. Tsoukalas
                    context     =   Context,
308 9f1a1bd0 Georgios D. Tsoukalas
                    clientkey   =   ClientKey,
309 9f1a1bd0 Georgios D. Tsoukalas
                    max_serial  =   Serial,
310 9f1a1bd0 Georgios D. Tsoukalas
                    accept_set  =   ListOf(Serial)
311 9f1a1bd0 Georgios D. Tsoukalas
        ):
312 9f1a1bd0 Georgios D. Tsoukalas
        return Nothing
313 9f1a1bd0 Georgios D. Tsoukalas
314 9f1a1bd0 Georgios D. Tsoukalas
    def release_entity  (
315 9f1a1bd0 Georgios D. Tsoukalas
                self,
316 9f1a1bd0 Georgios D. Tsoukalas
                context         =   Context,
317 9f1a1bd0 Georgios D. Tsoukalas
                release_entity  =   ListOf(Entity, Key, nonempty=1)
318 9f1a1bd0 Georgios D. Tsoukalas
        ):
319 9f1a1bd0 Georgios D. Tsoukalas
        rejected = ListOf(Entity)
320 9f1a1bd0 Georgios D. Tsoukalas
        return rejected
321 9f1a1bd0 Georgios D. Tsoukalas
322 f590f930 Georgios D. Tsoukalas
    def get_timeline    (
323 f590f930 Georgios D. Tsoukalas
                self,
324 f590f930 Georgios D. Tsoukalas
                context         =   Context,
325 f590f930 Georgios D. Tsoukalas
                after           =   Timepoint,
326 f590f930 Georgios D. Tsoukalas
                before          =   Timepoint,
327 0360f54b root
                get_timeline    =   ListOf(Entity, Resource, Key)
328 f590f930 Georgios D. Tsoukalas
        ):
329 d6662f65 root
        timeline = ListOf(Dict(
330 d6662f65 root
                            serial                      =   Serial,
331 d6662f65 root
                            source                      =   Entity,
332 d6662f65 root
                            target                      =   Entity,
333 d6662f65 root
                            resource                    =   Resource,
334 d6662f65 root
                            name                        =   Name(),
335 d6662f65 root
                            quantity                    =   Quantity,
336 92cb0768 root
                            source_allocated            =   Quantity,
337 92cb0768 root
                            source_allocated_through    =   Quantity,
338 92cb0768 root
                            source_inbound              =   Quantity,
339 92cb0768 root
                            source_inbound_through      =   Quantity,
340 92cb0768 root
                            source_outbound             =   Quantity,
341 92cb0768 root
                            source_outbound_through     =   Quantity,
342 92cb0768 root
                            target_allocated            =   Quantity,
343 92cb0768 root
                            target_allocated_through    =   Quantity,
344 92cb0768 root
                            target_inbound              =   Quantity,
345 92cb0768 root
                            target_inbound_through      =   Quantity,
346 92cb0768 root
                            target_outbound             =   Quantity,
347 92cb0768 root
                            target_outbound_through     =   Quantity,
348 d6662f65 root
                            issue_time                  =   Timepoint,
349 d6662f65 root
                            log_time                    =   Timepoint,
350 8a3dae55 Georgios D. Tsoukalas
                            reason                      =   Reason,
351 8a3dae55 Georgios D. Tsoukalas
352 0360f54b root
                            strict  =   True))
353 f590f930 Georgios D. Tsoukalas
        return timeline