Revision 5d996aea snf-quotaholder-app/quotaholder_django/quotaholder_app/models.py
b/snf-quotaholder-app/quotaholder_django/quotaholder_app/models.py | ||
---|---|---|
37 | 37 |
from django.db.models import (Model, BigIntegerField, CharField, |
38 | 38 |
ForeignKey, AutoField) |
39 | 39 |
from django.db import transaction |
40 |
|
|
40 |
from .managers import ForUpdateManager |
|
41 | 41 |
|
42 | 42 |
class Holder(Model): |
43 | 43 |
|
... | ... | |
45 | 45 |
intval = BigIntegerField() |
46 | 46 |
strval = CharField(max_length=4096) |
47 | 47 |
|
48 |
objects = ForUpdateManager() |
|
48 | 49 |
|
49 | 50 |
class Entity(Model): |
50 | 51 |
|
... | ... | |
53 | 54 |
related_name='entities') |
54 | 55 |
key = CharField(max_length=4096, null=False) |
55 | 56 |
|
57 |
objects = ForUpdateManager() |
|
56 | 58 |
|
57 | 59 |
class Policy(Model): |
58 | 60 |
|
... | ... | |
62 | 64 |
import_limit = BigIntegerField(null=True, default=None) |
63 | 65 |
export_limit = BigIntegerField(null=True, default=None) |
64 | 66 |
|
67 |
objects = ForUpdateManager() |
|
65 | 68 |
|
66 | 69 |
class Holding(Model): |
67 | 70 |
|
... | ... | |
80 | 83 |
released = BigIntegerField(null=False, default=0) |
81 | 84 |
releasing = BigIntegerField(null=False, default=0) |
82 | 85 |
|
86 |
objects = ForUpdateManager() |
|
87 |
|
|
83 | 88 |
class Meta: |
84 | 89 |
unique_together = (('entity', 'resource'),) |
85 | 90 |
|
... | ... | |
98 | 103 |
clientkey = CharField(max_length=4096, null=False) |
99 | 104 |
issue_time = CharField(max_length=24, default=now) |
100 | 105 |
|
106 |
objects = ForUpdateManager() |
|
101 | 107 |
|
102 | 108 |
class Provision(Model): |
103 | 109 |
|
... | ... | |
109 | 115 |
resource = CharField(max_length=4096, null=False) |
110 | 116 |
quantity = BigIntegerField(null=False) |
111 | 117 |
|
118 |
objects = ForUpdateManager() |
|
112 | 119 |
|
113 | 120 |
class ProvisionLog(Model): |
114 | 121 |
|
... | ... | |
138 | 145 |
delta_quantity = BigIntegerField(null=False) |
139 | 146 |
reason = CharField(max_length=4096) |
140 | 147 |
|
148 |
objects = ForUpdateManager() |
|
141 | 149 |
|
142 | 150 |
def source_allocated_through(self): |
143 | 151 |
return self.source_imported - self.source_released |
... | ... | |
179 | 187 |
def target_outbound(self): |
180 | 188 |
return self.target_outbound_through() + self.target_exported |
181 | 189 |
|
190 |
def _access(*args, **kwargs): |
|
191 |
method = args[0] |
|
192 |
model = args[1] |
|
193 |
args = args[2:] |
|
194 |
o = model.objects |
|
195 |
try: |
|
196 |
if kwargs['for_update']: |
|
197 |
del kwargs['for_update'] |
|
198 |
o = o.select_for_update() |
|
199 |
except KeyError: |
|
200 |
pass |
|
201 |
f = getattr(o, method) |
|
202 |
return f(*args, **kwargs) |
|
203 |
|
|
204 |
def _get(*args, **kwargs): |
|
205 |
return _access('get', *args, **kwargs) |
|
206 |
|
|
207 |
def _filter(*args, **kwargs): |
|
208 |
return _access('filter', *args, **kwargs) |
|
209 |
|
|
210 |
def db_get_holding(*args, **kwargs): |
|
211 |
return _get(Holding, *args, **kwargs) |
|
212 |
|
|
213 |
def db_get_entity(*args, **kwargs): |
|
214 |
return _get(Entity, *args, **kwargs) |
|
215 |
|
|
216 |
def db_get_policy(*args, **kwargs): |
|
217 |
return _get(Policy, *args, **kwargs) |
|
218 |
|
|
219 |
def db_get_commission(*args, **kwargs): |
|
220 |
return _get(Commission, *args, **kwargs) |
|
221 |
|
|
222 |
def db_filter_provision(*args, **kwargs): |
|
223 |
return _filter(Provision, *args, **kwargs) |
Also available in: Unified diff