Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / quotaholder_app / models.py @ 95d49da0

History | View | Annotate | Download (3.6 kB)

1 ea1e5d9f Giorgos Korfiatis
# Copyright 2012, 2013 GRNET S.A. All rights reserved.
2 3e5941c1 Giorgos Korfiatis
#
3 3e5941c1 Giorgos Korfiatis
# Redistribution and use in source and binary forms, with or
4 3e5941c1 Giorgos Korfiatis
# without modification, are permitted provided that the following
5 3e5941c1 Giorgos Korfiatis
# conditions are met:
6 3e5941c1 Giorgos Korfiatis
#
7 3e5941c1 Giorgos Korfiatis
#   1. Redistributions of source code must retain the above
8 3e5941c1 Giorgos Korfiatis
#      copyright notice, this list of conditions and the following
9 3e5941c1 Giorgos Korfiatis
#      disclaimer.
10 3e5941c1 Giorgos Korfiatis
#
11 3e5941c1 Giorgos Korfiatis
#   2. Redistributions in binary form must reproduce the above
12 3e5941c1 Giorgos Korfiatis
#      copyright notice, this list of conditions and the following
13 3e5941c1 Giorgos Korfiatis
#      disclaimer in the documentation and/or other materials
14 3e5941c1 Giorgos Korfiatis
#      provided with the distribution.
15 3e5941c1 Giorgos Korfiatis
#
16 3e5941c1 Giorgos Korfiatis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 3e5941c1 Giorgos Korfiatis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 3e5941c1 Giorgos Korfiatis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 3e5941c1 Giorgos Korfiatis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 3e5941c1 Giorgos Korfiatis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 3e5941c1 Giorgos Korfiatis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 3e5941c1 Giorgos Korfiatis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 3e5941c1 Giorgos Korfiatis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 3e5941c1 Giorgos Korfiatis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 3e5941c1 Giorgos Korfiatis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 3e5941c1 Giorgos Korfiatis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 3e5941c1 Giorgos Korfiatis
# POSSIBILITY OF SUCH DAMAGE.
28 3e5941c1 Giorgos Korfiatis
#
29 3e5941c1 Giorgos Korfiatis
# The views and conclusions contained in the software and
30 3e5941c1 Giorgos Korfiatis
# documentation are those of the authors and should not be
31 3e5941c1 Giorgos Korfiatis
# interpreted as representing official policies, either expressed
32 3e5941c1 Giorgos Korfiatis
# or implied, of GRNET S.A.
33 3e5941c1 Giorgos Korfiatis
34 b052f360 Giorgos Korfiatis
from snf_django.lib.db.fields import intDecimalField
35 9f1a1bd0 Georgios D. Tsoukalas
36 164e64d5 Giorgos Korfiatis
from django.db.models import (Model, BigIntegerField, CharField, DateTimeField,
37 c11dc0ce Giorgos Korfiatis
                              ForeignKey, AutoField)
38 222a4f6a Giorgos Korfiatis
from snf_django.lib.db.managers import ForUpdateManager
39 9f1a1bd0 Georgios D. Tsoukalas
40 15e727f1 Giorgos Korfiatis
41 9f1a1bd0 Georgios D. Tsoukalas
class Holding(Model):
42 9f1a1bd0 Georgios D. Tsoukalas
43 15e727f1 Giorgos Korfiatis
    holder = CharField(max_length=4096, db_index=True)
44 15e727f1 Giorgos Korfiatis
    source = CharField(max_length=4096, null=True)
45 15e727f1 Giorgos Korfiatis
    resource = CharField(max_length=4096, null=False)
46 9f1a1bd0 Georgios D. Tsoukalas
47 15e727f1 Giorgos Korfiatis
    limit = intDecimalField()
48 68b991bc Giorgos Korfiatis
    usage_min = intDecimalField(default=0)
49 68b991bc Giorgos Korfiatis
    usage_max = intDecimalField(default=0)
50 9f1a1bd0 Georgios D. Tsoukalas
51 15e727f1 Giorgos Korfiatis
    objects = ForUpdateManager()
52 5d996aea Giorgos Korfiatis
53 9f1a1bd0 Georgios D. Tsoukalas
    class Meta:
