diff --git a/group_app/locale/ru/LC_MESSAGES/django.po b/group_app/locale/ru/LC_MESSAGES/django.po index d416381..c975e80 100644 --- a/group_app/locale/ru/LC_MESSAGES/django.po +++ b/group_app/locale/ru/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-24 23:27+0300\n" +"POT-Creation-Date: 2018-05-19 12:21+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Dmitry Novikov \n" "Language: ru\n" @@ -19,63 +19,78 @@ msgstr "" "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" "%100>=11 && n%100<=14)? 2 : 3);\n" -#: group_app/models.py:7 group_app/templates/group_app/group_list.html:21 +#: models.py:7 templates/group_app/group_list.html:22 msgid "Title" msgstr "Название" -#: group_app/models.py:16 +#: models.py:8 +msgid "Tech code" +msgstr "Технический код" + +#: models.py:17 msgid "Can view group" msgstr "Может видеть группы" -#: group_app/models.py:18 +#: models.py:19 msgid "Group" msgstr "Группа" -#: group_app/models.py:19 group_app/templates/group_app/ext.html:7 -#: group_app/templates/group_app/ext.html:8 -#: group_app/templates/group_app/ext.html:14 -#: group_app/templates/group_app/group_list.html:7 -#: group_app/templates/group_app/group_list.html:10 +#: models.py:20 templates/group_app/ext.html:7 templates/group_app/ext.html:8 +#: templates/group_app/ext.html:14 templates/group_app/group_list.html:7 +#: templates/group_app/group_list.html:10 msgid "Groups" msgstr "Группы" -#: group_app/templates/group_app/add_group.html:4 -#: group_app/templates/group_app/add_group.html:9 -#: group_app/templates/group_app/group_list.html:49 +#: templates/group_app/add_group.html:4 templates/group_app/add_group.html:9 +#: templates/group_app/group_list.html:58 msgid "Add group" msgstr "Добавить группу" -#: group_app/templates/group_app/add_group.html:16 +#: templates/group_app/add_group.html:16 msgid "Add" msgstr "Добавить" -#: group_app/templates/group_app/edit_group.html:4 -#: group_app/templates/group_app/edit_group.html:9 +#: templates/group_app/edit_group.html:4 templates/group_app/edit_group.html:9 msgid "Edit group" msgstr "Изменить группу" -#: group_app/templates/group_app/edit_group.html:16 +#: templates/group_app/edit_group.html:16 msgid "Save" msgstr "Сохранить" -#: group_app/templates/group_app/group_list.html:41 +#: templates/group_app/group_confirm_delete.html:5 +msgid "Remove group" +msgstr "Удалить группу" + +#: templates/group_app/group_confirm_delete.html:8 +#, python-format +msgid "Are you sure you want to delete group %(object)s?" +msgstr "Вы уверены что хотите удалить группу %(object)s?" + +#: templates/group_app/group_confirm_delete.html:10 +msgid "Delete" +msgstr "Удалить" + +#: templates/group_app/group_list.html:19 +msgid "TeCo" +msgstr "Тех. код" + +#: templates/group_app/group_list.html:50 msgid "Groups was not found" msgstr "Не найдено ни одной группы" -#: group_app/views.py:31 +#: views.py:34 msgid "Group changes has been saved" msgstr "Изменения сохранены" -#: group_app/views.py:35 group_app/views.py:51 +#: views.py:38 views.py:54 msgid "Please fix form errors" msgstr "Исправьте ошибки формы" -#: group_app/views.py:47 +#: views.py:50 msgid "New group are created" msgstr "Новая группа успешно создана" -msgid "Tech code" -msgstr "Технический код" - -msgid "TeCo" -msgstr "Тех. код" +#: views.py:72 +msgid "Group is contain subscribers. Remove them before delete group" +msgstr "Группа содержит абонентов. Удалите их перед удалением группы" diff --git a/group_app/templates/group_app/group_confirm_delete.html b/group_app/templates/group_app/group_confirm_delete.html new file mode 100644 index 0000000..cfa1590 --- /dev/null +++ b/group_app/templates/group_app/group_confirm_delete.html @@ -0,0 +1,13 @@ +{% load i18n %} +
{% csrf_token %} + + +
diff --git a/group_app/templates/group_app/group_list.html b/group_app/templates/group_app/group_list.html index 7ac7a50..cc86158 100644 --- a/group_app/templates/group_app/group_list.html +++ b/group_app/templates/group_app/group_list.html @@ -36,10 +36,13 @@ {{ gr.title }} - - + + + + + {% empty %} diff --git a/group_app/urls.py b/group_app/urls.py index 6fa6954..a14e8a8 100644 --- a/group_app/urls.py +++ b/group_app/urls.py @@ -6,5 +6,6 @@ app_name = 'group_app' urlpatterns = [ url(r'^$', views.GroupListView.as_view(), name='group_list'), url(r'^add/$', views.AddGroupView.as_view(), name='add'), - url(r'^(?P\d{1,6})/edit/$', views.EditGroupView.as_view(), name='edit') + url(r'^(?P\d{1,6})/edit/$', views.EditGroupView.as_view(), name='edit'), + url(r'^(?P\d{1,6})/del/$', views.DeleteGroupView.as_view(), name='del') ] diff --git a/group_app/views.py b/group_app/views.py index 022135a..ebeb28d 100644 --- a/group_app/views.py +++ b/group_app/views.py @@ -1,10 +1,13 @@ -from django.views.generic import ListView, UpdateView, CreateView +from django.db.models import Count +from django.http import HttpResponseRedirect +from django.views.generic import ListView, UpdateView, CreateView, DeleteView from django.contrib.auth.decorators import login_required from django.utils.translation import gettext_lazy as _ from django.utils.decorators import method_decorator from django.urls import reverse_lazy from django.contrib import messages from django.conf import settings +from guardian.decorators import permission_required_or_403 as permission_required from . import models from . import forms @@ -50,3 +53,22 @@ class AddGroupView(CreateView): def form_invalid(self, form): messages.success(self.request, _('Please fix form errors')) return super(AddGroupView, self).form_invalid(form) + + +@method_decorator(login_required, name='dispatch') +@method_decorator(permission_required('group_app:delete_group'), name='dispatch') +class DeleteGroupView(DeleteView): + model = models.Group + pk_url_kwarg = 'group_id' + success_url = reverse_lazy('group_app:group_list') + + def delete(self, request, *args, **kwargs): + group_id = self.kwargs.get('group_id') + group_with_subscribers = models.Group.objects.annotate( + subscribers_count=Count('abon') + ).filter(subscribers_count__gt=0, pk=group_id).first() + print('group_with_subscribers:', group_with_subscribers) + if group_with_subscribers is not None: + messages.error(request, _('Group is contain subscribers. Remove them before delete group')) + return HttpResponseRedirect(self.success_url) + return super().delete(request, *args, **kwargs)