| 1 | # coding: utf-8 |
|---|
| 2 | from django.core.urlresolvers import reverse |
|---|
| 3 | from django.shortcuts import render_to_response, get_object_or_404 |
|---|
| 4 | from django.http import HttpResponseRedirect |
|---|
| 5 | from django import forms |
|---|
| 6 | from django.utils.translation import ugettext as _ |
|---|
| 7 | from django.contrib.auth.decorators import login_required |
|---|
| 8 | |
|---|
| 9 | from tickets.models import Ticket |
|---|
| 10 | from reviewapp.models import Submission |
|---|
| 11 | from repository.models import ClinicalTrial, CountryCode, Institution |
|---|
| 12 | |
|---|
| 13 | def index(request): |
|---|
| 14 | username = request.user.username if request.user.is_authenticated() else None |
|---|
| 15 | return render_to_response('reviewapp/index.html', locals()) |
|---|
| 16 | |
|---|
| 17 | @login_required |
|---|
| 18 | def dashboard(request): |
|---|
| 19 | username = request.user.username |
|---|
| 20 | user_tickets = Ticket.objects.order_by('-created').filter(creator=request.user)[:5] |
|---|
| 21 | user_submissions = Submission.objects.order_by('-created').filter(creator=request.user)[:5] |
|---|
| 22 | return render_to_response('reviewapp/dashboard.html', locals()) |
|---|
| 23 | |
|---|
| 24 | @login_required |
|---|
| 25 | def user_dump(request): |
|---|
| 26 | uvars = [{'k':k, 'v':v} for k, v in request.user.__dict__.items()] |
|---|
| 27 | return render_to_response('reviewapp/user_dump.html', locals()) |
|---|
| 28 | |
|---|
| 29 | @login_required |
|---|
| 30 | def submissions_list(request): |
|---|
| 31 | object_list = Submission.objects.filter(creator=request.user) |
|---|
| 32 | username = request.user.username if request.user.is_authenticated() else None |
|---|
| 33 | return render_to_response('reviewapp/submission_list.html', locals()) |
|---|
| 34 | |
|---|
| 35 | @login_required |
|---|
| 36 | def submission_detail(request,pk): |
|---|
| 37 | object = get_object_or_404(Submission, id=int(pk)) |
|---|
| 38 | username = request.user.username if request.user.is_authenticated() else None |
|---|
| 39 | return render_to_response('reviewapp/submission_detail.html', locals()) |
|---|
| 40 | |
|---|
| 41 | ####################################################### New Submission form ### |
|---|
| 42 | |
|---|
| 43 | class InitialTrialForm(forms.Form): |
|---|
| 44 | form_title = _('Initial Trial Data') |
|---|
| 45 | scientific_title = forms.CharField(widget=forms.Textarea, label=_('Scientific Title'), max_length=2000) |
|---|
| 46 | recruitment_country = forms.MultipleChoiceField(choices=((cc.pk,cc.description) for cc in CountryCode.objects.iterator()) ) |
|---|
| 47 | |
|---|
| 48 | class PrimarySponsorForm(forms.ModelForm): |
|---|
| 49 | class Meta: |
|---|
| 50 | model = Institution |
|---|
| 51 | exclude = ['address'] |
|---|
| 52 | form_title = _('Primary Sponsor') |
|---|
| 53 | |
|---|
| 54 | @login_required |
|---|
| 55 | def new_submission(request): |
|---|
| 56 | if request.method == 'POST': |
|---|
| 57 | initial_form = InitialTrialForm(request.POST,request.FILES) |
|---|
| 58 | sponsor_form = PrimarySponsorForm(request.POST) |
|---|
| 59 | |
|---|
| 60 | if initial_form.is_valid() and sponsor_form.is_valid(): |
|---|
| 61 | trial = ClinicalTrial() |
|---|
| 62 | su = Submission(creator=request.user) |
|---|
| 63 | |
|---|
| 64 | trial.scientific_title = su.title = initial_form.cleaned_data['scientific_title'] |
|---|
| 65 | |
|---|
| 66 | trial.save() |
|---|
| 67 | su.save() |
|---|
| 68 | |
|---|
| 69 | trial.primary_sponsor = su.primary_sponsor = sponsor_form.save() |
|---|
| 70 | trial.recruitment_country = [CountryCode.objects.get(pk=id) for id in initial_form.cleaned_data['recruitment_country']] |
|---|
| 71 | su.trial = trial |
|---|
| 72 | |
|---|
| 73 | trial.save() |
|---|
| 74 | su.save() |
|---|
| 75 | |
|---|
| 76 | return HttpResponseRedirect(reverse('repository.edittrial',args=[trial.id])) |
|---|
| 77 | else: |
|---|
| 78 | initial_form = InitialTrialForm() |
|---|
| 79 | sponsor_form = PrimarySponsorForm() |
|---|
| 80 | |
|---|
| 81 | |
|---|
| 82 | forms = [initial_form, sponsor_form] |
|---|
| 83 | return render_to_response('reviewapp/new_submission.html', { |
|---|
| 84 | 'forms': forms, |
|---|
| 85 | 'username':request.user.username, |
|---|
| 86 | }) |
|---|