From 78e9d951cfcbe07bf512a3e50019a15c4a13286c Mon Sep 17 00:00:00 2001 From: bashmak Date: Tue, 5 Jun 2018 13:59:13 +0300 Subject: [PATCH] Fix creating device. --- devapp/base_intr.py | 4 ++-- devapp/dev_types.py | 12 ++++++++---- devapp/forms.py | 6 +++--- devapp/views.py | 24 +++++++++++------------- dialing_app/forms.py | 2 +- mapapp/forms.py | 2 +- msg_app/forms.py | 4 ++-- tariff_app/forms.py | 2 +- 8 files changed, 29 insertions(+), 27 deletions(-) diff --git a/devapp/base_intr.py b/devapp/base_intr.py index 2eaad92..32026a8 100644 --- a/devapp/base_intr.py +++ b/devapp/base_intr.py @@ -53,8 +53,8 @@ class DevBase(object, metaclass=ABCMeta): def is_use_device_port() -> bool: """True if used device port while opt82 authorization""" - @abstractmethod - def validate_extra_snmp_info(self, v: str) -> None: + @abstract_static_method + def validate_extra_snmp_info(v: str) -> None: """ Validate extra snmp field for each device. If validation failed then raise en exception from djing.lib.tln.ValidationError diff --git a/devapp/dev_types.py b/devapp/dev_types.py index f6e04fe..22567ef 100644 --- a/devapp/dev_types.py +++ b/devapp/dev_types.py @@ -108,7 +108,8 @@ class DLinkDevice(DevBase, SNMPBaseWorker): def is_use_device_port(): return True - def validate_extra_snmp_info(self, v: str) -> None: + @staticmethod + def validate_extra_snmp_info(v: str) -> None: # Dlink has no require snmp info pass @@ -189,7 +190,8 @@ class OLTDevice(DevBase, SNMPBaseWorker): def is_use_device_port(): return False - def validate_extra_snmp_info(self, v: str) -> None: + @staticmethod + def validate_extra_snmp_info(v: str) -> None: # Olt has no require snmp info pass @@ -263,7 +265,8 @@ class OnuDevice(DevBase, SNMPBaseWorker): except EasySNMPTimeoutError as e: return {'err': "%s: %s" % (_('ONU not connected'), e)} - def validate_extra_snmp_info(self, v: str) -> None: + @staticmethod + def validate_extra_snmp_info(v: str) -> None: # DBCOM Onu have en integer snmp port try: int(v) @@ -454,7 +457,8 @@ class ZteOnuDevice(OnuDevice): def get_template_name(self): return 'onu_for_zte.html' - def validate_extra_snmp_info(self, v: str) -> None: + @staticmethod + def validate_extra_snmp_info(v: str) -> None: # for example 268501760.5 try: fiber_num, onu_port = v.split('.') diff --git a/devapp/forms.py b/devapp/forms.py index dd67e5b..6511a58 100644 --- a/devapp/forms.py +++ b/devapp/forms.py @@ -22,9 +22,9 @@ class DeviceForm(forms.ModelForm): if snmp_extra is None: return device = self.instance - manager = device.get_manager_object() + manager_class = device.get_manager_klass() try: - manager.validate_extra_snmp_info(snmp_extra) + manager_class.validate_extra_snmp_info(snmp_extra) except TlnValidationError as e: raise ValidationError( e, code='invalid' @@ -48,7 +48,7 @@ class DeviceForm(forms.ModelForm): class PortForm(forms.ModelForm): class Meta: model = models.Port - exclude = ['device'] + exclude = ('device',) widgets = { 'num': forms.NumberInput(attrs={ 'min': '0' diff --git a/devapp/views.py b/devapp/views.py index 8b45b26..ba26380 100644 --- a/devapp/views.py +++ b/devapp/views.py @@ -126,7 +126,6 @@ class DeviceUpdate(UpdateView): pass r = super().form_valid(form) # change device info in dhcpd.conf - print(self.object) self.object.update_dhcp() messages.success(self.request, _('Device info has been saved')) return r @@ -171,9 +170,8 @@ class DeviceCreateView(CreateView): def form_valid(self, form): # check if that device is exist - device_id = self.kwargs.get(self.pk_url_kwarg) try: - already_dev = self.model.objects.exclude(pk=device_id).get(mac_addr=self.request.POST.get('mac_addr')) + already_dev = self.model.objects.get(mac_addr=self.request.POST.get('mac_addr')) self.already_dev = already_dev if already_dev.group: messages.warning(self.request, _('You have redirected to existing device')) @@ -185,7 +183,6 @@ class DeviceCreateView(CreateView): pass r = super().form_valid(form) # change device info in dhcpd.conf - print(self.object) self.object.update_dhcp() messages.success(self.request, _('Device info has been saved')) return r @@ -202,15 +199,16 @@ class DeviceCreateView(CreateView): return super().dispatch(request, *args, **kwargs) def get_initial(self): - return { - 'group': self.device_group, - 'devtype': self.request.GET.get('t'), - 'mac_addr': self.request.GET.get('mac'), - 'comment': self.request.GET.get('c'), - 'ip_address': self.request.GET.get('ip'), - 'man_passw': getattr(settings, 'DEFAULT_SNMP_PASSWORD', ''), - 'snmp_extra': self.request.GET.get('n') or '' - } + if self.request.method == 'GET': + return { + 'group': self.device_group, + 'devtype': self.request.GET.get('t'), + 'mac_addr': self.request.GET.get('mac'), + 'comment': self.request.GET.get('c'), + 'ip_address': self.request.GET.get('ip'), + 'man_passw': getattr(settings, 'DEFAULT_SNMP_PASSWORD', ''), + 'snmp_extra': self.request.GET.get('n') or '' + } def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) diff --git a/dialing_app/forms.py b/dialing_app/forms.py index 473db0d..a863bc7 100644 --- a/dialing_app/forms.py +++ b/dialing_app/forms.py @@ -5,4 +5,4 @@ from .models import SMSOut class SMSOutForm(forms.ModelForm): class Meta: model = SMSOut - fields = ['dst', 'text'] + fields = ('dst', 'text') diff --git a/mapapp/forms.py b/mapapp/forms.py index c7490e6..fc4e8c3 100644 --- a/mapapp/forms.py +++ b/mapapp/forms.py @@ -6,7 +6,7 @@ from .models import Dot class DotForm(forms.ModelForm): class Meta: model = Dot - exclude = ['devices'] + exclude = ('devices',) widgets = { 'title': forms.TextInput(attrs={'required': '', 'autofocus': ''}), diff --git a/msg_app/forms.py b/msg_app/forms.py index c725504..ff8c81b 100644 --- a/msg_app/forms.py +++ b/msg_app/forms.py @@ -18,7 +18,7 @@ class ConversationForm(forms.ModelForm): class Meta: model = Conversation - exclude = ['date_create', 'author'] + exclude = ('date_create', 'author') def create(self, author): participants = self.cleaned_data['participants'] @@ -39,7 +39,7 @@ class ConversationForm(forms.ModelForm): class MessageForm(forms.ModelForm): class Meta: model = Message - exclude = ['sent_at', 'author', 'conversation', 'account_status'] + exclude = ('sent_at', 'author', 'conversation', 'account_status') widgets = { 'text': forms.Textarea(attrs={'class': 'form-control'}), 'attachment': forms.FileInput(attrs={'class': 'form-control'}) diff --git a/tariff_app/forms.py b/tariff_app/forms.py index 9a7ed61..882ab1a 100644 --- a/tariff_app/forms.py +++ b/tariff_app/forms.py @@ -12,4 +12,4 @@ class TariffForm(forms.ModelForm): class PeriodicPayForm(forms.ModelForm): class Meta: model = models.PeriodicPay - exclude = ['when_add', 'extra_info'] + exclude = ('when_add', 'extra_info')