]> git.0d.be Git - chloro.git/blobdiff - chloro/phyll/views.py
views: add page to list notes by tag
[chloro.git] / chloro / phyll / views.py
index cb12807330d270ca4968ff6a7b8630cd27423b8a..f645f39bfba269f9ae8993f4581351a008b053b6 100644 (file)
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.views.generic import DetailView
+from django.http import Http404
+from django.views.generic import CreateView, DeleteView, DetailView, ListView, UpdateView, TemplateView
 
 from .models import Note
 
 
 class NoteView(DetailView):
     model = Note
+
+    def get(self, request, *args, **kwargs):
+        if kwargs.get('year'):
+            # check date does match
+            note = self.get_object()
+            creation = self.get_object().creation_timestamp
+            if (creation.year, creation.month, creation.day) != (
+                int(kwargs['year']),
+                int(kwargs['month']),
+                int(kwargs['day']),
+            ):
+                raise Http404()
+        return super(NoteView, self).get(request, *args, **kwargs)
+
+
+class NoteEditView(UpdateView):
+    model = Note
+    fields = ['title', 'slug', 'text', 'tags']
+
+
+class NoteAddView(CreateView):
+    model = Note
+    fields = ['title', 'slug', 'text', 'tags']
+
+
+class NoteDeleteView(DeleteView):
+    model = Note
+
+    def get_success_url(self):
+        return '/'
+
+
+class HomeView(TemplateView):
+    template_name = 'phyll/home.html'
+
+
+class ListOnTagView(ListView):
+    model = Note
+
+    def get_queryset(self):
+        return Note.objects.filter(tags__name__in=[self.kwargs['tag']])