1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- from django.contrib import messages
- from django.contrib.auth.decorators import login_required, user_passes_test
- from django.core.exceptions import PermissionDenied
- from django.db import IntegrityError
- from django.http import HttpResponse
- from django.shortcuts import redirect, render
- from django.utils.text import slugify
- from tickets.forms import ListCreateForm
- from tickets.utils import staff_check
- @login_required
- @user_passes_test(staff_check)
- def create_list(request) -> HttpResponse:
- """Allow users to add a new tickets list to the group they're in.
- """
-
- if not request.user.is_staff:
- raise PermissionDenied
- if request.POST:
- form = ListCreateForm(request.user, request.POST)
- if form.is_valid():
- try:
- newlist = form.save(commit=False)
- newlist.slug = slugify(newlist.name, allow_unicode=True)
- newlist.save()
- messages.success(request, "A new list has been added.")
- return redirect("tickets:lists")
- except IntegrityError:
- messages.warning(
- request,
- "There was a problem saving the new list. "
- "Most likely a list with the same name in the same group already exists.",
- )
- else:
- if request.user.groups.count() == 1:
- form = ListCreateForm(request.user, initial={"group": request.user.groups.first()})
- else:
- form = ListCreateForm(request.user)
- context = {"form": form}
- return render(request, "tickets/create_list.html", context)
|