54 2864e701 Giorgos Korfiatis
        unique_together = (('holder', 'source', 'resource'),)
55 9f1a1bd0 Georgios D. Tsoukalas
56 9f1a1bd0 Georgios D. Tsoukalas
57 9f1a1bd0 Georgios D. Tsoukalas
class Commission(Model):
58 9f1a1bd0 Georgios D. Tsoukalas
59 15e727f1 Giorgos Korfiatis
    serial = AutoField(primary_key=True)
60 f6e7a826 Giorgos Korfiatis
    name = CharField(max_length=4096, default="")
61 15e727f1 Giorgos Korfiatis
    clientkey = CharField(max_length=4096, null=False)
62 164e64d5 Giorgos Korfiatis
    issue_datetime = DateTimeField()
63 15e727f1 Giorgos Korfiatis
64 15e727f1 Giorgos Korfiatis
    objects = ForUpdateManager()
65 9f1a1bd0 Georgios D. Tsoukalas
66 9f1a1bd0 Georgios D. Tsoukalas
67 9f1a1bd0 Georgios D. Tsoukalas
class Provision(Model):
68 9f1a1bd0 Georgios D. Tsoukalas
69 15e727f1 Giorgos Korfiatis
    serial = ForeignKey(Commission,
70 15e727f1 Giorgos Korfiatis
                        to_field='serial',
71 15e727f1 Giorgos Korfiatis
                        related_name='provisions')
72 15e727f1 Giorgos Korfiatis
    holder = CharField(max_length=4096, db_index=True)
73 15e727f1 Giorgos Korfiatis
    source = CharField(max_length=4096, null=True)
74 15e727f1 Giorgos Korfiatis
    resource = CharField(max_length=4096, null=False)
75 6c0f4562 Giorgos Korfiatis
76 15e727f1 Giorgos Korfiatis
    quantity = intDecimalField()
77 9f1a1bd0 Georgios D. Tsoukalas
78 15e727f1 Giorgos Korfiatis
    objects = ForUpdateManager()
79 9f1a1bd0 Georgios D. Tsoukalas
80 79e3da8a Giorgos Korfiatis
    def todict(self):
81 6c0f4562 Giorgos Korfiatis
        return {'holder':   self.holder,
82 6c0f4562 Giorgos Korfiatis
                'source':   self.source,
83 6c0f4562 Giorgos Korfiatis
                'resource': self.resource,
84 79e3da8a Giorgos Korfiatis
                'quantity': self.quantity,
85 79e3da8a Giorgos Korfiatis
                }
86 79e3da8a Giorgos Korfiatis
87 6c0f4562 Giorgos Korfiatis
    def holding_key(self):
88 6c0f4562 Giorgos Korfiatis
        return (self.holder, self.source, self.resource)
89 6c0f4562 Giorgos Korfiatis
90 79e3da8a Giorgos Korfiatis
91 f590f930 Georgios D. Tsoukalas
class ProvisionLog(Model):
92 f590f930 Georgios D. Tsoukalas
93 15e727f1 Giorgos Korfiatis
    serial = BigIntegerField()
94 f6e7a826 Giorgos Korfiatis
    name = CharField(max_length=4096)
95 c3b42b86 Giorgos Korfiatis
    issue_time = CharField(max_length=4096)
96 c3b42b86 Giorgos Korfiatis
    log_time = CharField(max_length=4096)
97 15e727f1 Giorgos Korfiatis
    holder = CharField(max_length=4096)
98 15e727f1 Giorgos Korfiatis
    source = CharField(max_length=4096, null=True)
99 15e727f1 Giorgos Korfiatis
    resource = CharField(max_length=4096)
100 15e727f1 Giorgos Korfiatis
    limit = intDecimalField()
101 68b991bc Giorgos Korfiatis
    usage_min = intDecimalField()
102 68b991bc Giorgos Korfiatis
    usage_max = intDecimalField()
103 15e727f1 Giorgos Korfiatis
    delta_quantity = intDecimalField()
104 15e727f1 Giorgos Korfiatis
    reason = CharField(max_length=4096)
105 f590f930 Georgios D. Tsoukalas
106 15e727f1 Giorgos Korfiatis
    objects = ForUpdateManager()