Repository: vas3k/vas3k.club

Issue:
Баг: разрешить исправлять "Кратко ваш аргумент почему" в баттлах
<!-- WARNING: Игнорирование шаблона может привести к тому, что таску закроют -->

## Чеклист

- [x] Я поискал поиском по трекеру похожие проблемы, в том числе в закрытых Issues
- [x] Баг стабильно воспроизводится и я знаю как это сделать

## Описание бага

Если написать аргумент в баттле, попросит три поля: за что аргументируем, кратко о чем аргумент, длинный аргумент.

Когда хочешь отредактировать аргумент, дает только одно поле, как будто это обычный комментарий. Если опечататься в поле "Кратко ваш аргумент почему", то эту опечатку исправить нельзя. Приходиться удалять аргумент и пересоздавать его.

## Ожидаемый результат

Форма для редактирования обычных комментариев и форма для редактирования комментариев баттла должны быть разные. В последнем случае нужно еще уметь исправлять "Кратко ваш аргумент почему".

## Шаги к воспроизведению

1. Написать аргумент к баттлу
2. Попробовать его исправить
Баг: разрешить исправлять "Кратко ваш аргумент почему" в баттлах
<!-- WARNING: Игнорирование шаблона может привести к тому, что таску закроют -->

## Чеклист

- [x] Я поискал поиском по трекеру похожие проблемы, в том числе в закрытых Issues
- [x] Баг стабильно воспроизводится и я знаю как это сделать

## Описание бага

Если написать аргумент в баттле, попросит три поля: за что аргументируем, кратко о чем аргумент, длинный аргумент.

Когда хочешь отредактировать аргумент, дает только одно поле, как будто это обычный комментарий. Если опечататься в поле "Кратко ваш аргумент почему", то эту опечатку исправить нельзя. Приходиться удалять аргумент и пересоздавать его.

## Ожидаемый результат

Форма для редактирования обычных комментариев и форма для редактирования комментариев баттла должны быть разные. В последнем случае нужно еще уметь исправлять "Кратко ваш аргумент почему".

## Шаги к воспроизведению

1. Написать аргумент к баттлу
2. Попробовать его исправить


Discussion:
могу взяться если не вы против
могу взяться если не вы против

Resolving patch:
diff --git a/comments/templatetags/comments.py b/comments/templatetags/comments.py
--- a/comments/templatetags/comments.py
+++ b/comments/templatetags/comments.py
@@ -6,6 +6,8 @@
 from club import settings
 from common.markdown.markdown import markdown_text
 
+from comments.forms import BattleCommentForm
+
 register = template.Library()
 
 TreeComment = namedtuple("TreeComment", ["comment", "replies"])
@@ -68,3 +70,16 @@ def render_comment(context, comment):
             comment.save()
 
     return mark_safe(comment.html or "")
+
+
+@register.filter
+def edit_form(form):
+    return "comments/forms/battle.html" if isinstance(form, BattleCommentForm) else "comments/forms/comment.html"
+
+
+@register.simple_tag(takes_context=True)
+def selected_battle_side(context):
+    try:
+        return "selected" if context['comment'].battle_side == context['side']['name'] else ""
+    except Exception:
+        return ""
diff --git a/comments/views.py b/comments/views.py
--- a/comments/views.py
+++ b/comments/views.py
@@ -132,6 +132,8 @@ def edit_comment(request, comment_id):
 
     if request.method == "POST":
         form = CommentForm(request.POST, instance=comment)
+        if post.type == Post.TYPE_BATTLE:
+            form = BattleCommentForm(request.POST, instance=comment)
         if form.is_valid():
             comment = form.save(commit=False)
             comment.is_deleted = False
@@ -145,6 +147,8 @@ def edit_comment(request, comment_id):
             return redirect("show_comment", post.slug, comment.id)
     else:
         form = CommentForm(instance=comment)
+        if post.type == Post.TYPE_BATTLE:
+            form = BattleCommentForm(instance=comment)
 
     return render(request, "comments/edit.html", {
         "comment": comment,


Test patch: