Author: gjm Date: Wed Jun 6 15:19:29 2018 New Revision: 1833042 URL: http://svn.apache.org/viewvc?rev=1833042&view=rev Log: Extract common model enforcing id & created fields
Modified: bloodhound/branches/bh_core_experimental/trackers/models.py Modified: bloodhound/branches/bh_core_experimental/trackers/models.py URL: http://svn.apache.org/viewvc/bloodhound/branches/bh_core_experimental/trackers/models.py?rev=1833042&r1=1833041&r2=1833042&view=diff ============================================================================== --- bloodhound/branches/bh_core_experimental/trackers/models.py (original) +++ bloodhound/branches/bh_core_experimental/trackers/models.py Wed Jun 6 15:19:29 2018 @@ -24,14 +24,18 @@ from django.db import models logger = logging.getLogger(__name__) - -class Ticket(models.Model): +class ModelCommon(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) created = models.DateTimeField(auto_now_add=True, editable=False) + class Meta: + abstract = True + +class Ticket(ModelCommon): + def last_update(self): - last_event = self.changeevent_set.order_by('event_time').last() - return self.created if last_event is None else last_event.event_time + last_event = self.changeevent_set.order_by('created').last() + return self.created if last_event is None else last_event.created def add_field_event(self, field, newvalue): current_lines = self.get_field_value(field).splitlines(keepends=True) @@ -48,25 +52,16 @@ class Ticket(models.Model): except TicketField.DoesNotExist as e: return '' - event = self.changeevent_set.filter(field=tfield).order_by('event_time').last() + event = self.changeevent_set.filter(field=tfield).order_by('created').last() return '' if event is None else event.value() -class TicketField(models.Model): - id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) +class TicketField(ModelCommon): name = models.CharField(max_length=32) -class Label(TicketField): - pass - -class SharedField(TicketField): - pass - -class ChangeEvent(models.Model): - id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) +class ChangeEvent(ModelCommon): ticket = models.ForeignKey(Ticket, models.CASCADE, editable=False, null=False) field = models.ForeignKey(TicketField, models.CASCADE, editable=False, null=False) - event_time = models.DateTimeField(auto_now_add=True, editable=False) diff = models.TextField(editable=False) def value(self, which=2):