feat: Implement MFA authentication, add ride statistics model, and update various services, APIs, and tests across the application.

This commit is contained in:
pacnpal
2025-12-28 17:32:53 -05:00
parent aa56c46c27
commit c95f99ca10
452 changed files with 7948 additions and 6073 deletions

View File

@@ -1,5 +1,6 @@
from django.apps import AppConfig
class SupportConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "apps.support"

View File

@@ -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"

View File

@@ -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 = [

View File

@@ -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()

View File

@@ -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.