"""
govservices.models
==================
.. autoclass:: Agency
:undoc-members:
:members:
.. autoclass:: SubService
:undoc-members:
:members:
.. autoclass:: ServiceTag
:undoc-members:
:members:
.. autoclass:: LifeEvent
:undoc-members:
:members:
.. autoclass:: ServiceType
:undoc-members:
:members:
.. autoclass:: Service
:undoc-members:
:members:
.. autoclass:: Dimension
:undoc-members:
:members:
"""
from django.db import models
[docs]class Agency(models.Model):
acronym = models.CharField(max_length=128)
def __unicode__(self):
return self.acronym
[docs]class SubService(models.Model):
cat_id = models.CharField(max_length=512)
desc = models.TextField(null=True, blank=True)
name = models.CharField(max_length=512, null=True, blank=True)
info_url = models.CharField(max_length=512, null=True, blank=True)
primary_audience = models.CharField(max_length=512, null=True, blank=True)
agency = models.ForeignKey(Agency, default=1)
def __unicode__(self):
return self.name
class Meta:
unique_together = ['agency','cat_id']
[docs]class ServiceTag(models.Model):
label = models.CharField(max_length=512)
def __unicode__(self):
return self.label
[docs]class LifeEvent(models.Model):
label = models.TextField()
def __unicode__(self):
return self.label
[docs]class ServiceType(models.Model):
label = models.TextField()
def __unicode__(self):
return self.label
[docs]class Service(models.Model):
# composite key
src_id = models.CharField(max_length=256)
agency = models.ForeignKey(Agency, default=1)
# M:N
service_types = models.ManyToManyField(ServiceType)
service_tags = models.ManyToManyField(ServiceTag)
life_events = models.ManyToManyField(LifeEvent)
# optional properties
old_src_id = models.IntegerField(null=True, blank=True)
json_filename = models.CharField(max_length=512, null=True, blank=True)
info_url = models.CharField(max_length=512, null=True, blank=True)
name = models.CharField(max_length=512, null=True, blank=True)
acronym = models.CharField(max_length=512, null=True, blank=True)
tagline = models.CharField(max_length=512, null=True, blank=True)
primary_audience = models.CharField(max_length=512, null=True, blank=True)
analytics_available = models.CharField(max_length=512, null=True, blank=True)
incidental = models.CharField(max_length=512, null=True, blank=True)
secondary = models.CharField(max_length=512, null=True, blank=True)
src_type = models.CharField(max_length=512, null=True, blank=True)
description = models.TextField(null=True, blank=True)
comment = models.TextField(null=True, blank=True)
current = models.CharField(max_length=512, null=True, blank=True)
org_acronym = models.CharField(max_length=64, null=True, blank=True) # TODO, remove
class Meta:
unique_together = ['agency','src_id']
def __unicode__(self):
return "%s: %s: %s" % (self.agency.acronym, self.src_id, self.name)
[docs]class Dimension(models.Model):
# dim_id + agency are unique
dim_id = models.CharField(max_length=512)
agency = models.ForeignKey(Agency)
name = models.CharField(max_length=512, null=True, blank=True)
dist = models.IntegerField(null=True, blank=True)
desc = models.TextField(null=True, blank=True)
info_url = models.CharField(max_length=512, null=True, blank=True)
class Meta:
unique_together = ['agency','dim_id']