diff --git a/apps/home/models.py b/apps/home/models.py index e898be6..ef3bc44 100644 --- a/apps/home/models.py +++ b/apps/home/models.py @@ -101,14 +101,23 @@ class Ticket(models.Model): def clean_description(self): cleaned_description = bleach.clean( self.description, - tags=['b', 'i', 'u', 'p', 'br', 'a', 'h3', 'h4', 'h5', 'h6'], + tags=[ + 'b', 'i', 'u', 'p', 'br', 'a', 'h3', 'h4', 'h5', 'h6', 'strong', + 'figure', 'table', 'tbody', 'tr', 'td' + ], attributes={'a': ['href', 'title']} ) return cleaned_description def save(self, *args, **kwargs): self.description = self.clean_description() - # self.edit_timestamp = timezone.now() ## TEMP COMMENT, UNCOMMENT LATER !! + + # we must use the same datetime object, otherwise they wont match + now = timezone.now() + + if self._state.adding: self.create_timestamp = now + self.edit_timestamp = now + super().save(*args, **kwargs) @property diff --git a/apps/home/views.py b/apps/home/views.py index f8145ec..5df9a18 100644 --- a/apps/home/views.py +++ b/apps/home/views.py @@ -10,6 +10,7 @@ from django.http import HttpResponse, HttpResponseRedirect, JsonResponse from django.template import loader from django.shortcuts import render from django.urls import reverse +from django.contrib.auth import get_user_model from ..authentication.models import Department from .models import Ticket, TicketPriority, TicketTag @@ -57,6 +58,7 @@ def get_tickets(request): print(key, values) for value in values: + if value == "all": continue # don't apply a filter if we want all queryset = queryset.filter(**{key: [value]}) tickets = queryset.order_by("-create_timestamp") @@ -65,6 +67,7 @@ def get_tickets(request): return JsonResponse(data) + @login_required @require_POST def get_filter_counts(request): @@ -96,7 +99,34 @@ def get_filter_counts(request): @login_required() @require_POST def new_ticket(request): - return JsonResponse({"placeholder": "nothing here yet"}) + print(request.POST) + + get = lambda key: request.POST.get(key) + getlist = lambda key: request.POST.getlist(key) + + title = get("title") + description = get("description") + author_id = get("author_id") + priority_id = get("priority_id") + tag_ids = getlist("tag_ids[]") + + User = get_user_model() + author = User.objects.get(id=author_id) + + priority = TicketPriority.objects.get(id=priority_id) + tags = [ + tag for tag in TicketTag.objects.filter(id__in=tag_ids) + ] + + ticket = Ticket.objects.create( + title=title, + description=description, + author=author, + priority=priority, + ) + ticket.tags.set(tags) + + return JsonResponse({"success": "ticket created successfully"}) @login_required() diff --git a/apps/templates/home/tickets.html b/apps/templates/home/tickets.html index 33634a6..e874638 100644 --- a/apps/templates/home/tickets.html +++ b/apps/templates/home/tickets.html @@ -75,7 +75,7 @@