from django.views.generic import UpdateView, DetailView, ListView, CreateView, DeleteView, RedirectView from django.views.generic.base import TemplateView from django.urls import reverse, reverse_lazy from django.db.models import Q from django.db.models import Count #from taxonomy.models import Category from .models import ( LuxNote, ) from .forms import ( LuxNoteCreateForm, LuxNoteEditForm, ) class LuxNoteCreateView(CreateView): model = LuxNote form_class = LuxNoteCreateForm template_name = "note_form.html" def get_success_url(self): if 'add_new' in self.request.POST: return reverse('notes:note-create') else: if self.object.project: return reverse('notes:project-detail', kwargs={"pk": self.object.project.pk}) else: return reverse('notes:note-create') class LuxNoteUpdateView(UpdateView): model = LuxNote form_class = LuxNoteEditForm template_name = "note_form.html" def get_context_data(self, **kwargs): context = super(LuxNoteUpdateView, self).get_context_data(**kwargs) context['is_update'] = True return context def get_success_url(self): if self.object.project: return reverse('notes:project-detail', kwargs={"pk": self.object.project.pk}) else: return reverse('notes:note-list', kwargs={"pk": self.object.project.pk}) class LuxNoteListView(ListView): model = LuxNote template_name = "note_list.html" def get_queryset(self): tag = self.request.GET.get("tag", False) if tag: return LuxNote.objects.filter(tags__name__in=[tag]) return LuxNote.objects.all() def get_context_data(self, **kwargs): context = super(LuxNoteListView, self).get_context_data(**kwargs) context['tags'] = LuxNote.tags.all().order_by('name') context['current'] = self.request.GET.get("tag", False) return context class LuxNoteDeleteView(DeleteView): # specify the model you want to use model = LuxNote success_url = "/notes/notes" template_name = "notes/confirm_delete.html"