Example #1
0
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))
Example #2
0
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))
Example #3
0
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]))
Example #4
0
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]))
Example #5
0
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]))
Example #6
0
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]))
Example #7
0
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))
Example #8
0
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))