Added copyright info plus updated the README file
[flowspy] / peers / models.py
1 #
2 # -*- coding: utf-8 -*- vim:fileencoding=utf-8:
3 #Copyright © 2011-2013 Greek Research and Technology Network (GRNET S.A.)
4
5 #Developed by Leonidas Poulopoulos (leopoul-at-noc-dot-grnet-dot-gr),
6 #GRNET NOC
7 #
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.
11 #
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
18 #SOFTWARE.
19 #
20 from django.db import models
21 from utils.whois import *
22 from django.contrib.auth.models import User
23
24 class PeerRange(models.Model):
25     network = models.CharField(max_length=128)
26     def __unicode__(self):
27         return self.network
28     class Meta:
29         db_table = u'peer_range'
30         ordering = ['network']
31
32 class TechcEmail(models.Model):
33     email = models.CharField(max_length=352, db_column="email")
34     def __unicode__(self):
35         return self.email
36     class Meta:
37         db_table="techc_email"
38
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)
47
48     def __unicode__(self):
49         return self.peer_name
50     class Meta:
51         db_table = u'peer'
52         ordering = ['peer_name']
53
54         
55     def fill_networks(self):
56         network_range = []
57         networks_list = []
58         peer_as = "AS%s" %self.peer_as
59         network_range = whois(peer_as)
60         if network_range:
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
65             self.save()
66
67