2 # -*- coding: utf-8 -*- vim:fileencoding=utf-8:
3 #Copyright © 2011-2013 Greek Research and Technology Network (GRNET S.A.)
5 #Developed by Leonidas Poulopoulos (leopoul-at-noc-dot-grnet-dot-gr),
8 #Permission to use, copy, modify, and/or distribute this software for any
9 #purpose with or without fee is hereby granted, provided that the above
10 #copyright notice and this permission notice appear in all copies.
12 #THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD
13 #TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
14 #FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
15 #CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
16 #DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
17 #ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
20 from django.db import models
21 from utils.whois import *
22 from django.contrib.auth.models import User
24 class PeerRange(models.Model):
25 network = models.CharField(max_length=128)
26 def __unicode__(self):
29 db_table = u'peer_range'
30 ordering = ['network']
32 class TechcEmail(models.Model):
33 email = models.CharField(max_length=352, db_column="email")
34 def __unicode__(self):
37 db_table="techc_email"
39 class Peer(models.Model):
40 peer_id = models.IntegerField(primary_key=True)
41 peer_name = models.CharField(max_length=128)
42 peer_as = models.IntegerField()
43 peer_tag = models.CharField(max_length=64)
44 domain_name = models.CharField(max_length=128, null=True, blank=True)
45 networks = models.ManyToManyField(PeerRange, null=True, blank=True)
46 techc_emails = models.ManyToManyField(TechcEmail, null=True, blank=True)
48 def __unicode__(self):
52 ordering = ['peer_name']
55 def fill_networks(self):
58 peer_as = "AS%s" %self.peer_as
59 network_range = whois(peer_as)
61 for network_item in network_range:
62 range, created = PeerRange.objects.get_or_create(network=network_item.compressed)
63 networks_list.append(range)
64 self.networks = networks_list