]> git.parisson.com Git - teleforma.git/commitdiff
update import
authoryomguy <yomguy@parisson.com>
Tue, 17 Jul 2012 13:23:36 +0000 (15:23 +0200)
committeryomguy <yomguy@parisson.com>
Tue, 17 Jul 2012 13:23:36 +0000 (15:23 +0200)
teleforma/management/commands/teleforma-import-conferences.py

index 15625039aefe5d843db24d78935fcf8b1d1c0afb..96f6489d0560bdb796931ab64c0fdd82a9a21f5e 100644 (file)
@@ -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)