forked from mirrors/bookwyrm
Adds model-to-form helper for statuses
This commit is contained in:
parent
4cf9bca5aa
commit
2a4fc8fb9a
3 changed files with 24 additions and 2 deletions
|
@ -121,6 +121,20 @@ class StatusForm(CustomForm):
|
|||
fields = ["user", "content", "content_warning", "sensitive", "privacy"]
|
||||
|
||||
|
||||
def get_form_from_status(status):
|
||||
""" form-ify a status (for delete and redraft) """
|
||||
if isinstance(status, models.Review):
|
||||
return ReviewForm(instance=status)
|
||||
if isinstance(status, models.Comment):
|
||||
return CommentForm(instance=status)
|
||||
if isinstance(status, models.Quotation):
|
||||
return QuotationForm(instance=status)
|
||||
if status.reply_parent:
|
||||
return ReplyForm(instance=status)
|
||||
else:
|
||||
return StatusForm(instance=status)
|
||||
|
||||
|
||||
class EditUserForm(CustomForm):
|
||||
class Meta:
|
||||
model = models.User
|
||||
|
|
|
@ -19,6 +19,14 @@
|
|||
</button>
|
||||
</form>
|
||||
</li>
|
||||
<li role="menuitem">
|
||||
<form class="dropdown-item pt-0 pb-0" name="delete-{{status.id}}" action="{% url 'redraft' status.id %}" method="post">
|
||||
{% csrf_token %}
|
||||
<button class="button is-danger is-light is-fullwidth is-small" type="submit">
|
||||
{% trans "Delete & re-draft" %}
|
||||
</button>
|
||||
</form>
|
||||
</li>
|
||||
{% else %}
|
||||
{# things you can do to other people's statuses #}
|
||||
<li role="menuitem">
|
||||
|
|
|
@ -107,8 +107,8 @@ class DeleteAndRedraft(View):
|
|||
if status.user != request.user and not request.user.has_perm("moderate_post"):
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
# TODO: get the correct form (maybe a generic form)
|
||||
data = {"form": forms.StatusForm(instance=status)}
|
||||
|
||||
data = {"form": forms.get_form_from_status(status)}
|
||||
if hasattr(status, "book"):
|
||||
data["book"] = status.book
|
||||
|
||||
|
|
Loading…
Reference in a new issue