Revision 548938f6 snf-astakos-app/astakos/quotaholder_app/callpoint.py
b/snf-astakos-app/astakos/quotaholder_app/callpoint.py | ||
---|---|---|
75 | 75 |
return quotas |
76 | 76 |
|
77 | 77 |
|
78 |
def _get_holdings_for_update(holding_keys, delete=False): |
|
78 |
def _get_holdings_for_update(holding_keys, resource=None, delete=False): |
|
79 |
flt = Q(resource=resource) if resource is not None else Q() |
|
79 | 80 |
holders = set(holder for (holder, source, resource) in holding_keys) |
80 |
objs = Holding.objects.filter(holder__in=holders).order_by('pk') |
|
81 |
objs = Holding.objects.filter(flt, holder__in=holders).order_by('pk')
|
|
81 | 82 |
hs = objs.select_for_update() |
82 | 83 |
|
83 | 84 |
keys = set(holding_keys) |
... | ... | |
105 | 106 |
} |
106 | 107 |
|
107 | 108 |
|
108 |
def set_quota(quotas): |
|
109 |
def set_quota(quotas, resource=None):
|
|
109 | 110 |
holding_keys = [key for (key, limit) in quotas] |
110 |
holdings = _get_holdings_for_update(holding_keys, delete=True) |
|
111 |
holdings = _get_holdings_for_update( |
|
112 |
holding_keys, resource=resource, delete=True) |
|
111 | 113 |
|
112 | 114 |
new_holdings = {} |
113 | 115 |
for key, limit in quotas: |
114 |
holder, source, resource = key |
|
116 |
holder, source, res = key |
|
117 |
if resource is not None and resource != res: |
|
118 |
continue |
|
115 | 119 |
h = Holding(holder=holder, |
116 | 120 |
source=source, |
117 |
resource=resource,
|
|
121 |
resource=res, |
|
118 | 122 |
limit=limit) |
119 | 123 |
try: |
120 | 124 |
h_old = holdings[key] |
Also available in: Unified diff