|
|
@ -4,6 +4,8 @@ from django.contrib.gis.shortcuts import render_to_text |
|
|
from django.shortcuts import render, get_object_or_404, redirect |
|
|
from django.shortcuts import render, get_object_or_404, redirect |
|
|
from django.contrib import messages |
|
|
from django.contrib import messages |
|
|
from django.utils import timezone |
|
|
from django.utils import timezone |
|
|
|
|
|
from django.db.transaction import atomic |
|
|
|
|
|
from django.utils.translation import ugettext_lazy as _ |
|
|
|
|
|
|
|
|
from abonapp.models import AbonLog, AbonTariff, InvoiceForPayment, Abon |
|
|
from abonapp.models import AbonLog, AbonTariff, InvoiceForPayment, Abon |
|
|
from tariff_app.models import Tariff |
|
|
from tariff_app.models import Tariff |
|
|
@ -41,16 +43,17 @@ def services(request): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
@login_required |
|
|
|
|
|
@atomic |
|
|
def buy_service(request, srv_id): |
|
|
def buy_service(request, srv_id): |
|
|
abon = get_object_or_404(Abon, pk=request.user.pk) |
|
|
abon = get_object_or_404(Abon, pk=request.user.pk) |
|
|
service = get_object_or_404(Tariff, pk=srv_id) |
|
|
service = get_object_or_404(Tariff, pk=srv_id) |
|
|
try: |
|
|
try: |
|
|
current_service = abon.active_tariff() |
|
|
current_service = abon.active_tariff() |
|
|
if request.method == 'POST': |
|
|
if request.method == 'POST': |
|
|
abon.pick_tariff(service, request.user, 'Покупка тарифного плана через личный кабинет, тариф "%s"' |
|
|
|
|
|
% service) |
|
|
|
|
|
messages.success(request, 'Вы подписались на новую услугу. Она встала на очередь подключений. ' |
|
|
|
|
|
'Когда закончится ваша текущая услуга, то включится эта') |
|
|
|
|
|
|
|
|
abon.pick_tariff(service, request.user, _("Buy the service via user side, service '%s'") |
|
|
|
|
|
% service) |
|
|
|
|
|
messages.success(request, _('You are subscribed on new service. ' |
|
|
|
|
|
'That will enable service when your current service has expired.')) |
|
|
else: |
|
|
else: |
|
|
return render_to_text('clientsideapp/modal_service_buy.html', { |
|
|
return render_to_text('clientsideapp/modal_service_buy.html', { |
|
|
'service': service, |
|
|
'service': service, |
|
|
@ -64,6 +67,7 @@ def buy_service(request, srv_id): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
@login_required |
|
|
|
|
|
@atomic |
|
|
def complete_service(request, srv_id): |
|
|
def complete_service(request, srv_id): |
|
|
abtar = get_object_or_404(AbonTariff, id=srv_id) |
|
|
abtar = get_object_or_404(AbonTariff, id=srv_id) |
|
|
service = abtar.tariff |
|
|
service = abtar.tariff |
|
|
@ -75,15 +79,15 @@ def complete_service(request, srv_id): |
|
|
if finish_confirm == 'yes': |
|
|
if finish_confirm == 'yes': |
|
|
# удаляем запись о текущей услуге. |
|
|
# удаляем запись о текущей услуге. |
|
|
abtar.delete() |
|
|
abtar.delete() |
|
|
messages.success(request, 'Услуга "%s" успешно завершена' % service.title) |
|
|
|
|
|
|
|
|
messages.success(request, _("Service '%s' has been finished") % service.title) |
|
|
AbonLog.objects.create( |
|
|
AbonLog.objects.create( |
|
|
abon=abtar.abon, |
|
|
abon=abtar.abon, |
|
|
amount=0.0, |
|
|
amount=0.0, |
|
|
author=abtar.abon, |
|
|
author=abtar.abon, |
|
|
comment='Досрочное завершение услуги "%s" из личного кабинета' % service.title |
|
|
|
|
|
|
|
|
comment=_("Early terminated service '%s' via client side") % service.title |
|
|
) |
|
|
) |
|
|
else: |
|
|
else: |
|
|
messages.error(request, 'Действие не подтверждено') |
|
|
|
|
|
|
|
|
messages.error(request, _('Act is not confirmed')) |
|
|
else: |
|
|
else: |
|
|
time_use = RuTimedelta(timezone.now() - abtar.time_start) |
|
|
time_use = RuTimedelta(timezone.now() - abtar.time_start) |
|
|
return render_to_text('clientsideapp/modal_complete_service.html', { |
|
|
return render_to_text('clientsideapp/modal_complete_service.html', { |
|
|
@ -96,11 +100,12 @@ def complete_service(request, srv_id): |
|
|
except NasFailedResult as e: |
|
|
except NasFailedResult as e: |
|
|
messages.error(request, e) |
|
|
messages.error(request, e) |
|
|
except NasNetworkError: |
|
|
except NasNetworkError: |
|
|
messages.error(request, 'Временные неполадки') |
|
|
|
|
|
|
|
|
messages.error(request, _('Temporary network bug')) |
|
|
return redirect('client_side:services') |
|
|
return redirect('client_side:services') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
@login_required |
|
|
|
|
|
@atomic |
|
|
def unsubscribe_service(request, srv_id): |
|
|
def unsubscribe_service(request, srv_id): |
|
|
abtar = get_object_or_404(AbonTariff, id=srv_id) |
|
|
abtar = get_object_or_404(AbonTariff, id=srv_id) |
|
|
service = abtar.tariff |
|
|
service = abtar.tariff |
|
|
@ -109,24 +114,25 @@ def unsubscribe_service(request, srv_id): |
|
|
# досрочно завершаем услугу |
|
|
# досрочно завершаем услугу |
|
|
if request.POST.get('finish_confirm') == 'yes': |
|
|
if request.POST.get('finish_confirm') == 'yes': |
|
|
AbonTariff.objects.get(pk=srv_id).delete() |
|
|
AbonTariff.objects.get(pk=srv_id).delete() |
|
|
messages.success(request, 'Вы успешно отписались от услуги, "%s"' % service.title) |
|
|
|
|
|
|
|
|
messages.success(request, _("You has been successfully unsubscribed from service, '%s'") % service.title) |
|
|
else: |
|
|
else: |
|
|
messages.error(request, 'Действие не подтверждено') |
|
|
|
|
|
|
|
|
messages.error(request, _('Act is not confirmed')) |
|
|
else: |
|
|
else: |
|
|
return render_to_text('clientsideapp/modal_unsubscribe_service.html', { |
|
|
return render_to_text('clientsideapp/modal_unsubscribe_service.html', { |
|
|
'abtar': abtar, |
|
|
'abtar': abtar, |
|
|
'service': service |
|
|
'service': service |
|
|
}, request=request) |
|
|
}, request=request) |
|
|
except AbonTariff.DoesNotExist: |
|
|
except AbonTariff.DoesNotExist: |
|
|
messages.error(request, 'Указанная подписка на услугу не найдена') |
|
|
|
|
|
|
|
|
messages.error(request, _('The service was not found')) |
|
|
except NasFailedResult as e: |
|
|
except NasFailedResult as e: |
|
|
messages.error(request, e) |
|
|
messages.error(request, e) |
|
|
except NasNetworkError: |
|
|
except NasNetworkError: |
|
|
messages.error(request, 'Временные неполадки') |
|
|
|
|
|
|
|
|
messages.error(request, _('Temporary network bug')) |
|
|
return redirect('client_side:services') |
|
|
return redirect('client_side:services') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
@login_required |
|
|
|
|
|
@atomic |
|
|
def activate_service(request, srv_id): |
|
|
def activate_service(request, srv_id): |
|
|
abtar = get_object_or_404(AbonTariff, id=srv_id) |
|
|
abtar = get_object_or_404(AbonTariff, id=srv_id) |
|
|
service = abtar.tariff |
|
|
service = abtar.tariff |
|
|
@ -136,9 +142,9 @@ def activate_service(request, srv_id): |
|
|
# активируем услугу |
|
|
# активируем услугу |
|
|
if request.POST.get('finish_confirm') == 'yes': |
|
|
if request.POST.get('finish_confirm') == 'yes': |
|
|
abtar.activate(request.user) |
|
|
abtar.activate(request.user) |
|
|
messages.success(request, 'Услуга "%s" успешно активирована' % service.title) |
|
|
|
|
|
|
|
|
messages.success(request, _("The service '%s' wan successfully activated") % service.title) |
|
|
else: |
|
|
else: |
|
|
messages.error(request, 'Запрос не подтверждён') |
|
|
|
|
|
|
|
|
messages.error(request, _('Act is not confirmed')) |
|
|
return redirect('client_side:services') |
|
|
return redirect('client_side:services') |
|
|
except NasFailedResult as e: |
|
|
except NasFailedResult as e: |
|
|
messages.error(request, e) |
|
|
messages.error(request, e) |
|
|
@ -164,6 +170,7 @@ def debts_list(request): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
@login_required |
|
|
|
|
|
@atomic |
|
|
def debt_buy(request, d_id): |
|
|
def debt_buy(request, d_id): |
|
|
debt = get_object_or_404(InvoiceForPayment, id=d_id) |
|
|
debt = get_object_or_404(InvoiceForPayment, id=d_id) |
|
|
abon = get_object_or_404(Abon, id=request.user.id) |
|
|
abon = get_object_or_404(Abon, id=request.user.id) |
|
|
@ -171,9 +178,9 @@ def debt_buy(request, d_id): |
|
|
try: |
|
|
try: |
|
|
sure = request.POST.get('sure') |
|
|
sure = request.POST.get('sure') |
|
|
if sure != 'on': |
|
|
if sure != 'on': |
|
|
raise LogicError('Вы не уверены что хотите оплатить долг?') |
|
|
|
|
|
|
|
|
raise LogicError(_("Are you not sure that you want buy the service?")) |
|
|
if abon.ballance < debt.amount: |
|
|
if abon.ballance < debt.amount: |
|
|
raise LogicError('Не достаточно средств на счету') |
|
|
|
|
|
|
|
|
raise LogicError(_('Your account have not enough money')) |
|
|
|
|
|
|
|
|
abon.make_pay(request.user, debt.amount) |
|
|
abon.make_pay(request.user, debt.amount) |
|
|
debt.set_ok() |
|
|
debt.set_ok() |
|
|
|