diff options
author | luxagraf <sng@luxagraf.net> | 2023-07-26 16:53:24 -0500 |
---|---|---|
committer | luxagraf <sng@luxagraf.net> | 2023-07-26 16:53:24 -0500 |
commit | 8e429c6b453e1061ee997934f241f76f2f103710 (patch) | |
tree | c90921be881d315baeb709f38382fa71f1438546 | |
parent | cf0f93063a8a6c712c22b83eb5297cc9a0bb85e8 (diff) |
posts: added todo view of guides and reviews that need to be done
-rw-r--r-- | app/notes/models.py | 7 | ||||
-rw-r--r-- | app/notes/views.py | 2 | ||||
-rw-r--r-- | app/posts/models.py | 4 | ||||
-rw-r--r-- | app/posts/templates/posts/post_list.html | 19 | ||||
-rw-r--r-- | app/posts/urls.py | 7 | ||||
-rw-r--r-- | 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('<a target="_blank" href="%s">%s</a>' % (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 <td class="field-days_overdue">{{object.days_overdue}}</td></tr> </tr> {% endfor %} +{% if reviews %}{% for object in reviews %} +<tr> + <td class="field-title"> + <a href="/post/{{object.id}}/notes">{{object.title}}</a> + </td> + <td class="field-admin_url"> + <a target="_blank" href="{{object.url}}"> + {{object.url|truncatechars:55}} + </a> + </td> + <td class="field-date_last_pub nowrap">{{object.date_last_pub}}</td> + <td class="field-post_type"><span class="hide">{{object.post_type}}</span>{{object.get_post_type_display}}</td> + <td class="field-update_frequency">{{object.update_frequency}}</td> + <td class="field-needs_update">{% if object.needs_update %} + <span class="hide">1</span><img src="/static/admin/img/icon-yes.svg" alt="True">{%else%} + <span class="hide">0</span><img src="/static/admin/img/icon-no.svg" alt="False">{%endif%} + </td> + <td class="field-days_overdue">{{object.days_overdue}}</td></tr> +</tr>{% endfor %}{% endif %} </tbody> </table> </div> 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 @@ -11,9 +11,14 @@ urlpatterns = [ name="list" ), path( + r'new', + views.PostNewView.as_view(), + name="new" + ), + path( r'todo', views.PostTodoView.as_view(), - name="todo" + name="new" ), path( r'<pk>/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 |