mirror of
https://github.com/django-helpdesk/django-helpdesk.git
synced 2025-08-19 12:24:40 +02:00
Add ticket dependency so you can't resolve a ticket until it's dependents are resolved. Addresses GH-43
This commit is contained in:
@@ -413,6 +413,16 @@ class Ticket(models.Model):
|
||||
)
|
||||
staff_url = property(_get_staff_url)
|
||||
|
||||
def _can_be_resolved(self):
|
||||
"""
|
||||
Returns a boolean.
|
||||
True = any dependencies are resolved
|
||||
False = There are non-resolved dependencies
|
||||
"""
|
||||
OPEN_STATUSES = (Ticket.OPEN_STATUS, Ticket.REOPENED_STATUS)
|
||||
return TicketDependency.objects.filter(ticket=self).filter(depends_on__status__in=OPEN_STATUSES).count() == 0
|
||||
can_be_resolved = property(_can_be_resolved)
|
||||
|
||||
if HAS_TAG_SUPPORT:
|
||||
tags = TagField(blank=True)
|
||||
|
||||
@@ -1209,3 +1219,28 @@ class TicketCustomFieldValue(models.Model):
|
||||
|
||||
class Meta:
|
||||
unique_together = ('ticket', 'field'),
|
||||
|
||||
|
||||
class TicketDependency(models.Model):
|
||||
"""
|
||||
The ticket identified by `ticket` cannot be resolved until the ticket in `depends_on` has been resolved.
|
||||
To help enforce this, a helper function `can_be_resolved` on each Ticket instance checks that
|
||||
these have all been resolved.
|
||||
"""
|
||||
ticket = models.ForeignKey(
|
||||
Ticket,
|
||||
verbose_name=_('Ticket'),
|
||||
related_name='ticketdependency',
|
||||
)
|
||||
|
||||
depends_on = models.ForeignKey(
|
||||
Ticket,
|
||||
verbose_name=_('Depends On Ticket'),
|
||||
related_name='depends_on',
|
||||
)
|
||||
|
||||
def __unicode__(self):
|
||||
return '%s / %s' % (self.ticket, self.depends_on)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('ticket', 'depends_on')
|
||||
|
Reference in New Issue
Block a user