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