Browse Source

Добавил страницу привязки тарифов к группам

devel
Dmitry 9 years ago
parent
commit
c5450d530a
  1. 33
      abonapp/templates/abonapp/group_tariffs.html
  2. 1
      abonapp/urls_abon.py
  3. 37
      abonapp/views.py

33
abonapp/templates/abonapp/group_tariffs.html

@ -0,0 +1,33 @@
{% extends request.is_ajax|yesno:'bajax.html,base.html' %}
{% load i18n %}
{% block main %}
<ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li>
<li><a href="{% url 'abonapp:group_list' %}">{% trans 'User groups' %}</a></li>
<li><a href="{% url 'abonapp:people_list' abon_group.id %}">{{ abon_group.title }}</a></li>
<li class="active">{% trans 'Belonging services for groups' %}</li>
</ol>
{% include 'message_block.html' %}
<legend>{% trans 'Belonging services for groups' %}</legend>
<form action="{% url 'abonapp:ch_group_tariff' abon_group.pk %}" method="post" role="form">{% csrf_token %}
{% for tariff in tariffs %}
<div class="checkbox">
<label>
{% if tariff in abon_group.tariffs.all %}
<input name="tr" type="checkbox" value="{{ tariff.pk }}" checked/>
{% else %}
<input name="tr" type="checkbox" value="{{ tariff.pk }}"/>
{% endif %}
{{ tariff.title }}
</label>
</div>
{% endfor %}
<div class="btn-group">
<input type="submit" class="btn btn-primary" value="{% trans 'Save' %}"> <input type="reset" class="btn btn-default" value="{% trans 'Reset' %}">
</div>
</form>
{% endblock %}

1
abonapp/urls_abon.py

@ -5,6 +5,7 @@ from . import views
urlpatterns = [ urlpatterns = [
url(r'^$', views.peoples, name='people_list'), url(r'^$', views.peoples, name='people_list'),
url(r'^addabon$', views.addabon, name='add_abon'), url(r'^addabon$', views.addabon, name='add_abon'),
url(r'^groups$', views.chgroup_tariff, name='ch_group_tariff'),
url(r'^(?P<uid>\d+)$', views.abonhome, name='abon_home'), url(r'^(?P<uid>\d+)$', views.abonhome, name='abon_home'),
url(r'^(?P<uid>\d+)/services$', views.abon_services, name='abon_services'), url(r'^(?P<uid>\d+)/services$', views.abon_services, name='abon_services'),

37
abonapp/views.py

@ -329,22 +329,15 @@ def add_invoice(request, gid, uid):
@login_required @login_required
@permission_required('abonapp.can_buy_tariff') @permission_required('abonapp.can_buy_tariff')
def pick_tariff(request, gid, uid): def pick_tariff(request, gid, uid):
frm = None
grp = get_object_or_404(models.AbonGroup, id=gid) grp = get_object_or_404(models.AbonGroup, id=gid)
abon = get_object_or_404(models.Abon, id=uid) abon = get_object_or_404(models.Abon, id=uid)
tariffs = grp.tariffs.all()
try: try:
if request.method == 'POST': 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: except models.LogicError as e:
messages.error(request, e) messages.error(request, e)
except NasFailedResult as e: except NasFailedResult as e:
@ -352,9 +345,11 @@ def pick_tariff(request, gid, uid):
except NasNetworkError as e: except NasNetworkError as e:
messages.error(request, e) messages.error(request, e)
return redirect('abonapp:abon_services', gid=gid, uid=abon.id) 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', { return render(request, 'abonapp/buy_tariff.html', {
'form': frm or forms.BuyTariff(),
'tariffs': tariffs,
'abon': abon, 'abon': abon,
'abon_group': grp '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 # API's
def abons(request): def abons(request):

Loading…
Cancel
Save