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