From 1f7696bef736721f23ffc99e1b50260fde993521 Mon Sep 17 00:00:00 2001 From: Nikolai Kristiansen Date: Mon, 19 Sep 2011 21:59:56 +0200 Subject: [PATCH] Validate hostname. No duplicate ip-addresses. --- mdb/models.py | 6 ++++-- mdb/validators.py | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 mdb/validators.py diff --git a/mdb/models.py b/mdb/models.py index ea9204f..d4f429c 100644 --- a/mdb/models.py +++ b/mdb/models.py @@ -2,6 +2,8 @@ from django.db import models from django.db.models.signals import post_save, pre_save, pre_delete from django.dispatch import receiver +from validators import validate_hostname + import ipaddr import datetime @@ -411,7 +413,7 @@ class Host(models.Model): brand = models.CharField(max_length=1024) model = models.CharField(max_length=1024) owner = models.CharField(max_length=1024) - hostname = models.CharField(max_length=64) + hostname = models.CharField(max_length=64, validators=[validate_hostname]) serial_number = models.CharField(max_length=256) description = models.CharField(max_length=1024) created_date = models.DateTimeField(auto_now_add=True) @@ -462,7 +464,7 @@ class Interface(models.Model): pxe_filename = models.CharField(max_length=64, blank=True) dhcp_client = models.BooleanField() host = models.ForeignKey(Host) - ip4address = models.ForeignKey(Ip4Address, blank=True, null=True) + ip4address = models.ForeignKey(Ip4Address, blank=True, null=True, unique=True) created_date = models.DateTimeField(auto_now_add=True) domain = models.ForeignKey(Domain) diff --git a/mdb/validators.py b/mdb/validators.py new file mode 100644 index 0000000..91861a5 --- /dev/null +++ b/mdb/validators.py @@ -0,0 +1,5 @@ +from django.core.validators import RegexValidator +import re +# http://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names +hostname_re = re.compile(r'^(?!-)[-a-z0-9]+(?