Revision 548938f6 snf-astakos-app/astakos/im/quotas.py

b/snf-astakos-app/astakos/im/quotas.py
116 116
    return lst
117 117

  
118 118

  
119
def _set_user_quota(quotas):
119
def _set_user_quota(quotas, resource=None):
120 120
    q = _level_quota_dict(quotas)
121
    qh.set_quota(q)
121
    qh.set_quota(q, resource=resource)
122 122

  
123 123

  
124 124
SYSTEM = 'system'
......
148 148
    AstakosUserQuota.objects.\
149 149
        filter(resource__name=resource, user__pk__in=userids).\
150 150
        update(capacity=value)
151
    qh_sync_locked_users(users)
151
    qh_sync_locked_users(users, resource=resource)
152 152

  
153 153

  
154 154
def initial_quotas(users, flt=None):
......
179 179
    return min(x+y, units.PRACTICALLY_INFINITE)
180 180

  
181 181

  
182
def astakos_users_quotas(users):
182
def astakos_users_quotas(users, resource=None):
183 183
    users = list(users)
184
    quotas = initial_quotas(users)
184
    flt = Q(resource__name=resource) if resource is not None else Q()
185
    quotas = initial_quotas(users, flt=flt)
185 186

  
186 187
    userids = [user.pk for user in users]
187 188
    ACTUALLY_ACCEPTED = ProjectMembership.ACTUALLY_ACCEPTED
......
196 197
    apps = set(m.project.application_id for m in memberships)
197 198

  
198 199
    objs = ProjectResourceGrant.objects.select_related()
199
    grants = objs.filter(project_application__in=apps)
200
    grants = objs.filter(project_application__in=apps).filter(flt)
200 201

  
201 202
    for membership in memberships:
202 203
        uuid = membership.person.uuid
......
239 240
    return get_users_for_update([user_id])[0]
240 241

  
241 242

  
242
def qh_sync_locked_users(users):
243
    astakos_quotas = astakos_users_quotas(users)
244
    _set_user_quota(astakos_quotas)
243
def qh_sync_locked_users(users, resource=None):
244
    astakos_quotas = astakos_users_quotas(users, resource=resource)
245
    _set_user_quota(astakos_quotas, resource=resource)
245 246

  
246 247

  
247
def qh_sync_users(users):
248
def qh_sync_users(users, resource=None):
248 249
    uids = [user.id for user in users]
249 250
    users = get_users_for_update(uids)
250
    qh_sync_locked_users(users)
251
    qh_sync_locked_users(users, resource=resource)
251 252

  
252 253

  
253 254
def qh_sync_users_diffs(users, sync=True):
......
313 314
            AstakosUserQuota(user=user, resource=resource,
314 315
                             capacity=resource.uplimit))
315 316
    AstakosUserQuota.objects.bulk_create(entries)
316
    qh_sync_users(users)
317
    qh_sync_users(users, resource=resource.name)

Also available in: Unified diff