Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Correction bug à la màj d’un topic par son auteur anonyme #552

Merged
merged 1 commit into from
Feb 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 13 additions & 11 deletions lacommunaute/forum_conversation/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,18 @@
from lacommunaute.notification.utils import should_not_be_approved


class PostForm(AbstractPostForm):
class UpdatePostMixin:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥

def update_post(self, post):
if self.user.is_anonymous:
post.username = self.cleaned_data["username"]
if should_not_be_approved(self.cleaned_data["username"]):
post.approved = False
else:
post.updated_by = self.user
post.updates_count = F("updates_count") + 1


class PostForm(UpdatePostMixin, AbstractPostForm):
subject = CharField(widget=HiddenInput(), required=False)

def create_post(self):
Expand All @@ -21,17 +32,8 @@ def create_post(self):

return post

def update_post(self, post):
if self.user.is_anonymous:
post.username = self.cleaned_data["username"]
if should_not_be_approved(self.cleaned_data["username"]):
post.approved = False
else:
post.updated_by = self.user
post.updates_count = F("updates_count") + 1


class TopicForm(AbstractTopicForm):
class TopicForm(UpdatePostMixin, AbstractTopicForm):
tags = ModelMultipleChoiceField(
label="", queryset=Tag.objects.all(), widget=CheckboxSelectMultiple, required=False
)
Expand Down
40 changes: 39 additions & 1 deletion lacommunaute/forum_conversation/tests/tests_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
from lacommunaute.forum_conversation.enums import Filters
from lacommunaute.forum_conversation.factories import CertifiedPostFactory, PostFactory, TopicFactory
from lacommunaute.forum_conversation.forms import PostForm
from lacommunaute.forum_conversation.models import Topic
from lacommunaute.forum_conversation.models import Post, Topic
from lacommunaute.forum_conversation.views import PostDeleteView, TopicCreateView
from lacommunaute.forum_upvote.factories import UpVoteFactory
from lacommunaute.notification.factories import BouncedEmailFactory
Expand Down Expand Up @@ -237,6 +237,44 @@ def test_selected_tags_are_checked(self):
not_checked_box = f'class="form-check-input" type="checkbox" name="tags" value="{tag.id}" >'
self.assertContains(response, not_checked_box)

def test_update_by_anonymous_user(self):
response = self.client.post(
reverse(
"forum_conversation:topic_create",
kwargs={
"forum_slug": self.forum.slug,
"forum_pk": self.forum.pk,
},
),
{"subject": "subject", "content": "La communauté", "username": "[email protected]"},
)
post = Post.objects.select_related("topic").get(username="[email protected]")
topic = post.topic
response = self.client.post(
reverse(
"forum_conversation:topic_update",
kwargs={
"forum_slug": self.forum.slug,
"forum_pk": self.forum.pk,
"slug": topic.slug,
"pk": topic.pk,
},
),
{"subject": "subject", "content": "La communauté", "username": "[email protected]"},
)
self.assertRedirects(
response,
reverse(
"forum_conversation:topic",
kwargs={
"forum_slug": self.forum.slug,
"forum_pk": self.forum.pk,
"slug": topic.slug,
"pk": topic.pk,
},
),
)


class PostCreateViewTest(TestCase):
@classmethod
Expand Down
Loading