def step_3(request, trial_pk): ct = get_object_or_404(ClinicalTrial, id=int(trial_pk)) GeneralDescriptorSet = modelformset_factory(Descriptor, form=GeneralHealthDescriptorForm, extra=EXTRA_FORMS) SpecificDescriptorSet = modelformset_factory(Descriptor, form=SpecificHealthDescriptorForm, extra=EXTRA_FORMS) general_qs = Descriptor.objects.filter(trial=trial_pk, aspect=choices.TRIAL_ASPECT[0][0], level=choices.DESCRIPTOR_LEVEL[0][0]) specific_qs = Descriptor.objects.filter(trial=trial_pk, aspect=choices.TRIAL_ASPECT[0][0], level=choices.DESCRIPTOR_LEVEL[1][0]) if request.POST: form = HealthConditionsForm(request.POST, instance=ct) gdesc = GeneralDescriptorSet(request.POST,queryset=general_qs,prefix='g') sdesc = SpecificDescriptorSet(request.POST,queryset=specific_qs,prefix='s') if form.is_valid() and gdesc.is_valid() and sdesc.is_valid(): for cdata in gdesc.cleaned_data+sdesc.cleaned_data: cdata['trial'] = ct form.save() gdesc.save() sdesc.save() if request.POST.has_key('submit_next'): return HttpResponseRedirect(reverse("step_4",args=[trial_pk])) return HttpResponseRedirect(reverse("repository.edittrial", args=[trial_pk])) else: form = HealthConditionsForm(instance=ct) gdesc = GeneralDescriptorSet(queryset=general_qs,prefix='g') sdesc = SpecificDescriptorSet(queryset=specific_qs,prefix='s') forms = [form] formsets = [gdesc, sdesc] return render_to_response('repository/step_3.html', {'forms':forms,'formsets':formsets, 'username':request.user.username, 'trial_pk':trial_pk, 'title':TRIAL_FORMS[2], 'steps': step_list(trial_pk), 'next_form_title':_('Interventions Form')})
def step_3(request, trial_pk): ct = get_object_or_404(ClinicalTrial, id=int(trial_pk)) GeneralDescriptorSet = modelformset_factory(Descriptor, formset=MultilingualBaseFormSet, form=GeneralHealthDescriptorForm, 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, }, ) SpecificDescriptorSet = modelformset_factory(Descriptor, formset=MultilingualBaseFormSet, form=SpecificHealthDescriptorForm, 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, }, ) general_qs = Descriptor.objects.filter(trial=trial_pk, aspect=choices.TRIAL_ASPECT[0][0], level=choices.DESCRIPTOR_LEVEL[0][0]) specific_qs = Descriptor.objects.filter(trial=trial_pk, aspect=choices.TRIAL_ASPECT[0][0], level=choices.DESCRIPTOR_LEVEL[1][0]) if request.POST: form = HealthConditionsForm(request.POST, instance=ct, display_language=request.user.get_profile().preferred_language) general_desc_formset = GeneralDescriptorSet(request.POST,queryset=general_qs,prefix='g') specific_desc_formset = SpecificDescriptorSet(request.POST,queryset=specific_qs,prefix='s') if form.is_valid() and general_desc_formset.is_valid() and specific_desc_formset.is_valid(): descriptors = general_desc_formset.save(commit=False) descriptors += specific_desc_formset.save(commit=False) for descriptor in descriptors: descriptor.trial = ct general_desc_formset.save() specific_desc_formset.save() form.save() return HttpResponseRedirect(reverse('step_3',args=[trial_pk])) else: form = HealthConditionsForm(instance=ct, default_second_language=ct.submission.get_secondary_language(), display_language=request.user.get_profile().preferred_language) general_desc_formset = GeneralDescriptorSet(queryset=general_qs,prefix='g') specific_desc_formset = SpecificDescriptorSet(queryset=specific_qs,prefix='s') forms = [form] formsets = [general_desc_formset, specific_desc_formset] return render_to_response('repository/step_3.html', {'forms':forms,'formsets':formsets, 'trial_pk':trial_pk, 'title':TRIAL_FORMS[2], 'steps': step_list(trial_pk), 'remarks':Remark.opened.filter(submission=ct.submission,context=slugify(TRIAL_FORMS[2])), 'default_second_language': ct.submission.get_secondary_language(), 'available_languages': [lang.lower() for lang in ct.submission.get_mandatory_languages()],}, context_instance=RequestContext(request))