From af567ba05ed285bf3ca33d5a668aeff926c75b60 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 14 Oct 2021 18:34:26 -0700 Subject: [PATCH] Edit posts in original markdown syntax --- .../migrations/0110_auto_20211015_0128.py | 24 +++++++++++++++++++ bookwyrm/models/status.py | 2 ++ .../snippets/create_status/content_field.html | 2 +- .../snippets/create_status/quotation.html | 2 +- bookwyrm/views/status.py | 5 ++++ 5 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 bookwyrm/migrations/0110_auto_20211015_0128.py diff --git a/bookwyrm/migrations/0110_auto_20211015_0128.py b/bookwyrm/migrations/0110_auto_20211015_0128.py new file mode 100644 index 000000000..aee378a36 --- /dev/null +++ b/bookwyrm/migrations/0110_auto_20211015_0128.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.5 on 2021-10-15 01:28 + +import bookwyrm.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0109_status_edited"), + ] + + operations = [ + migrations.AddField( + model_name="quotation", + name="raw_quote", + field=bookwyrm.models.fields.HtmlField(blank=True, null=True), + ), + migrations.AddField( + model_name="status", + name="raw_content", + field=bookwyrm.models.fields.HtmlField(blank=True, null=True), + ), + ] diff --git a/bookwyrm/models/status.py b/bookwyrm/models/status.py index 1027ecb58..fe051056e 100644 --- a/bookwyrm/models/status.py +++ b/bookwyrm/models/status.py @@ -31,6 +31,7 @@ class Status(OrderedCollectionPageMixin, BookWyrmModel): "User", on_delete=models.PROTECT, activitypub_field="attributedTo" ) content = fields.HtmlField(blank=True, null=True) + raw_content = fields.HtmlField(blank=True, null=True) mention_users = fields.TagField("User", related_name="mention_user") mention_books = fields.TagField("Edition", related_name="mention_book") local = models.BooleanField(default=True) @@ -293,6 +294,7 @@ class Quotation(BookStatus): """like a review but without a rating and transient""" quote = fields.HtmlField() + raw_quote = fields.HtmlField(blank=True, null=True) position = models.IntegerField( validators=[MinValueValidator(0)], null=True, blank=True ) diff --git a/bookwyrm/templates/snippets/create_status/content_field.html b/bookwyrm/templates/snippets/create_status/content_field.html index 5102f207f..ea2849d92 100644 --- a/bookwyrm/templates/snippets/create_status/content_field.html +++ b/bookwyrm/templates/snippets/create_status/content_field.html @@ -16,5 +16,5 @@ draft: an existing Status object that is providing default values for input fiel placeholder="{{ placeholder }}" aria-label="{% if reply_parent %}{% trans 'Reply' %}{% else %}{% trans 'Content' %}{% endif %}" {% if not optional and type != "quotation" and type != "review" %}required{% endif %} ->{% if reply_parent %}{{ reply_parent|mentions:request.user }}{% endif %}{% if mention %}@{{ mention|username }} {% endif %}{{ draft.content|default:'' }} +>{% if reply_parent %}{{ reply_parent|mentions:request.user }}{% endif %}{% if mention %}@{{ mention|username }} {% endif %}{% firstof draft.raw_content draft.content '' %} diff --git a/bookwyrm/templates/snippets/create_status/quotation.html b/bookwyrm/templates/snippets/create_status/quotation.html index df48532fd..cf472c113 100644 --- a/bookwyrm/templates/snippets/create_status/quotation.html +++ b/bookwyrm/templates/snippets/create_status/quotation.html @@ -25,7 +25,7 @@ uuid: a unique identifier used to make html "id" attributes unique and clarify j placeholder="{% blocktrans with book_title=book.title %}An excerpt from '{{ book_title }}'{% endblocktrans %}" required {% if not draft %}data-cache-draft="id_quote_{{ book.id }}_{{ type }}"{% endif %} - >{{ draft.quote|default:'' }} + >{% firstof draft.raw_quote draft.quote '' %}
diff --git a/bookwyrm/views/status.py b/bookwyrm/views/status.py index 4771ceb20..5f318d22e 100644 --- a/bookwyrm/views/status.py +++ b/bookwyrm/views/status.py @@ -76,6 +76,11 @@ class CreateStatus(View): return redirect(request.headers.get("Referer", "/")) status = form.save(commit=False) + # save the plain, unformatted version of the status for future editing + status.raw_content = status.content + if hasattr(status, "quote"): + status.raw_quote = status.quote + if not status.sensitive and status.content_warning: # the cw text field remains populated when you click "remove" status.content_warning = None