aboutsummaryrefslogtreecommitdiff
path: root/apps/notes/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'apps/notes/views.py')
-rw-r--r--apps/notes/views.py40
1 files changed, 28 insertions, 12 deletions
diff --git a/apps/notes/views.py b/apps/notes/views.py
index d885ad9..5d55720 100644
--- a/apps/notes/views.py
+++ b/apps/notes/views.py
@@ -11,8 +11,8 @@ from rest_framework.response import Response
from rest_framework.decorators import list_route
from rest_framework import permissions
-from .serializers import NoteSerializer, NotebookSerializer
-from .models import Note, Notebook
+from .serializers import NoteSerializer, NotebookSerializer, NoteTagSerializer
+from .models import Note, Notebook, LuxTag
from .forms import NoteForm, NotebookForm
@@ -43,7 +43,7 @@ class NoteListView(LoggedInViewWithUser, ListView):
class NoteTagView(LoggedInViewWithUser, ListView):
model = Note
template_name = 'notes/notes_list.html'
-
+
def get_queryset(self):
'''
This can generate a crazy amount of joins if there's a lot of tags
@@ -69,12 +69,6 @@ class NoteTagView(LoggedInViewWithUser, ListView):
return context
-class NoteListRedirectView(RedirectView, LoggedInViewWithUser):
-
- def get_redirect_url(self, *args, **kwargs):
- return reverse_lazy("notes:note-list", kwargs={"user": self.request.user.username})
-
-
class NoteDetailView(UpdateView, LoggedInViewWithUser):
model = Note
form_class = NoteForm
@@ -101,7 +95,12 @@ class NoteCreateView(CreateView, LoggedInViewWithUser):
return super(NoteCreateView, self).form_valid(form)
def get_success_url(self):
- return reverse_lazy('notes:note-detail', kwargs={'user': self.request.user.username, 'slug': self.object.slug})
+ return reverse_lazy('notes:detail', kwargs={'slug': self.object.slug, 'pk': self.object.pk})
+
+ def get_context_data(self, **kwargs):
+ context = super().get_context_data(**kwargs)
+ context['notes_list'] = Note.objects.filter(owner=self.request.user).select_related()
+ return context
class NotebookListView(CreateView, LoggedInViewWithUser):
@@ -124,11 +123,14 @@ class NotebookDetailView(DetailView, LoggedInViewWithUser):
model = Notebook
def get_object(self):
- return get_object_or_404(self.get_queryset().select_related(), owner=self.request.user, slug=self.kwargs["slug"])
+ notebook = get_object_or_404(self.get_queryset().select_related(), owner=self.request.user, slug=self.kwargs["slug"])
+ self.form = NotebookForm(instance=notebook)
+ return notebook
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['notes_list'] = Note.objects.filter(owner=self.request.user).select_related()
+ context['form'] = self.form
return context
@@ -153,7 +155,7 @@ class NoteViewSet(viewsets.ModelViewSet):
return Note.objects.filter(owner=self.request.user).order_by('-date_created')
def perform_create(self, serializer):
- serializer.save(owner=self.request.user)
+ serializer.save(owner=self.request.user, tags__owner=self.request.user)
def get_object(self):
obj = get_object_or_404(self.get_queryset(), pk=self.kwargs["pk"])
@@ -178,3 +180,17 @@ class NotebookViewSet(viewsets.ModelViewSet):
def get_menu_data(self, serializer):
return Notebook.objects.filter(owner=self.request.user).order_by('-name')[:1]
+
+
+class TagViewSet(viewsets.ModelViewSet):
+ """
+ API endpoint that allows notes to be viewed or edited.
+ """
+ serializer_class = NoteTagSerializer
+ permission_classes = (permissions.IsAuthenticated,)
+
+ def get_queryset(self):
+ return LuxTag.objects.filter(owner=self.request.user)
+
+ def perform_create(self, serializer):
+ serializer.save(owner=self.request.user)