Revision ea1e5d9f snf-quotaholder-app/quotaholder_django/quotaholder_app/models.py
b/snf-quotaholder-app/quotaholder_django/quotaholder_app/models.py | ||
---|---|---|
1 |
# Copyright 2012 GRNET S.A. All rights reserved. |
|
1 |
# Copyright 2012, 2013 GRNET S.A. All rights reserved.
|
|
2 | 2 |
# |
3 | 3 |
# Redistribution and use in source and binary forms, with or |
4 | 4 |
# without modification, are permitted provided that the following |
... | ... | |
199 | 199 |
unique_together = (('serial', 'clientkey'),) |
200 | 200 |
|
201 | 201 |
|
202 |
def _access(*args, **kwargs): |
|
203 |
method = args[0] |
|
204 |
model = args[1] |
|
205 |
args = args[2:] |
|
202 |
def _get(*args, **kwargs): |
|
203 |
model = args[0] |
|
204 |
args = args[1:] |
|
206 | 205 |
o = model.objects |
207 |
try: |
|
208 |
if kwargs['for_update']: |
|
209 |
del kwargs['for_update'] |
|
210 |
o = o.select_for_update() |
|
211 |
except KeyError: |
|
212 |
pass |
|
213 |
f = getattr(o, method) |
|
206 |
|
|
207 |
for_update = kwargs.pop('for_update', False) |
|
208 |
f = o.get_for_update if for_update else o.get |
|
214 | 209 |
return f(*args, **kwargs) |
215 | 210 |
|
216 |
def _get(*args, **kwargs): |
|
217 |
return _access('get', *args, **kwargs) |
|
218 | 211 |
|
219 | 212 |
def _filter(*args, **kwargs): |
220 |
return _access('filter', *args, **kwargs) |
|
213 |
model = args[0] |
|
214 |
args = args[1:] |
|
215 |
o = model.objects |
|
216 |
|
|
217 |
for_update = kwargs.pop('for_update', False) |
|
218 |
q = o.filter(*args, **kwargs) |
|
219 |
q = q.select_for_update() if for_update else q |
|
220 |
return q |
|
221 |
|
|
221 | 222 |
|
222 | 223 |
def db_get_holding(*args, **kwargs): |
223 | 224 |
return _get(Holding, *args, **kwargs) |
Also available in: Unified diff