def step_7(request, trial_pk): ct = get_object_or_404(ClinicalTrial, id=int(trial_pk)) PrimaryOutcomesSet = modelformset_factory( Outcome, formset=MultilingualBaseFormSet, form=PrimaryOutcomesForm,extra=EXTRA_FORMS, can_delete=True, extra_formset_attrs={ 'default_second_language':ct.submission.get_secondary_language(), 'available_languages':[lang.lower() for lang in ct.submission.get_mandatory_languages()], 'display_language':request.user.get_profile().preferred_language, }, ) SecondaryOutcomesSet = modelformset_factory(Outcome, formset=MultilingualBaseFormSet, form=SecondaryOutcomesForm,extra=EXTRA_FORMS, can_delete=True, extra_formset_attrs={ 'default_second_language':ct.submission.get_secondary_language(), 'available_languages':[lang.lower() for lang in ct.submission.get_mandatory_languages()], 'display_language':request.user.get_profile().preferred_language, }, ) primary_qs = Outcome.objects.filter(trial=ct, interest=choices.OUTCOME_INTEREST[0][0]) secondary_qs = Outcome.objects.filter(trial=ct, interest=choices.OUTCOME_INTEREST[1][0]) if request.POST: primary_outcomes_formset = PrimaryOutcomesSet(request.POST, queryset=primary_qs, prefix='primary') secondary_outcomes_formset = SecondaryOutcomesSet(request.POST, queryset=secondary_qs, prefix='secondary') if primary_outcomes_formset.is_valid() and secondary_outcomes_formset.is_valid(): outcomes = primary_outcomes_formset.save(commit=False) outcomes += secondary_outcomes_formset.save(commit=False) for outcome in outcomes: outcome.trial = ct primary_outcomes_formset.save() secondary_outcomes_formset.save() # Executes validation of current trial submission (for mandatory fields) trial_validator.validate(ct) return HttpResponseRedirect(reverse('step_7',args=[trial_pk])) else: primary_outcomes_formset = PrimaryOutcomesSet(queryset=primary_qs, prefix='primary') secondary_outcomes_formset = SecondaryOutcomesSet(queryset=secondary_qs, prefix='secondary') formsets = [primary_outcomes_formset,secondary_outcomes_formset] return render_to_response('repository/trial_form.html', {'formsets':formsets, 'trial_pk':trial_pk, 'title':TRIAL_FORMS[6], 'steps': step_list(trial_pk), 'remarks':Remark.opened.filter(submission=ct.submission,context=slugify(TRIAL_FORMS[6])), 'default_second_language': ct.submission.get_secondary_language(), 'available_languages': [lang.lower() for lang in ct.submission.get_mandatory_languages()],}, context_instance=RequestContext(request))
def step_8(request, trial_pk): ct = get_object_or_404(ClinicalTrial, id=int(trial_pk)) contact_type = { 'PublicContact': (PublicContact,make_public_contact_form(request.user)), 'ScientificContact': (ScientificContact,make_scientifc_contact_form(request.user)), 'SiteContact': (SiteContact,make_site_contact_form(request.user)) } InlineFormSetClasses = [] for model,form in contact_type.values(): InlineFormSetClasses.append( inlineformset_factory(ClinicalTrial,model,form=form,can_delete=True,extra=EXTRA_FORMS) ) ContactFormSet = modelformset_factory(Contact, form=make_contact_form(request.user), extra=1) contact_qs = Contact.objects.none() if request.POST: inlineformsets = [fs(request.POST,instance=ct) for fs in InlineFormSetClasses] new_contact_formset = ContactFormSet(request.POST,queryset=contact_qs,prefix='new_contact') if not False in [fs.is_valid() for fs in inlineformsets] \ and new_contact_formset.is_valid(): for contactform in new_contact_formset.forms: if contactform.cleaned_data: Relation = contact_type[contactform.cleaned_data.pop('relation')][0] new_contact = contactform.save(commit=False) new_contact.creator = request.user new_contact.save() Relation.objects.create(trial=ct,contact=new_contact) for fs in inlineformsets: fs.save() # Executes validation of current trial submission (for mandatory fields) trial_validator.validate(ct) return HttpResponseRedirect(reverse('step_8',args=[trial_pk])) else: inlineformsets = [fs(instance=ct) for fs in InlineFormSetClasses] new_contact_formset = ContactFormSet(queryset=contact_qs,prefix='new_contact') formsets = inlineformsets + [new_contact_formset] return render_to_response('repository/step_8.html', {'formsets':formsets, 'trial_pk':trial_pk, 'title':TRIAL_FORMS[7], 'steps': step_list(trial_pk), 'remarks':Remark.opened.filter(submission=ct.submission,context=slugify(TRIAL_FORMS[7])), 'default_second_language': ct.submission.get_secondary_language(), 'available_languages': [lang.lower() for lang in ct.submission.get_mandatory_languages()],}, context_instance=RequestContext(request))
def delete_remark(request, remark_id): remark = get_object_or_404(Remark, id=int(remark_id)) if remark.status != 'open': return HttpResponse(status=403) trial = remark.submission.trial remark.delete() # Executes validation of current trial submission (for mandatory fields) trial_validator.validate(trial) return HttpResponseRedirect(reverse('repository.views.trial_view', args=[trial.id]))
def delete_remark(request, remark_id): remark = get_object_or_404(Remark, id=int(remark_id)) if remark.status != 'open': return HttpResponse(status=403) trial = remark.submission.trial remark.delete() # Executes validation of current trial submission (for mandatory fields) trial_validator.validate(trial) return HttpResponseRedirect( reverse('repository.views.trial_view', args=[trial.id]))
def change_remark_status(request, remark_id, status): if status not in REMARK_TRANSITIONS: raise Http404 remark = get_object_or_404(Remark, id=int(remark_id)) if status not in REMARK_TRANSITIONS[remark.status]: return HttpResponse(status=403) remark.status = status remark.save() # Executes validation of current trial submission (for mandatory fields) trial_validator.validate(remark.submission.trial) if request.is_ajax(): return HttpResponse(remark.status, mimetype='text/plain') else: return HttpResponseRedirect(reverse('repository.views.trial_view', args=[remark.submission.trial.id]))
def change_remark_status(request, remark_id, status): if status not in REMARK_TRANSITIONS: raise Http404 remark = get_object_or_404(Remark, id=int(remark_id)) if status not in REMARK_TRANSITIONS[remark.status]: return HttpResponse(status=403) remark.status = status remark.save() # Executes validation of current trial submission (for mandatory fields) trial_validator.validate(remark.submission.trial) if request.is_ajax(): return HttpResponse(remark.status, mimetype='text/plain') else: return HttpResponseRedirect( reverse('repository.views.trial_view', args=[remark.submission.trial.id]))
def open_remark(request, submission_id, context): submission = get_object_or_404(Submission, id=int(submission_id)) if request.method == 'POST': form = OpenRemarkForm(request.POST) if form.is_valid(): remark = form.save(commit=False) remark.creator = request.user remark.submission = submission remark.context = context remark.status = 'open' form.save() # Executes validation of current trial submission (for mandatory fields) trial_validator.validate(submission.trial) return HttpResponseRedirect(reverse('repository.trialview',args=[submission.trial.id])) form = OpenRemarkForm() return render_to_response('reviewapp/open_remark.html', locals(), context_instance=RequestContext(request))
def open_remark(request, submission_id, context): submission = get_object_or_404(Submission, id=int(submission_id)) if request.method == 'POST': form = OpenRemarkForm(request.POST) if form.is_valid(): remark = form.save(commit=False) remark.creator = request.user remark.submission = submission remark.context = context remark.status = 'open' form.save() # Executes validation of current trial submission (for mandatory fields) trial_validator.validate(submission.trial) return HttpResponseRedirect( reverse('repository.trialview', args=[submission.trial.id])) form = OpenRemarkForm() return render_to_response('reviewapp/open_remark.html', locals(), context_instance=RequestContext(request))