kopia lustrzana https://github.com/OpenDroneMap/WebODM
Quota deletion working
rodzic
aa737da1a1
commit
1b92ee1f19
|
@ -61,7 +61,7 @@ body {
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-top-links .dropdown-menu li div.info-item.quotas{
|
.navbar-top-links .dropdown-menu li div.info-item.quotas{
|
||||||
min-width: 190px;
|
min-width: 232px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-top-links .dropdown-menu li .progress{
|
.navbar-top-links .dropdown-menu li .progress{
|
||||||
|
|
|
@ -41,7 +41,7 @@ def quota_exceeded_grace_period(context):
|
||||||
return _("within %(num)s days") % {"num": math.ceil(diff / (60*60*24))}
|
return _("within %(num)s days") % {"num": math.ceil(diff / (60*60*24))}
|
||||||
elif diff >= 60*60:
|
elif diff >= 60*60:
|
||||||
return _("within %(num)s hours") % {"num": math.ceil(diff / (60*60))}
|
return _("within %(num)s hours") % {"num": math.ceil(diff / (60*60))}
|
||||||
elif diff > 0:
|
elif diff > 1:
|
||||||
return _("within %(num)s minutes") % {"num": math.ceil(diff / 60)}
|
return _("within %(num)s minutes") % {"num": math.ceil(diff / 60)}
|
||||||
else:
|
else:
|
||||||
return _("very soon")
|
return _("very soon")
|
||||||
|
|
|
@ -208,12 +208,26 @@ def export_pointcloud(self, input, **opts):
|
||||||
@app.task
|
@app.task
|
||||||
def check_quotas():
|
def check_quotas():
|
||||||
profiles = Profile.objects.filter(quota__gt=-1)
|
profiles = Profile.objects.filter(quota__gt=-1)
|
||||||
# for p in profiles:
|
for p in profiles:
|
||||||
# deadline_key = "%s_quota_exceeded_deadline" % p.user.id
|
if p.has_exceeded_quota():
|
||||||
|
deadline = p.get_quota_deadline()
|
||||||
|
if deadline is None:
|
||||||
|
deadline = p.set_quota_deadline(settings.QUOTA_EXCEEDED_GRACE_PERIOD)
|
||||||
|
now = time.time()
|
||||||
|
if now > deadline:
|
||||||
|
# deadline passed, delete tasks until quota is met
|
||||||
|
logger.info("Quota deadline expired for %s, deleting tasks" % str(p.user.username))
|
||||||
|
|
||||||
|
while p.has_exceeded_quota():
|
||||||
|
try:
|
||||||
|
last_task = Task.objects.filter(project__owner=p.user).order_by("-created_at").first()
|
||||||
|
if last_task is None:
|
||||||
|
break
|
||||||
|
logger.info("Deleting %s" % last_task)
|
||||||
|
last_task.delete()
|
||||||
|
except Exception as e:
|
||||||
|
logger.warn("Cannot delete %s for %s: %s" % (str(last_task), str(p.user.username), str(e)))
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
p.clear_quota_deadline()
|
||||||
|
|
||||||
# if p.has_exceeded_quota():
|
|
||||||
# now = time.time()
|
|
||||||
# deadline = redis_client.getset(deadline_key, now + (settings.QUOTA_EXCEEDED_GRACE_PERIOD * 60 * 60))
|
|
||||||
# # if deadline < now: TODO..
|
|
||||||
# else:
|
|
||||||
# redis_client.delete(deadline_key)
|
|
||||||
|
|
Ładowanie…
Reference in New Issue