Browse Source

Реализовал локализацию ru

devel
bashmak 9 years ago
parent
commit
e9ccbd9bce
  1. 9
      abonapp/forms.py
  2. BIN
      abonapp/locale/ru/LC_MESSAGES/django.mo
  3. 559
      abonapp/locale/ru/LC_MESSAGES/django.po
  4. 19
      abonapp/models.py
  5. 2
      abonapp/pay_systems.py
  6. 9
      abonapp/templates/abonapp/abonamount.html
  7. 20
      abonapp/templates/abonapp/activate_service.html
  8. 27
      abonapp/templates/abonapp/addAbon.html
  9. 16
      abonapp/templates/abonapp/addGroup.html
  10. 18
      abonapp/templates/abonapp/addInvoice.html
  11. 16
      abonapp/templates/abonapp/buy_tariff.html
  12. 35
      abonapp/templates/abonapp/complete_service.html
  13. 19
      abonapp/templates/abonapp/debtors.html
  14. 35
      abonapp/templates/abonapp/editAbon.html
  15. 21
      abonapp/templates/abonapp/ext.htm
  16. 19
      abonapp/templates/abonapp/group_list.html
  17. 21
      abonapp/templates/abonapp/invoiceForPayment.html
  18. 22
      abonapp/templates/abonapp/log.html
  19. 13
      abonapp/templates/abonapp/payHistory.html
  20. 37
      abonapp/templates/abonapp/peoples.html
  21. 36
      abonapp/templates/abonapp/services.html
  22. 17
      abonapp/templates/abonapp/task_log.html
  23. 43
      abonapp/templates/abonapp/viewAbon.html
  24. 57
      abonapp/views.py

