django-lazysignup
[django_unres.git] / django_simple / todo / views.py
index f4dc960..f338be2 100644 (file)
@@ -6,6 +6,8 @@ from .models import Task
 import datetime
 import os
 import subprocess
+import json
+from lazysignup.decorators import allow_lazy_user
 
 res_codes = [
                 # 20 canonical amino acids
@@ -57,11 +59,13 @@ def from_pdb(file):
                 sequence.append(aa)
                 ires.append(i)
                 if newchain:
-                 chain_start[chain[ichain]]=i
+                 if len(chain)>0:
+                  chain_start[chain[ichain]]=i
                  newchain = False
             if line[0:3] == 'TER':
               sequence.append('XX')
-              chain_end[chain[ichain]]=i
+              if len(chain)>0:
+               chain_end[chain[ichain]]=i
               ichain=ichain+1
               newchain = True
             if line[0:6] == 'SSBOND':
@@ -91,19 +95,19 @@ def from_pdb(file):
       i=i-(chain_end[c]-chain_start[c])-3
     ssbond=[ [e[0]-unres_shift[c[0]]+1,e[1]-unres_shift[c[1]]+1] for e,c in zip(ssbond,ssbond_ch)]     
 
-    return seq,ssbond
+    return seq,json.dumps(ssbond)
 
 
 @login_required
 def index(request):
     user = request.user
-    tasks = Task.objects.filter(owner=user)
+    tasks = Task.objects.filter(owner=user).order_by('-created_date')
     variable = ''
     return render(request, "index.html", {
             'tasks': tasks
         })
 
-@login_required
+@allow_lazy_user
 def add(request):
     if request.method == 'POST':
         form = TaskForm(request.POST)
@@ -115,7 +119,6 @@ def add(request):
             return redirect('add_min',task_id=task.id)
     return redirect('/')
 
-
 @login_required
 def add_min(request,task_id):
     task = get_object_or_404(Task, id=task_id)
@@ -145,6 +148,7 @@ def add_min(request,task_id):
     basic_adv=True    
     return render(request, 'edit.html', {'form': form, 'task':task, 'basic_adv':basic_adv, 'p_type':p_type})
 
+@login_required
 def add_min_a(request,task_id):
     task = get_object_or_404(Task, id=task_id)
     if request.method == 'POST':
@@ -224,6 +228,7 @@ def add_md(request,task_id):
     p_type='molecular dynamics'
     return render(request, 'edit.html', {'form': form, 'task':task, 'basic_adv':basic_adv, 'p_type':p_type})
 
+@login_required
 def add_md_a(request,task_id):
     task = get_object_or_404(Task, id=task_id)
     if request.method == 'POST':
@@ -318,6 +323,7 @@ def add_remd(request,task_id):
     p_type='replica exchange molecular dynamics'
     return render(request, 'edit.html', {'form': form, 'task':task, 'basic_adv':basic_adv, 'p_type':p_type})
 
+@login_required
 def add_remd_a(request,task_id):
     task = get_object_or_404(Task, id=task_id)
     if request.method == 'POST':
@@ -370,7 +376,7 @@ def add_remd_a(request,task_id):
     p_type='replica exchange molecular dynamics - advanced options'
     return render(request, 'edit.html', {'form': form, 'task':task, 'basic_adv':basic_adv, 'p_type':p_type})
 
-
+@login_required
 def addmlist(request,task_id):
     task = get_object_or_404(Task, id=task_id)
     if request.method == 'POST':
@@ -383,12 +389,20 @@ def addmlist(request,task_id):
              task.save()
              return redirect('/')
     else:
+      if task.unres_ff == 'E0LL2Y':
         data= {'name':task.name,'nrep':task.remd_nrep,'multiplexing':
         '["1", "1", "1", "1", "1", "1", "1", "1"]',
         'temperatures':
         '["270", "280", "290", "300", "310", "320", "330", "345"]'
         }
-        form = TaskForm_list(task.remd_nrep,initial=data)
+      else: 
+        data= {'name':task.name,'nrep':task.remd_nrep,'multiplexing':
+        '["1", "1", "1", "1", "1", "1", "1", "1"]',
+        'temperatures':
+        '["250", "260", "270", "280", "290", "300", "315", "330"]'
+        }
+      
+      form = TaskForm_list(task.remd_nrep,initial=data)
     p_type='replica exchange molecular dynamics - advanced options'
     return render(request, 'edit_lista.html', {'form': form, 'task':task, 'p_type':p_type})
 
@@ -405,7 +419,7 @@ def delete(request, task_id):
 @login_required
 def refresh_done(request):
     user = request.user
-    tasks = Task.objects.filter(owner=user)
+    tasks = Task.objects.filter(owner=user).order_by('-created_date')
     for task in tasks:
       if os.path.isfile(task.jobdirname+'/finished') and not task.done:
          task.done=True
@@ -450,6 +464,7 @@ def refresh_done(request):
          if task.md_pdbref and task.type=='remd':
          
           for i in range(1,6):
+           try:
             with open(task.jobdirname+'/file_wham_T'+str(int(task.remd_cluter_temp))+'K_000'+str(i)+'.pdb', 'r') as f:
                  line=f.readline()
                  if i==1:
@@ -462,7 +477,8 @@ def refresh_done(request):
                      task.remd_model4=' '.join(line.split()[-6:])
                  elif i==5:
                      task.remd_model5=' '.join(line.split()[-6:])
-
+           except EnvironmentError:
+            print 'file_wham_T*pdb open error'
           for i in range(1,6):
             with open(task.jobdirname+'/tmscore'+str(i)+'.out', 'r') as f:
                text=''