From: yomguy Date: Tue, 17 Jul 2012 13:23:36 +0000 (+0200) Subject: update import X-Git-Tag: 0.7-dev^2~128 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=c9ed96be359b61461a40f2cacd913fe4c244f22a;p=teleforma.git update import --- diff --git a/teleforma/management/commands/teleforma-import-conferences.py b/teleforma/management/commands/teleforma-import-conferences.py index 15625039..96f6489d 100644 --- a/teleforma/management/commands/teleforma-import-conferences.py +++ b/teleforma/management/commands/teleforma-import-conferences.py @@ -7,28 +7,67 @@ from telemeta.models import * from telemeta.util.unaccent import unaccent from teleforma.models import * import logging -import codecs +import os + + +class Logger: + """A logging object""" + + 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) + class Command(BaseCommand): help = "Import conferences from the MEDIA_ROOT directory " - args = "organization" admin_email = 'webmaster@parisson.com' + media_dir = settings.MEDIA_ROOT+os.sep+'items' + spacer = '_-_' + formats = ['mp3', 'webm'] + logger = Logger('/var/log/telecaster/import.log') def handle(self, *args, **options): - dir = settings.MEDIA_ROOT - - department = os.path.splitext(os.path.basename(path))[0] - organization, created = Organization.objects.get_or_create(name=organization) - department, created = Department.objects.get_or_create(name=department, - organization=organization) - types = CourseType.objects.all() - - for code in file.readlines(): - course, created = Course.objects.get_or_create(code=code, department=department, - title=code.replace('_', ' ')) + file_list = [] + all_conferences = Conference.objects.all() + for root, dirs, files in os.walk(self.media_dir): + for filename in files: + name = os.path.splitext(filename)[0] + ext = os.path.splitext(filename)[1] + if ext in formats: + path = root + os.sep + filename + root_list = root.split(os.sep) + public_id = root_list[-1] + course_id = root_list[-2].split(self.spacer)[0] + course_type = root_list[-2].split(self.spacer)[1].lower() + department_name = root_list[-3] + date = root_list[-4] + department, created = Department.objects.get_or_create(name=department_name) + conference, created = Conference.objects.get_or_create(public_id=public_id) + exist = False + medias = conference.media.all() + for media in medias: + items = media.items.filter(file=path) + if items: + exist = True + break + if not exist: + collection_id = '_'.join(department_name, course_id, course_type) + collection, c = MediaCollection.objects.get_or_create(public_id=collection_id, + title=collection_id.replace('_', ' - ')) + item = MediaItem.objects.create(collection=collection, + public_id='_'.join(collection_id, public_id, ext), + title=name, + file=path) + media, c = Media.objects.get_or_create(conference=conference) + media.items.add(item) + logger.info('Imported: ' + path)