from django.views.generic import UpdateView, DetailView, ListView from django.views.generic.edit import CreateView, DeleteView, UpdateView from django.utils.decorators import method_decorator from django.contrib.auth.decorators import login_required from django.urls import reverse from .models import Note from .forms import NoteCreateForm class NoteCreateView(CreateView): model = Note form_class = NoteCreateForm def get_form_kwargs(self): kwargs = super(NoteCreateView, self).get_form_kwargs() kwargs.update({'user': self.request.user}) return kwargs def get_success_url(self): return reverse('posts:detail', kwargs={"pk": self.object.post.pk}) @method_decorator(login_required) def dispatch(self, *args, **kwargs): return super(NoteCreateView, self).dispatch(*args, **kwargs) class NoteUpdateView(UpdateView): model = Note fields = ['title', 'url', 'body_markdown', 'post', 'status', 'user'] def get_context_data(self, **kwargs): context = super(NoteUpdateView, self).get_context_data(**kwargs) context['is_update'] = True return context def get_success_url(self): return reverse('posts:detail', kwargs={"pk": self.object.post.pk}) @method_decorator(login_required) def dispatch(self, *args, **kwargs): return super(NoteUpdateView, self).dispatch(*args, **kwargs) class NoteListView(ListView): model = Note def get_queryset(self): if self.kwargs['status']: if self.kwargs['status'] == "todo": status = "Call In" else: status = self.kwargs['status'] status_reverse = dict((v, k) for k, v in Note.STATUS) qs = Note.objects.filter(user=self.request.user).filter(status=status_reverse[status]) qs = Note.objects.filter(user=self.request.user) return qs @method_decorator(login_required) def dispatch(self, *args, **kwargs): return super(NoteListView, self).dispatch(*args, **kwargs)