X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=qcg%2Futils.py;h=24a5a24395877c077796fbe87026c65435a0fd42;hb=89b60d7e7d07897a2404f7b9b23d9d4f0202cc43;hp=bc9135f1e414ab94c912d80f4114c025d9e2731d;hpb=b9bcd422c66e0cd9b0f20a0c037dbc2d811bb59f;p=qcg-portal.git diff --git a/qcg/utils.py b/qcg/utils.py index bc9135f..24a5a24 100644 --- a/qcg/utils.py +++ b/qcg/utils.py @@ -1,9 +1,6 @@ from django.core.paginator import Paginator -from django.db import transaction from django.utils.formats import date_format -from django.utils.timezone import now, localtime -from pyqcg.service import Registry -from pyqcg.utils import Credential, TimePeriod +from django.utils.timezone import localtime from qcg import constants @@ -18,51 +15,6 @@ def username_from_dn(dn): return username -@transaction.atomic -def update_user_data(user, proxy): - from qcg.models import User, Job, Task, Allocation, NodeInfo - - credential = Credential(proxy) - registry = Registry(credential) - - # put lock on user record (hopefully..?) - user = User.objects.select_for_update().get(pk=user.pk) - - changed_filter = {'changed': TimePeriod(after=user.last_update)} - - ################################### - # Jobs - ################################### - for qcg_job in registry.jobs(**changed_filter): - params = Job.qcg_map(qcg_job, user) - job_id = params.pop('job_id') - - Job.objects.update_or_create(job_id=job_id, defaults=params) - - ################################### - # Tasks - ################################### - jobs_cache = {j.job_id: j for j in Job.objects.filter(owner=user)} - for qcg_task in registry.tasks(**changed_filter): - params = Task.qcg_map(qcg_task, jobs_cache) - task_id = params.pop('task_id') - - task, created = Task.objects.update_or_create(job__job_id=qcg_task.job_id, task_id=task_id, defaults=params) - - if not created: - task.allocations.all().delete() - - for qcg_alloc in qcg_task.allocations: - alloc = task.allocations.create(**Allocation.qcg_map(qcg_alloc)) - - for qcg_node in qcg_alloc.nodes: - alloc.nodes.create(**NodeInfo.qcg_map(qcg_node)) - - # release user lock - user.last_update = now() - user.save() - - def try_parse_int(s, default=None, base=10): try: return int(s, base)