Browse Source

новая функция обновления содержимого NAS

devel
Dmitry 9 years ago
parent
commit
913fdd7164
  1. 2
      abonapp/urls.py
  2. 78
      abonapp/views.py

2
abonapp/urls.py

@ -19,6 +19,8 @@ urlpatterns = [
url(r'^debtors$', views.debtors, name='debtors'), url(r'^debtors$', views.debtors, name='debtors'),
url(r'^refresh_group_nas(?P<group_id>\d+)$', views.update_nas, name='update_nas'),
# Api's # Api's
url(r'^api/abons$', views.abons), url(r'^api/abons$', views.abons),
url(r'^api/abon_filter$', views.search_abon) url(r'^api/abon_filter$', views.search_abon)

78
abonapp/views.py

@ -1,10 +1,11 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from json import dumps from json import dumps
from django.core.exceptions import PermissionDenied
from django.db import IntegrityError from django.db import IntegrityError
from django.db.models import Count from django.db.models import Count
from django.shortcuts import render, redirect, get_object_or_404, resolve_url from django.shortcuts import render, redirect, get_object_or_404, resolve_url
from django.contrib.auth.decorators import login_required
from django.contrib.auth.decorators import login_required, permission_required
from django.utils import timezone from django.utils import timezone
from django.template.context_processors import csrf from django.template.context_processors import csrf
from django.http import HttpResponse, Http404 from django.http import HttpResponse, Http404
@ -12,7 +13,7 @@ from django.contrib.auth import get_user_model
from ip_pool.models import IpPoolItem from ip_pool.models import IpPoolItem
from tariff_app.models import Tariff from tariff_app.models import Tariff
from agent import NetExcept
from agent import NasFailedResult, AbonStruct, Transmitter, TariffStruct, NasNetworkError
import forms import forms
import models import models
import mydefs import mydefs
@ -39,8 +40,7 @@ def peoples(request, gid):
@login_required @login_required
@mydefs.only_admins
# @permission_required('abonapp.add_abongroup')
@permission_required('abonapp.add_abongroup')
def addgroup(request): def addgroup(request):
warntext = '' warntext = ''
frm = forms.AbonGroupForm() frm = forms.AbonGroupForm()
@ -78,7 +78,7 @@ def grouplist(request):
@login_required @login_required
@mydefs.only_admins
@permission_required('abonapp.delete_abongroup')
def delgroup(request): def delgroup(request):
agd = mydefs.safe_int(request.GET.get('id')) agd = mydefs.safe_int(request.GET.get('id'))
get_object_or_404(models.AbonGroup, id=agd).delete() get_object_or_404(models.AbonGroup, id=agd).delete()
@ -112,6 +112,11 @@ def addabon(request, gid):
except models.LogicError as e: except models.LogicError as e:
warning_text = e.value warning_text = e.value
except NasFailedResult as e:
warning_text = e.message
except NasNetworkError as e:
warning_text = e.message
if not frm: if not frm:
frm = forms.AbonForm(initial={ frm = forms.AbonForm(initial={
'ip_address': IpPoolItem.objects.get_free_ip(), 'ip_address': IpPoolItem.objects.get_free_ip(),
@ -128,24 +133,26 @@ def addabon(request, gid):
@login_required @login_required
@mydefs.only_admins @mydefs.only_admins
# @permission_required('abonapp.delete_abon')
# @permission_required('abonapp.delete_abongroup')
def delentity(request): def delentity(request):
typ = request.GET.get('t') typ = request.GET.get('t')
uid = request.GET.get('id') uid = request.GET.get('id')
if typ == 'a': if typ == 'a':
if not request.user.has_perm('abonapp.delete_abon'):
raise PermissionDenied
abon = get_object_or_404(models.Abon, id=uid) abon = get_object_or_404(models.Abon, id=uid)
gid = abon.group.id gid = abon.group.id
abon.delete() abon.delete()
return mydefs.res_success(request, resolve_url('abonapp:people_list', gid)) return mydefs.res_success(request, resolve_url('abonapp:people_list', gid))
elif typ == 'g': elif typ == 'g':
if not request.user.has_perm('abonapp.delete_abongroup'):
raise PermissionDenied
get_object_or_404(models.AbonGroup, id=uid).delete() get_object_or_404(models.AbonGroup, id=uid).delete()
return mydefs.res_success(request, 'abonapp:group_list') return mydefs.res_success(request, 'abonapp:group_list')
@login_required @login_required
@mydefs.only_admins
@permission_required('abonapp.can_add_ballance')
def abonamount(request, gid, uid): def abonamount(request, gid, uid):
warning_text = '' warning_text = ''
abon = get_object_or_404(models.Abon, id=uid) abon = get_object_or_404(models.Abon, id=uid)
@ -208,7 +215,7 @@ def abon_services(request, gid, uid):
@login_required @login_required
@mydefs.only_admins
@permission_required('abonapp.change_abon')
def abonhome(request, gid, uid): def abonhome(request, gid, uid):
abon = get_object_or_404(models.Abon, id=uid) abon = get_object_or_404(models.Abon, id=uid)
abon_group = get_object_or_404(models.AbonGroup, id=gid) abon_group = get_object_or_404(models.AbonGroup, id=gid)
@ -252,8 +259,10 @@ def abonhome(request, gid, uid):
warntext = u'Ip адрес не найден в списке IP адресов' warntext = u'Ip адрес не найден в списке IP адресов'
frm = forms.AbonForm(initial=init_frm_dat) frm = forms.AbonForm(initial=init_frm_dat)
except NetExcept as e:
warntext = e.value
except NasFailedResult as e:
warntext = e.message
except NasNetworkError as e:
warntext = e.message
return render(request, 'abonapp/editAbon.html', { return render(request, 'abonapp/editAbon.html', {
'warntext': warntext, 'warntext': warntext,
@ -278,8 +287,7 @@ def terminal_pay(request):
@login_required @login_required
@mydefs.only_admins
# @permission_required('abonapp.add_invoiceforpayment')
@permission_required('abonapp.add_invoiceforpayment')
def add_invoice(request, gid, uid): def add_invoice(request, gid, uid):
uid = mydefs.safe_int(uid) uid = mydefs.safe_int(uid)
abon = get_object_or_404(models.Abon, id=uid) abon = get_object_or_404(models.Abon, id=uid)
@ -310,7 +318,7 @@ def add_invoice(request, gid, uid):
@login_required @login_required
@mydefs.only_admins
@permission_required('abonapp.can_buy_tariff')
def buy_tariff(request, gid, uid): def buy_tariff(request, gid, uid):
warntext = '' warntext = ''
frm = None frm = None
@ -330,10 +338,11 @@ def buy_tariff(request, gid, uid):
frm = forms.BuyTariff() frm = forms.BuyTariff()
except models.LogicError as e: except models.LogicError as e:
warntext = e.value warntext = e.value
except NetExcept as e:
warntext = e.value + u', но услуга уже подключена, она будет применена когда будет восстановлен доступ к NAS серверу.' \
except NasFailedResult as e:
warntext = e.message + u', но услуга уже подключена, она будет применена когда будет восстановлен доступ к NAS серверу.' \
u' <a href="%s">Вернуться</a>' % resolve_url('abonapp:abon_home', gid=gid, uid=abon.id) u' <a href="%s">Вернуться</a>' % resolve_url('abonapp:abon_home', gid=gid, uid=abon.id)
except NasNetworkError as e:
warntext = e.message
return render(request, 'abonapp/buy_tariff.html', { return render(request, 'abonapp/buy_tariff.html', {
'warntext': warntext, 'warntext': warntext,
@ -360,7 +369,7 @@ def chpriority(request, gid, uid):
@login_required @login_required
@mydefs.only_admins
@permission_required('abonapp.can_complete_service')
def complete_service(request, gid, uid, srvid): def complete_service(request, gid, uid, srvid):
abtar = get_object_or_404(models.AbonTariff, id=srvid) abtar = get_object_or_404(models.AbonTariff, id=srvid)
@ -393,9 +402,10 @@ def complete_service(request, gid, uid, srvid):
except models.LogicError as e: except models.LogicError as e:
warntext = e.value warntext = e.value
except NetExcept as e:
warntext = e.value
except NasFailedResult as e:
warntext = e.message
except NasNetworkError as e:
warntext = e.message
return render(request, 'abonapp/complete_service.html', { return render(request, 'abonapp/complete_service.html', {
'abtar': abtar, 'abtar': abtar,
@ -406,7 +416,7 @@ def complete_service(request, gid, uid, srvid):
@login_required @login_required
@mydefs.only_admins
@permission_required('abonapp.can_activate_service')
def activate_service(request, gid, uid, srvid): def activate_service(request, gid, uid, srvid):
abtar = get_object_or_404(models.AbonTariff, id=srvid) abtar = get_object_or_404(models.AbonTariff, id=srvid)
@ -428,7 +438,7 @@ def activate_service(request, gid, uid, srvid):
@login_required @login_required
@mydefs.only_admins
@permission_required('abonapp.delete_abontariff')
def unsubscribe_service(request, gid, uid, srvid): def unsubscribe_service(request, gid, uid, srvid):
get_object_or_404(models.AbonTariff, id=int(srvid)).delete() get_object_or_404(models.AbonTariff, id=int(srvid)).delete()
return redirect('abonapp:abon_home', gid=gid, uid=uid) return redirect('abonapp:abon_home', gid=gid, uid=uid)
@ -460,6 +470,28 @@ def debtors(request):
'invoices': invs 'invoices': invs
}) })
@login_required
@mydefs.only_admins
def update_nas(request, group_id):
users = models.Abon.objects.filter(group=group_id)
tm = Transmitter()
for usr in users:
if usr.ip_address:
user_ip = usr.ip_address.int_ip()
else:
continue
tariff = usr.active_tariff()
if tariff:
agent_trf = TariffStruct(tariff.id, tariff.speedIn, tariff.speedOut)
else:
agent_trf = TariffStruct()
agent_abon = AbonStruct(usr.id, user_ip, agent_trf)
try:
tm.update_user(agent_abon)
except NasFailedResult:
tm.add_user(agent_abon)
return redirect('abonapp:people_list', gid=group_id)
# API's # API's

Loading…
Cancel
Save