summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/management/commands/media_find_missing_files.py61
-rw-r--r--ishtar_common/static/media/images/empty-image.jpgbin0 -> 13197 bytes
2 files changed, 60 insertions, 1 deletions
diff --git a/ishtar_common/management/commands/media_find_missing_files.py b/ishtar_common/management/commands/media_find_missing_files.py
index 13159bfa7..f2cf8e7f6 100644
--- a/ishtar_common/management/commands/media_find_missing_files.py
+++ b/ishtar_common/management/commands/media_find_missing_files.py
@@ -53,6 +53,13 @@ class Command(BaseCommand):
'--hard', dest='hard', action='store_true',
default=False,
help='Search on the whole media dir.')
+ parser.add_argument(
+ '--set-empty-image', dest='set-empty-image', action='store_true',
+ default=False,
+ help='Set a link to empty-image for missing media.')
+ parser.add_argument(
+ '--set-alt-media-dir', dest='set-alt-media-dir', default=False,
+ help='Try to set link from an alt directory for missing media.')
def handle(self, *args, **options):
exclude = options['exclude'].split(',') if options['exclude'] else []
@@ -60,6 +67,16 @@ class Command(BaseCommand):
try_fix = options['try-fix']
find_fix = options['find-fix']
hard = options['hard']
+ set_alt_media_dir = options["set-alt-media-dir"]
+ set_empty_image = options["set-empty-image"]
+ if set_alt_media_dir and not os.path.isdir(set_alt_media_dir):
+ self.stdout.write(f'set-alt-media-dir: "{set_alt_media_dir}" is not a valid path.\n')
+ return
+
+ if set_empty_image and set_alt_media_dir:
+ self.stdout.write("set-empty-image and set-alt-media-dir options are not "
+ "compatible.\n")
+ return
if try_fix and find_fix:
self.stdout.write("try-fix and find-fix options are not "
"compatible.\n")
@@ -95,8 +112,50 @@ class Command(BaseCommand):
sys.stdout.write(
"{} <- {}\n".format(item.encode('utf-8'),
source_file.encode('utf-8')))
+ if set_alt_media_dir:
+ total = 0
+ for f in missing:
+ f = os.path.abspath(f)
+ if not f.startswith(settings.MEDIA_ROOT):
+ continue
+ dest = os.path.join(set_alt_media_dir, f[len(settings.MEDIA_ROOT):])
+ if not os.path.isfile(dest):
+ continue
+ directory = f.split(os.path.sep)[:-1]
+ directory = os.sep + os.path.join(*directory)
+ if not os.path.isdir(directory):
+ os.makedirs(directory)
+ try:
+ os.symlink(dest, f)
+ except FileExistsError:
+ continue
+ total += 1
+ self.stdout.write(f"* {total} link to {set_alt_media_dir} created.\n")
+ return
- if missing:
+ if set_empty_image:
+ empty_image = os.path.abspath(
+ settings.LIB_BASE_PATH + "ishtar_common/static/media/images/empty-image"
+ )
+ total = 0
+ for f in missing:
+ f = os.path.abspath(f)
+ if not f.startswith(settings.MEDIA_ROOT):
+ continue
+ if f.lower().endswith(".jpg") or f.lower().endswith(".jpeg"):
+ cempty_image = empty_image + ".jpg"
+ elif f.lower().endswith(".png"):
+ cempty_image = empty_image + ".png"
+ else:
+ continue
+ directory = f.split(os.path.sep)[:-1]
+ directory = os.sep + os.path.join(*directory)
+ if not os.path.isdir(directory):
+ os.makedirs(directory)
+ os.symlink(cempty_image, f)
+ total += 1
+ self.stdout.write(f"* {total} missing files set to empty image\n")
+ elif missing:
if find_fix or try_fix:
self.stdout.write("* missing file with no similar file "
"found:\n")
diff --git a/ishtar_common/static/media/images/empty-image.jpg b/ishtar_common/static/media/images/empty-image.jpg
new file mode 100644
index 000000000..31fad6af4
--- /dev/null
+++ b/ishtar_common/static/media/images/empty-image.jpg
Binary files differ