From 2277a59001809288e7c4df232ebe8184835a3ac8 Mon Sep 17 00:00:00 2001 From: bashmak Date: Mon, 9 Apr 2018 11:24:30 +0300 Subject: [PATCH] move mac address regexp from mydefs to djing --- abonapp/models.py | 7 ++++--- devapp/forms.py | 8 +++----- devapp/views.py | 8 ++++---- djing/__init__.py | 8 +++++++- mydefs.py | 6 ------ 5 files changed, 18 insertions(+), 19 deletions(-) diff --git a/abonapp/models.py b/abonapp/models.py index 33f9835..b489251 100644 --- a/abonapp/models.py +++ b/abonapp/models.py @@ -1,5 +1,5 @@ from datetime import datetime -from typing import Optional, Union +from typing import Optional from django.conf import settings from django.core import validators @@ -14,7 +14,8 @@ from django.utils.translation import ugettext_lazy as _, gettext from accounts_app.models import UserProfile, MyUserManager, BaseAccount from agent import Transmitter, AbonStruct, TariffStruct, NasFailedResult, NasNetworkError from group_app.models import Group -from mydefs import MyGenericIPAddressField, ip2int, LogicError, ip_addr_regex +from mydefs import MyGenericIPAddressField, ip2int, LogicError +from djing import IP_ADDR_REGEX from tariff_app.models import Tariff, PeriodicPay from bitfield import BitField @@ -105,7 +106,7 @@ class ExtraFieldsModel(models.Model): elif self.field_type == 'str': return r'^[a-zA-ZА-Яа-я0-9]+$' elif self.field_type == 'ipa': - return ip_addr_regex + return IP_ADDR_REGEX def clean(self): d = self.data diff --git a/devapp/forms.py b/devapp/forms.py index ee88cf8..f6953bb 100644 --- a/devapp/forms.py +++ b/devapp/forms.py @@ -1,11 +1,9 @@ -# -*- coding: utf-8 -*- from django import forms -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext_lazy as _ from django.db import IntegrityError from . import models -from mydefs import ip_addr_regex -from djing import MAC_ADDR_REGEX +from djing import MAC_ADDR_REGEX, IP_ADDR_REGEX class DeviceForm(forms.ModelForm): @@ -22,7 +20,7 @@ class DeviceForm(forms.ModelForm): exclude = ['map_dot', 'status'] widgets = { 'ip_address': forms.TextInput(attrs={ - 'pattern': ip_addr_regex, + 'pattern': IP_ADDR_REGEX, 'placeholder': '192.168.0.100' }), 'comment': forms.TextInput(attrs={ diff --git a/devapp/views.py b/devapp/views.py index 9a246d2..56c8869 100644 --- a/devapp/views.py +++ b/devapp/views.py @@ -11,10 +11,10 @@ from django.contrib import messages from django.utils.decorators import method_decorator from django.utils.translation import gettext_lazy as _, gettext from easysnmp import EasySNMPTimeoutError, EasySNMPError -from django.views.generic import DetailView, ListView +from django.views.generic import DetailView from devapp.base_intr import DeviceImplementationError -from mydefs import res_success, res_error, only_admins, ping, ip_addr_regex +from mydefs import res_success, res_error, only_admins, ping from abonapp.models import Abon from group_app.models import Group from accounts_app.models import UserProfile @@ -24,7 +24,7 @@ from guardian.shortcuts import get_objects_for_user from chatbot.telebot import send_notify from chatbot.models import ChatException from jsonview.decorators import json_view -from djing import global_base_views +from djing import global_base_views, IP_ADDR_REGEX from .models import Device, Port, DeviceDBException, DeviceMonitoringException from .forms import DeviceForm, PortForm from mydefs import safe_int @@ -528,7 +528,7 @@ class OnDeviceMonitoringEvent(global_base_views.AllowedSubnetMixin, global_base_ if dev_ip is None or dev_ip == '': return {'text': 'ip does not passed'} - if not bool(re.match(ip_addr_regex, dev_ip)): + if not bool(re.match(IP_ADDR_REGEX, dev_ip)): return {'text': 'ip address %s is not valid' % dev_ip} device_down = Device.objects.filter(ip_address=dev_ip).first() diff --git a/djing/__init__.py b/djing/__init__.py index f71a4cf..8699bb5 100644 --- a/djing/__init__.py +++ b/djing/__init__.py @@ -4,12 +4,18 @@ from netaddr import mac_unix, mac_eui48 MAC_ADDR_REGEX = r'^([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]{1,2})$' +IP_ADDR_REGEX = r'^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \ + r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \ + r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \ + r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + + class mac_linux(mac_unix): """MAC format with zero-padded all upper-case hex and colon separated""" word_fmt = '%x' -def default_dialect(eui_obj=None): +def default_dialect(): return mac_linux diff --git a/mydefs.py b/mydefs.py index 1ec4bdd..92d6b6d 100644 --- a/mydefs.py +++ b/mydefs.py @@ -11,14 +11,8 @@ from django.shortcuts import redirect from django.db import models from django.conf import settings -PAGINATION_ITEMS_PER_PAGE = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10) DEBUG = getattr(settings, 'DEBUG', False) -ip_addr_regex = r'^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \ - r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \ - r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \ - r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' - def ip2int(addr): try: