From ad27fdf1c2e07c624199c837f9717ecf6bdb6cb8 Mon Sep 17 00:00:00 2001 From: m5ka Date: Wed, 27 Mar 2024 16:19:10 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E2=9D=8C=20allow=20deleting=20of=20pos?= =?UTF-8?q?ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- moku/config/urls.py | 5 ++-- moku/forms/post.py | 6 ++++- moku/models/post.py | 12 +++++++-- moku/templates/moku/post/edit.jinja | 11 ++++++++- moku/templates/moku/snippets/post.jinja | 2 +- moku/tests/test_post.py | 3 ++- moku/views/post.py | 33 ++++++++++++++++++++++++- 7 files changed, 63 insertions(+), 9 deletions(-) diff --git a/moku/config/urls.py b/moku/config/urls.py index f6e568b..fb0a39f 100644 --- a/moku/config/urls.py +++ b/moku/config/urls.py @@ -5,7 +5,7 @@ from django.urls import include, path from moku.views.auth import LoginView, LogoutView from moku.views.blog import IndexBlogView -from moku.views.post import EditPostview, FeedView +from moku.views.post import DeletePostView, EditPostview, FeedView from moku.views.recipe import ( DeleteRecipeView, DeleteStepView, @@ -34,7 +34,8 @@ urlpatterns = [ path("blog", IndexBlogView.as_view(), name="blog.index"), path("privacy", PrivacyView.as_view(), name="privacy"), path("terms", TermsView.as_view(), name="terms"), - path("edit/", EditPostview.as_view(), name="post.edit"), + path("post/", EditPostview.as_view(), name="post.edit"), + path("post//delete", DeletePostView.as_view(), name="post.delete"), path("user/", ProfileView.as_view(), name="profile"), path("user//json", UserJSONView.as_view(), name="json"), path("recipes", IndexRecipeView.as_view(), name="recipe.index"), diff --git a/moku/forms/post.py b/moku/forms/post.py index 49ee112..0d68e84 100644 --- a/moku/forms/post.py +++ b/moku/forms/post.py @@ -1,9 +1,13 @@ -from django.forms import ModelForm +from django.forms import Form, ModelForm from django.utils.translation import gettext_lazy as _ from moku.models import Post +class DeletePostForm(Form): + pass + + class PostForm(ModelForm): """Form for creating and updating posts.""" diff --git a/moku/models/post.py b/moku/models/post.py index b0c35c9..aab6627 100644 --- a/moku/models/post.py +++ b/moku/models/post.py @@ -86,10 +86,10 @@ class Post(models.Model): objects = PostManager() def __str__(self): - return f"{self.text} on {self.created_at}" + return f"{self.plain_text} on {self.created_at}" @property - def text(self): + def html(self): """ The text of the post, with the post's chosen verb hydrated with food and user information. @@ -101,3 +101,11 @@ class Post(models.Model): ), "food": escape(self.food), } + + @property + def plain_text(self): + """The text of the post as plain text.""" + return self.get_verb_display() % { + "user": f"@{self.created_by.username}", + "food": escape(self.food), + } diff --git a/moku/templates/moku/post/edit.jinja b/moku/templates/moku/post/edit.jinja index 9dc348f..85a04f3 100644 --- a/moku/templates/moku/post/edit.jinja +++ b/moku/templates/moku/post/edit.jinja @@ -2,7 +2,16 @@ {% block content %}
-

{% trans time_ago=post.created_at|naturaltime %}editing post from {{ time_ago }}{% endtrans %}

+

+ 👈 back to feed + + ❌ delete post +

+

+ {% trans post_text=post.plain_text, time_ago=post.created_at|naturaltime %} + editing {{ post_text }} from {{ time_ago }} + {% endtrans %} +

{% include "moku/snippets/post_form.jinja" %}
{% endblock content %} \ No newline at end of file diff --git a/moku/templates/moku/snippets/post.jinja b/moku/templates/moku/snippets/post.jinja index da69edd..0bcff2b 100644 --- a/moku/templates/moku/snippets/post.jinja +++ b/moku/templates/moku/snippets/post.jinja @@ -8,7 +8,7 @@ {% endif %}
{{ post.emoji }}
-

{{ post.text|safe }}

+

{{ post.html|safe }}