Statistics
| Branch: | Tag: | Revision:

root / peers / models.py @ d0777394

History | View | Annotate | Download (1.9 kB)

1 e9d46ce1 Leonidas Poulopoulos
from django.db import models
2 e9d46ce1 Leonidas Poulopoulos
from utils.whois import *
3 6ee21ffd Leonidas Poulopoulos
from django.contrib.auth.models import User
4 e9d46ce1 Leonidas Poulopoulos
5 e9d46ce1 Leonidas Poulopoulos
# Create your models here.
6 e9d46ce1 Leonidas Poulopoulos
class PeerRange(models.Model):
7 e9d46ce1 Leonidas Poulopoulos
    network = models.CharField(max_length=128)
8 e9d46ce1 Leonidas Poulopoulos
    def __unicode__(self):
9 e9d46ce1 Leonidas Poulopoulos
        return self.network
10 e9d46ce1 Leonidas Poulopoulos
    class Meta:
11 e9d46ce1 Leonidas Poulopoulos
        db_table = u'peer_range'
12 e9d46ce1 Leonidas Poulopoulos
13 e9d46ce1 Leonidas Poulopoulos
# Create your models here.
14 e9d46ce1 Leonidas Poulopoulos
class Peer(models.Model):
15 e9d46ce1 Leonidas Poulopoulos
    peer_id = models.IntegerField(primary_key=True)
16 e9d46ce1 Leonidas Poulopoulos
    peer_name = models.CharField(max_length=128)
17 e9d46ce1 Leonidas Poulopoulos
    peer_as = models.IntegerField()
18 e9d46ce1 Leonidas Poulopoulos
    peer_tag = models.CharField(max_length=64)
19 6ee21ffd Leonidas Poulopoulos
    domain_name = models.CharField(max_length=128, null=True, blank=True)
20 e9d46ce1 Leonidas Poulopoulos
    networks = models.ManyToManyField(PeerRange, null=True, blank=True)
21 6ee21ffd Leonidas Poulopoulos
22 e9d46ce1 Leonidas Poulopoulos
    def __unicode__(self):
23 e9d46ce1 Leonidas Poulopoulos
        return self.peer_name
24 e9d46ce1 Leonidas Poulopoulos
    class Meta:
25 e9d46ce1 Leonidas Poulopoulos
        db_table = u'peer'
26 c93feefe Leonidas Poulopoulos
        ordering = ['peer_name']
27 c93feefe Leonidas Poulopoulos
28 e9d46ce1 Leonidas Poulopoulos
        
29 e9d46ce1 Leonidas Poulopoulos
    def fill_networks(self):
30 e9d46ce1 Leonidas Poulopoulos
        network_range = []
31 1b897754 Leonidas Poulopoulos
        networks_list = []
32 e9d46ce1 Leonidas Poulopoulos
        peer_as = "AS%s" %self.peer_as
33 e9d46ce1 Leonidas Poulopoulos
        network_range = whois(peer_as)
34 e9d46ce1 Leonidas Poulopoulos
        if network_range:
35 e9d46ce1 Leonidas Poulopoulos
            for network_item in network_range:
36 e9d46ce1 Leonidas Poulopoulos
                range, created = PeerRange.objects.get_or_create(network=network_item.compressed)
37 1b897754 Leonidas Poulopoulos
                networks_list.append(range)
38 1b897754 Leonidas Poulopoulos
#                if not range.network in self.networks.all():
39 1b897754 Leonidas Poulopoulos
#                    self.networks.add(range)
40 1b897754 Leonidas Poulopoulos
            self.networks = networks_list
41 e9d46ce1 Leonidas Poulopoulos
            self.save()
42 2a13d365 Leonidas Poulopoulos
43 2a13d365 Leonidas Poulopoulos
    def techc(self):
44 2a13d365 Leonidas Poulopoulos
        try:
45 2a13d365 Leonidas Poulopoulos
            techcmails = PeerTechc.objects.get(peer_id=self).emails
46 2a13d365 Leonidas Poulopoulos
        except:
47 2a13d365 Leonidas Poulopoulos
            techcmails = None
48 2a13d365 Leonidas Poulopoulos
        return techcmails
49 2a13d365 Leonidas Poulopoulos
50 2a13d365 Leonidas Poulopoulos
class PeerTechc(models.Model):
51 2a13d365 Leonidas Poulopoulos
    peer_id = models.OneToOneField(Peer, primary_key=True,
52 2a13d365 Leonidas Poulopoulos
            db_column="peer_id", parent_link=True)
53 2a13d365 Leonidas Poulopoulos
    emails = models.CharField(max_length=352, db_column="emails")
54 2a13d365 Leonidas Poulopoulos
55 2a13d365 Leonidas Poulopoulos
    def __unicode__(self):
56 2a13d365 Leonidas Poulopoulos
        return "%s %s" %(self.peer_id.peer_name, self.emails)
57 2a13d365 Leonidas Poulopoulos
58 1e02e391 Leonidas Poulopoulos
    def get_peer_name(self):
59 1e02e391 Leonidas Poulopoulos
        return "%s" %self.peer_id.peer_name
60 1e02e391 Leonidas Poulopoulos
61 2a13d365 Leonidas Poulopoulos
    class Meta:
62 2a13d365 Leonidas Poulopoulos
        db_table="v_tech_c_peers"