feat: Implement initial schema and add various API, service, and management command enhancements across the application.

This commit is contained in:
pacnpal
2026-01-01 15:13:01 -05:00
parent c95f99ca10
commit b243b17af7
413 changed files with 11164 additions and 17433 deletions

View File

@@ -5,30 +5,30 @@ from apps.core.history import TrackedModel
class Ticket(TrackedModel):
STATUS_OPEN = 'open'
STATUS_IN_PROGRESS = 'in_progress'
STATUS_CLOSED = 'closed'
STATUS_OPEN = "open"
STATUS_IN_PROGRESS = "in_progress"
STATUS_CLOSED = "closed"
STATUS_CHOICES = [
(STATUS_OPEN, 'Open'),
(STATUS_IN_PROGRESS, 'In Progress'),
(STATUS_CLOSED, 'Closed'),
(STATUS_OPEN, "Open"),
(STATUS_IN_PROGRESS, "In Progress"),
(STATUS_CLOSED, "Closed"),
]
CATEGORY_GENERAL = 'general'
CATEGORY_BUG = 'bug'
CATEGORY_PARTNERSHIP = 'partnership'
CATEGORY_PRESS = 'press'
CATEGORY_DATA = 'data'
CATEGORY_ACCOUNT = 'account'
CATEGORY_GENERAL = "general"
CATEGORY_BUG = "bug"
CATEGORY_PARTNERSHIP = "partnership"
CATEGORY_PRESS = "press"
CATEGORY_DATA = "data"
CATEGORY_ACCOUNT = "account"
CATEGORY_CHOICES = [
(CATEGORY_GENERAL, 'General Inquiry'),
(CATEGORY_BUG, 'Bug Report'),
(CATEGORY_PARTNERSHIP, 'Partnership'),
(CATEGORY_PRESS, 'Press/Media'),
(CATEGORY_DATA, 'Data Correction'),
(CATEGORY_ACCOUNT, 'Account Issue'),
(CATEGORY_GENERAL, "General Inquiry"),
(CATEGORY_BUG, "Bug Report"),
(CATEGORY_PARTNERSHIP, "Partnership"),
(CATEGORY_PRESS, "Press/Media"),
(CATEGORY_DATA, "Data Correction"),
(CATEGORY_ACCOUNT, "Account Issue"),
]
user = models.ForeignKey(
@@ -37,7 +37,7 @@ class Ticket(TrackedModel):
null=True,
blank=True,
related_name="tickets",
help_text="User who submitted the ticket (optional)"
help_text="User who submitted the ticket (optional)",
)
category = models.CharField(
@@ -45,18 +45,13 @@ class Ticket(TrackedModel):
choices=CATEGORY_CHOICES,
default=CATEGORY_GENERAL,
db_index=True,
help_text="Category of the ticket"
help_text="Category of the ticket",
)
subject = models.CharField(max_length=255)
message = models.TextField()
email = models.EmailField(help_text="Contact email", blank=True)
status = models.CharField(
max_length=20,
choices=STATUS_CHOICES,
default=STATUS_OPEN,
db_index=True
)
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default=STATUS_OPEN, db_index=True)
class Meta(TrackedModel.Meta):
verbose_name = "Ticket"
@@ -71,4 +66,3 @@ class Ticket(TrackedModel):
if self.user and not self.email:
self.email = self.user.email
super().save(*args, **kwargs)