From 6eabd357bc96f9c952e759852b1a19d2c5cf6b83 Mon Sep 17 00:00:00 2001
From: Radek Czajka <rczajka@rczajka.pl>
Date: Thu, 18 Mar 2021 14:58:48 +0100
Subject: [PATCH] Support for projects without icons.

---
 src/archive/models.py | 10 ++++++++++
 src/archive/tasks.py  |  2 +-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/archive/models.py b/src/archive/models.py
index 869641c..1fc033b 100644
--- a/src/archive/models.py
+++ b/src/archive/models.py
@@ -1,9 +1,11 @@
 import io
 import json
 import os.path
+from urllib.parse import urljoin
 
 from django.db import models
 from time import sleep
+from django.contrib.sites.models import Site
 from django.utils.functional import cached_property
 from django.utils.timezone import now
 from django.utils.translation import gettext_lazy as _
@@ -47,6 +49,14 @@ class Project(models.Model):
             " finansowanego przez %s" % self.sponsors if self.sponsors else "",
         )
 
+    def get_icon_url(self):
+        if not self.icon:
+            return ''
+        return urljoin(
+            'https://' + Site.objects.get_current().domain,
+            self.icon.url
+        )
+
 
 def source_upload_to(intance, filename):
     return os.path.join(FILES_SAVE_PATH, filename) # FIXME: what about really long file names?
diff --git a/src/archive/tasks.py b/src/archive/tasks.py
index 17d98cc..9d236db 100644
--- a/src/archive/tasks.py
+++ b/src/archive/tasks.py
@@ -83,7 +83,7 @@ class AudioFormatTask(Task):
 
             'project': {
                 'description': audiobook.project.get_description(),
-                'icon': audiobook.project.icon.url,
+                'icon': audiobook.project.get_icon_url(),
             }
         }
         with open(path, 'rb') as f:
-- 
2.20.1