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): 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")) linked_item = GenericForeignKey() is_open = models.BooleanField(verbose_name=_("is ticket open?"), default=True) class TicketMessage(models.Model): 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)