Browse Source

Add ip address existing validate

devel
Dmitry 8 years ago
parent
commit
b1f6ce7552
  1. 6
      abonapp/forms.py
  2. 4
      abonapp/locale/ru/LC_MESSAGES/django.po
  3. 9
      abonapp/models.py
  4. 7
      abonapp/views.py

6
abonapp/forms.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from datetime import datetime from datetime import datetime
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django import forms from django import forms
@ -7,6 +6,7 @@ from random import choice
from string import digits, ascii_lowercase from string import digits, ascii_lowercase
from . import models from . import models
from django.conf import settings from django.conf import settings
from djing import IP_ADDR_REGEX
TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^\+[7,8,9,3]\d{10,11}$') TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^\+[7,8,9,3]\d{10,11}$')
@ -56,6 +56,10 @@ class AbonForm(forms.ModelForm):
'class': 'form-control', 'type': 'password', 'autocomplete': 'new-password' 'class': 'form-control', 'type': 'password', 'autocomplete': 'new-password'
})) }))
ip_address = forms.CharField(widget=forms.TextInput(attrs={
'pattern': IP_ADDR_REGEX
}), label=_('Ip Address'))
class Meta: class Meta:
model = models.Abon model = models.Abon
fields = ['username', 'telephone', 'fio', 'group', 'description', 'street', 'house', 'is_active', 'ip_address'] fields = ['username', 'telephone', 'fio', 'group', 'description', 'street', 'house', 'is_active', 'ip_address']

4
abonapp/locale/ru/LC_MESSAGES/django.po

@ -876,10 +876,6 @@ msgstr "Нет исполнителей"
msgid "Tasks not found" msgid "Tasks not found"
msgstr "Нет задач" msgstr "Нет задач"
#: templates/abonapp/viewAbon.html:10
msgid "View the subscriber"
msgstr "Просмотр абонента"
#: templates/abonapp/viewAbon.html:24 #: templates/abonapp/viewAbon.html:24
msgid "yes,no" msgid "yes,no"
msgstr "Да,Нет" msgstr "Да,Нет"

9
abonapp/models.py

@ -136,7 +136,7 @@ class Abon(BaseAccount):
current_tariff = models.ForeignKey(AbonTariff, null=True, blank=True, on_delete=models.SET_NULL) current_tariff = models.ForeignKey(AbonTariff, null=True, blank=True, on_delete=models.SET_NULL)
group = models.ForeignKey(Group, models.SET_NULL, blank=True, null=True, verbose_name=_('User group')) group = models.ForeignKey(Group, models.SET_NULL, blank=True, null=True, verbose_name=_('User group'))
ballance = models.FloatField(default=0.0) ballance = models.FloatField(default=0.0)
ip_address = MyGenericIPAddressField(blank=True, null=True)
ip_address = MyGenericIPAddressField(blank=True, null=True, verbose_name=_('Ip Address'))
description = models.TextField(_('Comment'), null=True, blank=True) description = models.TextField(_('Comment'), null=True, blank=True)
street = models.ForeignKey(AbonStreet, on_delete=models.SET_NULL, null=True, blank=True, verbose_name=_('Street')) street = models.ForeignKey(AbonStreet, on_delete=models.SET_NULL, null=True, blank=True, verbose_name=_('Street'))
house = models.CharField(_('House'), max_length=12, null=True, blank=True) house = models.CharField(_('House'), max_length=12, null=True, blank=True)
@ -269,13 +269,12 @@ class Abon(BaseAccount):
agent_trf = TariffStruct(trf.id, trf.speedIn, trf.speedOut) agent_trf = TariffStruct(trf.id, trf.speedIn, trf.speedOut)
return AbonStruct(self.pk, user_ip, agent_trf, bool(self.is_active)) return AbonStruct(self.pk, user_ip, agent_trf, bool(self.is_active))
def save(self, *args, **kwargs):
def clean(self):
# check if ip address already busy # check if ip address already busy
if self.ip_address is not None and Abon.objects.filter(ip_address=self.ip_address).exclude( if self.ip_address is not None and Abon.objects.filter(ip_address=self.ip_address).exclude(
pk=self.pk).count() > 0: pk=self.pk).count() > 0:
self.is_bad_ip = True
raise LogicError(_('Ip address already exist'))
super(Abon, self).save(*args, **kwargs)
raise ValidationError({'ip_address': [gettext('Ip address already exist')]})
return super(Abon, self).clean()
def sync_with_nas(self, created: bool) -> Optional[Exception]: def sync_with_nas(self, created: bool) -> Optional[Exception]:
agent_abon = self.build_agent_struct() agent_abon = self.build_agent_struct()

7
abonapp/views.py

@ -332,7 +332,6 @@ class AbonHomeUpdateView(UpdateView):
dev = getattr(abon, 'device') dev = getattr(abon, 'device')
context = { context = {
'group': self.group, 'group': self.group,
'is_bad_ip': getattr(abon, 'is_bad_ip', False),
'device': dev, 'device': dev,
'dev_ports': DevPort.objects.filter(device=dev) if dev else None 'dev_ports': DevPort.objects.filter(device=dev) if dev else None
} }
@ -810,9 +809,9 @@ def save_user_dev_port(request, gid, uname):
user_url = resolve_url('abonapp:abon_home', other_abon.group.id, other_abon.username) user_url = resolve_url('abonapp:abon_home', other_abon.group.id, other_abon.username)
messages.error(request, _( messages.error(request, _(
"<a href='%(user_url)s'>%(user_name)s</a> already pinned to this port on this device") % { "<a href='%(user_url)s'>%(user_name)s</a> already pinned to this port on this device") % {
'user_url': user_url,
'user_name': other_abon.get_full_name()
})
'user_url': user_url,
'user_name': other_abon.get_full_name()
})
return redirect('abonapp:abon_home', gid, uname) return redirect('abonapp:abon_home', gid, uname)
except models.Abon.DoesNotExist: except models.Abon.DoesNotExist:
pass pass

Loading…
Cancel
Save