NDOJ/judge/models/ticket.py

50 lines
1.7 KiB
Python
Raw Normal View History

2020-01-21 06:35:58 +00:00
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.utils.translation import gettext_lazy as _
from judge.models.profile import Profile
class Ticket(models.Model):
2022-05-14 17:57:27 +00:00
title = models.CharField(max_length=100, verbose_name=_("ticket title"))
user = models.ForeignKey(
Profile,
verbose_name=_("ticket creator"),
related_name="tickets",
on_delete=models.CASCADE,
)
time = models.DateTimeField(verbose_name=_("creation time"), auto_now_add=True)
assignees = models.ManyToManyField(
Profile, verbose_name=_("assignees"), related_name="assigned_tickets"
)
notes = models.TextField(
verbose_name=_("quick notes"),
blank=True,
help_text=_("Staff notes for this issue to aid in processing."),
)
content_type = models.ForeignKey(
ContentType, verbose_name=_("linked item type"), on_delete=models.CASCADE
)
object_id = models.PositiveIntegerField(verbose_name=_("linked item ID"))
2020-01-21 06:35:58 +00:00
linked_item = GenericForeignKey()
2022-05-14 17:57:27 +00:00
is_open = models.BooleanField(verbose_name=_("is ticket open?"), default=True)
2020-01-21 06:35:58 +00:00
class TicketMessage(models.Model):
2022-05-14 17:57:27 +00:00
ticket = models.ForeignKey(
Ticket,
verbose_name=_("ticket"),
related_name="messages",
related_query_name="message",
on_delete=models.CASCADE,
)
user = models.ForeignKey(
Profile,
verbose_name=_("poster"),
related_name="ticket_messages",
on_delete=models.CASCADE,
)
body = models.TextField(verbose_name=_("message body"))
time = models.DateTimeField(verbose_name=_("message time"), auto_now_add=True)