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