1 from django.db import models
2 from core.models import User, Service, SingletonModel, PlCoreBase
4 from django.db import models
5 from django.forms.models import model_to_dict
8 # Create your models here.
10 class HpcService(SingletonModel,Service):
14 verbose_name = "HPC Service"
16 class ServiceProvider(PlCoreBase):
20 service_provider_id = models.IntegerField(null=True, blank=True)
21 name = models.CharField(max_length=254,help_text="Service Provider Name")
22 description = models.TextField(max_length=254,null=True, blank=True, help_text="Description of Service Provider")
23 enabled = models.BooleanField(default=True)
25 def __unicode__(self): return u'%s' % (self.name)
27 class ContentProvider(PlCoreBase):
31 # legacy vicci content providers already have names.
32 CP_TO_ACCOUNT = {"ON.LAB": "onlabcp",
33 "Syndicate": "syndicatecp"}
35 content_provider_id = models.IntegerField(null=True, blank=True)
36 name = models.CharField(max_length=254)
37 enabled = models.BooleanField(default=True)
38 description = models.TextField(max_length=254,null=True, blank=True,help_text="Description of Content Provider")
39 serviceProvider = models.ForeignKey(ServiceProvider)
41 # Note user relationships are directed not requiring a role.
42 users = models.ManyToManyField(User)
44 def __unicode__(self): return u'%s' % (self.name)
48 return self.CP_TO_ACCOUNT.get(self.name, self.name)
50 class OriginServer(PlCoreBase):
54 origin_server_id = models.IntegerField(null=True, blank=True)
55 url = models.URLField()
56 contentProvider = models.ForeignKey(ContentProvider)
58 authenticated = models.BooleanField(default=False, help_text="Status for this Site")
59 enabled = models.BooleanField(default=True, help_text="Status for this Site")
60 PROTOCOL_CHOICES = (('http', 'HTTP'),('rtmp', 'RTMP'), ('rtp', 'RTP'),('shout', 'SHOUTcast'))
61 protocol = models.CharField(default="HTTP", max_length = 12, choices=PROTOCOL_CHOICES)
62 redirects = models.BooleanField(default=True, help_text="Indicates whether Origin Server redirects should be used for this Origin Server")
63 description = models.TextField(null=True, blank=True, max_length=255)
65 def __unicode__(self): return u'%s' % (self.url)
67 class CDNPrefix(PlCoreBase):
71 cdn_prefix_id = models.IntegerField(null=True, blank=True)
72 prefix = models.CharField(max_length=200, help_text="Registered Prefix for Domain")
73 contentProvider = models.ForeignKey(ContentProvider)
74 description = models.TextField(max_length=254,null=True, blank=True,help_text="Description of Content Provider")
76 defaultOriginServer = models.ForeignKey(OriginServer, blank=True, null=True)
77 enabled = models.BooleanField(default=True)
79 def __unicode__(self): return u'%s' % (self.prefix)
81 class AccessMap(models.Model):
82 contentProvider = models.ForeignKey(ContentProvider)
83 name = models.CharField(max_length=64, help_text="Name of the Access Map")
84 description = models.TextField(null=True, blank=True,max_length=130)
85 map = models.FileField(upload_to="maps/", help_text="specifies which client requests are allowed")
87 def __unicode__(self): return self.name
89 class SiteMap(models.Model):
90 """ can be bound to a ContentProvider, ServiceProvider, or neither """
91 contentProvider = models.ForeignKey(ContentProvider, blank=True, null=True)
92 serviceProvider = models.ForeignKey(ServiceProvider, blank=True, null=True)
93 name = models.CharField(max_length=64, help_text="Name of the Site Map")
94 description = models.TextField(null=True, blank=True,max_length=130)
95 map = models.FileField(upload_to="maps/", help_text="specifies how to map requests to hpc instances")
97 def __unicode__(self): return self.name