9
abonapp/forms.py

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
from django.utils.translation import ugettext as _
from django import forms
from django.contrib.auth.hashers import make_password
from random import choice
@ -25,9 +26,9 @@ def generate_random_password():
class AbonForm(forms.ModelForm):
username = forms.CharField(max_length=127, required=False, initial=generate_random_username, widget=forms.TextInput(attrs={
'placeholder': 'Логин',
'placeholder': _('login'),
'class': "form-control",
'required':''
'required': ''
}))
password = forms.CharField(max_length=64, initial=generate_random_password,
@ -38,12 +39,12 @@ class AbonForm(forms.ModelForm):
fields = ['username', 'telephone', 'fio', 'group', 'description', 'street', 'house', 'is_active']
widgets = {
'fio': forms.TextInput(attrs={
'placeholder': 'ФИО',
'placeholder': _('fio'),
'class': "form-control",
'required': ''
}),
'telephone': forms.TextInput(attrs={
'placeholder': '+[7,8,9,3] и 10,11 цифр',
'placeholder': _('telephone placeholder'),
'pattern': r'^\+[7,8,9,3]\d{10,11}$',
'required': '',
'class': 'form-control'

BIN
abonapp/locale/ru/LC_MESSAGES/django.mo

559
abonapp/locale/ru/LC_MESSAGES/django.po

@ -0,0 +1,559 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE"S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Dmitry Novikov nerosketch@gmail.com, 2017.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-02-17 17:28+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: abonapp/forms.py:29 abonapp/templates/abonapp/addAbon.html.py:21
msgid "login"
msgstr "Логин"
#: abonapp/forms.py:42
msgid "fio"
msgstr "ФИО"
#: abonapp/forms.py:47
msgid "telephone placeholder"
msgstr "+[7,8,9,3] и 10,11 цифр"
#: abonapp/models.py:23
msgid "fill account"
msgstr "Пополнение счёта"
#: abonapp/models.py:118
msgid "not enough money"
msgstr "Не хватает денег на счету"
#: abonapp/models.py:124
msgid "service finish log"
msgstr "Завершение и оплата услуги по истечению срока действия"
#: abonapp/models.py:143
msgid "finish service perm"
msgstr "Снятие со счёта средств"
#: abonapp/models.py:144
msgid "activate service perm"
msgstr "Активация услуги абонента"
#: abonapp/models.py:187
msgid "Buy service perm"
msgstr "Покупка тарифа абоненту"
#: abonapp/models.py:191
msgid "pay log"
msgstr "Снятие со счёта средств"
#: abonapp/models.py:236
msgid "Buy service default log"
msgstr "Покупка тарифного плана через админку"
#: abonapp/models.py:248
msgid "service overdue log"
msgstr "Услуга просрочена, отключаем, и подключаем новую"
#: abonapp/templates/abonapp/abonamount.html:6
msgid "Additional sum"
msgstr "Начисление средств на счёт"
#: abonapp/templates/abonapp/abonamount.html:15
msgid "Amount of money"
msgstr "Количество денег"
#: abonapp/templates/abonapp/abonamount.html:27
msgid "Refill"
msgstr "Пополнить"
#: abonapp/templates/abonapp/abonamount.html:30
#: abonapp/templates/abonapp/addAbon.html:89
#: abonapp/templates/abonapp/addGroup.html:32
#: abonapp/templates/abonapp/addInvoice.html:49
#: abonapp/templates/abonapp/buy_tariff.html:37
#: abonapp/templates/abonapp/complete_service.html:63
msgid "Reset"
msgstr "Сбросить"
#: abonapp/templates/abonapp/activate_service.html:8
#: abonapp/templates/abonapp/addAbon.html:7
#: abonapp/templates/abonapp/addGroup.html:7
#: abonapp/templates/abonapp/addInvoice.html:7
#: abonapp/templates/abonapp/buy_tariff.html:7
#: abonapp/templates/abonapp/complete_service.html:7
msgid "User groups"
msgstr "Группы абонентов"
#: abonapp/templates/abonapp/activate_service.html:11
#: abonapp/templates/abonapp/activate_service.html:18
msgid "Activate service"
msgstr "Активировать услугу"
#: abonapp/templates/abonapp/activate_service.html:26
#, python-format
msgid ""
"\n"
"Are you sure that you want activate service for the user?<br>\n"
"Note that the account will be removed from his money and open access to the "
"resources of the paid services.<br>\n"
"Maintenance cost is %(amount)s. On account of %(ballance)s, will be "
"%(diff)s<br>\n"
"It will work until %(deadline)s"
msgstr ""
"\n"
"Вы уверены что хотите активировать абоненту эту услугу?<br>Обратите внимание "
"что с его счёта <b>снимутся деньги</b> и откроется доступ к ресурсам "
"оплаченной услуги.<br>Стоимость услуги: %(amount)sруб. На счету %(ballance)s "
"руб, останется %(diff)s руб.<br>Услуга будет действовать до %(deadline)s"
#: abonapp/templates/abonapp/activate_service.html:34
#: abonapp/templates/abonapp/addAbon.html:86
#: abonapp/templates/abonapp/addGroup.html:29
#: abonapp/templates/abonapp/addInvoice.html:46
#: abonapp/templates/abonapp/buy_tariff.html:34
#: abonapp/templates/abonapp/complete_service.html:60
msgid "Save"
msgstr "Сохранить"
#: abonapp/templates/abonapp/addAbon.html:9
#: abonapp/templates/abonapp/addAbon.html:16
msgid "Add abon"
msgstr "Добавить абонента"
#: abonapp/templates/abonapp/addAbon.html:29
msgid "Long name"
msgstr "Фамилия и Имя"
#: abonapp/templates/abonapp/addAbon.html:37
msgid "Telephone"
msgstr "Телефон"
#: abonapp/templates/abonapp/addAbon.html:45
msgid "User group"
msgstr "Группа"
#: abonapp/templates/abonapp/addAbon.html:53
#: abonapp/templates/abonapp/addInvoice.html:40
msgid "Comment"
msgstr "Комментарий"
#: abonapp/templates/abonapp/addAbon.html:59
msgid "Street"
msgstr "Улица"
#: abonapp/templates/abonapp/addAbon.html:67
msgid "Apartment"
msgstr "Квартира"
#: abonapp/templates/abonapp/addAbon.html:76
msgid "Password"
msgstr "Пароль"
#: abonapp/templates/abonapp/addGroup.html:8
#: abonapp/templates/abonapp/addGroup.html:15
msgid "Add group"
msgstr "Добавьте группу абонентов"
#: abonapp/templates/abonapp/addGroup.html:20
msgid "Group title"
msgstr "Название группы"
#: abonapp/templates/abonapp/addInvoice.html:10
msgid "Add debt"
msgstr "Добавить квитанцию"
#: abonapp/templates/abonapp/addInvoice.html:17
msgid "Add receipt for"
msgstr "Добавьте платёж на оплату для"
#: abonapp/templates/abonapp/addInvoice.html:25
msgid "Sum of pay"
msgstr "Сумма для платежа"
#: abonapp/templates/abonapp/addInvoice.html:36
msgid "Pay status"
msgstr "Статус оплаты"
#: abonapp/templates/abonapp/buy_tariff.html:10
#: abonapp/templates/abonapp/buy_tariff.html:25
msgid "Pick a service"
msgstr "Заказать услугу"
#: abonapp/templates/abonapp/buy_tariff.html:17
msgid "Pick a service for"
msgstr "Купить новую услугу (заказать тариф) для"
#: abonapp/templates/abonapp/buy_tariff.html:18
msgid "Sub"
msgstr "Абонент"
#: abonapp/templates/abonapp/complete_service.html:10
#: abonapp/templates/abonapp/complete_service.html:17
msgid "Finish service"
msgstr "Завершить услугу"
#: abonapp/templates/abonapp/complete_service.html:25
msgid ""
"Early completion of the current service will cause that user will be denied "
"access to services Resources (Net closes)\n"
"To continue to use the resources necessary to connect the required service"
msgstr ""
"Досрочное завершение текущей услуги приведёт к тому что пользователю будет запрещён доступ к ресурсам "
"услуги (закроется инет)<br/>"
"Для продолжения пользования ресурсами надо подключить нужную услугу"
#: abonapp/templates/abonapp/complete_service.html:32
msgid ""
"Details: <br/>\n"
"You complete tariff"
msgstr ""
"Подробнее:<br/>"
"Вы завершаете тариф"
#: abonapp/templates/abonapp/complete_service.html:44
#, python-format
msgid ""
"The service has been connected: %(time_start)s<br/>\n"
"Today: %(today)s <br/>\n"
"Time of use: %(time_use)s <br/>\n"
"The total cost of the service: %(amount)s <br/>\n"
"Total cost: %(tcost)s"
msgstr ""
"Услуга была подключена: %(time_start)s<br/>"
"Сегодня: %(today)s<br/>"
"Время использования: %(time_use)s<br/>"
"Полная стоимость услуги: %(amount)s<br/>"
"Итоговая стоимость: %(tcost)s"
#: abonapp/views.py:50
msgid "create group success msg"
msgstr "Группа успешно создана"
#: abonapp/views.py:53 abonapp/views.py:111 abonapp/views.py:252
#: abonapp/views.py:344
msgid "fix form errors"
msgstr "Некоторые поля заполнены не правильно, проверте ещё раз"
#: abonapp/views.py:88 abonapp/views.py:153
msgid "delete group success msg"
msgstr "Группа успешно удалена"
#: abonapp/views.py:108
msgid "create abon success msg"
msgstr "Абонент успешно создан"
#: abonapp/views.py:125
msgid "Address"
msgstr "Адрес"
#: abonapp/views.py:147
msgid "delete abon success msg"
msgstr "Абонент успешно удалён"
#: abonapp/views.py:156
msgid "I not know what to delete"
msgstr "Не понятно что удалять"
#: abonapp/views.py:160
#, python-format
msgid "NAS says: '%s'"
msgstr "NAS сказал: '%s'"
#: abonapp/views.py:173
msgid "fill account through admin side"
msgstr "Пополнение счёта через админку"
#: abonapp/views.py:175
#, python-format
msgid "Account filled successfully on %.2f"
msgstr ""
#: abonapp/views.py:178
msgid "I not know the account id"
msgstr "Счёт успешно пополнен на %.2f"
#: abonapp/views.py:250
msgid "edit abon success msg"
msgstr "Абонент успешно изменён"
#: abonapp/views.py:257
#, python-format
msgid "Ip address already exist. %s"
msgstr ""
"Проверте введённые вами значения, скорее всего такой ip уже у кого-то есть. "
"А вообще: %s"
#: abonapp/views.py:265
msgid "Ip address not found"
msgstr "Указанный вами ip отсутствует в ip pool"
#: abonapp/views.py:267
msgid "User has not have password, and cannot login"
msgstr "Для абонента не задан пароль, он не сможет войти в учётку"
#: abonapp/views.py:314
msgid "Receipt has been created"
msgstr "Квитанция на оплату была создана"
#: abonapp/views.py:341
msgid "Tariff has been picked"
msgstr "Тариф успешно выбран"
#: abonapp/views.py:398
msgid "Service has been finished successfully"
msgstr "Услуга успешно завершена"
#: abonapp/views.py:401 abonapp/views.py:430
msgid "Not confirmed"
msgstr "Действие не подтверждено"
#: abonapp/views.py:433
msgid "Service has been activated successfully"
msgstr "Услуга успешно активирована"
#: abonapp/views.py:458
msgid "User has been detached from service"
msgstr "Абонент отвязан от услуги"
msgid "House"
msgstr "Дом"
msgid "Debtors"
msgstr "Должники"
msgid "People with debts"
msgstr "Народ, у которого есть неоплаченные услуги"
msgid "Date of make"
msgstr "Дата создания"
msgid "Author"
msgstr "Автор"
msgid "Debts not found"
msgstr "Нет должников"
msgid "Change subscriber"
msgstr "Изменение абонента"
msgid "Is active"
msgstr "Активен"
msgid "Ip Address"
msgstr "IP Адрес"
msgid "Passport information"
msgstr "Паспортные данные"
msgid "Pasport serial"
msgstr "Серия пас."
msgid "Pasport number"
msgstr "Номер пас."
msgid "Distributor"
msgstr "Кем выдан"
msgid "Ballance"
msgstr "Балланс"
msgid "Sub information"
msgstr "Информация абонента"
msgid "Services"
msgstr "Услуги"
msgid "Service"
msgstr "Услуга"
msgid "Fill account"
msgstr "Пополнить счёт"
msgid "Debts"
msgstr "Долги"
msgid "Payment history"
msgstr "История платежей"
msgid "History of tasks"
msgstr "История задач"
msgid "Number of subscribers"
msgstr "Количество абонентов"
msgid "Groups was not found"
msgstr "Ещё нет групп"
msgid "Subscribers actions"
msgstr "История действий абонентов"
msgid "List of debtors"
msgstr "Список должников"
msgid "History of subscriber"
msgstr "История абонента"
msgid "Sum"
msgstr "Сумма"
msgid "Date"
msgstr "Время"
msgid "Actions not found"
msgstr "Нет событий"
msgid "Month"
msgstr "Месяц"
msgid "Date of payment"
msgstr "Дата оплаты"
msgid "Author of payment"
msgstr "Назначил"
msgid "Created paid,Not yet paid"
msgstr "Создан оплаченным,Ещё не оплачено"
msgid "Receipts not found"
msgstr "Назначенные платежи отсутствуют"
msgid "Payment history is empty"
msgstr "История платежей пуста"
msgid "The people in the selected group"
msgstr "Народ в выбранной группе"
msgid "Not assigned"
msgstr "&lt;Не назначен&gt;"
msgid "Subscribers not found"
msgstr "Абоненты не найдены"
msgid "Refresh subscribers on NAS"
msgstr "Обновить абонентов в NAS"
msgid "Services of subscriber"
msgstr "Купленные абонентом услуги (назначенные тарифные планы)"
msgid "Priority"
msgstr "Приоритет"
msgid "Input speed"
msgstr "Входящая скорость"
msgid "Output speed"
msgstr "Исходящая скорость"
msgid "Time of action"
msgstr "Время действия"
msgid "Edit"
msgstr "Ред."
msgid "Priority up"
msgstr "Повысить приоритет"
msgid "Priority down"
msgstr "Понизить приоритет"
msgid "Delete service"
msgstr "Удалить услугу"
msgid "Services of subscribers not found"
msgstr "Нет подключённых абоненту услуг"
msgid "Buy"
msgstr "Купить"
msgid "Buy service"
msgstr "Купить услугу"
msgid "Recipients"
msgstr "Исполнители"
msgid "State"
msgstr "Состояние"
msgid "Type"
msgstr "Тип"
msgid "Recipients not found"
msgstr "Нет исполнителей"
msgid "Tasks not found"
msgstr "Нет задач"
msgid "View the subscriber"
msgstr "Просмотр абонента"
msgid "yes,no"
msgstr "Да,Нет"
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""
msgid ""
msgstr ""

19
abonapp/models.py

@ -2,6 +2,7 @@
from django.utils import timezone
from django.db import models
from django.core.validators import DecimalValidator
from django.utils.translation import ugettext as _
from agent import Transmitter, AbonStruct, TariffStruct, NasFailedResult
from ip_pool.models import IpPoolItem
from tariff_app.models import Tariff
@ -19,7 +20,7 @@ class AbonGroup(models.Model):
class Meta:
db_table = 'abonent_groups'
permissions = (
('can_add_ballance', 'Пополнение счёта'),
('can_add_ballance', _('fill account')),
)
def __str__(self):
@ -114,13 +115,13 @@ class AbonTariff(models.Model):
amnt = self.calc_amount_service()
# если не хватает денег
if self.abon.ballance < amnt:
raise LogicError('Не хватает денег на счету')
raise LogicError(_('not enough money'))
# считаем дату активации услуги
self.time_start = timezone.now()
# считаем дату завершения услуги
self.deadline = calc_obj.calc_deadline()
# снимаем деньги за услугу
self.abon.make_pay(current_user, amnt, u_comment='Завершение и оплата услуги по истечению срока действия')
self.abon.make_pay(current_user, amnt, u_comment=_('service finish log'))
self.save()
# Используется-ли услуга сейчас, если время старта есть то он активирован
@ -139,8 +140,8 @@ class AbonTariff(models.Model):
db_table = 'abonent_tariff'
unique_together = (('abon', 'tariff', 'tariff_priority'),)
permissions = (
('can_complete_service', 'Досрочное завершение услуги абонента'),
('can_activate_service', 'Активация услуги абонента')
('can_complete_service', _('finish service perm')),
('can_activate_service', _('activate service perm'))
)
@ -183,11 +184,11 @@ class Abon(UserProfile):
class Meta:
db_table = 'abonent'
permissions = (
('can_buy_tariff', 'Покупка тарифа абоненту'),
('can_buy_tariff', _('Buy service perm')),
)
# Платим за что-то
def make_pay(self, curuser, how_match_to_pay=0.0, u_comment='Снятие со счёта средств'):
def make_pay(self, curuser, how_match_to_pay=0.0, u_comment=_('pay log')):
AbonLog.objects.create(
abon=self,
amount=-how_match_to_pay,
@ -232,7 +233,7 @@ class Abon(UserProfile):
AbonLog.objects.create(
abon=self, amount=-tariff.amount,
author=author,
comment=comment or 'Покупка тарифного плана через админку, тариф "%s"' % tariff
comment=comment or _('Buy service default log')
)
# Пробует подключить новую услугу если пришло время
@ -244,7 +245,7 @@ class Abon(UserProfile):
for at in ats:
# если услуга просрочена
if nw > at.deadline:
print("Услуга просрочена, отключаем, и подключаем новую")
print(_('service overdue log'))
# выберем следующую по приоритету
# next_tarifs = AbonTariff.objects.filter(tariff_priority__gt = self.tariff_priority, abon=self.abon)
next_tarifs = [tr for tr in ats if tr.tariff_priority > at.tariff_priority][:2]

2
abonapp/pay_systems.py

@ -68,7 +68,7 @@ def allpay(request):
summ=pay_amount
)
# тут в author передаём учётку абонента, т.к. это он сам через терминал пополняет
abon.add_ballance(abon, pay_amount, comment='Пополнение на %.2f через AllPay' % pay_amount)
abon.add_ballance(abon, pay_amount, comment='AllPay %.2f' % pay_amount)
abon.save(update_fields=['ballance'])
current_date = timezone.now().strftime("%d.%m.%Y %H:%M:%S")
return "<?xml version='1.0' encoding='UTF-8'?>" \

9
abonapp/templates/abonapp/abonamount.html

@ -1,8 +1,9 @@
{% extends request.is_ajax|yesno:'nullcont.htm,abonapp/ext.htm' %}
{% load i18n %}
{% block content %}
<legend>Начисление средств на счёт</legend>
<legend>{% trans 'Additional sum' %}</legend>
<div class="row">
@ -11,7 +12,7 @@
method="post"> {% csrf_token %}
<div class="form-group-sm">
<label for="amount">Количество денег</label>
<label for="amount">{% trans 'Amount of money' %}</label>
<div class="input-group">
<span class="input-group-addon">&#8399;</span>
@ -23,10 +24,10 @@
<div class="btn-group">
<button type="submit" class="btn btn-sm btn-primary">
<span class="glyphicon glyphicon-save"></span> Пополнить
<span class="glyphicon glyphicon-save"></span> {% trans 'Refill' %}
</button>
<button type="reset" class="btn btn-sm btn-default">
<span class="glyphicon glyphicon-remove-circle"></span> Сбросить
<span class="glyphicon glyphicon-remove-circle"></span> {% trans 'Reset' %}
</button>
</div>

20
abonapp/templates/abonapp/activate_service.html

@ -1,35 +1,37 @@
{% 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' %}">Группы абонентов</a></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><a href="{% url 'abonapp:abon_home' abon_group.id abon.id %}">{{ abon.fio }}</a></li>
<li class="active">Активировать услугу</li>
<li class="active">{% trans 'Activate service' %}</li>
</ol>
{% include 'message_block.html' %}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Активировать услугу</h3>
<h3 class="panel-title">{% trans 'Activate service' %}</h3>
</div>
<div class="panel-body">
<form role="form" action="{% url 'abonapp:activate_service' abon_group.id abon.id abtar.id %}"
method="post">{% csrf_token %}
<input name="finish_confirm" value="yes" type="hidden">
<p>Вы уверены что хотите активировать абоненту эту услугу?<br>
Обратите внимание что с его счёта <b>снимутся деньги</b> и откроется доступ к ресурсам оплаченной
услуги.<br>
Стоимость услуги: {{ amount }}руб. На счету {{ abon.ballance }} руб, останется {{ diff }} руб.<br>
Услуга будет действовать до {{ deadline|date:'d F Y, H:i:s' }}
<p>
{% blocktrans with ballance=abon.ballance deadline=deadline|date:'d F Y, H:i:s' %}
Are you sure that you want activate service for the user?<br>
Note that the account will be removed from his money and open access to the resources of the paid services.<br>
Maintenance cost is {{ amount }}. On account of {{ ballance }}, will be {{ diff }}<br>
It will work until {{ deadline }}{% endblocktrans %}
</p>
<button type="submit" class="btn btn-sm btn-primary">
<span class="glyphicon glyphicon-save"></span> Подтвердить
<span class="glyphicon glyphicon-save"></span> {% trans 'Save' %}
</button>
</form>
</div>

27
abonapp/templates/abonapp/addAbon.html

@ -1,23 +1,24 @@
{% 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' %}">Группы абонентов</a></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">Добавить абонента</li>
<li class="active">{% trans 'Add abon' %}</li>
</ol>
{% include 'message_block.html' %}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Добавьте аккаунт абонента</h3>
<h3 class="panel-title">{% trans 'Add abon' %}</h3>
</div>
<div class="panel-body">
<form role="form" action="{% url 'abonapp:add_abon' abon_group.id %}" method="post">{% csrf_token %}
<div class="form-group">
<label for="login">Логин абонента</label>
<label for="login">{% trans 'login' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
@ -25,7 +26,7 @@
</div>
</div>
<div class="form-group">
<label for="fio">Фамилия Имя</label>
<label for="fio">{% trans 'Long name' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-bookmark"></span></span>
@ -33,7 +34,7 @@
</div>
</div>
<div class="form-group">
<label for="telephone">Телефон</label>
<label for="telephone">{% trans 'Telephone' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-phone"></span></span>
@ -41,7 +42,7 @@
</div>
</div>
<div class="form-group">
<label for="grp">Группа абонентов</label>
<label for="grp">{% trans 'User group' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-grain"></span></span>
@ -49,13 +50,13 @@
</div>
</div>
<div class="form-group">
<label for="id_description">Комментарий</label>
<label for="id_description">{% trans 'Comment' %}</label>
<span class="input-group-addon"><span class="glyphicon glyphicon-comment"></span></span>
{{ form.description }}{{ form.description.errors }}
</div>
<div class="form-group">
<label for="id_street">Улица</label>
<label for="id_street">{% trans 'Street' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-road"></span></span>
@ -63,7 +64,7 @@
</div>
</div>
<div class="form-group">
<label for="id_house">Дом/Квартира</label>
<label for="id_house">{% trans 'Apartment' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-home"></span></span>
@ -72,7 +73,7 @@
</div>
<div class="form-group">
<label for="id_password">Пароль</label>
<label for="id_password">{% trans 'Password' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
@ -82,10 +83,10 @@
<div class="btn-group">
<button type="submit" class="btn btn-sm btn-primary">
<span class="glyphicon glyphicon-save"></span> Сохранить
<span class="glyphicon glyphicon-save"></span> {% trans 'Save' %}
</button>
<button type="reset" class="btn btn-sm btn-default">
<span class="glyphicon glyphicon-remove-circle"></span> Сбросить
<span class="glyphicon glyphicon-remove-circle"></span> {% trans 'Reset' %}
</button>
</div>
</form>

16
abonapp/templates/abonapp/addGroup.html

@ -1,35 +1,35 @@
{% extends 'base.html' %}
{% load i18n %}
{% block main %}
<ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li>
<li><a href="{% url 'abonapp:group_list' %}">Группы абонентов</a></li>
<li class="active">Добавить группу</li>
<li><a href="{% url 'abonapp:group_list' %}">{% trans 'User groups' %}</a></li>
<li class="active">{% trans 'Add group' %}</li>
</ol>
{% include 'message_block.html' %}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Добавьте группу абонентов</h3>
<h3 class="panel-title">{% trans 'Add group' %}</h3>
</div>
<div class="panel-body">
<form role="form" action="{% url 'abonapp:add_group' %}" method="post">{% csrf_token %}
<div class="form-group">
<label for="gtitle">Название группы</label>
<label for="gtitle">{% trans 'Group title' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-bookmark"></span></span>
<input id="gtitle" type="text" name="title" placeholder="Название" required class="form-control">{{ form.title.errors }}
<input id="gtitle" type="text" name="title" required class="form-control">{{ form.title.errors }}
</div>
</div>
<div class="btn-group">
<button type="submit" class="btn btn-sm btn-primary">
<span class="glyphicon glyphicon-save"></span> Сохранить
<span class="glyphicon glyphicon-save"></span> {% trans 'Save' %}
</button>
<button type="reset" class="btn btn-sm btn-default">
<span class="glyphicon glyphicon-remove-circle"></span> Сбросить
<span class="glyphicon glyphicon-remove-circle"></span> {% trans 'Reset' %}
</button>
</div>
</form>

18
abonapp/templates/abonapp/addInvoice.html

@ -1,20 +1,20 @@
{% 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' %}">Группы абонентов</a></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><a href="{% url 'abonapp:abon_home' abon_group.id abon.id %}">{{ abon.fio }}</a></li>
<li class="active">Добавить долг</li>
<li class="active">{% trans 'Add debt' %}</li>
</ol>
{% include 'message_block.html' %}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Добавьте платёж на оплату для
<h3 class="panel-title">{% trans 'Add receipt for' %}
<u><a href="{% url 'abonapp:abon_home' abon_group.id abon.id %}">{{ abon.fio }}</a></u>
</h3>
</div>
@ -22,7 +22,7 @@
<form role="form" action="{% url 'abonapp:add_invoice' abon_group.id abon.id %}"
method="post">{% csrf_token %}
<div class="form-group">
<label for="pamount">Сумма для платежа</label>
<label for="pamount">{% trans 'Sum of pay' %}</label>
<div class="input-group">
<span class="input-group-addon">&#8381;</span>
@ -33,20 +33,20 @@
<div class="checkbox">
<label>
<input id="paystat" type="checkbox" name="status"{% if invcount == 0 %} checked{% endif %}>
Статус оплаты
{% trans 'Pay status' %}
</label>
</div>
<div class="form-group">
<label for="comm">Комментарий</label>
<label for="comm">{% trans 'Comment' %}</label>
<textarea id="comm" name="comment" required maxlength="128" rows="3"
class="form-control"></textarea>
</div>
<div class="btn-group">
<button type="submit" class="btn btn-sm btn-primary">
<span class="glyphicon glyphicon-save"></span> Сохранить
<span class="glyphicon glyphicon-save"></span> {% trans 'Save' %}
</button>
<button type="reset" class="btn btn-sm btn-default">
<span class="glyphicon glyphicon-remove-circle"></span> Сбросить
<span class="glyphicon glyphicon-remove-circle"></span> {% trans 'Reset' %}
</button>
</div>
</form>

16
abonapp/templates/abonapp/buy_tariff.html

@ -1,28 +1,28 @@
{% 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' %}">Группы абонентов</a></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><a href="{% url 'abonapp:abon_home' abon_group.id abon.id %}">{{ abon.fio }}</a></li>
<li class="active">Заказать услугу</li>
<li class="active">{% trans 'Pick a service' %}</li>
</ol>
{% include 'message_block.html' %}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Купить новую услугу (заказать тариф) для
<a href="{% url 'abonapp:abon_home' abon_group.id abon.id %}" title="На страницу абонента"><u>абонента</u></a>
<h3 class="panel-title">{% trans 'Pick a service for' %}
<a href="{% url 'abonapp:abon_home' abon_group.id abon.id %}"><u>{% trans 'Sub' %}</u></a>
</h3>
</div>
<div class="panel-body">
<form role="form" action="{% url 'abonapp:pick_tariff' abon_group.id abon.id %}"
method="post">{% csrf_token %}
<div class="form-group">
<label for="id_tariff">Выбирите тарифф</label>
<label for="id_tariff">{% trans 'Pick a service' %}</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-bullhorn"></span></span>
@ -31,10 +31,10 @@
</div>
<div class="btn-group">
<button type="submit" class="btn btn-sm btn-primary">
<span class="glyphicon glyphicon-save"></span> Сохранить
<span class="glyphicon glyphicon-save"></span> {% trans 'Save' %}
</button>
<button type="reset" class="btn btn-sm btn-default">
<span class="glyphicon glyphicon-remove-circle"></span> Сбросить
<span class="glyphicon glyphicon-remove-circle"></span> {% trans 'Reset' %}
</button>
</div>
</form>

35
abonapp/templates/abonapp/complete_service.html

@ -1,32 +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' %}">Группы абонентов</a></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><a href="{% url 'abonapp:abon_home' abon_group.id abon.id %}">{{ abon.fio }}</a></li>
<li class="active">Завершить услугу</li>
<li class="active">{% trans 'Finish service' %}</li>
</ol>
{% include 'message_block.html' %}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Завершить услугу</h3>
<h3 class="panel-title">{% trans 'Finish service' %}</h3>
</div>
<div class="panel-body">
<form role="form" action="{% url 'abonapp:compl_srv' abon_group.id abon.id abtar.id %}" method="post">{% csrf_token %}
<input name="finish_confirm" value="yes" type="hidden">
<p>Досрочное завершение текущей услуги приведёт к тому что пользователю будет запрещён доступ к ресурсам
услуги (закроется инет)<br/>
Для продолжения пользования ресурсами надо подключить нужную услугу</p>
<p>
{% blocktrans %}Early completion of the current service will cause that user will be denied access to services Resources (Net closes)
To continue to use the resources necessary to connect the required service{% endblocktrans %}
</p>
<p>Подробнее:<br/>
Вы завершаете тариф
<p>{% blocktrans %}Details: <br/>
You complete tariff{% endblocktrans %}
{% if perms.tariff_app.change_tariff %}
<a href="{% url 'tarifs:edit' abtar.tariff.id %}" target="_blank">{{ abtar.tariff.title }}</a>.<br/>
@ -34,20 +35,20 @@
{{ abtar.tariff.title }}.<br/>
{% endif %}
Услуга была подключена: {{ abtar.time_start|date:'d F Y, H:i:s' }}<br/>
Сегодня: {% now "d F Y, H:i:s" %}<br/>
Время использования: {{ time_use }}<br/>
Полная стоимость услуги: {{ abtar.tariff.amount }}<br/>
Итоговая стоимость: {{ abtar.calc_amount_service }}
{% now "d F Y, H: i: s" as today %}
{% blocktrans with time_start=abtar.time_start|date:'d F Y, H: i: s' amount=abtar.tariff.amount tcost=abtar.calc_amount_service %}The service has been connected: {{ time_start }}<br/>
Today: {{ today }} <br/>
Time of use: {{ time_use }} <br/>
The total cost of the service: {{ amount }} <br/>
Total cost: {{ tcost }}{% endblocktrans %}
</p>
<div class="btn-group">
<button type="submit" class="btn btn-sm btn-primary">
<span class="glyphicon glyphicon-save"></span> Сохранить
<span class="glyphicon glyphicon-save"></span> {% trans 'Save' %}
</button>
<button type="reset" class="btn btn-sm btn-default">
<span class="glyphicon glyphicon-remove-circle"></span> Сбросить
<span class="glyphicon glyphicon-remove-circle"></span> {% trans 'Reset' %}
</button>
</div>

19
abonapp/templates/abonapp/debtors.html

@ -1,26 +1,27 @@
{% extends 'base.html' %}
{% load i18n %}
{% block main %}
<ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li>
<li><a href="{% url 'abonapp:group_list' %}">Группы абонентов</a></li>
<li class="active">Должники</li>
<li><a href="{% url 'abonapp:group_list' %}">{% trans 'User groups' %}</a></li>
<li class="active">{% trans 'Debtors' %}</li>
</ol>
{% include 'message_block.html' %}
<h3>Народ, у которого есть неоплаченные услуги</h3>
<h3>{% trans 'People with debts' %}</h3>
<div class="table-responsive">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th width="15">#</th>
<th>Абонент</th>
<th>Цена</th>
<th>Комментарий</th>
<th>Дата создания</th>
<th>Автор</th>
<th>{% trans 'Sub' %}</th>
<th>{% trans 'Sum of pay' %}</th>
<th>{% trans 'Comment' %}</th>
<th>{% trans 'Date of make' %}</th>
<th>{% trans 'Author' %}</th>
</tr>
</thead>
<tbody>
@ -38,7 +39,7 @@
{% empty %}
<tr>
<td colspan="7">
Нет должников
{% trans 'Debts not found' %}
</td>
</tr>
{% endfor %}

35
abonapp/templates/abonapp/editAbon.html

@ -1,52 +1,53 @@
{% extends request.is_ajax|yesno:'nullcont.htm,abonapp/ext.htm' %}
{% load i18n %}
{% block content %}
<div class="row">
<div class="col-sm-6">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Изменение абонента</h3>
<h3 class="panel-title">{% trans 'Change subscriber' %}</h3>
</div>
<div class="panel-body">
<form role="form" class="form-horizontal" action="{% url 'abonapp:abon_home' abon_group.id abon.id %}" method="post"> {% csrf_token %}
<div class="form-group-sm">
<label for="id_group" class="col-sm-2 control-label">Группа</label>
<label for="id_group" class="col-sm-2 control-label">{% trans 'User group' %}</label>
<div class="col-sm-10">
{{ form.group }}{{ form.group.errors }}
</div>
</div>
<div class="form-group-sm">
<label for="id_is_active" class="col-sm-2 control-label">Активен</label>
<label for="id_is_active" class="col-sm-2 control-label">{% trans 'Is active' %}</label>
<div class="col-sm-10">
{{ form.is_active }}
</div>
</div>
<div class="form-group-sm">
<label for="id_username" class="col-sm-2 control-label">Логин</label>
<label for="id_username" class="col-sm-2 control-label">{% trans 'login' %}</label>
<div class="col-sm-10">
{{ form.username }}{{ form.username.errors }}
</div>
</div>
<div class="form-group-sm">
<label for="id_fio" class="col-sm-2 control-label">ФИО</label>
<label for="id_fio" class="col-sm-2 control-label">{% trans 'fio' %}</label>
<div class="col-sm-10">
{{ form.fio }}{{ form.fio.errors }}
</div>
</div>
<div class="form-group-sm">
<label for="id_telephone" class="col-sm-2 control-label">Телефон</label>
<label for="id_telephone" class="col-sm-2 control-label">{% trans 'Telephone' %}</label>
<div class="col-sm-10">
{{ form.telephone }}{{ form.telephone.errors }}
</div>
</div>
<div class="form-group-sm">
<label for="id_street" class="col-sm-2 control-label">Улица</label>
<label for="id_street" class="col-sm-2 control-label">{% trans 'Street' %}</label>
<div class="col-sm-10">
{{ form.street }}{{ form.street.errors }}
@ -54,7 +55,7 @@
</div>
<div class="form-group-sm">
<label for="id_house" class="col-sm-2 control-label">Дом</label>
<label for="id_house" class="col-sm-2 control-label">{% trans 'House' %}</label>
<div class="col-sm-10">
{{ form.house }}{{ form.house.errors }}
@ -62,21 +63,21 @@
</div>
<div class="form-group-sm">
<label for="id_ip" class="col-sm-2 control-label">IP Адрес</label>
<label for="id_ip" class="col-sm-2 control-label">{% trans 'Ip Address' %}</label>
<div class="col-sm-10">
<input type="text" value="{{ ip|default:'' }}" class="form-control" name="ip" placeholder="192.168.0.101" pattern="^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"/>
</div>
</div>
<div class="form-group-sm">
<label for="id_password" class="col-sm-2 control-label">Пароль</label>
<label for="id_password" class="col-sm-2 control-label">{% trans 'Password' %}</label>
<div class="col-sm-10">
{{ form.password }}{{ form.password.errors }}
</div>
</div>
<div class="form-group-sm">
<label for="id_description" class="col-sm-2 control-label">Комментарий</label>
<label for="id_description" class="col-sm-2 control-label">{% trans 'Comment' %}</label>
<div class="col-sm-10">
{{ form.description }}{{ form.description.errors }}
</div>
@ -85,7 +86,7 @@
<div class="form-group-sm">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary btn-sm">
<span class="glyphicon glyphicon-save"></span> Сохранить
<span class="glyphicon glyphicon-save"></span> {% trans 'Save' %}
</button>
</div>
</div>
@ -98,25 +99,25 @@
<div class="col-sm-6">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Паспортные данные</h3>
<h3 class="panel-title">{% trans 'Passport information' %}</h3>
</div>
<div class="panel-body">
<form role="form" class="form-horizontal" action="" method="get">
<div class="form-group-sm">
<label for="pasp_num" class="col-sm-3 control-label">Серия пас.</label>
<label for="pasp_num" class="col-sm-3 control-label">{% trans 'Pasport serial' %}</label>
<div class="col-sm-9">
<input type="text" name="pasp_num" class="form-control" id="pasp_num"/>
</div>
</div>
<div class="form-group-sm">
<label for="pasp_sr" class="col-sm-3 control-label">Номер пас.</label>
<label for="pasp_sr" class="col-sm-3 control-label">{% trans 'Pasport number' %}</label>
<div class="col-sm-9">
<input type="text" name="pasp_sr" class="form-control" id="pasp_sr"/>
</div>
</div>
<div class="form-group-sm">
<label for="wr" class="col-sm-3 control-label">Кем выдан</label>
<label for="wr" class="col-sm-3 control-label">{% trans 'Distributor' %}</label>
<div class="col-sm-9">
<input type="text" name="wr" class="form-control" id="wr"/>
</div>
@ -125,7 +126,7 @@
<div class="form-group-sm">
<div class="col-sm-offset-3 col-sm-9">
<button type="submit" class="btn btn-primary btn-sm">
<span class="glyphicon glyphicon-save"></span> Сохранить
<span class="glyphicon glyphicon-save"></span> {% trans 'Save' %}
</button>
</div>
</div>

21
abonapp/templates/abonapp/ext.htm

@ -1,9 +1,10 @@
{% 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' %}">Группы абонентов</a></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">{{ abon.fio }}</li>
</ol>
@ -11,9 +12,9 @@
{% include 'message_block.html' %}
<div class="page-header">
<h2>{{ abon.fio|default:"Имя абонента" }}
<small>Балланс <i class="glyphicon glyphicon-ruble"></i>
<b>{{ abon.ballance }}</b> руб
<h2>{{ abon.fio|default:_("Long name") }}
<small>{% trans 'Ballance' %} <i class="glyphicon glyphicon-ruble"></i>
<b>{{ abon.ballance }}</b>
</small>
</h2>
</div>
@ -22,34 +23,34 @@
{% url 'abonapp:abon_home' abon_group.id abon.id as abon_home %}
<li{% if abon_home == request.path %} class="active"{% endif %}>
<a href="{{ abon_home }}">Информация абонента</a>
<a href="{{ abon_home }}">{% trans 'Sub information' %}</a>
</li>
{% url 'abonapp:abon_services' abon_group.id abon.id as abserv %}
<li{% if abserv == request.path %} class="active"{% endif %}>
<a href="{{ abserv }}">Услуги</a>
<a href="{{ abserv }}">{% trans 'Services' %}</a>
</li>
{% if perms.abonapp.can_add_ballance %}
{% url 'abonapp:abon_amount' abon_group.id abon.id as abamount %}
<li{% if abamount == request.path %} class="active"{% endif %}>
<a href="{{ abamount }}">Пополнить счёт</a>
<a href="{{ abamount }}">{% trans 'Fill account' %}</a>
</li>
{% endif %}
{% url 'abonapp:abon_debts' abon_group.id abon.id as abondebts %}
<li{% if abondebts == request.path %} class="active"{% endif %}>
<a href="{{ abondebts }}">Долги</a>
<a href="{{ abondebts }}">{% trans 'Debts' %}</a>
</li>
{% url 'abonapp:abon_phistory' abon_group.id abon.id as abphist %}
<li{% if abphist == request.path %} class="active"{% endif %}>
<a href="{{ abphist }}">История платежей</a>
<a href="{{ abphist }}">{% trans 'Payment history' %}</a>
</li>
{% url 'abonapp:task_log' abon_group.id abon.id as abtasklog %}
<li{% if abtasklog == request.path %} class="active"{% endif %}>
<a href="{{ abtasklog }}">История задач</a>
<a href="{{ abtasklog }}">{% trans 'History of tasks' %}</a>
</li>
</ul>

19
abonapp/templates/abonapp/group_list.html

@ -1,13 +1,14 @@
{% extends 'base.html' %}
{% load i18n %}
{% block main %}
<ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li>
<li class="active">Группы абонентов</li>
<li class="active">{% trans 'User groups' %}</li>
</ol>
<h3>Группы абонентов</h3>
<h3>{% trans 'User groups' %}</h3>
{% include 'message_block.html' %}
@ -18,14 +19,14 @@
<th width="50">#</th>
<th>
<a href="{% url 'abonapp:group_list' %}?order_by=title&dir={{ dir|default:"down" }}">
Название группы
{% trans 'Group title' %}
</a>
{% if order_by == 'title' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th width="100">
Количество абонентов
{% trans 'Number of subscribers' %}
</th>
<th width="100">Do</th>
<th width="100">#</th>
</tr>
</thead>
<tbody>
@ -47,7 +48,7 @@
</tr>
{% empty %}
<tr>
<td colspan="4"><a href="#">Ещё нет групп</a></td>
<td colspan="4"><a href="#">{% trans 'Groups was not found' %}</a></td>
</tr>
{% endfor %}
</tbody>
@ -56,14 +57,14 @@
<td colspan="4" class="btn-group">
{% if perms.abonapp.add_abongroup %}
<a href="{% url 'abonapp:add_group' %}" class="btn btn-success btn-sm">
<span class="glyphicon glyphicon-plus"></span> Создать группу
<span class="glyphicon glyphicon-plus"></span> {% trans 'Add group' %}
</a>
{% endif %}
<a href="{% url 'abonapp:log' %}" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-record"></span> Действия абонентов
<span class="glyphicon glyphicon-record"></span> {% trans 'Subscribers actions' %}
</a>
<a href="{% url 'abonapp:debtors' %}" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-exclamation-sign"></span> Список должников
<span class="glyphicon glyphicon-exclamation-sign"></span> {% trans 'List of debtors' %}
</a>
</td>
</tr>

21
abonapp/templates/abonapp/invoiceForPayment.html

@ -1,16 +1,17 @@
{% extends request.is_ajax|yesno:'nullcont.htm,abonapp/ext.htm' %}
{% load i18n %}
{% block content %}
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>Статус</th>
<th>Месяц</th>
<th>Стоимость</th>
<th>Комментарий</th>
<th>Дата создания</th>
<th>Дата оплаты</th>
<th>Назначил</th>
<th>{% trans 'Pay status' %}</th>
<th>{% trans 'Month' %}</th>
<th>{% trans 'Sum' %}</th>
<th>{% trans 'Comment' %}</th>
<th>{% trans 'Date of make' %}</th>
<th>{% trans 'Date of payment' %}</th>
<th>{% trans 'Author of payment' %}</th>
</tr>
</thead>
<tbody>
@ -29,14 +30,14 @@
{% if inv.date_pay %}
{{ inv.date_pay|date:"D d M Y H:i:s" }}
{% else %}
{{ inv.status|yesno:'Создан оплаченным,Ещё не оплачено' }}
{{ inv.status|yesno:_('Created paid,Not yet paid') }}
{% endif %}
</td>
<td><a href="{% url 'acc_app:other_profile' inv.author.id %}" target="_blank">{{ inv.author.username }}</a></td>
</tr>
{% empty %}
<tr>
<td colspan="7">Назначенные платежи отсутствуют</td>
<td colspan="7">{% trans 'Receipts not found' %}</td>
</tr>
{% endfor %}
</tbody>
@ -45,7 +46,7 @@
<tr>
<th colspan="7">
<a href="{% url 'abonapp:add_invoice' abon_group.id abon.id %}" class="btn btn-success btn-sm">
<span class="glyphicon glyphicon-plus"></span> Добавить
<span class="glyphicon glyphicon-plus"></span> {% trans 'Add debt' %}
</a>
</th>
</tr>

22
abonapp/templates/abonapp/log.html

@ -1,24 +1,25 @@
{% extends 'base.html' %}
{% load i18n %}
{% block main %}
<ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li>
<li><a href="{% url 'abonapp:group_list' %}">Группы абонентов</a></li>
<li class="active">История действий абонентов</li>
<li><a href="{% url 'abonapp:group_list' %}">{% trans 'User groups' %}</a></li>
<li class="active">{% trans 'Subscribers actions' %}</li>
</ol>
{% include 'message_block.html' %}
<h3>История абонента</h3>
<h3>{% trans 'History of subscriber' %}</h3>
<div class="table-responsive">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>Сумма</th>
<th>Абонент</th>
<th>Комментарий</th>
<th width="250">Время</th>
<th width="150">Автор</th>
<th>{% trans 'Sum' %}</th>
<th>{% trans 'Sub' %}</th>
<th>{% trans 'Comment' %}</th>
<th width="250">{% trans 'Date' %}</th>
<th width="150">{% trans 'Author' %}</th>
</tr>
</thead>
<tbody>
@ -36,17 +37,14 @@
</tr>
{% empty %}
<tr>
<td colspan="5">Нет событий</td>
<td colspan="5">{% trans 'Actions not found' %}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% include 'toolbar_page.html' with pag=logs %}
{% endblock %}

13
abonapp/templates/abonapp/payHistory.html

@ -1,14 +1,15 @@
{% extends request.is_ajax|yesno:'nullcont.htm,abonapp/ext.htm' %}
{% load i18n %}
{% block content %}
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>Абонент</th>
<th>Сумма</th>
<th>Дата транзакции</th>
<th>Автор платежа</th>
<th>Комментарий</th>
<th>{% trans 'Sub' %}</th>
<th>{% trans 'Sum' %}</th>
<th>{% trans 'Date of payment' %}</th>
<th>{% trans 'Author of payment' %}</th>
<th>{% trans 'Comment' %}</th>
</tr>
</thead>
<tbody>
@ -22,7 +23,7 @@
</tr>
{% empty %}
<tr>
<td colspan="5">История платежей пуста</td>
<td colspan="5">{% trans 'Payment history is empty' %}</td>
</tr>
{% endfor %}
</tbody>

37
abonapp/templates/abonapp/peoples.html

@ -1,59 +1,60 @@
{% extends 'base.html' %}
{% load i18n %}
{% block main %}
<ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li>
<li><a href="{% url 'abonapp:group_list' %}">Группы абонентов</a></li>
<li><a href="{% url 'abonapp:group_list' %}">{% trans 'User groups' %}</a></li>
<li class="active">{{ abon_group.title }}</li>
</ol>
{% include 'message_block.html' %}
<h3>Народ в выбранной группе</h3>
<h3>{% trans 'The people in the selected group' %}</h3>
<div class="table-responsive">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>
<a href="{% url 'abonapp:people_list' abon_group.id %}?order_by=username&dir={{ dir|default:"down" }}">
Абонент
{% trans 'Sub' %}
</a>
{% if order_by == 'username' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th>
<a href="{% url 'abonapp:people_list' abon_group.id %}?order_by=ip_address&dir={{ dir|default:"down" }}">
IP Адрес
{% trans 'Ip address' %}
</a>
{% if order_by == 'ip_address' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th>
<a href="{% url 'abonapp:people_list' abon_group.id %}?order_by=fio&dir={{ dir|default:"down" }}">
ФИО
{% trans 'fio' %}
</a>
{% if order_by == 'fio' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th>
<a herf="{% url 'abonapp:people_list' abon_group.id %}?order_by=street&dir={{ dir|default:"down" }}">
Улица
{% trans 'Street' %}
</a>
{% if order_by == 'street' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th width="100">
<a herf="{% url 'abonapp:people_list' abon_group.id %}?order_by=house&dir={{ dir|default:"down" }}">
дом/кв
{% trans 'House' %}/{% trans 'Apartment' %}
</a>
{% if order_by == 'house' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th width="150">Телефон</th>
<th width="150">Тариф</th>
<th width="150">{% trans 'Telephone' %}</th>
<th width="150">{% trans 'Service' %}</th>
<th width="50">
<a href="{% url 'abonapp:people_list' abon_group.id %}?order_by=ballance&dir={{ dir|default:"down" }}">
Балланс
{% trans 'Ballance' %}
</a>
{% if order_by == 'ballance' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th>
<th width="100">Do</th>
<th width="100">#</th>
</tr>
</thead>
<tbody>
@ -64,10 +65,10 @@
<tr class="danger">
{% endif %}
<td><a href="{% url 'abonapp:abon_home' human.group.id human.id %}">{{ human.username }}</a></td>
<td>{{ human.ip_address|default:'Не назначен' }}</td>
<td>{{ human.ip_address|default:_('Not assigned') }}</td>
<td>{{ human.fio }}</td>
<td>{{ human.street|default:'Не указан' }}</td>
<td>{{ human.house|default:'Не указан' }}</td>
<td>{{ human.street|default:_('Not assigned') }}</td>
<td>{{ human.house|default:_('Not assigned') }}</td>
<td><a href="tel:{{ human.telephone }}">{{ human.telephone }}</a></td>
<td>
{% if human.active_tariff %}
@ -91,9 +92,9 @@
{% empty %}
<tr>
<td colspan="9">
Ещё нет абонентов.
{% trans 'Subscribers not found' %}.
{% if perms.abonapp.add_abon %}
<a href="{% url 'abonapp:add_abon' abon_group.id %}">Добавить</a>
<a href="{% url 'abonapp:add_abon' abon_group.id %}">{% trans 'Add abon' %}</a>
{% endif %}
</td>
</tr>
@ -104,11 +105,11 @@
<td colspan="9" class="btn-group">
{% if perms.abonapp.add_abon %}
<a href="{% url 'abonapp:add_abon' abon_group.id %}" class="btn btn-sm btn-default" title="Добавить">
<span class="glyphicon glyphicon-plus"></span> Добавить абонента
<span class="glyphicon glyphicon-plus"></span> {% trans 'Add abon' %}
</a>
{% endif %}
<a href="{% url 'abonapp:update_nas' abon_group.id %}" class="btn btn-sm btn-default">
<span class="glyphicon glyphicon-refresh"></span> Обновить абонентов в NAS
<span class="glyphicon glyphicon-refresh"></span> {% trans 'Refresh subscribers on NAS' %}
</a>
</td>
</tr>

36
abonapp/templates/abonapp/services.html

@ -1,17 +1,18 @@
{% extends request.is_ajax|yesno:'nullcont.htm,abonapp/ext.htm' %}
{% load i18n %}
{% block content %}
<legend>Купленные абонентом услуги (назначенные тарифные планы)</legend>
<legend>{% trans 'Services of subscriber' %}</legend>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th width="50">Приоритет</th>
<th>Тариф</th>
<th>Стоимость</th>
<th>Входящая скорость</th>
<th>Исходящая скорость</th>
<th>Время действия</th>
<th>Ред.</th>
<th width="50">{% trans 'Priority' %}</th>
<th>{% trans 'Service' %}</th>
<th>{% trans 'Sum' %}</th>
<th>{% trans 'Input speed' %}</th>
<th>{% trans 'Output speed' %}</th>
<th>{% trans 'Time of action' %}</th>
<th>{% trans 'Edit' %}</th>
</tr>
</thead>
@ -40,7 +41,7 @@
{% if perms.abonapp.can_activate_service %}
{% if not active_abontariff_id %}
<a href="{% url 'abonapp:activate_service' abon_group.id abon.id trf.id %}"
class="btn btn-success btn-sm" title="Активировать услугу">
class="btn btn-success btn-sm" title="{% trans 'Activate service' %}">
<i class="glyphicon glyphicon-shopping-cart"></i>
</a>
{% endif %}
@ -48,37 +49,36 @@
<!-- "{ % url 'abonapp:chpriority_tariff' abon_group.id abon.id % }?t={ { trf.id } }&a=up" -->
<a href="#"
class="btn btn-default btn-sm disabled" title="Повысить приоритет">
class="btn btn-default btn-sm disabled" title="{% trans 'Priority up' %}">
<i class="glyphicon glyphicon-hand-up"></i>
</a>
<!-- "{ % url 'abonapp:chpriority_tariff' abon_group.id abon.id % }?t={ { trf.id } }&a=down" -->
<a href="#"
class="btn btn-default btn-sm disabled" title="Понизить приоритет">
class="btn btn-default btn-sm disabled" title="{% trans 'Priority down' %}">
<i class="glyphicon glyphicon-hand-down"></i>
</a>
{% if perms.abonapp.delete_abontariff %}
<a href="{% url 'abonapp:unsubscribe_service' abon_group.id abon.id trf.id %}"
class="btn btn-danger btn-sm" title="Удалить услугу">
class="btn btn-danger btn-sm" title="{% trans 'Delete service' %}">
<i class="glyphicon glyphicon-remove"></i>
</a>
{% endif %}
</td>
{% else %}
<td>
<a href="{% url 'abonapp:compl_srv' abon_group.id abon.id trf.id %}"
title="Завершить услугу досрочно" class="btn btn-danger btn-sm">
<i class="glyphicon glyphicon-remove"></i> Завершить
<a href="{% url 'abonapp:compl_srv' abon_group.id abon.id trf.id %}" class="btn btn-danger btn-sm">
<i class="glyphicon glyphicon-remove"></i> {% trans 'Finish service' %}
</a>
</td>
{% endif %}
</tr>
{% empty %}
<tr>
<td colspan="7">Нет подключённых абоненту услуг.
<td colspan="7">{% trans 'Services of subscribers not found' %}.
{% if perms.abonapp.can_buy_tariff %}
<a href="{% url 'abonapp:pick_tariff' abon_group.id abon.id %}" class="lgtbx">Купить</a>
<a href="{% url 'abonapp:pick_tariff' abon_group.id abon.id %}" class="lgtbx">{% trans 'Buy' %}</a>
{% endif %}
</td>
</tr>
@ -89,7 +89,7 @@
<tr>
<th colspan="7">
<a href="{% url 'abonapp:pick_tariff' abon_group.id abon.id %}" class="btn btn-sm btn-success">
<span class="glyphicon glyphicon-plus"></span> Купить услугу
<span class="glyphicon glyphicon-plus"></span> {% trans 'Buy service' %}
</a>
</th>
</tr>

17
abonapp/templates/abonapp/task_log.html

@ -1,15 +1,16 @@
{% extends request.is_ajax|yesno:'nullcont.htm,abonapp/ext.htm' %}
{% load i18n %}
{% block content %}
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>Автор</th>
<th>Исполнители</th>
<th>Комментарий</th>
<th>Состояние</th>
<th>Тип</th>
<th>Дата создания</th>
<th>{% trans 'Author' %}</th>
<th>{% trans 'Recipients' %}</th>
<th>{% trans 'Comment' %}</th>
<th>{% trans 'State' %}</th>
<th>{% trans 'Type' %}</th>
<th>{% trans 'Date of make' %}</th>
</tr>
</thead>
<tbody>
@ -20,7 +21,7 @@
{% for rec in task.recipients.all %}
<a href="{% url 'acc_app:other_profile' rec.id %}">{{ rec.get_short_name }}</a>
{% empty %}
Нет исполнителей
{% trans 'Recipients not found' %}
{% endfor %}
</td>
<td>{{ task.descr|default:'&mdash;' }}</td>
@ -30,7 +31,7 @@
</tr>
{% empty %}
<tr>
<td colspan="6">Нет задач</td>
<td colspan="6">{% trans 'Tasks not found' %}</td>
</tr>
{% endfor %}
</tbody>

43
abonapp/templates/abonapp/viewAbon.html

@ -1,4 +1,5 @@
{% extends request.is_ajax|yesno:'nullcont.htm,abonapp/ext.htm' %}
{% load i18n %}
{% block content %}
<div class="row">
@ -6,51 +7,51 @@
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Просмотр абонента</h3>
<h3 class="panel-title">{% trans 'View the subscriber' %}</h3>
</div>
<div class="panel-body">
<table class="table borderbot">
<tbody>
<tr>
<td>Группа</td>
<td>{% trans 'User group' %}</td>
<td>
<i>{{ abon.group|default:'&lt;нет&gt;' }}</i>
<i>{{ abon.group|default:_('Not assigned') }}</i>
</td>
</tr>
<tr>
<td>Активен</td>
<td>{% trans 'Is active' %}</td>
<td>
<i>{{ abon.is_active|yesno:'Да,Нет' }}</i>
<i>{{ abon.is_active|yesno:_('yes,no') }}</i>
</td>
</tr>
<tr>
<td>Логин</td>
<td><i>{{ abon.username|default:'&lt;нет&gt;' }}</i></td>
<td>{% trans 'login' %}</td>
<td><i>{{ abon.username|default:_('Not assigned') }}</i></td>
</tr>
<tr>
<td>ФИО</td>
<td><i>{{ abon.fio|default:'&lt;нет&gt;' }}</i></td>
<td>{% trans 'fio' %}</td>
<td><i>{{ abon.fio|default:_('Not assigned') }}</i></td>
</tr>
<tr>
<td>Телефон</td>
<td><i>{{ abon.telephone|default:'&lt;нет&gt;' }}</i></td>
<td>{% trans 'Telephone' %}</td>
<td><i>{{ abon.telephone|default:_('Not assigned') }}</i></td>
</tr>
<tr>
<td>Улица</td>
<td>{% trans 'Street' %}</td>
<td>
<i>{{ abon.street|default:'&lt;нет&gt;' }}</i>
<i>{{ abon.street|default:_('Not assigned') }}</i>
</td>
</tr>
<tr>
<td>Дом</td>
<td><i>{{ abon.house|default:'&lt;не указан&gt;' }}</i></td>
<td>{% trans 'House' %}</td>
<td><i>{{ abon.house|default:_('Not assigned') }}</i></td>
</tr>
<tr>
<td>IP Адрес</td>
<td><i>{{ abon.ip_address|default:'&lt;не назначен&gt;' }}</i></td>
<td>{% trans 'Ip Address' %}</td>
<td><i>{{ abon.ip_address|default:_('Not assigned') }}</i></td>
</tr>
<tr>
<td>Пароль</td>
<td>{% trans 'Password' %}</td>
<td><i>{{ passw }}</i></td>
</tr>
</tbody>
@ -63,17 +64,17 @@
<div class="col-sm-6">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Паспортные данные (статичная)</h3>
<h3 class="panel-title">{% trans 'Passport information' %}</h3>
</div>
<div class="panel-body">
<table class="table borderbot">
<tbody>
<tr>
<td>Серия пас.</td>
<td>{% trans 'Pasport serial' %}</td>
<td><i>67 54 937238746</i></td>
</tr>
<tr>
<td>Кем выдан</td>
<td>{% trans 'Distributor' %}</td>
<td><i>ОСУО Всякое название</i></td>
</tr>
<tr>

57
abonapp/views.py

@ -8,6 +8,7 @@ from django.contrib.auth.decorators import login_required, permission_required
from django.utils import timezone
from django.http import HttpResponse, Http404
from django.contrib import messages
from django.utils.translation import ugettext as _
from tariff_app.models import Tariff
from agent import NasFailedResult, Transmitter, NasNetworkError
@ -46,10 +47,10 @@ def addgroup(request):
frm = forms.AbonGroupForm(request.POST)
if frm.is_valid():
frm.save()
messages.success(request, 'Группа успешно создана')
messages.success(request, _('create group success msg'))
return redirect('abonapp:group_list')
else:
messages.error(request, 'Исправьте ошибки')
messages.error(request, _('fix form errors'))
except NasFailedResult as e:
messages.error(request, e)
except NasNetworkError as e:
@ -84,7 +85,7 @@ def delgroup(request):
try:
agd = mydefs.safe_int(request.GET.get('id'))
get_object_or_404(models.AbonGroup, id=agd).delete()
messages.success(request, 'Группа успешно удалена')
messages.success(request, _('delete group success msg'))
return mydefs.res_success(request, 'abonapp:group_list')
except NasFailedResult as e:
messages.error(request, e)
@ -104,10 +105,10 @@ def addabon(request, gid):
frm = forms.AbonForm(request.POST, initial={'group': group})
if frm.is_valid():
abon = frm.save()
messages.success(request, 'Абонент создан')
messages.success(request, _('create abon success msg'))
return redirect('abonapp:abon_home', group.id, abon.pk)
else:
messages.error(request, 'Некоторые поля заполнены не правильно, проверте ещё раз')
messages.error(request, _('fix form errors'))
except IntegrityError as e:
messages.error(request, e)
@ -121,7 +122,7 @@ def addabon(request, gid):
if not frm:
frm = forms.AbonForm(initial={
'group': group,
'address': 'Адрес',
'address': _('Address'),
'is_active': False
})
@ -143,20 +144,20 @@ def delentity(request):
abon = get_object_or_404(models.Abon, id=uid)
gid = abon.group.id
abon.delete()
messages.success(request, 'Абонент успешно удалён')
messages.success(request, _('delete abon success msg'))
return mydefs.res_success(request, resolve_url('abonapp:people_list', gid=gid))
elif typ == 'g':
if not request.user.has_perm('abonapp.delete_abongroup'):
raise PermissionDenied
get_object_or_404(models.AbonGroup, id=uid).delete()
messages.success(request, 'Группа успешно удалёна')
messages.success(request, _('delete group success msg'))
return mydefs.res_success(request, 'abonapp:group_list')
else:
messages.warning(request, 'Не понятно что удалять')
messages.warning(request, _('I not know what to delete'))
except NasNetworkError as e:
messages.error(request, e)
except NasFailedResult as e:
messages.error(request, "NAS сказал: '%s'" % e)
messages.error(request, _("NAS says: '%s'") % e)
return redirect('abonapp:group_list')
@ -169,12 +170,12 @@ def abonamount(request, gid, uid):
abonid = mydefs.safe_int(request.POST.get('abonid'))
if abonid == int(uid):
amnt = mydefs.safe_float(request.POST.get('amount'))
abon.add_ballance(request.user, amnt, comment='Пополнение счёта через админку')
abon.add_ballance(request.user, amnt, comment=_('fill account through admin side'))
abon.save(update_fields=['ballance'])
messages.success(request, 'Счёт успешно пополнен на %d' % amnt)
messages.success(request, _('Account filled successfully on %.2f') % amnt)
return redirect('abonapp:abon_home', gid=gid, uid=uid)
else:
messages.error(request, 'Не могу разобрать id абонента')
messages.error(request, _('I not know the account id'))
except NasNetworkError as e:
messages.error(request, e)
except NasFailedResult as e:
@ -246,18 +247,14 @@ def abonhome(request, gid, uid):
else:
abon.ip_address = None
frm.save()
messages.success(request, 'Абонент успешно сохранён')
messages.success(request, _('edit abon success msg'))
else:
messages.warning(request, 'Не правильные значения, проверте поля и попробуйте ещё')
messages.warning(request, _('fix form errors'))
else:
passw = models.AbonRawPassword.objects.get(account=abon).passw_text
frm = forms.AbonForm(instance=abon, initial={'password': passw})
except IntegrityError as e:
messages.error(request, 'Проверте введённые вами значения, скорее всего такой ip уже у кого-то есть. А вообще: %s' % e)
frm = forms.AbonForm(instance=abon, initial={'password': passw})
except Http404:
messages.error(request, 'Ip адрес не найден в списке IP адресов')
messages.error(request, _('Ip address already exist. %s') % e)
frm = forms.AbonForm(instance=abon, initial={'password': passw})
except NasFailedResult as e:
@ -265,9 +262,9 @@ def abonhome(request, gid, uid):
except NasNetworkError as e:
messages.error(request, e)
except IpPoolItem.DoesNotExist:
messages.error(request, 'Указанный вами ip отсутствует в ip pool')
messages.error(request, _('Ip address not found'))
except models.AbonRawPassword.DoesNotExist:
messages.warning(request, 'Для абонента не задан пароль, он не сможет войти в учётку')
messages.warning(request, _('User has not have password, and cannot login'))
if request.user.has_perm('abonapp.change_abon'):
return render(request, 'abonapp/editAbon.html', {
@ -314,7 +311,7 @@ def add_invoice(request, gid, uid):
newinv.author = request.user
newinv.save()
messages.success(request, 'Необходимый платёж создан')
messages.success(request, _('Receipt has been created'))
return redirect('abonapp:abon_home', gid=gid, uid=uid)
except NasNetworkError as e:
@ -341,10 +338,10 @@ def pick_tariff(request, gid, uid):
cd = frm.cleaned_data
abon.pick_tariff(cd['tariff'], request.user)
#abon.save()
messages.success(request, 'Тариф успешно выбран')
messages.success(request, _('Tariff has been picked'))
return redirect('abonapp:abon_services', gid=gid, uid=abon.id)
else:
messages.error(request, 'Что-то не так при покупке услуги, проверьте и попробуйте ещё')
messages.error(request, _('fix form errors'))
else:
frm = forms.BuyTariff()
except models.LogicError as e:
@ -398,10 +395,10 @@ def complete_service(request, gid, uid, srvid):
if request.POST.get('finish_confirm') == 'yes':
# удаляем запись о текущей услуге.
abtar.delete()
messages.success(request, 'Услуга успешно завершена')
messages.success(request, _('Service has been finished successfully'))
return redirect('abonapp:abon_services', gid, uid)
else:
raise models.LogicError('Действие не подтверждено')
raise models.LogicError(_('Not confirmed'))
time_use = mydefs.RuTimedelta(timezone.now() - abtar.time_start)
@ -430,10 +427,10 @@ def activate_service(request, gid, uid, srvid):
try:
if request.method == 'POST':
if request.POST.get('finish_confirm') != 'yes':
return HttpResponse('<h1>Запрос не подтверждён</h1>')
return HttpResponse(_('Not confirmed'))
abtar.activate(request.user)
messages.success(request, 'Услуга активирована')
messages.success(request, _('Service has been activated successfully'))
return redirect('abonapp:abon_services', gid, uid)
except NasFailedResult as e:
@ -458,7 +455,7 @@ def activate_service(request, gid, uid, srvid):
def unsubscribe_service(request, gid, uid, srvid):
try:
get_object_or_404(models.AbonTariff, id=int(srvid)).delete()
messages.success(request, 'Абонент отвязан от услуги')
messages.success(request, _('User has been detached from service'))
except NasFailedResult as e:
messages.error(request, e)
except NasNetworkError as e:

Loading…
Cancel
Save