1234567891011121314151617181920212223242526272829303132333435 |
- from django.contrib.auth.decorators import login_required, user_passes_test
- from django.http import HttpResponse
- from django.views.decorators.csrf import csrf_exempt
- from tickets.models import Task
- from tickets.utils import staff_check
- @csrf_exempt
- @login_required
- @user_passes_test(staff_check)
- def reorder_tasks(request) -> HttpResponse:
- """Handle task re-ordering (priorities) from JQuery drag/drop in list_detail.html
- """
- newtasklist = request.POST.getlist("tasktable[]")
- if newtasklist:
- # First task in received list is always empty - remove it
- del newtasklist[0]
- # Re-prioritize each task in list
- i = 1
- for id in newtasklist:
- try:
- task = Task.objects.get(pk=id)
- task.priority = i
- task.save()
- i += 1
- except Task.DoesNotExist:
- # Can occur if task is deleted behind the scenes during re-ordering.
- # Not easy to remove it from the UI without page refresh, but prevent crash.
- pass
- # All views must return an httpresponse of some kind ... without this we get
- # error 500s in the log even though things look peachy in the browser.
- return HttpResponse(status=201)
|