From f6b48905bfd31e1e61866667ae886dc1b3e3abf2 Mon Sep 17 00:00:00 2001 From: Kagamino Date: Tue, 29 May 2018 20:35:29 +0200 Subject: [PATCH] uniform and more detailed error messages for protectederror --- cotisations/views.py | 22 +++------- machines/views.py | 101 ++++++++++++------------------------------- preferences/views.py | 7 +-- topologie/views.py | 49 +++++---------------- users/views.py | 14 +++--- 5 files changed, 52 insertions(+), 141 deletions(-) diff --git a/cotisations/views.py b/cotisations/views.py index 47076c8f..09694e41 100644 --- a/cotisations/views.py +++ b/cotisations/views.py @@ -46,7 +46,7 @@ from users.models import User from re2o.settings import LOGO_PATH from re2o import settings from re2o.views import form -from re2o.utils import SortTable, re2o_paginator +from re2o.utils import SortTable, re2o_paginator, messages_protected_error from re2o.acl import ( can_create, can_edit, @@ -528,14 +528,8 @@ def del_paiement(request, instances): 'method_name': payment_del } ) - except ProtectedError: - messages.error( - request, - _("The payment method %(method_name)s can't be deleted \ - because there are invoices using it.") % { - 'method_name': payment_del - } - ) + except ProtectedError as err: + messages_protected_error(messages, request, payment_del, err) return redirect(reverse('cotisations:index-paiement')) return form({ 'factureform': payment, @@ -606,14 +600,8 @@ def del_banque(request, instances): 'bank_name': bank_del } ) - except ProtectedError: - messages.error( - request, - _("The bank %(bank_name)s can't be deleted \ - because there are invoices using it.") % { - 'bank_name': bank_del - } - ) + except ProtectedError as err: + messages_protected_error(messages, request, bank_del, err) return redirect(reverse('cotisations:index-banque')) return form({ 'factureform': bank, diff --git a/machines/views.py b/machines/views.py index 75c2f483..64c9eaaf 100644 --- a/machines/views.py +++ b/machines/views.py @@ -39,6 +39,8 @@ from django.contrib.auth.decorators import login_required, permission_required from django.db.models import ProtectedError, F from django.forms import modelformset_factory from django.views.decorators.csrf import csrf_exempt +from django.utils.translation import ugettext as _ + from rest_framework.renderers import JSONRenderer @@ -49,6 +51,7 @@ from re2o.utils import ( filter_active_interfaces, SortTable, re2o_paginator, + messages_protected_error, ) from re2o.acl import ( can_create, @@ -504,12 +507,8 @@ def del_iptype(request, instances): try: iptype_del.delete() messages.success(request, "Le type d'ip a été supprimé") - except ProtectedError: - messages.error( - request, - ("Le type d'ip %s est affectée à au moins une machine, " - "vous ne pouvez pas le supprimer" % iptype_del) - ) + except ProtectedError as err: + messages_protected_error(messages, request, iptype_del, err) return redirect(reverse('machines:index-iptype')) return form( {'iptypeform': iptype, 'action_name': 'Supprimer'}, @@ -565,13 +564,8 @@ def del_machinetype(request, instances): try: machinetype_del.delete() messages.success(request, "Le type de machine a été supprimé") - except ProtectedError: - messages.error( - request, - ("Le type de machine %s est affectée à au moins une " - "machine, vous ne pouvez pas le supprimer" - % machinetype_del) - ) + except ProtectedError as err: + messages_protected_error(messages, request, machinetype_del, err) return redirect(reverse('machines:index-machinetype')) return form( {'machinetypeform': machinetype, 'action_name': 'Supprimer'}, @@ -627,13 +621,8 @@ def del_extension(request, instances): try: extension_del.delete() messages.success(request, "L'extension a été supprimée") - except ProtectedError: - messages.error( - request, - ("L'extension %s est affectée à au moins un type de " - "machine, vous ne pouvez pas la supprimer" - % extension_del) - ) + except ProtectedError as err: + messages_protected_error(messages, request, extension_del, err) return redirect(reverse('machines:index-extension')) return form( {'extensionform': extension, 'action_name': 'Supprimer'}, @@ -686,12 +675,8 @@ def del_soa(request, instances): try: soa_del.delete() messages.success(request, "Le SOA a été supprimée") - except ProtectedError: - messages.error( - request, - ("Erreur le SOA suivant %s ne peut être supprimé" - % soa_del) - ) + except ProtectedError as err: + messages_protected_error(messages, request, soa_del, err) return redirect(reverse('machines:index-extension')) return form( {'soaform': soa, 'action_name': 'Supprimer'}, @@ -744,12 +729,8 @@ def del_mx(request, instances): try: mx_del.delete() messages.success(request, "L'mx a été supprimée") - except ProtectedError: - messages.error( - request, - ("Erreur le Mx suivant %s ne peut être supprimé" - % mx_del) - ) + except ProtectedError as err: + messages_protected_error(messages, request, mx_del, err) return redirect(reverse('machines:index-extension')) return form( {'mxform': mx, 'action_name': 'Supprimer'}, @@ -802,12 +783,8 @@ def del_ns(request, instances): try: ns_del.delete() messages.success(request, "Le ns a été supprimée") - except ProtectedError: - messages.error( - request, - ("Erreur le Ns suivant %s ne peut être supprimé" - % ns_del) - ) + except ProtectedError as err: + messages_protected_error(messages, request, ns_del, err) return redirect(reverse('machines:index-extension')) return form( {'nsform': ns, 'action_name': 'Supprimer'}, @@ -860,12 +837,8 @@ def del_txt(request, instances): try: txt_del.delete() messages.success(request, "Le txt a été supprimé") - except ProtectedError: - messages.error( - request, - ("Erreur le Txt suivant %s ne peut être supprimé" - % txt_del) - ) + except ProtectedError as err: + messages_protected_error(messages, request, txt_del, err) return redirect(reverse('machines:index-extension')) return form( {'txtform': txt, 'action_name': 'Supprimer'}, @@ -918,12 +891,8 @@ def del_srv(request, instances): try: srv_del.delete() messages.success(request, "L'srv a été supprimée") - except ProtectedError: - messages.error( - request, - ("Erreur le Srv suivant %s ne peut être supprimé" - % srv_del) - ) + except ProtectedError as err: + messages_protected_error(messages, request, srv_del, err) return redirect(reverse('machines:index-extension')) return form( {'srvform': srv, 'action_name': 'Supprimer'}, @@ -994,12 +963,8 @@ def del_alias(request, interface, interfaceid): request, "L'alias %s a été supprimé" % alias_del ) - except ProtectedError: - messages.error( - request, - ("Erreur l'alias suivant %s ne peut être supprimé" - % alias_del) - ) + except ProtectedError as err: + messages_protected_error(messages, request, alias_del, err) return redirect(reverse( 'machines:index-alias', kwargs={'interfaceid': str(interfaceid)} @@ -1055,12 +1020,8 @@ def del_service(request, instances): try: service_del.delete() messages.success(request, "Le service a été supprimée") - except ProtectedError: - messages.error( - request, - ("Erreur le service suivant %s ne peut être supprimé" - % service_del) - ) + except ProtectedError as err: + messages_protected_error(messages, request, service_del, err) return redirect(reverse('machines:index-service')) return form( {'serviceform': service, 'action_name': 'Supprimer'}, @@ -1113,12 +1074,8 @@ def del_vlan(request, instances): try: vlan_del.delete() messages.success(request, "Le vlan a été supprimée") - except ProtectedError: - messages.error( - request, - ("Erreur le Vlan suivant %s ne peut être supprimé" - % vlan_del) - ) + except ProtectedError as err: + messages_protected_error(messages, request, vlan_del, err) return redirect(reverse('machines:index-vlan')) return form( {'vlanform': vlan, 'action_name': 'Supprimer'}, @@ -1171,12 +1128,8 @@ def del_nas(request, instances): try: nas_del.delete() messages.success(request, "Le nas a été supprimé") - except ProtectedError: - messages.error( - request, - ("Erreur le Nas suivant %s ne peut être supprimé" - % nas_del) - ) + except ProtectedError as err: + messages_protected_error(messages, request, nas_del, err) return redirect(reverse('machines:index-nas')) return form( {'nasform': nas, 'action_name': 'Supprimer'}, diff --git a/preferences/views.py b/preferences/views.py index b8ca39d2..05a41a93 100644 --- a/preferences/views.py +++ b/preferences/views.py @@ -36,11 +36,13 @@ from django.contrib import messages from django.contrib.auth.decorators import login_required from django.db.models import ProtectedError from django.db import transaction +from django.utils.translation import ugettext as _ from reversion import revisions as reversion from re2o.views import form from re2o.acl import can_create, can_edit, can_delete_set, can_view_all +from re2o.utils import messages_protected_error from .forms import ServiceForm, DelServiceForm from .models import ( @@ -180,9 +182,8 @@ def del_services(request, instances): services_del.delete() reversion.set_user(request.user) messages.success(request, "Le service a été supprimée") - except ProtectedError: - messages.error(request, "Erreur le service\ - suivant %s ne peut être supprimé" % services_del) + except ProtectedError as err: + messages_protected_error(messages, request, service_del, err) return redirect(reverse('preferences:display-options')) return form( {'preferenceform': services, 'action_name': 'Supprimer'}, diff --git a/topologie/views.py b/topologie/views.py index 652ef475..55a56398 100644 --- a/topologie/views.py +++ b/topologie/views.py @@ -47,11 +47,12 @@ from django.template.loader import get_template from django.template import Context, Template, loader from django.db.models.signals import post_save from django.dispatch import receiver +from django.utils.translation import ugettext as _ import tempfile from users.views import form -from re2o.utils import re2o_paginator, SortTable +from re2o.utils import re2o_paginator, SortTable, messages_protected_error from re2o.acl import ( can_create, can_edit, @@ -350,12 +351,8 @@ def del_port(request, port, **_kwargs): try: port.delete() messages.success(request, "Le port a été détruit") - except ProtectedError: - messages.error( - request, - ("Le port %s est affecté à un autre objet, impossible " - "de le supprimer" % port) - ) + except ProtectedError as err: + messages_protected_error(messages, request, port, err) return redirect(reverse( 'topologie:index-port', kwargs={'switchid': str(port.switch.id)} @@ -404,11 +401,7 @@ def del_stack(request, stack, **_kwargs): stack.delete() messages.success(request, "La stack a eté détruite") except ProtectedError: - messages.error( - request, - ("La stack %s est affectée à un autre objet, impossible " - "de la supprimer" % stack) - ) + messages_protected_error(messages, request, satck, err) return redirect(reverse('topologie:index-physical-grouping')) return form({'objet': stack}, 'topologie/delete.html', request) @@ -715,11 +708,7 @@ def del_room(request, room, **_kwargs): room.delete() messages.success(request, "La chambre/prise a été détruite") except ProtectedError: - messages.error( - request, - ("La chambre %s est affectée à un autre objet, impossible " - "de la supprimer (switch ou user)" % room) - ) + messages_protected_error(messages, request, room, err) return redirect(reverse('topologie:index-room')) return form( {'objet': room, 'objet_name': 'Chambre'}, @@ -774,11 +763,7 @@ def del_model_switch(request, model_switch, **_kwargs): model_switch.delete() messages.success(request, "Le modèle a été détruit") except ProtectedError: - messages.error( - request, - ("Le modèle %s est affectée à un autre objet, impossible " - "de la supprimer (switch ou user)" % model_switch) - ) + messages_protected_error(messages, request, model_switch, err) return redirect(reverse('topologie:index-model-switch')) return form( {'objet': model_switch, 'objet_name': 'Modèle de switch'}, @@ -829,11 +814,7 @@ def del_switch_bay(request, switch_bay, **_kwargs): switch_bay.delete() messages.success(request, "La baie a été détruite") except ProtectedError: - messages.error( - request, - ("La baie %s est affecté à un autre objet, impossible " - "de la supprimer (switch ou user)" % switch_bay) - ) + messages_protected_error(messages, request, switch_bay, err) return redirect(reverse('topologie:index-physical-grouping')) return form( {'objet': switch_bay, 'objet_name': 'Baie de switch'}, @@ -883,12 +864,8 @@ def del_building(request, building, **_kwargs): try: building.delete() messages.success(request, "La batiment a été détruit") - except ProtectedError: - messages.error( - request, - ("Le batiment %s est affecté à un autre objet, impossible " - "de la supprimer (switch ou user)" % building) - ) + except ProtectedError as err: + messages_protected_error(messages, request, building, err) return redirect(reverse('topologie:index-physical-grouping')) return form( {'objet': building, 'objet_name': 'Bâtiment'}, @@ -943,11 +920,7 @@ def del_constructor_switch(request, constructor_switch, **_kwargs): constructor_switch.delete() messages.success(request, "Le constructeur a été détruit") except ProtectedError: - messages.error( - request, - ("Le constructeur %s est affecté à un autre objet, impossible " - "de la supprimer (switch ou user)" % constructor_switch) - ) + messages_protected_error(messages, request, constructor_switch, err) return redirect(reverse('topologie:index-model-switch')) return form({ 'objet': constructor_switch, diff --git a/users/views.py b/users/views.py index 34a08313..c10520bf 100644 --- a/users/views.py +++ b/users/views.py @@ -45,6 +45,7 @@ from django.db import transaction from django.http import HttpResponse from django.http import HttpResponseRedirect from django.views.decorators.csrf import csrf_exempt +from django.utils.translation import ugettext as _ from rest_framework.renderers import JSONRenderer from reversion import revisions as reversion @@ -56,7 +57,8 @@ from re2o.views import form from re2o.utils import ( all_has_access, SortTable, - re2o_paginator + re2o_paginator, + messages_protected_error ) from re2o.acl import ( can_create, @@ -510,10 +512,7 @@ def del_school(request, instances): school_del.delete() messages.success(request, "L'établissement a été supprimé") except ProtectedError: - messages.error( - request, - "L'établissement %s est affecté à au moins un user, \ - vous ne pouvez pas le supprimer" % school_del) + messages_protected_error(messages, request, school_del, err) return redirect(reverse('users:index-school')) return form( {'userform': school, 'action_name': 'Supprimer'}, @@ -621,10 +620,7 @@ def del_listright(request, instances): listright_del.delete() messages.success(request, "Le droit/groupe a été supprimé") except ProtectedError: - messages.error( - request, - "Le groupe %s est affecté à au moins un user, \ - vous ne pouvez pas le supprimer" % listright_del) + messages_protected_error(messages, request, listright_del, err) return redirect(reverse('users:index-listright')) return form( {'userform': listright, 'action_name': 'Supprimer'},