From 848786f76413fc74506a2d5cd00da172fe6bc797 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Wed, 20 Mar 2024 10:24:00 +0100 Subject: [PATCH] add all item file paths command --- .../commands/telemeta-check-items-paths.py | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 telemeta/management/commands/telemeta-check-items-paths.py diff --git a/telemeta/management/commands/telemeta-check-items-paths.py b/telemeta/management/commands/telemeta-check-items-paths.py new file mode 100644 index 00000000..829a02b7 --- /dev/null +++ b/telemeta/management/commands/telemeta-check-items-paths.py @@ -0,0 +1,75 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Copyright (C) 2010 Guillaume Pellerin +# All rights reserved. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at http://svn.parisson.org/telemeta/TelemetaLicense. +# +# Author: Guillaume Pellerin +# + +import logging +import codecs +import os +import sys +import csv +import logging +import datetime +from optparse import make_option + +from django.conf import settings +from django.core.management.base import BaseCommand, CommandError +from django.contrib.auth.models import User +from django.core.files.base import ContentFile +from django.contrib.auth.models import User +from django.contrib.sites.models import Site +from django.template.defaultfilters import slugify + +from telemeta.models import * +from telemeta.util.unaccent import unaccent + + +class Logger: + + def __init__(self, file): + self.logger = logging.getLogger('myapp') + self.hdlr = logging.FileHandler(file) + self.formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') + self.hdlr.setFormatter(self.formatter) + self.logger.addHandler(self.hdlr) + self.logger.setLevel(logging.INFO) + + def info(self, prefix, message): + self.logger.info(' ' + prefix + ' : ' + message.decode('utf8')) + + def error(self, prefix, message): + self.logger.error(prefix + ' : ' + message.decode('utf8')) + + +class Command(BaseCommand): + + """Import CREM collections from collection directories containing media files + and eventually a XLS files representing the relation between old codes and new codes + """ + + help = "check all item file paths" + admin_email = 'webmaster@parisson.com' + media_root = settings.MEDIA_ROOT + + option_list = BaseCommand.option_list + ( + make_option('-l', '--log', + dest='log', + help='define log file'), + ) + + def handle(self, *args, **kwargs): + self.logger = Logger(kwargs.get('log')) + + for item in MediaItem.objects.all(): + if not os.path.exists(self.media_root + os.sep + item.file.path): + msg = ' : item file does not exists' + self.logger.info(item.public_id, msg) + -- 2.39.5