aboutsummaryrefslogtreecommitdiffstats
path: root/apps/core/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'apps/core/models.py')
-rw-r--r--apps/core/models.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/apps/core/models.py b/apps/core/models.py
new file mode 100644
index 0000000..04d7582
--- /dev/null
+++ b/apps/core/models.py
@@ -0,0 +1,59 @@
+import uuid
+from django.db import models
+from django.contrib.contenttypes import generic
+from django.contrib.auth.models import AbstractUser
+from django.contrib.contenttypes.models import ContentType
+
+from django.template.defaultfilters import slugify
+
+
+class ServiceProvider(models.Model):
+ uuid = models.CharField(
+ unique=True,
+ max_length=36,
+ default=lambda: str(uuid.uuid4())
+ )
+ BACKEND_CHOICES = (
+ ('http', 'HTTP'),
+ ('smtp', 'SMTP'),
+ ('servo', 'Servo')
+ )
+ backend_type = models.CharField(
+ max_length=6,
+ default='servo',
+ choices=BACKEND_CHOICES
+ )
+ name = models.CharField(
+ max_length=128,
+ default='Apple Service Provider'
+ )
+ http_url = models.URLField(null=True, blank=True)
+ http_username = models.CharField(max_length=128, null=True, blank=True)
+ http_password = models.CharField(max_length=128, null=True, blank=True)
+ smtp_address = models.EmailField(null=True, blank=True)
+ servo_url = models.URLField(null=True, blank=True)
+
+
+class User(AbstractUser):
+ sp = models.ForeignKey(ServiceProvider, null=True)
+
+
+class TaggedItem(models.Model):
+ "A generic tagged item"
+ tag = models.CharField(max_length=128)
+ slug = models.SlugField()
+ kind = models.CharField(max_length=64, default='')
+
+ object_id = models.PositiveIntegerField()
+ content_type = models.ForeignKey(ContentType)
+ content_object = generic.GenericForeignKey("content_type", "object_id")
+
+ def save(self, *args, **kwargs):
+ self.slug = slugify(self.tag)
+ super(TaggedItem, self).save(*args, **kwargs)
+
+ def __unicode__(self):
+ return self.tag
+
+ class Meta:
+ unique_together = ("content_type", "object_id", "tag",)