This repository was archived by the owner on Jun 13, 2022. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathviews.py
executable file
·112 lines (83 loc) · 3.17 KB
/
views.py
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
from django.shortcuts import render
from django.urls import reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from django.views.generic import (
ListView,
DetailView,
CreateView,
UpdateView,
DeleteView,
)
from .models import Notes
from django.db.models import Q
from domecode.mixins import PageTitleMixin
def home(request):
return render(request, "notes/home.html", {"title": "Home"})
def about(request):
return render(request, "notes/about.html", {"title": "About"})
def music(request):
return render(request, "notes/musicpopup.html", {"title": "Music"})
def sponsor(request):
return render(request, "notes/sponsor.html", {"title": "Sponsor"})
def privacy(request):
return render(request, "notes/privacy.html", {"title": "Privacy Policy"})
def tos(request):
return render(request, "notes/termsofservice.html",
{"title": "Terms of Service"})
class NotesListView(LoginRequiredMixin, PageTitleMixin, ListView):
model = Notes
context_object_name = "notes"
title = "Your Notes"
paginate_by = 15
def get_queryset(self, *args, **kwargs):
object_list = super(NotesListView, self).get_queryset(*args, **kwargs)
search = self.request.GET.get("q", None)
if search:
object_list = object_list.filter(
Q(title__contains=search, user=self.request.user)
| Q(content__contains=search, user=self.request.user)
| Q(category__contains=search, user=self.request.user)
).order_by("-last_modified")
return object_list
else:
object_list = Notes.objects.filter(
user=self.request.user).order_by("-last_modified")
return object_list
class NotesUpdateView(LoginRequiredMixin, UserPassesTestMixin, PageTitleMixin,
UpdateView):
model = Notes
success_url = reverse_lazy("notes:list")
title = "Update Note"
fields = ["title", "content", "category"]
def form_valid(self, form):
form.instance.user = self.request.user
return super().form_valid(form)
def test_func(self):
notes = self.get_object()
if self.request.user == notes.user:
return True
class NotesDetailView(PageTitleMixin, LoginRequiredMixin, UserPassesTestMixin,
DetailView):
model = Notes
title = "Notes"
def test_func(self):
notes = self.get_object()
if self.request.user == notes.user:
return True
class NotesDeleteView(LoginRequiredMixin, UserPassesTestMixin, PageTitleMixin,
DeleteView):
model = Notes
success_url = reverse_lazy("notes:list")
title = "Delete Note"
def test_func(self):
notes = self.get_object()
if self.request.user == notes.user:
return True
class NotesCreateView(LoginRequiredMixin, PageTitleMixin, CreateView):
model = Notes
fields = ["title", "content", "category"]
title = "Create Note"
success_url = reverse_lazy("notes:list")
def form_valid(self, form):
form.instance.user = self.request.user
return super().form_valid(form)