From 8e429c6b453e1061ee997934f241f76f2f103710 Mon Sep 17 00:00:00 2001 From: luxagraf Date: Wed, 26 Jul 2023 16:53:24 -0500 Subject: posts: added todo view of guides and reviews that need to be done --- app/notes/models.py | 7 +++++++ app/notes/views.py | 2 +- app/posts/models.py | 4 ++-- app/posts/templates/posts/post_list.html | 19 +++++++++++++++++++ app/posts/urls.py | 7 ++++++- app/posts/views.py | 19 +++++++++++++++++-- 6 files changed, 52 insertions(+), 6 deletions(-) diff --git a/app/notes/models.py b/app/notes/models.py index ffd0a25..7f8dab0 100644 --- a/app/notes/models.py +++ b/app/notes/models.py @@ -22,6 +22,13 @@ class Note(models.Model): (4, 'Live'), ) status = models.IntegerField(choices=STATUS, default=0) + PLAN = ( + (0, 'For Guide'), + (1, 'Review'), + (2, 'Rave'), + (3, 'Rant'), + ) + plan = models.IntegerField(choices=PLAN, default=0) class Meta: ordering = ('date_created', 'status') diff --git a/app/notes/views.py b/app/notes/views.py index 7dd9c04..209d896 100644 --- a/app/notes/views.py +++ b/app/notes/views.py @@ -29,7 +29,7 @@ class NoteCreateView(LoginRequiredMixin, CreateView): class NoteUpdateView(LoginRequiredMixin, UpdateView): model = Note - fields = ['title', 'url', 'body_markdown', 'post', 'status', 'user'] + fields = ['title', 'url', 'body_markdown', 'post', 'status', 'plan'] def get_context_data(self, **kwargs): context = super(NoteUpdateView, self).get_context_data(**kwargs) diff --git a/app/posts/models.py b/app/posts/models.py index e2adb0a..674dd5f 100644 --- a/app/posts/models.py +++ b/app/posts/models.py @@ -65,7 +65,7 @@ class Post(models.Model): def time_since_update(self): td = timezone.localdate() - self.date_last_pub - return td.days + return int(td.days) #def get_needs_update(self): # if self.time_since_update() > self.update_frequency: @@ -77,7 +77,7 @@ class Post(models.Model): if self.needs_update == True: return self.time_since_update() - self.update_frequency else: - return '' + return 0 def admin_url(self): return format_html('%s' % (self.url, self.url)) diff --git a/app/posts/templates/posts/post_list.html b/app/posts/templates/posts/post_list.html index 1abd65c..2fa18a0 100644 --- a/app/posts/templates/posts/post_list.html +++ b/app/posts/templates/posts/post_list.html @@ -51,6 +51,25 @@ Date last pub {{object.days_overdue}} {% endfor %} +{% if reviews %}{% for object in reviews %} + + + {{object.title}} + + + + {{object.url|truncatechars:55}} + + + {{object.date_last_pub}} + {{object.post_type}}{{object.get_post_type_display}} + {{object.update_frequency}} + {% if object.needs_update %} + 1True{%else%} + 0False{%endif%} + + {{object.days_overdue}} +{% endfor %}{% endif %} diff --git a/app/posts/urls.py b/app/posts/urls.py index c7da54e..8c91a4c 100644 --- a/app/posts/urls.py +++ b/app/posts/urls.py @@ -10,10 +10,15 @@ urlpatterns = [ views.PostListView.as_view(), name="list" ), + path( + r'new', + views.PostNewView.as_view(), + name="new" + ), path( r'todo', views.PostTodoView.as_view(), - name="todo" + name="new" ), path( r'/notes', diff --git a/app/posts/views.py b/app/posts/views.py index ad589c2..f406d29 100644 --- a/app/posts/views.py +++ b/app/posts/views.py @@ -1,9 +1,10 @@ from django.views.generic import UpdateView, DetailView, ListView from django.views.generic.edit import CreateView, DeleteView, UpdateView from django.contrib.auth.mixins import LoginRequiredMixin +from django.db.models import Q from .models import Post - +from notes.models import Note class PostListView(LoginRequiredMixin, ListView): model = Post @@ -12,12 +13,26 @@ class PostListView(LoginRequiredMixin, ListView): return Post.objects.filter(user=self.request.user).order_by("-needs_update") -class PostTodoView(LoginRequiredMixin, ListView): +class PostNewView(LoginRequiredMixin, ListView): template_name = 'notes/notes_detail.html' def get_queryset(self): return Post.objects.filter(user=self.request.user).filter(is_live=0) +class PostTodoView(LoginRequiredMixin, ListView): + template_name = 'posts/post_list.html' + + def get_queryset(self): + qs = Post.objects.filter(user=self.request.user) + qs = qs.filter(Q(needs_update=True) | Q(is_live=0)) + unsorted_results = qs.all() + return sorted(unsorted_results, key=lambda a: a.days_overdue(), reverse=True) + + def get_context_data(self, **kwargs): + context = super(PostTodoView, self).get_context_data(**kwargs) + context['reviews'] = Note.objects.filter(plan=1) + return context + class PostNotesView(LoginRequiredMixin, DetailView): model = Post -- cgit v1.2.3-70-g09d2