예제 #1
0
파일: views.py 프로젝트: frac/opentrials
def step_4(request, trial_pk):
    ct = get_object_or_404(ClinicalTrial, id=int(trial_pk))

    DescriptorFormSet = modelformset_factory(Descriptor,
                                          formset=MultilingualBaseFormSet,
                                          form=InterventionDescriptorForm,
                                          can_delete=True,
                                          extra=EXTRA_FORMS,
                                          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,
                                            },
                                          )

    queryset = Descriptor.objects.filter(trial=trial_pk,
                                           aspect=choices.TRIAL_ASPECT[1][0],
                                           level=choices.DESCRIPTOR_LEVEL[0][0])
    if request.POST:
        form = InterventionForm(request.POST, instance=ct,
                                display_language=request.user.get_profile().preferred_language)
        specific_desc_formset = DescriptorFormSet(request.POST, queryset=queryset)

        if form.is_valid() and specific_desc_formset.is_valid():
            descriptors = specific_desc_formset.save(commit=False)


            for descriptor in descriptors:
                descriptor.trial = ct

            specific_desc_formset.save()
            form.save()
            return HttpResponseRedirect(reverse('step_4',args=[trial_pk]))
    else:
        form = InterventionForm(instance=ct,
                                default_second_language=ct.submission.get_secondary_language(),
                                display_language=request.user.get_profile().preferred_language)
        specific_desc_formset = DescriptorFormSet(queryset=queryset)

    forms = [form]
    formsets = [specific_desc_formset]
    return render_to_response('repository/step_4.html',
                              {'forms':forms,'formsets':formsets,
                               'trial_pk':trial_pk,
                               'title':TRIAL_FORMS[3],
                               'steps': step_list(trial_pk),
                               'remarks':Remark.opened.filter(submission=ct.submission,context=slugify(TRIAL_FORMS[3])),
                               'default_second_language': ct.submission.get_secondary_language(),
                               'available_languages': [lang.lower() for lang in ct.submission.get_mandatory_languages()],},
                               context_instance=RequestContext(request))
예제 #2
0
def step_4(request, trial_pk):
    ct = get_object_or_404(ClinicalTrial, id=int(trial_pk))

    DescriptorFormSet = modelformset_factory(Descriptor,
                                          form=InterventionDescriptorForm,
                                          extra=EXTRA_FORMS)

    queryset = Descriptor.objects.filter(trial=trial_pk,
                                           aspect=choices.TRIAL_ASPECT[1][0],
                                           level=choices.DESCRIPTOR_LEVEL[0][0])
    if request.POST:
        form = InterventionForm(request.POST, instance=ct)
        idesc = DescriptorFormSet(request.POST, queryset=queryset)

        if form.is_valid() and idesc.is_valid():

            for cdata in idesc.cleaned_data:
                cdata['trial'] = ct

            idesc.save()
            form.save()

            if request.POST.has_key('submit_next'):
                return HttpResponseRedirect(reverse("step_5",args=[trial_pk]))

            return HttpResponseRedirect(reverse("repository.edittrial", args=[trial_pk]))
    else:
        form = InterventionForm(instance=ct)
        idesc = DescriptorFormSet(queryset=queryset)

    forms = [form]
    formsets = [idesc]
    return render_to_response('repository/step_4.html',
                              {'forms':forms,'formsets':formsets,
                               'username':request.user.username,
                               'trial_pk':trial_pk,
                               'title':TRIAL_FORMS[3],
                               'steps': step_list(trial_pk),
                               'next_form_title':_('Recruitment Form')})