From 1c4284366f0f82240e57a7a45fd9c4bd63941390 Mon Sep 17 00:00:00 2001 From: Filipp Lepalaan Date: Thu, 13 May 2021 07:52:47 +0300 Subject: Bring back contenttypes --- servo/models/common.py | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) (limited to 'servo/models/common.py') diff --git a/servo/models/common.py b/servo/models/common.py index 7339f4f..faad673 100644 --- a/servo/models/common.py +++ b/servo/models/common.py @@ -16,6 +16,8 @@ from mptt.models import MPTTModel, TreeForeignKey from django.utils.translation import ugettext_lazy as _ from django.dispatch import receiver +from django.contrib.contenttypes.models import ContentType +from django.contrib.contenttypes.fields import GenericForeignKey from django.db.models.signals import post_save from django.core.cache import cache @@ -62,7 +64,7 @@ class CsvTable(object): def has_body(self): return self.body != '' - def __unicode__(self): + def __str__(self): self.table = self.header + "\n" + self.body return self.table @@ -75,8 +77,9 @@ class TaggedItem(models.Model): """ A generic tagged item """ - ref = models.CharField(max_length=32) - ref_id = models.IntegerField() + content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) + object_id = models.PositiveIntegerField() + content_object = GenericForeignKey('content_type', 'object_id') tag = models.CharField(max_length=128) slug = models.SlugField() @@ -86,17 +89,21 @@ class TaggedItem(models.Model): self.slug = slugify(self.tag) super(TaggedItem, self).save(*args, **kwargs) - def __unicode__(self): + def __str__(self): return self.tag class Meta: app_label = "servo" - unique_together = ("ref", "ref_id", "tag",) class FlaggedItem(models.Model): - ref = models.CharField(max_length=32) - ref_id = models.IntegerField() + """ + A flagged item. This could also be a tag, but how? + """ + content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) + object_id = models.PositiveIntegerField() + content_object = GenericForeignKey('content_type', 'object_id') + flagged_by = models.ForeignKey( settings.AUTH_USER_MODEL, null=True, @@ -108,8 +115,9 @@ class Event(models.Model): """ Something that happens """ - ref = models.CharField(max_length=32) - ref_id = models.IntegerField() + content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) + object_id = models.PositiveIntegerField() + content_object = GenericForeignKey('content_type', 'object_id') description = models.CharField(max_length=255) triggered_by = models.ForeignKey( @@ -147,12 +155,12 @@ class Event(models.Model): def get_class(self): return "disabled" if self.handled_at else "" - def __unicode__(self): + def __str__(self): return self.description class Meta: - ordering = ('priority', '-id',) app_label = "servo" + ordering = ('priority', '-id',) class GsxAccount(models.Model): @@ -281,7 +289,7 @@ class GsxAccount(models.Model): def get_admin_url(self): return reverse('admin-edit_gsx_account', args=[self.pk]) - def __unicode__(self): + def __str__(self): return u"%s (%s)" % (self.title, self.get_environment_display()) class Meta: @@ -352,7 +360,7 @@ class Tag(MPTTModel): def get_admin_url(self): return reverse('admin-edit_tag', args=[self.type, self.pk]) - def __unicode__(self): + def __str__(self): return self.title objects = TreeManager() @@ -671,7 +679,7 @@ class Property(models.Model): ) value = models.TextField(blank=True, default='', verbose_name=_('value')) - def __unicode__(self): + def __str__(self): return self.title def get_admin_url(self): @@ -787,7 +795,7 @@ class Attachment(models.Model): return super(Attachment, self).save(*args, **kwargs) - def __unicode__(self): + def __str__(self): return os.path.basename(self.content.name) def __str__(self): -- cgit v1.2.3