mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-30 03:07:00 -05:00
feat: Implement MFA authentication, add ride statistics model, and update various services, APIs, and tests across the application.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class SupportConfig(AppConfig):
|
||||
default_auto_field = "django.db.models.BigAutoField"
|
||||
name = "apps.support"
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
from django.db import models
|
||||
from django.conf import settings
|
||||
from django.db import models
|
||||
|
||||
from apps.core.history import TrackedModel
|
||||
|
||||
|
||||
class Ticket(TrackedModel):
|
||||
STATUS_OPEN = 'open'
|
||||
STATUS_IN_PROGRESS = 'in_progress'
|
||||
STATUS_CLOSED = 'closed'
|
||||
|
||||
|
||||
STATUS_CHOICES = [
|
||||
(STATUS_OPEN, 'Open'),
|
||||
(STATUS_IN_PROGRESS, 'In Progress'),
|
||||
@@ -37,7 +39,7 @@ class Ticket(TrackedModel):
|
||||
related_name="tickets",
|
||||
help_text="User who submitted the ticket (optional)"
|
||||
)
|
||||
|
||||
|
||||
category = models.CharField(
|
||||
max_length=20,
|
||||
choices=CATEGORY_CHOICES,
|
||||
@@ -48,14 +50,14 @@ class Ticket(TrackedModel):
|
||||
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,
|
||||
max_length=20,
|
||||
choices=STATUS_CHOICES,
|
||||
default=STATUS_OPEN,
|
||||
db_index=True
|
||||
)
|
||||
|
||||
|
||||
class Meta(TrackedModel.Meta):
|
||||
verbose_name = "Ticket"
|
||||
verbose_name_plural = "Tickets"
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
from rest_framework import serializers
|
||||
from .models import Ticket
|
||||
|
||||
from apps.accounts.serializers import UserSerializer
|
||||
|
||||
from .models import Ticket
|
||||
|
||||
|
||||
class TicketSerializer(serializers.ModelSerializer):
|
||||
user = UserSerializer(read_only=True)
|
||||
category_display = serializers.CharField(source='get_category_display', read_only=True)
|
||||
status_display = serializers.CharField(source='get_status_display', read_only=True)
|
||||
|
||||
|
||||
class Meta:
|
||||
model = Ticket
|
||||
fields = [
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from django.urls import path, include
|
||||
from django.urls import include, path
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
from .views import TicketViewSet
|
||||
|
||||
router = DefaultRouter()
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
from rest_framework import viewsets, permissions, filters
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from rest_framework import filters, permissions, viewsets
|
||||
|
||||
from .models import Ticket
|
||||
from .serializers import TicketSerializer
|
||||
|
||||
|
||||
class TicketViewSet(viewsets.ModelViewSet):
|
||||
"""
|
||||
Standard users/guests can CREATE.
|
||||
|
||||
Reference in New Issue
Block a user