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" |