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