summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2020-08-28 15:10:09 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-02-28 12:15:20 +0100
commit131afa027985065ecf4c97600440500884a9ef26 (patch)
treea5da688b9e449157b54374adc2a347764e19e57c
parent3b4833c22507808582722125fa92355c294882d9 (diff)
downloadIshtar-131afa027985065ecf4c97600440500884a9ef26.tar.bz2
Ishtar-131afa027985065ecf4c97600440500884a9ef26.zip
Documents: do not move images on hard drive after associations
-rw-r--r--archaeological_finds/tests.py12
-rw-r--r--archaeological_warehouse/templates/ishtar/sheet_container.html5
-rw-r--r--ishtar_common/models.py41
3 files changed, 24 insertions, 34 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 2360d4ca6..2e3026f6e 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -1202,11 +1202,15 @@ class FindSearchTest(FindInit, TestCase, SearchText):
self.assertEqual(res['recordsTotal'], 0)
# add an image to the first find
- image = Document.objects.create(title="Image!")
- img = settings.ROOT_PATH + \
+ document = Document.objects.create(title="Image!")
+ image_path = settings.ROOT_PATH + \
'../ishtar_common/static/media/images/ishtar-bg.jpg'
- image.image.save('ishtar-bg.jpg', File(open(img)))
- self.finds[0].documents.add(image)
+ document.image = SimpleUploadedFile(
+ name='ishtar-bg.jpg', content=open(image_path, 'rb').read(),
+ content_type='image/jpeg')
+ document.save()
+
+ self.finds[0].documents.add(document)
self.finds[0].save()
response = c.get(reverse('get-find'), search)
self.assertEqual(response.status_code, 200)
diff --git a/archaeological_warehouse/templates/ishtar/sheet_container.html b/archaeological_warehouse/templates/ishtar/sheet_container.html
index a7aa3a512..5116820f0 100644
--- a/archaeological_warehouse/templates/ishtar/sheet_container.html
+++ b/archaeological_warehouse/templates/ishtar/sheet_container.html
@@ -117,7 +117,10 @@
{% endif %}
{% else %}
- <em>{% trans "Empty" %}</em>
+ <div class="alert alert-info">
+ <i class="fa fa-exclamation-triangle"></i>
+ <em>{% trans "Empty" %}</em>
+ </div>
{% endif %}
</div>
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index a6cfcf697..24d88edde 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -1184,7 +1184,9 @@ class ItemKey(models.Model):
def get_image_path(instance, filename):
# when using migrations instance is not a real ImageModel instance
if not hasattr(instance, '_get_image_path'):
- return "upload/{}".format(filename)
+ n = datetime.datetime.now()
+ return "upload/{}/{:02d}/{:02d}/{}".format(
+ n.year, n.month, n.day, filename)
return instance._get_image_path(filename)
@@ -1193,7 +1195,8 @@ class ImageContainerModel(object):
return "{}/{}".format(self._get_base_image_path(), filename)
def _get_base_image_path(self):
- return "upload"
+ n = datetime.datetime.now()
+ return "upload/{}/{:02d}/{:02d}".format(n.year, n.month, n.day)
class ImageModel(models.Model, ImageContainerModel):
@@ -5706,9 +5709,12 @@ class Document(BaseHistorizedItem, QRCodeItem, OwnPerms, ImageModel,
yield item._get_base_image_path()
def _get_base_image_path(self):
+ print(5637)
for path in self._get_base_image_paths():
- return path
- return "upload"
+ if path:
+ return path
+ n = datetime.datetime.now()
+ return "upload/{}/{:02d}/{:02d}".format(n.year, n.month, n.day)
def _get_available_filename(self, path, test_link=None):
"""
@@ -5756,9 +5762,8 @@ class Document(BaseHistorizedItem, QRCodeItem, OwnPerms, ImageModel,
"""
if getattr(self, "_no_move", False):
return
- reference_path = None
- initial_path = self.image.path
- filename = os.path.basename(initial_path)
+ reference_path = self.image.path
+ filename = os.path.basename(reference_path)
links = []
for related_model in self.RELATED_MODELS:
@@ -5767,28 +5772,6 @@ class Document(BaseHistorizedItem, QRCodeItem, OwnPerms, ImageModel,
item = q.all()[0]
base_path = item._get_base_image_path()
new_path = base_path + "/" + filename
- if not reference_path:
- reference_path = settings.MEDIA_ROOT + new_path
- # correct path
- if initial_path == reference_path:
- continue
- if not os.path.exists(os.path.dirname(reference_path)):
- os.makedirs(os.path.dirname(reference_path))
-
- reference_path = self._get_available_filename(
- reference_path)
- try:
- os.rename(initial_path, reference_path)
- os.rename(self.thumbnail.path,
- self._get_thumb_name(reference_path))
- self.image.name = reference_path[
- len(settings.MEDIA_ROOT):]
- self._no_move = True
- self.save(no_path_change=True)
- except OSError:
- # file probably not on HDD - will be cleaned
- pass
- continue
# create a link
new_path = settings.MEDIA_ROOT + new_path
if not os.path.exists(os.path.dirname(new_path)):