diff options
Diffstat (limited to 'apps/notes/views.py')
-rw-r--r-- | apps/notes/views.py | 40 |
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) |