1 # Create your views here.
2 #from django.template import Context, loader
3 #shortcut to the above modules
4 from django.contrib.auth.decorators import user_passes_test
5 from django.core.exceptions import ObjectDoesNotExist
6 from django.core.mail import EmailMessage, mail_managers
7 from django.http import HttpResponse
8 from django.shortcuts import render_to_response, get_object_or_404
9 from django.template import Context
10 from django.template.loader import get_template
12 from htsworkflow.frontend.experiments.models import *
13 from htsworkflow.frontend.experiments.experiments import \
14 estimateFlowcellDuration, \
18 all_runs = DataRun.objects.order_by('-run_start_time')
19 #t = loader.get_template('experiments/index.html')
21 # 'data_run_list': all_runs,
23 #return HttpResponse(t.render(c))
24 # shortcut to the above module usage
25 return render_to_response('experiments/index.html',{'data_run_list': all_runs})
27 def detail(request, run_folder):
28 html_str = '<h2>Exp Track Details Page</h2>'
29 html_str += 'Run Folder: '+run_folder
30 r = get_object_or_404(DataRun,run_folder=run_folder)
31 return render_to_response('experiments/detail.html',{'run_f': r})
33 def makeFCSheet(request,fcid):
34 # get Flowcell by input fcid
38 rec = FlowCell.objects.get(flowcell_id=fcid)
39 except ObjectDoesNotExist:
41 lanes = ['1','2','3','4','5','6','7','8']
42 return render_to_response('experiments/flowcellSheet.html',{'fc': rec})
45 @user_passes_test(lambda u: u.is_staff)
46 def startedEmail(request, pk):
48 Create the we have started processing your samples email
50 fc = get_object_or_404(FlowCell, id=pk)
52 send = request.REQUEST.get('send',False)
53 if send in ('1', 'on', 'True', 'true', True):
58 bcc_managers = request.REQUEST.get('bcc', False)
59 if bcc_managers in ('on', '1', 'True', 'true'):
64 user_lane = makeUserLaneMap(fc)
65 estimate_low, estimate_high = estimateFlowcellDuration(fc)
66 email_verify = get_template('experiments/email_preview.html')
67 email_template = get_template('experiments/started_email.html')
68 sender = settings.NOTIFICATION_SENDER
73 for user in user_lane.keys():
76 context = Context({u'flowcell': fc,
77 u'lanes': user_lane[user],
78 u'runfolder': 'blank',
79 u'finish_low': estimate_low,
80 u'finish_high': estimate_high,
81 u'user_admin': user.admin_url(),
85 subject = "Flowcell %s" % ( fc.flowcell_id )
86 body = email_template.render(context)
90 if user.email is None or len(user.email) == 0:
91 warnings.append((user.admin_url(), user.username))
96 email = EmailMessage(subject, body, sender, to=[user.email])
98 print 'bcc_managers', bcc_managers
99 email.bcc = settings.MANAGERS
100 print email.to, email.bcc
104 print settings.MANAGERS
105 mail_managers("Couldn't send to "+user.username, body)
106 sending = "bounced to managers"
108 emails.append((user.email, subject, body, sending))
110 verify_context = Context({
112 'warnings': warnings,
116 return HttpResponse(email_verify.render(verify_context))
118 def finishedEmail(request, pk):
121 return HttpResponse("I've got nothing.")