diff --git a/README.md b/README.md index 81336ec..ce73bb9 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # djing Попытка интернет биллинга. djing сокращение от **dj**ango-bill**ing**. Это web интерфейс управления абонентами интернет-провайдера. Сейчас идёт тестирвоание работы на Mikrotik, функционал пока минимальный, т.к. пишу в свободное время. Работа планируется в реальных условиях и на реальных абонентах. -Использовано python 3, django 1.9, bootstrap 3, и другое в файле requirements.txt +Использовано python 3, django 1.11, bootstrap 3, и другое в файле requirements.txt ## Содержание * [Установка](./docs/install.md) diff --git a/abonapp/views.py b/abonapp/views.py index 25150e0..0e2c356 100644 --- a/abonapp/views.py +++ b/abonapp/views.py @@ -4,7 +4,7 @@ from django.contrib.gis.shortcuts import render_to_text from django.core.exceptions import PermissionDenied from django.db import IntegrityError, ProgrammingError from django.db.models import Count, Q, signals -from django.db.transaction import atomic +from django.db import transaction from django.shortcuts import render, redirect, get_object_or_404, resolve_url from django.contrib.auth.decorators import login_required from django.http import HttpResponse @@ -202,7 +202,7 @@ def del_abon(request): @login_required @permission_required('abonapp.can_add_ballance') -@atomic +@transaction.atomic def abonamount(request, gid, uid): abon = get_object_or_404(models.Abon, pk=uid) try: @@ -330,7 +330,7 @@ def abonhome(request, gid, uid): }) -@atomic +@transaction.atomic def terminal_pay(request): from .pay_systems import allpay ret_text = allpay(request) @@ -376,7 +376,7 @@ def add_invoice(request, gid, uid): @login_required @permission_required('abonapp.can_buy_tariff') -@atomic +@transaction.atomic def pick_tariff(request, gid, uid): grp = get_object_or_404(models.AbonGroup, pk=gid) abon = get_object_or_404(models.Abon, pk=uid) diff --git a/accounts_app/views.py b/accounts_app/views.py index 39b5606..a929d03 100644 --- a/accounts_app/views.py +++ b/accounts_app/views.py @@ -2,7 +2,7 @@ from django.contrib.auth.decorators import login_required from django.contrib.auth import authenticate, login, logout from django.core.exceptions import PermissionDenied -from django.core.urlresolvers import NoReverseMatch +from django.urls import NoReverseMatch from django.shortcuts import render, redirect, get_object_or_404 from django.contrib import messages from django.utils.translation import ugettext as _ diff --git a/clientsideapp/views.py b/clientsideapp/views.py index 4d123e9..a66e35c 100644 --- a/clientsideapp/views.py +++ b/clientsideapp/views.py @@ -3,7 +3,7 @@ from django.contrib.auth.decorators import login_required from django.contrib.gis.shortcuts import render_to_text from django.shortcuts import render, get_object_or_404, redirect from django.contrib import messages -from django.db.transaction import atomic +from django.db import transaction from django.utils.translation import gettext_lazy as _ from abonapp.models import AbonLog, InvoiceForPayment, Abon @@ -42,7 +42,7 @@ def services(request): @login_required -@atomic +@transaction.atomic def buy_service(request, srv_id): abon = get_object_or_404(Abon, pk=request.user.pk) service = get_object_or_404(Tariff, pk=srv_id) @@ -73,7 +73,7 @@ def debts_list(request): @login_required -@atomic +@transaction.atomic def debt_buy(request, d_id): debt = get_object_or_404(InvoiceForPayment, id=d_id) abon = get_object_or_404(Abon, id=request.user.id) diff --git a/djing/settings_example.py b/djing/settings_example.py index f92cf02..c64fffa 100644 --- a/djing/settings_example.py +++ b/djing/settings_example.py @@ -3,7 +3,7 @@ import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -from django.core.urlresolvers import reverse_lazy +from django.urls import reverse_lazy # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/1.9/howto/deployment/checklist/ @@ -51,7 +51,7 @@ INSTALLED_APPS = [ ] -MIDDLEWARE_CLASSES = [ +MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', diff --git a/docs/dev.md b/docs/dev.md index bfb6f20..dde6393 100644 --- a/docs/dev.md +++ b/docs/dev.md @@ -81,7 +81,7 @@ class EltexSwitch(DLinkDevice): ``` Метод **@description** Просто отображает человекопонятное название вашего устройства в биллинге. Заметьте что строка на английском и заключена в процедуру **_** (это ugettext_lazy, см. в импорте вверху файла), -это локализация для текущего языка. Про локализацию можно почитать в соответствующем разделе [django translation](https://docs.djangoproject.com/en/1.9/topics/i18n/translation/). +это локализация для текущего языка. Про локализацию можно почитать в соответствующем разделе [django translation](https://docs.djangoproject.com/en/1.11/topics/i18n/translation/). Метод **@get_ports** чаще всего редко изменяется по алгоритму, так что вам, в большенстве случаев, достаточно добавить нужные SNMP OID в соответствующие места процедуры. Но вы вольны реализовать ваш метод получения портов @@ -133,7 +133,9 @@ def my_custom_pay_system(request): Для примера это будет выглядеть так: ```python -@atomic +from django.db import transaction + +@transaction.atomic def terminal_pay(request): from .pay_systems import my_custom_pay_system ret_text = my_custom_pay_system(request) @@ -141,7 +143,7 @@ def terminal_pay(request): ``` Проследите чтоб ваша процедура не вызывала исключений, обрабатывайте всё внутри тела процедуры. -Про декоратор **@atomic** вы можете прочитать в документации к [Django](https://docs.djangoproject.com/en/1.9/topics/db/transactions). +Про декоратор **@atomic** вы можете прочитать в документации к [Django](https://docs.djangoproject.com/en/1.11/topics/db/transactions). В кратце этот декоратор защищает от незавешённых транзакций, например при высокой нагрузке. diff --git a/requirements.txt b/requirements.txt index 0969dc0..9b59c85 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -Django==1.9 +Django==1.11 Pillow telepot