From c5450d530ae2dff20910dcb44a5e3879c8b83c15 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Tue, 21 Mar 2017 21:57:25 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D1=83=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D0=B2=D1=8F=D0=B7=D0=BA=D0=B8=20=D1=82=D0=B0=D1=80=D0=B8?= =?UTF-8?q?=D1=84=D0=BE=D0=B2=20=D0=BA=20=D0=B3=D1=80=D1=83=D0=BF=D0=BF?= =?UTF-8?q?=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- abonapp/templates/abonapp/group_tariffs.html | 33 +++++++++++++++++ abonapp/urls_abon.py | 1 + abonapp/views.py | 37 +++++++++++++------- 3 files changed, 58 insertions(+), 13 deletions(-) create mode 100644 abonapp/templates/abonapp/group_tariffs.html diff --git a/abonapp/templates/abonapp/group_tariffs.html b/abonapp/templates/abonapp/group_tariffs.html new file mode 100644 index 0000000..160415b --- /dev/null +++ b/abonapp/templates/abonapp/group_tariffs.html @@ -0,0 +1,33 @@ +{% extends request.is_ajax|yesno:'bajax.html,base.html' %} +{% load i18n %} +{% block main %} + + + + {% include 'message_block.html' %} + + {% trans 'Belonging services for groups' %} +
{% csrf_token %} + {% for tariff in tariffs %} +
+ +
+ {% endfor %} +
+ +
+
+ +{% endblock %} \ No newline at end of file diff --git a/abonapp/urls_abon.py b/abonapp/urls_abon.py index 4182ff2..b13c1b3 100644 --- a/abonapp/urls_abon.py +++ b/abonapp/urls_abon.py @@ -5,6 +5,7 @@ from . import views urlpatterns = [ url(r'^$', views.peoples, name='people_list'), url(r'^addabon$', views.addabon, name='add_abon'), + url(r'^groups$', views.chgroup_tariff, name='ch_group_tariff'), url(r'^(?P\d+)$', views.abonhome, name='abon_home'), url(r'^(?P\d+)/services$', views.abon_services, name='abon_services'), diff --git a/abonapp/views.py b/abonapp/views.py index 0529282..1157c69 100644 --- a/abonapp/views.py +++ b/abonapp/views.py @@ -329,22 +329,15 @@ def add_invoice(request, gid, uid): @login_required @permission_required('abonapp.can_buy_tariff') def pick_tariff(request, gid, uid): - frm = None grp = get_object_or_404(models.AbonGroup, id=gid) abon = get_object_or_404(models.Abon, id=uid) + tariffs = grp.tariffs.all() try: if request.method == 'POST': - frm = forms.BuyTariff(request.POST) - if frm.is_valid(): - cd = frm.cleaned_data - abon.pick_tariff(cd['tariff'], request.user) - #abon.save() - messages.success(request, _('Tariff has been picked')) - return redirect('abonapp:abon_services', gid=gid, uid=abon.id) - else: - messages.error(request, _('fix form errors')) - else: - frm = forms.BuyTariff() + trf = Tariff.objects.get(pk=request.POST.get('tariff')) + abon.pick_tariff(trf, request.user) + messages.success(request, _('Tariff has been picked')) + return redirect('abonapp:abon_services', gid=gid, uid=abon.id) except models.LogicError as e: messages.error(request, e) except NasFailedResult as e: @@ -352,9 +345,11 @@ def pick_tariff(request, gid, uid): except NasNetworkError as e: messages.error(request, e) return redirect('abonapp:abon_services', gid=gid, uid=abon.id) + except Tariff.DoesNotExist: + messages.error(request, _('Tariff your picked does not exist')) return render(request, 'abonapp/buy_tariff.html', { - 'form': frm or forms.BuyTariff(), + 'tariffs': tariffs, 'abon': abon, 'abon_group': grp }) @@ -552,6 +547,22 @@ def passport_view(request, gid, uid): }) +@login_required +@mydefs.only_admins +def chgroup_tariff(request, gid): + grp = get_object_or_404(models.AbonGroup, pk=gid) + if request.method == 'POST': + tr = request.POST.getlist('tr') + grp.tariffs.clear() + grp.tariffs.add(*[int(d) for d in tr]) + grp.save() + tariffs = Tariff.objects.all() + return render(request, 'abonapp/group_tariffs.html', { + 'abon_group': grp, + 'tariffs': tariffs + }) + + # API's def abons(request):