mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-12-15 12:46:38 +00:00
Merge branch 'main' into production
This commit is contained in:
commit
fd4b2adb8b
11 changed files with 141 additions and 24 deletions
|
@ -64,6 +64,11 @@ class Undo(Verb):
|
||||||
|
|
||||||
def action(self):
|
def action(self):
|
||||||
""" find and remove the activity object """
|
""" find and remove the activity object """
|
||||||
|
if isinstance(self.object, str):
|
||||||
|
# it may be that sometihng should be done with these, but idk what
|
||||||
|
# this seems just to be coming from pleroma
|
||||||
|
return
|
||||||
|
|
||||||
# this is so hacky but it does make it work....
|
# this is so hacky but it does make it work....
|
||||||
# (because you Reject a request and Undo a follow
|
# (because you Reject a request and Undo a follow
|
||||||
model = None
|
model = None
|
||||||
|
|
66
bookwyrm/migrations/0051_auto_20210316_1950.py
Normal file
66
bookwyrm/migrations/0051_auto_20210316_1950.py
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
# Generated by Django 3.0.7 on 2021-03-16 19:50
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("bookwyrm", "0050_auto_20210313_0030"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveConstraint(
|
||||||
|
model_name="notification",
|
||||||
|
name="notification_type_valid",
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="notification",
|
||||||
|
name="related_report",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="bookwyrm.Report",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="notification",
|
||||||
|
name="notification_type",
|
||||||
|
field=models.CharField(
|
||||||
|
choices=[
|
||||||
|
("FAVORITE", "Favorite"),
|
||||||
|
("REPLY", "Reply"),
|
||||||
|
("MENTION", "Mention"),
|
||||||
|
("TAG", "Tag"),
|
||||||
|
("FOLLOW", "Follow"),
|
||||||
|
("FOLLOW_REQUEST", "Follow Request"),
|
||||||
|
("BOOST", "Boost"),
|
||||||
|
("IMPORT", "Import"),
|
||||||
|
("ADD", "Add"),
|
||||||
|
("REPORT", "Report"),
|
||||||
|
],
|
||||||
|
max_length=255,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddConstraint(
|
||||||
|
model_name="notification",
|
||||||
|
constraint=models.CheckConstraint(
|
||||||
|
check=models.Q(
|
||||||
|
notification_type__in=[
|
||||||
|
"FAVORITE",
|
||||||
|
"REPLY",
|
||||||
|
"MENTION",
|
||||||
|
"TAG",
|
||||||
|
"FOLLOW",
|
||||||
|
"FOLLOW_REQUEST",
|
||||||
|
"BOOST",
|
||||||
|
"IMPORT",
|
||||||
|
"ADD",
|
||||||
|
"REPORT",
|
||||||
|
]
|
||||||
|
),
|
||||||
|
name="notification_type_valid",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -96,6 +96,7 @@ class Book(BookDataModel):
|
||||||
if self.languages and self.languages[0] != "English"
|
if self.languages and self.languages[0] != "English"
|
||||||
else None,
|
else None,
|
||||||
str(self.published_date.year) if self.published_date else None,
|
str(self.published_date.year) if self.published_date else None,
|
||||||
|
", ".join(self.publishers) if hasattr(self, "publishers") else None,
|
||||||
]
|
]
|
||||||
return ", ".join(i for i in items if i)
|
return ", ".join(i for i in items if i)
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ from .base_model import BookWyrmModel
|
||||||
|
|
||||||
NotificationType = models.TextChoices(
|
NotificationType = models.TextChoices(
|
||||||
"NotificationType",
|
"NotificationType",
|
||||||
"FAVORITE REPLY MENTION TAG FOLLOW FOLLOW_REQUEST BOOST IMPORT ADD",
|
"FAVORITE REPLY MENTION TAG FOLLOW FOLLOW_REQUEST BOOST IMPORT ADD REPORT",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ class Notification(BookWyrmModel):
|
||||||
related_list_item = models.ForeignKey(
|
related_list_item = models.ForeignKey(
|
||||||
"ListItem", on_delete=models.CASCADE, null=True
|
"ListItem", on_delete=models.CASCADE, null=True
|
||||||
)
|
)
|
||||||
|
related_report = models.ForeignKey("Report", on_delete=models.CASCADE, null=True)
|
||||||
read = models.BooleanField(default=False)
|
read = models.BooleanField(default=False)
|
||||||
notification_type = models.CharField(
|
notification_type = models.CharField(
|
||||||
max_length=255, choices=NotificationType.choices
|
max_length=255, choices=NotificationType.choices
|
||||||
|
@ -37,6 +38,7 @@ class Notification(BookWyrmModel):
|
||||||
related_status=self.related_status,
|
related_status=self.related_status,
|
||||||
related_import=self.related_import,
|
related_import=self.related_import,
|
||||||
related_list_item=self.related_list_item,
|
related_list_item=self.related_list_item,
|
||||||
|
related_report=self.related_report,
|
||||||
notification_type=self.notification_type,
|
notification_type=self.notification_type,
|
||||||
).exists():
|
).exists():
|
||||||
return
|
return
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
""" flagged for moderation """
|
""" flagged for moderation """
|
||||||
|
from django.apps import apps
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import F, Q
|
from django.db.models import F, Q
|
||||||
from .base_model import BookWyrmModel
|
from .base_model import BookWyrmModel
|
||||||
|
@ -15,6 +16,23 @@ class Report(BookWyrmModel):
|
||||||
statuses = models.ManyToManyField("Status", blank=True)
|
statuses = models.ManyToManyField("Status", blank=True)
|
||||||
resolved = models.BooleanField(default=False)
|
resolved = models.BooleanField(default=False)
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
""" notify admins when a report is created """
|
||||||
|
super().save(*args, **kwargs)
|
||||||
|
user_model = apps.get_model("bookwyrm.User", require_ready=True)
|
||||||
|
# moderators and superusers should be notified
|
||||||
|
admins = user_model.objects.filter(
|
||||||
|
Q(user_permissions__name__in=["moderate_user", "moderate_post"])
|
||||||
|
| Q(is_superuser=True)
|
||||||
|
).all()
|
||||||
|
notification_model = apps.get_model("bookwyrm.Notification", require_ready=True)
|
||||||
|
for admin in admins:
|
||||||
|
notification_model.objects.create(
|
||||||
|
user=admin,
|
||||||
|
related_report=self,
|
||||||
|
notification_type="REPORT",
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
""" don't let users report themselves """
|
""" don't let users report themselves """
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,11 @@ class ShelfBook(CollectionItemMixin, BookWyrmModel):
|
||||||
object_field = "book"
|
object_field = "book"
|
||||||
collection_field = "shelf"
|
collection_field = "shelf"
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
if not self.user:
|
||||||
|
self.user = self.shelf.user
|
||||||
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""an opinionated constraint!
|
"""an opinionated constraint!
|
||||||
you can't put a book on shelf twice"""
|
you can't put a book on shelf twice"""
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<div class="column is-one-fifth">
|
<div class="column is-one-fifth is-clipped">
|
||||||
{% include 'snippets/book_cover.html' with book=book size=large %}
|
{% include 'snippets/book_cover.html' with book=book size=large %}
|
||||||
{% include 'snippets/rate_action.html' with user=request.user book=book %}
|
{% include 'snippets/rate_action.html' with user=request.user book=book %}
|
||||||
{% include 'snippets/shelve_button/shelve_button.html' %}
|
{% include 'snippets/shelve_button/shelve_button.html' %}
|
||||||
|
@ -56,21 +56,21 @@
|
||||||
<section class="content">
|
<section class="content">
|
||||||
<dl>
|
<dl>
|
||||||
{% if book.isbn_13 %}
|
{% if book.isbn_13 %}
|
||||||
<div class="is-flex is-justify-content-space-between">
|
<div class="is-flex is-justify-content-space-between is-align-items-center">
|
||||||
<dt>{% trans "ISBN:" %}</dt>
|
<dt>{% trans "ISBN:" %}</dt>
|
||||||
<dd>{{ book.isbn_13 }}</dd>
|
<dd>{{ book.isbn_13 }}</dd>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if book.oclc_number %}
|
{% if book.oclc_number %}
|
||||||
<div class="is-flex is-justify-content-space-between">
|
<div class="is-flex is-justify-content-space-between is-align-items-center">
|
||||||
<dt>{% trans "OCLC Number:" %}</dt>
|
<dt>{% trans "OCLC Number:" %}</dt>
|
||||||
<dd>{{ book.oclc_number }}</dd>
|
<dd>{{ book.oclc_number }}</dd>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if book.asin %}
|
{% if book.asin %}
|
||||||
<div class="is-flex is-justify-content-space-between">
|
<div class="is-flex is-justify-content-space-between is-align-items-center">
|
||||||
<dt>{% trans "ASIN:" %}</dt>
|
<dt>{% trans "ASIN:" %}</dt>
|
||||||
<dd>{{ book.asin }}</dd>
|
<dd>{{ book.asin }}</dd>
|
||||||
</div>
|
</div>
|
||||||
|
@ -91,7 +91,7 @@
|
||||||
{% blocktrans with date=book.published_date|date:'M jS Y' publisher=book.publishers|join:', ' %}Published {{ date }} by {{ publisher }}.{% endblocktrans %}
|
{% blocktrans with date=book.published_date|date:'M jS Y' publisher=book.publishers|join:', ' %}Published {{ date }} by {{ publisher }}.{% endblocktrans %}
|
||||||
{% elif book.published_date %}
|
{% elif book.published_date %}
|
||||||
{% blocktrans with date=book.published_date|date:'M jS Y' %}Published {{ date }}{% endblocktrans %}
|
{% blocktrans with date=book.published_date|date:'M jS Y' %}Published {{ date }}{% endblocktrans %}
|
||||||
{% else %}
|
{% elif book.publishers %}
|
||||||
{% blocktrans with publisher=book.publishers|join:', ' %}Published by {{ publisher }}.{% endblocktrans %}
|
{% blocktrans with publisher=book.publishers|join:', ' %}Published by {{ publisher }}.{% endblocktrans %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -88,31 +88,46 @@
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<section class="block">
|
<section class="block">
|
||||||
<h2 class="title is-4">{% trans "Metadata" %}</h2>
|
<h2 class="title is-4">{% trans "Metadata" %}</h2>
|
||||||
<p class="fields is-grouped"><label class="label" for="id_title">{% trans "Title:" %}</label> {{ form.title }} </p>
|
<p class="mb-2"><label class="label" for="id_title">{% trans "Title:" %}</label> {{ form.title }} </p>
|
||||||
{% for error in form.title.errors %}
|
{% for error in form.title.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<p class="fields is-grouped"><label class="label" for="id_subtitle">{% trans "Subtitle:" %}</label> {{ form.subtitle }} </p>
|
|
||||||
|
<p class="mb-2"><label class="label" for="id_subtitle">{% trans "Subtitle:" %}</label> {{ form.subtitle }} </p>
|
||||||
{% for error in form.subtitle.errors %}
|
{% for error in form.subtitle.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<p class="fields is-grouped"><label class="label" for="id_description">{% trans "Description:" %}</label> {{ form.description }} </p>
|
|
||||||
|
<p class="mb-2"><label class="label" for="id_description">{% trans "Description:" %}</label> {{ form.description }} </p>
|
||||||
{% for error in form.description.errors %}
|
{% for error in form.description.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<p class="fields is-grouped"><label class="label" for="id_series">{% trans "Series:" %}</label> {{ form.series }} </p>
|
|
||||||
|
<p class="mb-2"><label class="label" for="id_series">{% trans "Series:" %}</label> {{ form.series }} </p>
|
||||||
{% for error in form.series.errors %}
|
{% for error in form.series.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<p class="fields is-grouped"><label class="label" for="id_series_number">{% trans "Series number:" %}</label> {{ form.series_number }} </p>
|
|
||||||
|
<p class="mb-2"><label class="label" for="id_series_number">{% trans "Series number:" %}</label> {{ form.series_number }} </p>
|
||||||
{% for error in form.series_number.errors %}
|
{% for error in form.series_number.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<p class="fields is-grouped"><label class="label" for="id_first_published_date">{% trans "First published date:" %}</label> {{ form.first_published_date }} </p>
|
|
||||||
|
<p class="mb-2">
|
||||||
|
<label class="label" for="id_publishers">{% trans "Publisher:" %}</label>
|
||||||
|
{{ form.publishers }}
|
||||||
|
<span class="help">{% trans "Separate multiple publishers with commas." %}</span>
|
||||||
|
</p>
|
||||||
|
{% for error in form.publishers.errors %}
|
||||||
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<p class="mb-2"><label class="label" for="id_first_published_date">{% trans "First published date:" %}</label> {{ form.first_published_date }} </p>
|
||||||
{% for error in form.first_published_date.errors %}
|
{% for error in form.first_published_date.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<p class="fields is-grouped"><label class="label" for="id_published_date">{% trans "Published date:" %}</label> {{ form.published_date }} </p>
|
|
||||||
|
<p class="mb-2"><label class="label" for="id_published_date">{% trans "Published date:" %}</label> {{ form.published_date }} </p>
|
||||||
{% for error in form.published_date.errors %}
|
{% for error in form.published_date.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -131,8 +146,8 @@
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<label class="label" for="id_add_author">{% trans "Add Authors:" %}</label>
|
<label class="label" for="id_add_author">{% trans "Add Authors:" %}</label>
|
||||||
<p class="help">Separate multiple author names with commas.</p>
|
|
||||||
<input class="input" type="text" name="add_author" id="id_add_author" placeholder="{% trans 'John Doe, Jane Smith' %}" value="{{ add_author }}" {% if confirm_mode %}readonly{% endif %}>
|
<input class="input" type="text" name="add_author" id="id_add_author" placeholder="{% trans 'John Doe, Jane Smith' %}" value="{{ add_author }}" {% if confirm_mode %}readonly{% endif %}>
|
||||||
|
<p class="help">Separate multiple author names with commas.</p>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -154,7 +169,7 @@
|
||||||
|
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h2 class="title is-4">{% trans "Physical Properties" %}</h2>
|
<h2 class="title is-4">{% trans "Physical Properties" %}</h2>
|
||||||
<p class="fields is-grouped"><label class="label" for="id_physical_format">{% trans "Format:" %}</label> {{ form.physical_format }} </p>
|
<p class="mb-2"><label class="label" for="id_physical_format">{% trans "Format:" %}</label> {{ form.physical_format }} </p>
|
||||||
{% for error in form.physical_format.errors %}
|
{% for error in form.physical_format.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -162,7 +177,7 @@
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
<p class="fields is-grouped"><label class="label" for="id_pages">{% trans "Pages:" %}</label> {{ form.pages }} </p>
|
<p class="mb-2"><label class="label" for="id_pages">{% trans "Pages:" %}</label> {{ form.pages }} </p>
|
||||||
{% for error in form.pages.errors %}
|
{% for error in form.pages.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -170,23 +185,23 @@
|
||||||
|
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h2 class="title is-4">{% trans "Book Identifiers" %}</h2>
|
<h2 class="title is-4">{% trans "Book Identifiers" %}</h2>
|
||||||
<p class="fields is-grouped"><label class="label" for="id_isbn_13">{% trans "ISBN 13:" %}</label> {{ form.isbn_13 }} </p>
|
<p class="mb-2"><label class="label" for="id_isbn_13">{% trans "ISBN 13:" %}</label> {{ form.isbn_13 }} </p>
|
||||||
{% for error in form.isbn_13.errors %}
|
{% for error in form.isbn_13.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<p class="fields is-grouped"><label class="label" for="id_isbn_10">{% trans "ISBN 10:" %}</label> {{ form.isbn_10 }} </p>
|
<p class="mb-2"><label class="label" for="id_isbn_10">{% trans "ISBN 10:" %}</label> {{ form.isbn_10 }} </p>
|
||||||
{% for error in form.isbn_10.errors %}
|
{% for error in form.isbn_10.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<p class="fields is-grouped"><label class="label" for="id_openlibrary_key">{% trans "Openlibrary key:" %}</label> {{ form.openlibrary_key }} </p>
|
<p class="mb-2"><label class="label" for="id_openlibrary_key">{% trans "Openlibrary key:" %}</label> {{ form.openlibrary_key }} </p>
|
||||||
{% for error in form.openlibrary_key.errors %}
|
{% for error in form.openlibrary_key.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<p class="fields is-grouped"><label class="label" for="id_oclc_number">{% trans "OCLC Number:" %}</label> {{ form.oclc_number }} </p>
|
<p class="mb-2"><label class="label" for="id_oclc_number">{% trans "OCLC Number:" %}</label> {{ form.oclc_number }} </p>
|
||||||
{% for error in form.oclc_number.errors %}
|
{% for error in form.oclc_number.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<p class="fields is-grouped"><label class="label" for="id_asin">{% trans "ASIN:" %}</label> {{ form.asin }} </p>
|
<p class="mb-2"><label class="label" for="id_asin">{% trans "ASIN:" %}</label> {{ form.asin }} </p>
|
||||||
{% for error in form.ASIN.errors %}
|
{% for error in form.ASIN.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
{% for item in items %}
|
{% for item in items %}
|
||||||
<li class="block pb-3">
|
<li class="block pb-3">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-content columns p-0 mb-0 is-mobile">
|
<div class="card-content columns p-0 pr-2 mb-0 is-mobile">
|
||||||
<div class="column is-narrow pt-0 pb-0">
|
<div class="column is-narrow pt-0 pb-0">
|
||||||
<a href="{{ item.book.local_path }}">{% include 'snippets/book_cover.html' with book=item.book size="medium" %}</a>
|
<a href="{{ item.book.local_path }}">{% include 'snippets/book_cover.html' with book=item.book size="medium" %}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -35,6 +35,8 @@
|
||||||
<span class="icon icon-list"></span>
|
<span class="icon icon-list"></span>
|
||||||
{% elif notification.notification_type == 'ADD' %}
|
{% elif notification.notification_type == 'ADD' %}
|
||||||
<span class="icon icon-plus"></span>
|
<span class="icon icon-plus"></span>
|
||||||
|
{% elif notification.notification_type == 'REPORT' %}
|
||||||
|
<span class="icon icon-warning"></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
|
@ -105,7 +107,10 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% elif notification.related_import %}
|
{% elif notification.related_import %}
|
||||||
{% blocktrans with related_id=notification.related_import.id %} your <a href="/import/{{ related_id }}">import</a> completed.{% endblocktrans %}
|
{% blocktrans with related_id=notification.related_import.id %}Your <a href="/import/{{ related_id }}">import</a> completed.{% endblocktrans %}
|
||||||
|
{% elif notification.related_report %}
|
||||||
|
{% url 'settings-report' notification.related_report.id as path %}
|
||||||
|
{% blocktrans with related_id=path %}A new <a href="{{ path }}">report</a> needs moderation.{% endblocktrans %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
{% if trimmed != full %}
|
{% if trimmed != full %}
|
||||||
<div id="hide-full-{{ uuid }}">
|
<div id="hide-full-{{ uuid }}">
|
||||||
<div class="content" id="trimmed-{{ uuid }}">
|
<div class="content" id="trimmed-{{ uuid }}">
|
||||||
<p dir="auto">{{ trimmed }}</p>
|
<div dir="auto">{{ trimmed }}</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
{% trans "Show more" as button_text %}
|
{% trans "Show more" as button_text %}
|
||||||
|
|
Loading…
Reference in a new issue