File size: 2,454 Bytes
7ebc393
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from django.shortcuts import render, redirect
from django.utils import timezone
from .models import Task
from .forms import TaskForm
from django.contrib.auth import logout
# A quick helper function to grab the pending count for the header
def get_global_context():
    return {
        'pending_count': Task.objects.filter(completed=False).count()
    }

def index(request):
    pending_tasks = Task.objects.filter(completed=False).order_by('-created_at')
    completed_tasks = Task.objects.filter(completed=True).order_by('-completed_at')
    form = TaskForm()

    if request.method == 'POST':
        form = TaskForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/')

    context = {'pending_tasks': pending_tasks, 'completed_tasks': completed_tasks, 'form': form}
    context.update(get_global_context()) # Add the bell count!
    return render(request, 'tasks/list.html', context)

def updateTask(request, pk):
    task = Task.objects.get(id=pk)
    form = TaskForm(instance=task)

    if request.method == 'POST':
        form = TaskForm(request.POST, instance=task)
        if form.is_valid():
            form.save()
            return redirect('/')

    context = {'form': form}
    context.update(get_global_context())
    return render(request, 'tasks/update_task.html', context)

def deleteTask(request, pk):
    item = Task.objects.get(id=pk)
    if request.method == 'POST':
        item.delete()
        return redirect('/')

    context = {'item': item}
    context.update(get_global_context())
    return render(request, 'tasks/delete_task.html', context)

def completeTask(request, pk):
    task = Task.objects.get(id=pk)
    task.completed = True
    task.completed_at = timezone.now()
    task.save()
    return redirect('/')

def undoTask(request, pk):
    task = Task.objects.get(id=pk)
    task.completed = False
    task.completed_at = None
    task.save()
    return redirect('/')

# --- Static Pages ---
def privacyPolicy(request):
    context = get_global_context()
    return render(request, 'tasks/privacy.html', context)

def termsOfService(request):
    context = get_global_context()
    return render(request, 'tasks/terms.html', context)

def support(request):
    context = get_global_context()
    return render(request, 'tasks/support.html', context)


def logoutUser(request):
    logout(request)
    return redirect('/') # Or redirect to a login page if you have one