From b8b9443d8a218ce7d150f9d655fb7357f28a92eb Mon Sep 17 00:00:00 2001 From: Paul Date: Sat, 3 May 2025 00:46:47 +0200 Subject: [PATCH] feat: created first ticket class --- korrekturmanagementsystem/settings.py | 5 +++-- korrekturmanagementsystem/urls.py | 7 ++++--- ticketsystem/admin.py | 4 +++- ticketsystem/models.py | 27 ++++++++++++++++++++++++++- ticketsystem/urls.py | 10 ++++++++++ ticketsystem/views.py | 13 +++++++++++-- 6 files changed, 57 insertions(+), 9 deletions(-) create mode 100644 ticketsystem/urls.py diff --git a/korrekturmanagementsystem/settings.py b/korrekturmanagementsystem/settings.py index f21c50c..448b3f3 100644 --- a/korrekturmanagementsystem/settings.py +++ b/korrekturmanagementsystem/settings.py @@ -31,6 +31,7 @@ ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = [ + 'ticketsystem.apps.TicketsystemConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', @@ -102,9 +103,9 @@ AUTH_PASSWORD_VALIDATORS = [ # Internationalization # https://docs.djangoproject.com/en/5.2/topics/i18n/ -LANGUAGE_CODE = 'en-us' +LANGUAGE_CODE = 'de-de' -TIME_ZONE = 'UTC' +TIME_ZONE = 'CET' USE_I18N = True diff --git a/korrekturmanagementsystem/urls.py b/korrekturmanagementsystem/urls.py index 84f6a1f..ef336e9 100644 --- a/korrekturmanagementsystem/urls.py +++ b/korrekturmanagementsystem/urls.py @@ -15,8 +15,9 @@ Including another URLconf 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path +from django.urls import include, path urlpatterns = [ - path('admin/', admin.site.urls), -] + path("ticketsystem/", include("ticketsystem.urls")), + path("admin/", admin.site.urls), +] \ No newline at end of file diff --git a/ticketsystem/admin.py b/ticketsystem/admin.py index 8c38f3f..f8d6386 100644 --- a/ticketsystem/admin.py +++ b/ticketsystem/admin.py @@ -1,3 +1,5 @@ from django.contrib import admin -# Register your models here. +from .models import Ticket + +admin.site.register(Ticket) \ No newline at end of file diff --git a/ticketsystem/models.py b/ticketsystem/models.py index 71a8362..b646723 100644 --- a/ticketsystem/models.py +++ b/ticketsystem/models.py @@ -1,3 +1,28 @@ from django.db import models +from django.contrib.auth.models import User -# Create your models here. + +class Ticket(models.Model): + STATUS_CHOICES = [ + ('open', 'Offen'), + ('in_progress', 'In Bearbeitung'), + ('closed', 'Geschlossen'), + ] + + PRIORITY_CHOICES = [ + ('low', 'Niedrig'), + ('medium', 'Mittel'), + ('high', 'Hoch'), + ] + + title = models.CharField(max_length=200) + description = models.TextField() + status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='open') + priority = models.CharField(max_length=10, choices=PRIORITY_CHOICES, default='medium') + created_by = models.ForeignKey(User, related_name='tickets_created', on_delete=models.CASCADE) + assigned_to = models.ForeignKey(User, related_name='tickets_assigned', null=True, blank=True, on_delete=models.SET_NULL) + created_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now=True) + + def __str__(self): + return f"[{self.get_priority_display()}] {self.title} ({self.get_status_display()})" diff --git a/ticketsystem/urls.py b/ticketsystem/urls.py new file mode 100644 index 0000000..f685fb4 --- /dev/null +++ b/ticketsystem/urls.py @@ -0,0 +1,10 @@ +from django.urls import path + +from . import views + +urlpatterns = [ + # /ticketsystem/ + path("", views.index, name="index"), + # /ticketsystem/detail/ + path("/", views.detail, name="detail"), +] \ No newline at end of file diff --git a/ticketsystem/views.py b/ticketsystem/views.py index 91ea44a..b10be1e 100644 --- a/ticketsystem/views.py +++ b/ticketsystem/views.py @@ -1,3 +1,12 @@ -from django.shortcuts import render +from django.http import HttpResponse +from .models import Ticket -# Create your views here. + +def index(request): + latest_ticket_list = Ticket.objects.order_by("-created_at")[:5] + output = ", ".join([t.title for t in latest_ticket_list]) + return HttpResponse(output) + + +def detail(request, ticket_id): + return HttpResponse("You're looking at Ticket %s." % ticket_id)