--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.17 on 2019-12-29 18:32
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('phyll', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(name='note', options={'ordering': ['-creation_timestamp']},),
+ ]
creation_timestamp = models.DateTimeField(auto_now_add=True)
last_update_timestamp = models.DateTimeField(auto_now=True)
+ class Meta:
+ ordering = ['-creation_timestamp']
+
def get_absolute_url(self):
return '/%s/' % self.slug
--- /dev/null
+{% extends "phyll/base.html" %}
+{% load i18n %}
+
+{% block content-class %}post-list{% endblock %}
+
+{% block body %}
+<div>
+<h2>{{ view.kwargs.tag }}</h2>
+<ul>
+{% for post in object_list %}
+<li><a href="{{ post.get_absolute_url }}">{{ post.title }} <span>{{ post.creation_timestamp|date:"Y/m/d" }}</a></li>
+{% endfor %}
+</ul>
+</div>
+{% endblock %}
+
+{% block bottom-actions %}
+<a href="edit/">{% trans "Edit" %}</a>
+<a href="delete/">{% trans "Delete" %}</a>
+{% endblock %}
staff_member_required(views.NoteDeleteView.as_view(), login_url='login'),
),
url(r'^new-note/$', staff_member_required(views.NoteAddView.as_view(), login_url='login')),
+ url(r'^tag/(?P<tag>[\w:-]+)/$', views.ListOnTagView.as_view()),
url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[\w:-]+)/$', views.NoteView.as_view()),
url(r'^(?P<slug>[\w:-]+)/$', views.NoteView.as_view()),
url(r'^$', views.HomeView.as_view()),
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from django.http import Http404
-from django.views.generic import CreateView, DeleteView, DetailView, UpdateView, TemplateView
+from django.views.generic import CreateView, DeleteView, DetailView, ListView, UpdateView, TemplateView
from .models import Note
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']])