diff --git a/bookwyrm/emailing.py b/bookwyrm/emailing.py index c6a197f2..fab1a2d5 100644 --- a/bookwyrm/emailing.py +++ b/bookwyrm/emailing.py @@ -10,14 +10,9 @@ from bookwyrm.settings import DOMAIN def email_data(): """fields every email needs""" site = models.SiteSettings.objects.get() - if site.logo_small: - logo_path = f"/images/{site.logo_small.url}" - else: - logo_path = "/static/images/logo-small.png" - return { "site_name": site.name, - "logo": logo_path, + "logo": site.logo_small_url, "domain": DOMAIN, "user": None, } @@ -46,6 +41,18 @@ def password_reset_email(reset_code): send_email.delay(reset_code.user.email, *format_email("password_reset", data)) +def moderation_report_email(report): + """a report was created""" + data = email_data() + data["reporter"] = report.reporter.localname or report.reporter.username + data["reportee"] = report.user.localname or report.user.username + data["report_link"] = report.remote_id + + for admin in models.User.objects.filter(groups__name="moderator"): + data["user"] = admin.display_name + send_email.delay(admin.email, *format_email("moderation_report", data)) + + def format_email(email_name, data): """render the email templates""" subject = get_template(f"email/{email_name}/subject.html").render(data).strip() diff --git a/bookwyrm/models/site.py b/bookwyrm/models/site.py index 8338fff8..5d91553e 100644 --- a/bookwyrm/models/site.py +++ b/bookwyrm/models/site.py @@ -1,5 +1,6 @@ """ the particulars for this instance of BookWyrm """ import datetime +from urllib.parse import urljoin from django.db import models, IntegrityError from django.dispatch import receiver @@ -7,9 +8,10 @@ from django.utils import timezone from model_utils import FieldTracker from bookwyrm.preview_images import generate_site_preview_image_task -from bookwyrm.settings import DOMAIN, ENABLE_PREVIEW_IMAGES +from bookwyrm.settings import DOMAIN, ENABLE_PREVIEW_IMAGES, STATIC_FULL_URL from .base_model import BookWyrmModel, new_access_code from .user import User +from .fields import get_absolute_url class SiteSettings(models.Model): @@ -66,6 +68,28 @@ class SiteSettings(models.Model): default_settings.save() return default_settings + @property + def logo_url(self): + """helper to build the logo url""" + return self.get_url("logo", "images/logo.png") + + @property + def logo_small_url(self): + """helper to build the logo url""" + return self.get_url("logo_small", "images/logo-small.png") + + @property + def favicon_url(self): + """helper to build the logo url""" + return self.get_url("favicon", "images/favicon.png") + + def get_url(self, field, default_path): + """get a media url or a default static path""" + uploaded = getattr(self, field, None) + if uploaded: + return get_absolute_url(uploaded) + return urljoin(STATIC_FULL_URL, default_path) + class SiteInvite(models.Model): """gives someone access to create an account on the instance""" diff --git a/bookwyrm/templates/email/html_layout.html b/bookwyrm/templates/email/html_layout.html index 02527ff5..01e2f35c 100644 --- a/bookwyrm/templates/email/html_layout.html +++ b/bookwyrm/templates/email/html_layout.html @@ -2,7 +2,7 @@