コード例 #1
0
 def delete(self, request, *args, **kwargs):
     # Workaround for https://code.djangoproject.com/ticket/21926
     # Replicates the `delete` method of DeleteMixin
     self.object = self.get_object()
     success_url = self.get_success_url()
     try:
         self.object.delete()
         messages.success(self.request,
                          self.success_message.format(self.object))
         return HttpResponseRedirect(success_url)
     except ProtectedError as e:
         return failed_to_delete(self.request, self.object,
                                 e.protected_objects)
コード例 #2
0
ファイル: base_views.py プロジェクト: pbanaszkiewicz/amy
 def delete(self, request, *args, **kwargs):
     # Workaround for https://code.djangoproject.com/ticket/21926
     # Replicates the `delete` method of DeleteMixin
     self.object = self.get_object()
     success_url = self.get_success_url()
     try:
         self.object.delete()
         messages.success(
             self.request,
             self.success_message.format(self.object)
         )
         return HttpResponseRedirect(success_url)
     except ProtectedError as e:
         return failed_to_delete(self.request, self.object,
                                 e.protected_objects)
コード例 #3
0
ファイル: views.py プロジェクト: mattipt/amy
def trainingrequests_merge(request):
    """Display two training requests side by side on GET and merge them on
    POST.

    If no requests are supplied via GET params, display event selection
    form."""
    obj_a_pk = request.GET.get('trainingrequest_a')
    obj_b_pk = request.GET.get('trainingrequest_b')

    if not obj_a_pk or not obj_b_pk:
        context = {
            'title': 'Select Training Requests to merge',
            'form': TrainingRequestsSelectionForm(),
        }
        return render(request, 'generic_form.html', context)

    obj_a = get_object_or_404(TrainingRequest, pk=obj_a_pk)
    obj_b = get_object_or_404(TrainingRequest, pk=obj_b_pk)

    form = TrainingRequestsMergeForm(
        initial=dict(trainingrequest_a=obj_a, trainingrequest_b=obj_b))

    if request.method == "POST":
        form = TrainingRequestsMergeForm(request.POST)

        if form.is_valid():
            # merging in process
            data = form.cleaned_data

            obj_a = data['trainingrequest_a']
            obj_b = data['trainingrequest_b']

            # `base_obj` stays in the database after merge
            # `merging_obj` will be removed from DB after merge
            if data['id'] == 'obj_a':
                base_obj = obj_a
                merging_obj = obj_b
                base_a = True
            else:
                base_obj = obj_b
                merging_obj = obj_a
                base_a = False

            # non-M2M-relationships:
            easy = (
                'state',
                'person',
                'group_name',
                'personal',
                'middle',
                'family',
                'email',
                'github',
                'occupation',
                'occupation_other',
                'affiliation',
                'location',
                'country',
                'underresourced',
                'domains_other',
                'underrepresented',
                'underrepresented_details',
                'nonprofit_teaching_experience',
                'previous_training',
                'previous_training_other',
                'previous_training_explanation',
                'previous_experience',
                'previous_experience_other',
                'previous_experience_explanation',
                'programming_language_usage_frequency',
                'teaching_frequency_expectation',
                'teaching_frequency_expectation_other',
                'max_travelling_frequency',
                'max_travelling_frequency_other',
                'reason',
                'user_notes',
                'training_completion_agreement',
                'workshop_teaching_agreement',
                'data_privacy_agreement',
                'code_of_conduct_agreement',
                'created_at',
                'last_updated_at',
            )
            # M2M relationships
            difficult = (
                'domains',
                'previous_involvement',
            )

            try:
                _, integrity_errors = merge_objects(obj_a,
                                                    obj_b,
                                                    easy,
                                                    difficult,
                                                    choices=data,
                                                    base_a=base_a)

                if integrity_errors:
                    msg = ('There were integrity errors when merging related '
                           'objects:\n'
                           '\n'.join(integrity_errors))
                    messages.warning(request, msg)

            except ProtectedError as e:
                return failed_to_delete(request,
                                        object=merging_obj,
                                        protected_objects=e.protected_objects)

            else:
                return redirect(base_obj.get_absolute_url())
        else:
            messages.error(request, 'Fix errors in the form.')

    context = {
        'title': 'Merge two training requets',
        'obj_a': obj_a,
        'obj_b': obj_b,
        'form': form,
    }
    return render(request, 'requests/trainingrequests_merge.html', context)
