from django_openid_auth.views import make_consumer
from openid.extensions import ax
from pyqcg import QCG
+from pyqcg.description import JobDescription
+from pyqcg.utils import Credential
from qcg.forms import FiltersForm, ColumnsForm, JobDescriptionForm, EnvFormSet
from qcg.utils import update_user_data, paginator_context
return render(request, 'qcg/job.html', {'job': job})
+@login_required
def task_details(request, job_id, task_id):
task = get_object_or_404(request.user.tasks.select_related('job').prefetch_related('allocations'),
job__job_id=job_id, task_id=task_id)
return render(request, 'qcg/task.html', {'task': task})
+@login_required
def job_new(request):
- return render(request, 'qcg/job_new.html', {'form': JobDescriptionForm(), 'env_formset': EnvFormSet()})
+ if request.method == 'POST':
+ QCG.start()
+
+ form = JobDescriptionForm(request.POST)
+ env_formset = EnvFormSet(request.POST)
+
+ if form.is_valid() and env_formset.is_valid():
+ print form.cleaned_data
+
+ desc = JobDescription(Credential(request.session['proxy']))
+
+ application = form.cleaned_data['application']
+ if '/' in application:
+ app, ver = application.split('1', 1)
+ desc.application.set_name(app)
+ desc.application.set_version(ver)
+ else:
+ desc.application.set_name(application)
+
+ # TODO script
+ # TODO executable
+ desc.arguments = form.cleaned_data['arguments']
+ desc.note = form.cleaned_data['note']
+ desc.grant = form.cleaned_data['grant']
+ desc.host_candidates = [(form.cleaned_data['host'], 'type?')] # FIXME WTF ?!?
+ desc.properties = form.cleaned_data['properties']
+ # TODO queue
+ # TODO procs
+ # TODO nodes
+ desc.wall_time = timedelta(seconds=form.cleaned_data['wall_time']) # FIXME odpowiedni typ pola
+ desc.memory = form.cleaned_data['memory']
+ desc.memory_per_slot = form.cleaned_data['memory_per_slot']
+ desc.variable = [(env['name'], env['value']) for env in env_formset.cleaned_data if not env['DELETE']]
+ desc.modules = form.cleaned_data['modules']
+ desc.natives = form.cleaned_data['native']
+ desc.reservation = ("LOCAL", form.cleaned_data['reservation'])
+ # TODO input
+ # TODO stage_in
+ # TODO stage_out
+ # TODO monitoring
+ # TODO notify_type
+ # TODO notify_address
+ # TODO watch_output_type
+ # TODO watch_output_address
+ # TODO watch_output_pattern
+ # TODO preprocess_type
+ # TODO preprocess_cmd
+ # TODO preprocess_script
+ # TODO postprocess_type
+ # TODO postprocess_cmd
+ # TODO postprocess_script
+ desc.persistent = form.cleaned_data['persistent']
+
+ for prop in ('arguments', 'note', 'grant', 'host_candidates', 'wall_time', 'memory',
+ 'memory_per_slot', 'properties', 'variable', 'modules', 'natives', 'persistent', 'reservation'):
+ print prop, type(getattr(desc, prop)), repr(getattr(desc, prop))
+
+ print desc.xml_description
+
+ else:
+ form = JobDescriptionForm()
+ env_formset = EnvFormSet()
+
+ return render(request, 'qcg/job_new.html', {'form': form, 'env_formset': env_formset})