From edfa128720853bcd725ddc706adb4a589d10d638 Mon Sep 17 00:00:00 2001 From: rafalp Date: Mon, 19 Aug 2024 00:17:25 +0200 Subject: [PATCH] Generate thread with posts in different states in dev --- misago/templates/misago/thread_feed/post.html | 8 +- .../management/commands/loaddevfixture.py | 133 +++++++++++++++++- 2 files changed, 136 insertions(+), 5 deletions(-) diff --git a/misago/templates/misago/thread_feed/post.html b/misago/templates/misago/thread_feed/post.html index a5ad1cc44..d50898b34 100644 --- a/misago/templates/misago/thread_feed/post.html +++ b/misago/templates/misago/thread_feed/post.html @@ -142,19 +142,19 @@ class="thread-feed-item-post-bit-top-timestamp" href="#todo" title="{{ post.posted_on|date:'DATETIME_FORMAT' }}" - misago-timestamp="{{ thread.last_post_on.isoformat }}" + misago-timestamp="{{ post.posted_on.isoformat }}" > - {{ thread.last_post_on|date_relative }} + {{ post.posted_on|date_relative }} - {{ thread.last_post_on|date_relative_short }} + {{ post.posted_on|date_relative_short }} diff --git a/plugins/misago-dev-site-fixture/misago_dev_site_fixture/management/commands/loaddevfixture.py b/plugins/misago-dev-site-fixture/misago_dev_site_fixture/management/commands/loaddevfixture.py index 2b3f86088..9ea0d9bdb 100644 --- a/plugins/misago-dev-site-fixture/misago_dev_site_fixture/management/commands/loaddevfixture.py +++ b/plugins/misago-dev-site-fixture/misago_dev_site_fixture/management/commands/loaddevfixture.py @@ -109,6 +109,8 @@ def handle(self, *args, **options): invalidate_cache(CacheName.CATEGORIES) invalidate_cache(CacheName.PERMISSIONS) + self.stdout.write("Created new categories hierarchy.") + cache_versions = get_cache_versions() settings = DynamicSettings(cache_versions) default_rank = Rank.objects.get_default() @@ -163,6 +165,8 @@ def handle(self, *args, **options): invalidate_cache(CacheName.BANS) + self.stdout.write("Created user accounts.") + timestamp = timezone.now() first_category = ( @@ -362,6 +366,124 @@ def handle(self, *args, **options): yesterday_post.update_search_vector() yesterday_post.save() + timestamp = timezone.now() - timedelta(minutes=30) + + thread_with_states = Thread.objects.create( + category=first_category, + title="Different post states", + slug="different-post-states", + started_on=timestamp, + last_post_on=timestamp, + starter=None, + starter_name="Misago", + starter_slug="misago", + last_poster=None, + last_poster_name="Misago", + last_poster_slug="misago", + ) + + default_post = Post.objects.create( + category=first_category, + thread=thread_with_states, + poster=user, + poster_name=user.username, + posted_on=timestamp, + updated_on=timestamp, + ) + + default_post.original = "Post in a default state." + default_post.parsed = "

Post in a default state.

" + default_post.search_document = default_post.original + + update_post_checksum(default_post) + default_post.update_search_vector() + default_post.save() + + timestamp = timezone.now() - timedelta(minutes=20) + + guest_post = Post.objects.create( + category=first_category, + thread=thread_with_states, + poster=None, + poster_name="DeletedUser", + posted_on=timestamp, + updated_on=timestamp, + ) + + guest_post.original = "Post by a deleted user." + guest_post.parsed = "

Post by a deleted user.

" + guest_post.search_document = guest_post.original + + update_post_checksum(guest_post) + guest_post.update_search_vector() + guest_post.save() + + timestamp = timezone.now() - timedelta(minutes=10) + + hidden_post = Post.objects.create( + category=first_category, + thread=thread_with_states, + poster=other_user, + poster_name=other_user.username, + posted_on=timestamp, + updated_on=timestamp, + is_hidden=True, + ) + + hidden_post.original = "Hidden post." + hidden_post.parsed = "

Hidden post.

" + hidden_post.search_document = hidden_post.original + + update_post_checksum(hidden_post) + hidden_post.update_search_vector() + hidden_post.save() + + timestamp = timezone.now() - timedelta(minutes=5) + + unapproved_post = Post.objects.create( + category=first_category, + thread=thread_with_states, + poster=other_user, + poster_name=other_user.username, + posted_on=timestamp, + updated_on=timestamp, + is_hidden=True, + ) + + unapproved_post.original = "Unapproved post." + unapproved_post.parsed = "

Unapproved post.

" + unapproved_post.search_document = unapproved_post.original + + update_post_checksum(unapproved_post) + unapproved_post.update_search_vector() + unapproved_post.save() + + thread_with_states.synchronize() + thread_with_states.save() + + edited_post = Post.objects.create( + category=first_category, + thread=thread_with_states, + poster=user, + poster_name=user.username, + posted_on=timezone.now() - timedelta(minutes=2), + updated_on=timezone.now(), + edits=42, + last_editor=moderator, + last_editor_name=moderator.username, + last_editor_slug=moderator.slug, + ) + + edited_post.original = "Edited post." + edited_post.parsed = "

Edited post.

" + edited_post.search_document = edited_post.original + + update_post_checksum(edited_post) + edited_post.update_search_vector() + edited_post.save() + + timestamp = timezone.now() + readme_thread = Thread.objects.create( category=first_category, title="Welcome to the Misago Dev Fixture! Read me first!", @@ -514,6 +636,15 @@ def handle(self, *args, **options): first_category.synchronize() first_category.save() + self.stdout.write("Created demo threads.") + + for user in User.objects.order_by("id").iterator(): + user.threads = user.thread_set.count() + user.posts = user.post_set.count() + user.save() + + self.stdout.write("Synchronized user accounts.") + self.stdout.write( - self.style.SUCCESS("Database has been populated with additional data.") + self.style.SUCCESS("Database has been populated with development data.") )