|
|
# Django imports.
|
|
|
from django.core.exceptions import ValidationError
|
|
|
from django.core.urlresolvers import reverse
|
|
|
from django.db import models
|
|
|
|
|
|
|
|
@@ -15,7 +16,7 @@ class Project(models.Model):
|
|
|
description - Free-form description of the project.
|
|
|
"""
|
|
|
|
|
|
name = models.CharField(max_length=100)
|
|
|
name = models.CharField(max_length=100, unique=True)
|
|
|
description = models.TextField(blank=True)
|
|
|
|
|
|
class Meta:
|
|
@@ -29,6 +30,13 @@ class Project(models.Model):
|
|
|
|
|
|
return self.name
|
|
|
|
|
|
def get_absolute_url(self):
|
|
|
"""
|
|
|
Return absolute URL for viewing a single project.
|
|
|
"""
|
|
|
|
|
|
return reverse("project", kwargs={'pk': self.pk})
|
|
|
|
|
|
|
|
|
class Location(models.Model):
|
|
|
"""
|
|
@@ -54,7 +62,7 @@ class Location(models.Model):
|
|
|
description - Free-form description of a location.
|
|
|
"""
|
|
|
|
|
|
name = models.CharField(max_length=100)
|
|
|
name = models.CharField(max_length=100, unique=True)
|
|
|
description = models.TextField(blank=True)
|
|
|
|
|
|
def __unicode__(self):
|
|
@@ -92,15 +100,11 @@ class Entity(models.Model):
|
|
|
location = models.ForeignKey(Location)
|
|
|
|
|
|
class Meta:
|
|
|
"""
|
|
|
Overrides some of the default parameters used by Django for this model.
|
|
|
# Fix the plural form used by Django.
|
|
|
verbose_name_plural = 'entities'
|
|
|
# Enforce uniqueness of entity name in a project.
|
|
|
unique_together = ("name", "project")
|
|
|
|
|
|
Properties:
|
|
|
verbose_name_plural - Changes the way Django Admin displays the model
|
|
|
name in plural.
|
|
|
"""
|
|
|
|
|
|
verbose_name_plural = 'entities'
|
|
|
|
|
|
def __unicode__(self):
|
|
|
"""
|
|
@@ -139,6 +143,13 @@ class Entity(models.Model):
|
|
|
|
|
|
return communications
|
|
|
|
|
|
def get_absolute_url(self):
|
|
|
"""
|
|
|
Return absolute URL for viewing a single entity.
|
|
|
"""
|
|
|
|
|
|
return reverse("entity", kwargs={'pk': self.pk})
|
|
|
|
|
|
|
|
|
class Interface(models.Model):
|
|
|
"""
|
|
@@ -166,6 +177,10 @@ class Interface(models.Model):
|
|
|
address = models.IPAddressField()
|
|
|
netmask = models.IPAddressField(default='255.255.255.255')
|
|
|
|
|
|
class Meta:
|
|
|
# Enforce uniqueness of interface name in an entity.
|
|
|
unique_together = ("name", "entity")
|
|
|
|
|
|
def __unicode__(self):
|
|
|
"""
|
|
|
Returns:
|
|
@@ -225,7 +240,7 @@ class Communication(models.Model):
|
|
|
description = models.TextField(blank=True)
|
|
|
|
|
|
class Meta:
|
|
|
# Enfoce uniqueness of communication.
|
|
|
# Enforce uniqueness of communication.
|
|
|
unique_together = ("source", "destination", "protocol", "port")
|
|
|
|
|
|
def __unicode__(self):
|