--- /dev/null
+from django.db import transaction
+from django.utils.timezone import now
+
+from pyqcg.service import Registry
+from pyqcg.utils import Credential, TimePeriod
+
+
+@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()
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
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)
from pyqcg.utils import Credential
from qcg.forms import FiltersForm, ColumnsForm, JobDescriptionForm, EnvFormSet
-from qcg.utils import update_user_data, paginator_context
+from qcg.utils import paginator_context
+from qcg.sync import update_user_data
def index(request):
@login_required
def jobs_list(request):
- # QCG.start()
- # update_user_data(request.user, request.session['proxy'])
+ QCG.start()
+ update_user_data(request.user, request.session['proxy'])
+ QCG.stop()
tasks = request.user.tasks.order_by('-job__submission_time', '-submission_time') \
.select_related('job').prefetch_related('allocations__nodes')