You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

113 lines
4.0 KiB

# -*- coding: utf-8 -*-
from django.contrib.auth.decorators import login_required
from django.contrib.gis.shortcuts import render_to_text
from django.utils.decorators import method_decorator
from django.utils.translation import ugettext as _
from django.shortcuts import render, get_object_or_404, redirect
from django.contrib import messages
from django.core.exceptions import PermissionDenied
from django.views.generic import ListView
from django.conf import settings
from guardian.decorators import permission_required_or_403 as permission_required
from djing.global_base_views import OrderingMixin
from .models import Tariff, PeriodicPay
from djing import lib
from . import forms
class BaseServiceListView(ListView):
http_method_names = ('get',)
paginate_by = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10)
@method_decorator((login_required, lib.only_admins), name='dispatch')
class TariffsListView(BaseServiceListView, OrderingMixin):
"""
Show Services(Tariffs) list
"""
template_name = 'tariff_app/tarifs.html'
context_object_name = 'tariflist'
model = Tariff
@login_required
def edit_tarif(request, tarif_id=0):
tarif_id = lib.safe_int(tarif_id)
if tarif_id == 0:
if not request.user.has_perm('tariff_app.add_tariff'):
raise PermissionDenied
tarif = None
else:
if not request.user.has_perm('tariff_app.change_tariff'):
raise PermissionDenied
tarif = get_object_or_404(Tariff, pk=tarif_id)
if request.method == 'POST':
frm = forms.TariffForm(request.POST, instance=tarif)
if frm.is_valid():
frm.save()
messages.success(request, _('Service has been saved'))
return redirect('tarifs:edit', tarif_id=tarif_id)
else:
messages.warning(request, _('Some fields were filled incorrect, please try again'))
else:
frm = forms.TariffForm(instance=tarif)
return render(request, 'tariff_app/editTarif.html', {
'form': frm,
'tarif_id': tarif_id
})
@login_required
@permission_required('tariff_app.delete_tariff')
def del_tarif(request, tid):
if request.method == 'POST':
if request.POST.get('confirm') == 'yes':
get_object_or_404(Tariff, id=tid).delete()
messages.success(request, _('Service has been deleted'))
else:
messages.error(request, _('Not have a confirmations of delete'))
return lib.res_success(request, 'tarifs:home')
return render_to_text('tariff_app/modal_del_warning.html', {'tid': tid}, request=request)
@method_decorator(login_required, name='dispatch')
@method_decorator(permission_required('tariff_app.can_view_periodic_pay'), name='dispatch')
class PeriodicPaysListView(BaseServiceListView):
context_object_name = 'pays'
model = PeriodicPay
template_name = 'tariff_app/periodic_pays/list.html'
@login_required
def periodic_pay(request, pay_id=0):
if pay_id != 0:
pay_inst = get_object_or_404(PeriodicPay, pk=pay_id)
if not request.user.has_perm('tariff_app.change_periodicpay'):
raise PermissionDenied
else:
pay_inst = None
if not request.user.has_perm('tariff_app.add_periodicpay'):
raise PermissionDenied
if request.method == 'POST':
frm = forms.PeriodicPayForm(request.POST, instance=pay_inst)
if frm.is_valid():
new_periodic_pay = frm.save()
if pay_inst is None:
comment = _('New periodic pay successfully created')
else:
comment = _('Periodic pay has been changed')
messages.success(request, comment)
return redirect('tarifs:periodic_pay_edit', new_periodic_pay.pk)
else:
messages.error(request, _('Some fields were filled incorrect, please try again'))
else:
frm = forms.PeriodicPayForm(instance=pay_inst)
return render(request, 'tariff_app/periodic_pays/add_edit.html', {
'pay_instance': pay_inst,
'form': frm
})