Statistics
| Branch: | Tag: | Revision:

root / peers / models.py @ 1b897754

History | View | Annotate | Download (1.9 kB)

1
from django.db import models
2
from utils.whois import *
3
from django.contrib.auth.models import User
4

    
5
# Create your models here.
6
class PeerRange(models.Model):
7
    network = models.CharField(max_length=128)
8
    def __unicode__(self):
9
        return self.network
10
    class Meta:
11
        db_table = u'peer_range'
12

    
13
# Create your models here.
14
class Peer(models.Model):
15
    peer_id = models.IntegerField(primary_key=True)
16
    peer_name = models.CharField(max_length=128)
17
    peer_as = models.IntegerField()
18
    peer_tag = models.CharField(max_length=64)
19
    domain_name = models.CharField(max_length=128, null=True, blank=True)
20
    networks = models.ManyToManyField(PeerRange, null=True, blank=True)
21

    
22
    def __unicode__(self):
23
        return self.peer_name
24
    class Meta:
25
        db_table = u'peer'
26
        ordering = ['peer_name']
27

    
28
        
29
    def fill_networks(self):
30
        network_range = []
31
        networks_list = []
32
        peer_as = "AS%s" %self.peer_as
33
        network_range = whois(peer_as)
34
        if network_range:
35
            for network_item in network_range:
36
                range, created = PeerRange.objects.get_or_create(network=network_item.compressed)
37
                networks_list.append(range)
38
#                if not range.network in self.networks.all():
39
#                    self.networks.add(range)
40
            self.networks = networks_list
41
            self.save()
42

    
43
    def techc(self):
44
        try:
45
            techcmails = PeerTechc.objects.get(peer_id=self).emails
46
        except:
47
            techcmails = None
48
        return techcmails
49

    
50
class PeerTechc(models.Model):
51
    peer_id = models.OneToOneField(Peer, primary_key=True,
52
            db_column="peer_id", parent_link=True)
53
    emails = models.CharField(max_length=352, db_column="emails")
54

    
55
    def __unicode__(self):
56
        return "%s %s" %(self.peer_id.peer_name, self.emails)
57

    
58
    def get_peer_name(self):
59
        return "%s" %self.peer_id.peer_name
60

    
61
    class Meta:
62
        db_table="v_tech_c_peers"