You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bloodhound.apache.org by gj...@apache.org on 2018/06/06 15:19:29 UTC
svn commit: r1833042 -
/bloodhound/branches/bh_core_experimental/trackers/models.py
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):
Re: svn commit: r1833042 -
/bloodhound/branches/bh_core_experimental/trackers/models.py
Posted by Gary Martin <ga...@physics.org>.
Hi,
Added a few little updates, a previous one was mostly about fixing the README.md so some of the suggestions in there actually work. This one adds an abstract model to factor out a common definition for id and created fields for all models.
Cheers,
Gary
On Wed, 6 Jun 2018, at 4:19 PM, gjm@apache.org wrote:
> 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):
>
>