Browse Source

Refactoring delete subscriber view

devel
bashmak 8 years ago
parent
commit
e3e3ea0c7f
  1. 6
      abonapp/locale/ru/LC_MESSAGES/django.po
  2. 18
      abonapp/templates/abonapp/abon_confirm_delete.html
  3. 2
      abonapp/templates/abonapp/peoples.html
  4. 3
      abonapp/urls.py
  5. 55
      abonapp/views.py

6
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 "Вы уверены в этом?"

18
abonapp/templates/abonapp/abon_confirm_delete.html

@ -0,0 +1,18 @@
{% load i18n %}
<form role="form" action="{% url 'abonapp:del_abon' abon.group.pk abon.username %}" method="post">{% csrf_token %}
<div class="modal-header warning">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title"><span class="glyphicon glyphicon-earphone"></span>{% trans 'Remove subscriber' %}</h4>
</div>
<div class="modal-body">
<h4>{% trans 'Are you sure about them?' %}</h4>
<button type="submit" class="btn btn-danger" value="DELETE">
<span class="glyphicon glyphicon-remove"></span> {% trans 'Delete' %}
</button>
</div>
</form>

2
abonapp/templates/abonapp/peoples.html

@ -113,7 +113,7 @@
</td>
<td class="hidden-xs">
{% if can_del_abon %}
<a href="{% url 'abonapp:del_abon' %}?id={{ human.pk }}" class="btn btn-danger btn-sm">
<a href="{% url 'abonapp:del_abon' group.pk human.username %}" class="btn btn-danger btn-sm btn-modal">
<span class="glyphicon glyphicon-remove"></span>
</a>
{% endif %}

3
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<abon_tariff_id>\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'),

55
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

Loading…
Cancel
Save