X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=django_simple%2Ftodo%2Fviews.py;h=092b9bda8d686dfe9557660c2f6078d9721145c3;hb=a61f63a845b6791cfb39cbedfcb2c8df5e138950;hp=d9525b06056105eadb33a28f2d796cf05ee06ae7;hpb=5a52e318fbba09f787c91fadc8d364d16c2d452d;p=django_unres.git diff --git a/django_simple/todo/views.py b/django_simple/todo/views.py index d9525b0..092b9bd 100644 --- a/django_simple/todo/views.py +++ b/django_simple/todo/views.py @@ -161,8 +161,9 @@ def index(request): user = request.user tasks = Task.objects.filter(owner=user).order_by('-created_date') variable = '' + tasks_count = Task.objects.filter(owner=user).count() return render(request, "index.html", { - 'tasks': tasks, 'alldone': 0 + 'tasks': tasks, 'alldone': 0, 'tasks_count':tasks_count }) @login_required @@ -293,6 +294,8 @@ def add_md(request,task_id): task.md_temp=form.cleaned_data["md_temp"] task.md_nstep=form.cleaned_data["md_nstep"] task.md_total_steps=task.md_nstep + if task.md_nstep<250000: + task.md_ntwx=100 basename = str(task.owner) suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S") @@ -904,10 +907,25 @@ def details1(request,user_id,task_id): def delete(request, task_id): Task.objects.get(id=task_id).delete() return redirect('/') - + @login_required def restart(request, task_id): task = get_object_or_404(Task, id=task_id) + restart0(task) + return redirect('/') + +def add_restart_inp(): + with open('file.inp','r') as f1, open ('file.inp.tmp','w') as f2: + for line in f1: + if 'reset_vel=' in line: + f2.write('{:79}'.format('restart'+line[7:])) + else: + f2.write(line) + os.remove('file.inp') + os.rename('file.inp.tmp','file.inp') + return + +def restart0(task): if os.path.isfile(task.jobdirname+'/finished'): os.remove(task.jobdirname+'/finished') task.running =1 @@ -916,10 +934,12 @@ def restart(request, task_id): task.save() if task.type == 'md': os.chdir(task.jobdirname) + add_restart_inp() ret_code = subprocess.Popen(' /opt/torque/bin/qsub pbs.csh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) os.chdir('..') elif task.type == 'remd': os.chdir(task.jobdirname) + add_restart_inp() tmp1=json.loads(task.remd_multi_m) nreplicas=sum(map(int, tmp1)) with open('file_wham.inp','r') as f1, open ('file_wham.tmp','w') as f2: @@ -940,8 +960,14 @@ def restart(request, task_id): os.rename('file_wham.tmp','file_wham.inp') ret_code = subprocess.Popen(' /opt/torque/bin/qsub pbs8.csh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) os.chdir('..') - return redirect('/') + return +def restart1(request, user_id, task_id): + task = get_object_or_404(Task, id=task_id) + user = task.owner + restart0(task) + return redirect('/details1/'+str(user)+'/'+str(task.id)+'/') + def refresh_done1(request, task_id): task = get_object_or_404(Task, id=task_id) @@ -966,6 +992,7 @@ def refresh_done1(request, task_id): def refresh_done(request): user = request.user tasks = Task.objects.filter(owner=user).order_by('-created_date') + tasks_count = Task.objects.filter(owner=user).count() alldone = 1 for task in tasks: refresh_done0(task) @@ -989,7 +1016,8 @@ def refresh_done(request): return render(request, "index.html", { 'tasks': tasks , 'variable' : variable, - 'alldone': alldone + 'alldone': alldone, + 'tasks_count':tasks_count }) @@ -1087,15 +1115,15 @@ def refresh_done0(task): if i>6: break if i==1: - task.remd_model1=task.remd_model1+' Cluster1 probability= '+line1.split()[2] + task.remd_model1=task.remd_model1+' Cluster1 probability= '+line1.split()[-2] elif i==2: - task.remd_model2=task.remd_model2+' Cluster2 probability= '+line1.split()[2] + task.remd_model2=task.remd_model2+' Cluster2 probability= '+line1.split()[-2] elif i==3: - task.remd_model3=task.remd_model3+' Cluster3 probability= '+line1.split()[2] + task.remd_model3=task.remd_model3+' Cluster3 probability= '+line1.split()[-2] elif i==4: - task.remd_model4=task.remd_model4+' Cluster4 probability= '+line1.split()[2] + task.remd_model4=task.remd_model4+' Cluster4 probability= '+line1.split()[-2] elif i==5: - task.remd_model5=task.remd_model5+' Cluster5 probability= '+line1.split()[2] + task.remd_model5=task.remd_model5+' Cluster5 probability= '+line1.split()[-2] @@ -1133,3 +1161,24 @@ def refresh_done0(task): return + +@login_required +def zip_all_files(request, task_id): + import os, zipfile + from django.http import HttpResponse + from wsgiref.util import FileWrapper + from django.core.files.temp import NamedTemporaryFile + + task = get_object_or_404(Task, id=task_id) + + temp=NamedTemporaryFile() + archive = zipfile.ZipFile(temp, 'w', zipfile.ZIP_DEFLATED) + for (dirpath, dirnames, filenames) in os.walk(task.jobdirname): + for file1 in filenames: + archive.write(dirpath+"/"+file1,file1) + archive.close() + temp.seek(0) + wrapper = FileWrapper(temp) + response = HttpResponse(wrapper, content_type='application/zip') + response['Content-Disposition'] = 'attachment; filename=all.zip' + return response