62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
|
from django.db import models
|
||
|
from utils.models import CreatedUpdatedModel
|
||
|
from teams.models import Team
|
||
|
|
||
|
class Type(CreatedUpdatedModel):
|
||
|
"""
|
||
|
The events.Type model contains different types of system events which can happen.
|
||
|
New event types should be added in data migrations.
|
||
|
The following types are currently used in the codebase:
|
||
|
- ticket_created: Whenever a new ShopTicket is created
|
||
|
- public_credit_name_changed: Whenever a user changes public_credit_name in the profile
|
||
|
"""
|
||
|
name = models.TextField(
|
||
|
unique=True,
|
||
|
help_text='The type of event'
|
||
|
)
|
||
|
|
||
|
irc_notification = models.BooleanField(
|
||
|
default=False,
|
||
|
help_text='Check to send IRC notifications for this type of event.',
|
||
|
)
|
||
|
|
||
|
email_notification = models.BooleanField(
|
||
|
default=False,
|
||
|
help_text='Check to send email notifications for this type of event.',
|
||
|
)
|
||
|
def __str__(self):
|
||
|
return self.name
|
||
|
|
||
|
@property
|
||
|
def teams(self):
|
||
|
"""
|
||
|
This property returns a queryset with all the teams that should receive this type of events
|
||
|
"""
|
||
|
team_ids = Routing.objects.filter(eventtype=self).values_list('team', flat=True)
|
||
|
return Team.objects.filter(pk__in=team_ids)
|
||
|
|
||
|
|
||
|
class Routing(CreatedUpdatedModel):
|
||
|
"""
|
||
|
The events.Routing model contains routings for system events.
|
||
|
Add a new entry to route events of a certain type to a team.
|
||
|
Several teams can receive the same type of event.
|
||
|
"""
|
||
|
eventtype = models.ForeignKey(
|
||
|
'events.Type',
|
||
|
related_name='eventroutes',
|
||
|
on_delete=models.PROTECT,
|
||
|
help_text='The type of event to route',
|
||
|
)
|
||
|
|
||
|
team = models.ForeignKey(
|
||
|
'teams.Team',
|
||
|
related_name='eventroutes',
|
||
|
on_delete=models.PROTECT,
|
||
|
help_text='The team which should receive events of this type.'
|
||
|
)
|
||
|
|
||
|
def __str__(self):
|
||
|
return "%s -> %s" % (self.eventtype, self.team)
|
||
|
|