Browse Source

Реализовал отлючение просроченных услуг в кроне

devel
bashmak 9 years ago
parent
commit
72e0ae36f9
  1. 109
      cron.py

109
cron.py

@ -2,14 +2,13 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os import os
import django import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings")
django.setup()
from abonapp.models import Abon, LogicError
from agent import Transmitter, NasNetworkError, NasFailedResult
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings")
django.setup()
from abonapp.models import Abon
from agent import Transmitter
def main():
tm = Transmitter() tm = Transmitter()
# получим инфу о записях в NAS # получим инфу о записях в NAS
@ -17,45 +16,63 @@ if __name__ == "__main__":
users = Abon.objects.all() users = Abon.objects.all()
for user in users: for user in users:
try:
# бдим за услугами абонента: просроченные отключить, заказанные подключить
user.activate_next_tariff(user)
# если нет ip то и нет смысла лезть в NAS
if user.ip_address is None:
continue
# а есть-ли у абонента доступ к услуге
if not user.is_access():
continue
# если нет ip то и нет смысла лезть в NAS
if user.ip_address is None:
continue
# а есть-ли у абонента доступ к услуге
if not user.is_access():
continue
# строим структуру агента
ab = user.build_agent_struct()
if ab is None:
# если не построилась структура агента, значит нет ip
# а если нет ip то и синхронизировать абонента без ip нельзя
continue
# ищем абонента в списке инфы из nas
abons = [queue for queue in queues if queue is not None]
abons = [{'abon': queue.abon, 'mikro_id': queue.sid} for queue in queues if queue.abon.uid == user.pk]
abons_len = len(abons)
if abons_len < 1:
# абонент не найден в nas, добавим
tm.add_user(ab)
continue
elif abons_len > 1:
# удаляем срез из nas, всё кроме 1й записи
tm.remove_user_range(
[mkid['mikro_id'] for mkid in abons[1:]]
)
# один абонент
# сравним совпадает-ли инфа об абоненте в базе и в nas
if ab == abons[0]['abon']:
# если всё совпадает, то менять нечего
continue
else:
# иначе обновляем абонента
tm.update_user(ab, abons[0]['mikro_id'])
# если не активен то приостановим услугу
if user.is_active:
tm.start_user(abons[0]['mikro_id'])
# строим структуру агента
ab = user.build_agent_struct()
if ab is None:
# если не построилась структура агента, значит нет ip
# а если нет ip то и синхронизировать абонента без ip нельзя
continue
# ищем абонента в списке инфы из nas
abons = [queue for queue in queues if queue is not None]
abons = [{'abon': queue.abon, 'mikro_id': queue.sid} for queue in abons if queue.abon.uid == user.pk]
abons_len = len(abons)
if abons_len < 1:
# абонент не найден в nas, добавим
tm.add_user(ab)
continue
elif abons_len > 1:
# удаляем срез из nas, всё кроме 1й записи
tm.remove_user_range(
[mkid['mikro_id'] for mkid in abons[1:]]
)
# один абонент
# сравним совпадает-ли инфа об абоненте в базе и в nas
if ab == abons[0]['abon']:
# если всё совпадает, то менять нечего
continue
else: else:
tm.pause_user(abons[0]['mikro_id'])
# иначе обновляем абонента
tm.update_user(ab, abons[0]['mikro_id'])
# если не активен то приостановим услугу
if user.is_active:
tm.start_user(abons[0]['mikro_id'])
else:
tm.pause_user(abons[0]['mikro_id'])
except NasNetworkError as er:
print("Error:", er)
except NasFailedResult as er:
print("Error:", er)
except LogicError as er:
print("Notice:", er)
if __name__ == "__main__":
try:
main()
except NasNetworkError as e:
print(e)
except NasFailedResult as e:
print(e)
Loading…
Cancel
Save