コード例 #4
0
def trainingrequests_merge(request):
    """Display two training requests side by side on GET and merge them on
    POST.

    If no requests are supplied via GET params, display event selection
    form."""
    obj_a_pk = request.GET.get("trainingrequest_a")
    obj_b_pk = request.GET.get("trainingrequest_b")

    if not obj_a_pk or not obj_b_pk:
        context = {
            "title": "Select Training Requests to merge",
            "form": TrainingRequestsSelectionForm(),
        }
        return render(request, "generic_form.html", context)

    obj_a = get_object_or_404(TrainingRequest, pk=obj_a_pk)
    obj_b = get_object_or_404(TrainingRequest, pk=obj_b_pk)

    form = TrainingRequestsMergeForm(
        initial=dict(trainingrequest_a=obj_a, trainingrequest_b=obj_b))

    if request.method == "POST":
        form = TrainingRequestsMergeForm(request.POST)

        if form.is_valid():
            # merging in process
            data = form.cleaned_data

            obj_a = data["trainingrequest_a"]
            obj_b = data["trainingrequest_b"]

            # `base_obj` stays in the database after merge
            # `merging_obj` will be removed from DB after merge
            if data["id"] == "obj_a":
                base_obj = obj_a
                merging_obj = obj_b
                base_a = True
            else:
                base_obj = obj_b
                merging_obj = obj_a
                base_a = False

            # non-M2M-relationships:
            easy = (
                "state",
                "person",
                "group_name",
                "personal",
                "middle",
                "family",
                "email",
                "secondary_email",
                "github",
                "occupation",
                "occupation_other",
                "affiliation",
                "location",
                "country",
                "underresourced",
                "domains_other",
                "underrepresented",
                "underrepresented_details",
                "nonprofit_teaching_experience",
                "previous_training",
                "previous_training_other",
                "previous_training_explanation",
                "previous_experience",
                "previous_experience_other",
                "previous_experience_explanation",
                "programming_language_usage_frequency",
                "teaching_frequency_expectation",
                "teaching_frequency_expectation_other",
                "max_travelling_frequency",
                "max_travelling_frequency_other",
                "reason",
                "user_notes",
                "training_completion_agreement",
                "workshop_teaching_agreement",
                "data_privacy_agreement",
                "code_of_conduct_agreement",
                "created_at",
                "last_updated_at",
            )
            # M2M relationships
            difficult = (
                "domains",
                "previous_involvement",
            )

            try:
                _, integrity_errors = merge_objects(obj_a,
                                                    obj_b,
                                                    easy,
                                                    difficult,
                                                    choices=data,
                                                    base_a=base_a)

                if integrity_errors:
                    msg = ("There were integrity errors when merging related "
                           "objects:\n"
                           "\n".join(integrity_errors))
                    messages.warning(request, msg)

            except ProtectedError as e:
                return failed_to_delete(request,
                                        object=merging_obj,
                                        protected_objects=e.protected_objects)

            else:
                return redirect(base_obj.get_absolute_url())
        else:
            messages.error(request, "Fix errors in the form.")

    context = {
        "title": "Merge two training requets",
        "obj_a": obj_a,
        "obj_b": obj_b,
        "form": form,
    }
    return render(request, "requests/trainingrequests_merge.html", context)
コード例 #5
0
ファイル: views.py プロジェクト: pbanaszkiewicz/amy
def trainingrequests_merge(request):
    """Display two training requests side by side on GET and merge them on
    POST.

    If no requests are supplied via GET params, display event selection
    form."""
    obj_a_pk = request.GET.get('trainingrequest_a')
    obj_b_pk = request.GET.get('trainingrequest_b')

    if not obj_a_pk or not obj_b_pk:
        context = {
            'title': 'Select Training Requests to merge',
            'form': TrainingRequestsSelectionForm(),
        }
        return render(request, 'generic_form.html', context)

    obj_a = get_object_or_404(TrainingRequest, pk=obj_a_pk)
    obj_b = get_object_or_404(TrainingRequest, pk=obj_b_pk)

    form = TrainingRequestsMergeForm(initial=dict(trainingrequest_a=obj_a,
                                                  trainingrequest_b=obj_b))

    if request.method == "POST":
        form = TrainingRequestsMergeForm(request.POST)

        if form.is_valid():
            # merging in process
            data = form.cleaned_data

            obj_a = data['trainingrequest_a']
            obj_b = data['trainingrequest_b']

            # `base_obj` stays in the database after merge
            # `merging_obj` will be removed from DB after merge
            if data['id'] == 'obj_a':
                base_obj = obj_a
                merging_obj = obj_b
                base_a = True
            else:
                base_obj = obj_b
                merging_obj = obj_a
                base_a = False

            # non-M2M-relationships:
            easy = (
                'state', 'person', 'group_name', 'personal', 'middle',
                'family', 'email', 'github', 'occupation', 'occupation_other',
                'affiliation', 'location', 'country', 'underresourced',
                'domains_other', 'underrepresented',
                'underrepresented_details', 'nonprofit_teaching_experience',
                'previous_training', 'previous_training_other',
                'previous_training_explanation', 'previous_experience',
                'previous_experience_other', 'previous_experience_explanation',
                'programming_language_usage_frequency',
                'teaching_frequency_expectation',
                'teaching_frequency_expectation_other',
                'max_travelling_frequency', 'max_travelling_frequency_other',
                'reason', 'user_notes', 'training_completion_agreement',
                'workshop_teaching_agreement',
                'data_privacy_agreement', 'code_of_conduct_agreement',
                'created_at', 'last_updated_at',
            )
            # M2M relationships
            difficult = (
                'domains', 'previous_involvement',
            )

            try:
                _, integrity_errors = merge_objects(obj_a, obj_b, easy,
                                                    difficult, choices=data,
                                                    base_a=base_a)

                if integrity_errors:
                    msg = ('There were integrity errors when merging related '
                           'objects:\n' '\n'.join(integrity_errors))
                    messages.warning(request, msg)

            except ProtectedError as e:
                return failed_to_delete(request, object=merging_obj,
                                        protected_objects=e.protected_objects)

            else:
                return redirect(base_obj.get_absolute_url())
        else:
            messages.error(request, 'Fix errors in the form.')

    context = {
        'title': 'Merge two training requets',
        'obj_a': obj_a,
        'obj_b': obj_b,
        'form': form,
    }
    return render(request, 'requests/trainingrequests_merge.html', context)