diff --git a/abonapp/locale/ru/LC_MESSAGES/django.po b/abonapp/locale/ru/LC_MESSAGES/django.po
index 99bb948..e7dc540 100644
--- a/abonapp/locale/ru/LC_MESSAGES/django.po
+++ b/abonapp/locale/ru/LC_MESSAGES/django.po
@@ -1131,3 +1131,9 @@ msgstr "Успешно сохранено"
msgid "This user can not buy admin services"
msgstr "Этот пользователь не может назначать административные услуги"
+
+msgid "Remove subscriber"
+msgstr "Удаление абонента"
+
+msgid "Are you sure about them?"
+msgstr "Вы уверены в этом?"
diff --git a/abonapp/templates/abonapp/abon_confirm_delete.html b/abonapp/templates/abonapp/abon_confirm_delete.html
new file mode 100644
index 0000000..664bc1b
--- /dev/null
+++ b/abonapp/templates/abonapp/abon_confirm_delete.html
@@ -0,0 +1,18 @@
+{% load i18n %}
+
diff --git a/abonapp/templates/abonapp/peoples.html b/abonapp/templates/abonapp/peoples.html
index c853de4..9072a81 100644
--- a/abonapp/templates/abonapp/peoples.html
+++ b/abonapp/templates/abonapp/peoples.html
@@ -113,7 +113,7 @@
{% if can_del_abon %}
-
+
{% endif %}
diff --git a/abonapp/urls.py b/abonapp/urls.py
index dd9a893..12d799b 100644
--- a/abonapp/urls.py
+++ b/abonapp/urls.py
@@ -21,6 +21,7 @@ subscriber_patterns = [
url(r'^extra_field/edit$', views.extra_field_change, name='extra_field_edit'),
url(r'^unsubscribe_service(?P\d+)/$', views.unsubscribe_service, name='unsubscribe_service'),
url(r'^dev/$', views.dev, name='dev'),
+ url(r'^del$', views.DelAbonDeleteView.as_view(), name='del_abon'),
url(r'^clear_dev/$', views.clear_dev, name='clear_dev'),
url(r'^task_log/$', views.TaskLogListView.as_view(), name='task_log'),
url(r'^user_dev/$', views.save_user_dev_port, name='save_user_dev_port'),
@@ -55,8 +56,6 @@ urlpatterns = [
url(r'^log$', views.LogListView.as_view(), name='log'),
- url(r'^del$', views.del_abon, name='del_abon'),
-
url(r'^pay$', views.terminal_pay, name='terminal_pay'),
url(r'^debtors$', views.DebtorsListView.as_view(), name='debtors'),
diff --git a/abonapp/views.py b/abonapp/views.py
index 69e7a88..b4c2955 100644
--- a/abonapp/views.py
+++ b/abonapp/views.py
@@ -5,11 +5,12 @@ from django.db import IntegrityError, ProgrammingError, transaction
from django.db.models import Count, Q
from django.shortcuts import render, redirect, get_object_or_404, resolve_url
from django.contrib.auth.decorators import login_required
-from django.http import HttpResponse, HttpResponseBadRequest
+from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseRedirect
from django.contrib import messages
+from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _
from django.utils.decorators import method_decorator
-from django.views.generic import ListView, UpdateView, CreateView
+from django.views.generic import ListView, UpdateView, CreateView, DeleteView
from django.conf import settings
from jsonview.decorators import json_view
@@ -153,29 +154,37 @@ class AbonCreateView(CreateView):
return super(AbonCreateView, self).form_invalid(form)
-@login_required
-@mydefs.only_admins
-def del_abon(request):
- uid = request.GET.get('id')
- try:
- abon = get_object_or_404(models.Abon, pk=uid)
- if not request.user.has_perm('abonapp.delete_abon') or not request.user.has_perm(
- 'group_app.can_view_group', abon.group):
+@method_decorator([login_required, mydefs.only_admins], name='dispatch')
+@method_decorator(permission_required('abonapp.delete_abon'), name='dispatch')
+class DelAbonDeleteView(DeleteView):
+ model = models.Abon
+ slug_url_kwarg = 'uname'
+ slug_field = 'username'
+ success_url = reverse_lazy('abonapp:group_list')
+ context_object_name = 'abon'
+
+ def get_object(self, queryset=None):
+ abon = super(DelAbonDeleteView, self).get_object(queryset)
+ if not self.request.user.has_perm('group_app.can_view_group', abon.group):
raise PermissionDenied
- gid = abon.group.id
- abon.delete()
- abon.sync_with_nas(created=False)
- messages.success(request, _('delete abon success msg'))
- return mydefs.res_success(request, resolve_url('abonapp:people_list', gid=gid))
+ return abon
- except NasNetworkError as e:
- messages.error(request, e)
- except NasFailedResult as e:
- messages.error(request, _("NAS says: '%s'") % e)
- except mydefs.MultipleException as errs:
- for err in errs.err_list:
- messages.error(request, err)
- return redirect('abonapp:group_list')
+ def delete(self, request, *args, **kwargs):
+ try:
+ abon = self.get_object()
+ gid = abon.group.id
+ abon.delete()
+ abon.sync_with_nas(created=False)
+ messages.success(request, _('delete abon success msg'))
+ return redirect('abonapp:people_list', gid=gid)
+ except NasNetworkError as e:
+ messages.error(self.request, e)
+ except NasFailedResult as e:
+ messages.error(self.request, _("NAS says: '%s'") % e)
+ except mydefs.MultipleException as errs:
+ for err in errs.err_list:
+ messages.error(self.request, err)
+ return HttpResponseRedirect(self.success_url)
@login_required
|