예제 #1
0
def editClusterInclusion(request, dss_id, cluster_id):
    dss = get_object_or_404(models.DataSetSpecification, id=dss_id)
    cluster = get_object_or_404(models.DataSetSpecification, id=cluster_id)
    if not (user_can_edit(request.user, dss)
            and user_can_view(request.user, cluster)):
        raise PermissionDenied
    inclusion = get_object_or_404(models.DSSClusterInclusion,
                                  child=cluster,
                                  dss=dss)

    if request.method == 'POST':
        form = forms.EditClusterInclusionForm(
            request.POST, instance=inclusion)  # , user=request.user)
        if form.is_valid():
            with reversion.revisions.create_revision():
                form.save()
                dss.save()
                reversion.set_comment('Edited cluster inclusion')
            return HttpResponseRedirect(
                reverse("aristotle_mdr:item", args=[dss.id]))
    else:
        form = forms.EditClusterInclusionForm(
            instance=inclusion)  # , user=request.user)

    return render(request, "aristotle_dse/actions/edit_inclusion.html", {
        "item": inclusion,
        "form": form,
    })
예제 #2
0
def editInclusionDetails(request, dss_id, inc_type, cluster_id):
    dss = get_object_or_404(models.DataSetSpecification, id=dss_id)

    if inc_type not in ['cluster', 'data_element']:
        raise Http404
    item = get_object_or_404(models.DataSetSpecification, pk=dss_id)
    if not user_can_edit(request.user, item):
        if request.user.is_anonymous:
            return redirect(
                reverse('friendly_login') + '?next=%s' % request.path)
        else:
            raise PermissionDenied

    item_type, field_name = {
        'cluster': (models.DataSetSpecification, 'child'),
        'data_element': (aristotle_models.DataElement, 'data_element'),
    }.get(inc_type)

    cluster = get_object_or_404(item_type, id=cluster_id)
    if not (user_can_edit(request.user, dss)
            and user_can_view(request.user, cluster_id)):
        raise PermissionDenied
    inclusion = get_object_or_404(models.DSSClusterInclusion,
                                  child=cluster,
                                  dss=dss)

    if request.method == 'POST':
        form = forms.EditClusterInclusionForm(
            request.POST, instance=inclusion)  # , user=request.user)
        if form.is_valid():
            with reversion.revisions.create_revision():
                form.save()
                dss.save()
                reversion.set_comment('Edited inclusion details')
            return HttpResponseRedirect(
                reverse("aristotle_mdr:item", args=[dss.id]))
    else:
        form = forms.EditClusterInclusionForm(
            instance=inclusion)  # , user=request.user)

    return render(request, "aristotle_dse/actions/edit_inclusion.html", {
        "item": inclusion,
        "form": form,
        "include_type": inc_type,
    })