Split up views into separate modules

This commit is contained in:
Scot Hacker 2018-12-21 02:00:36 -08:00
parent 21ec87cee4
commit 78e9c510bc
15 changed files with 557 additions and 464 deletions

View file

@ -1,8 +1,26 @@
from django.contrib.sites.models import Site
from django.core.exceptions import PermissionDenied
from django.core.mail import send_mail
from django.template.loader import render_to_string
from todo.models import Comment
from todo.models import Comment, Task
def staff_only(function):
"""
Custom view decorator allows us to raise 403 on insufficient permissions,
rather than redirect user to login view.
"""
def wrap(request, *args, **kwargs):
if request.user.is_staff:
return function(request, *args, **kwargs)
else:
raise PermissionDenied
wrap.__doc__ = function.__doc__
wrap.__name__ = function.__name__
return wrap
def send_notify_mail(new_task):
@ -44,3 +62,15 @@ def send_email_to_thread_participants(task, msg_body, user, subject=None):
recip_list = list(set(recip_list)) # Eliminate duplicates
send_mail(email_subject, email_body, task.created_by.email, recip_list, fail_silently=False)
def toggle_task_completed(task_id: int) -> bool:
try:
task = Task.objects.get(id=task_id)
task.completed = not task.completed
task.save()
return True
except Task.DoesNotExist:
# FIXME proper log message
print("task not found")
return False