]> git.parisson.com Git - teleforma.git/commitdiff
fix media paths, formats and import
authorGuillaume Pellerin <yomguy@parisson.com>
Sun, 30 Dec 2012 01:37:23 +0000 (02:37 +0100)
committerGuillaume Pellerin <yomguy@parisson.com>
Sun, 30 Dec 2012 01:37:23 +0000 (02:37 +0100)
teleforma/management/commands/teleforma-import-seminars.py
teleforma/templates/teleforma/seminar_media_audio.html
teleforma/templates/teleforma/seminar_media_video.html
teleforma/templatetags/teleforma_tags.py

index ea665a1e69dec05b48c74fad851a4cad883cd896..64f0e864d626e0875c55de7bfe85f98689525ff2 100644 (file)
@@ -31,7 +31,7 @@ class Command(BaseCommand):
     audio_formats = ['ogg', 'mp3']
     video_formats = ['webm', 'mp4']
     image_formats = ['png', 'jpg']
-    media_rank_dict = {'bis': 2, 'ter': 3, 'quarter': 4}
+    media_rank_dict = {'bis': 2, 'ter': 3, 'quarter': 4, 'quinquies': 5, 'quater': 4}
 
     def cleanup(self):
         medias = MediaPackage.objects.all()
@@ -41,6 +41,9 @@ class Command(BaseCommand):
             for m in media.audio.all():
                 m.delete()
             media.delete()
+        related = MediaItemRelated.objects.all()
+        for r in related:
+            r.delete()
 
     def handle(self, *args, **options):
         organization_name = args[0]
@@ -49,31 +52,34 @@ class Command(BaseCommand):
 
         organization = Organization.objects.get(name=organization_name)
         self.media_dir = settings.MEDIA_ROOT + organization.name
+        print self.media_dir
         file_list = []
         i = 1
 
         self.cleanup()
 
-        for root, dirs, files in os.walk(self.media_dir):
+        for root, dirs, files in os.walk(self.media_dir, followlinks=True):
             for filename in files:
                 name = os.path.splitext(filename)[0]
                 ext = os.path.splitext(filename)[1][1:]
+                print filename
+                root_list = root.split(os.sep)
 
-                if ext in self.video_formats or ext in self.audio_formats:
-                    root_list = root.split(os.sep)
-
-                    # seminar_rank <= 9
+                if (ext in self.video_formats or ext in self.audio_formats) \
+                        and not 'preview' in root_list and not 'preview' in filename:
+                                        # seminar_rank <= 9
                     seminar_rank = int(root_list[-1][0])
                     if len(root_list[-1]) != 1:
-                        media_rank = media_rank_dict(root_list[-1][1:])
+                        media_rank = self.media_rank_dict[root_list[-1][1:]]
                     else:
                         media_rank = 1
 
                     course_code = root_list[-2]
-                    department_name = root_list[-3]
-                    organization_name = root_list[-4]
+                    master_dir = root_list[-3]
+                    department_name = root_list[-4]
+                    organization_name = root_list[-5]
 
-                    dir = os.sep.join(root_list[-4:])
+                    dir = os.sep.join(root_list[-5:])
                     path = dir + os.sep + filename
 
                     seminar_title = '_'.join([course_code, str(seminar_rank)])
@@ -82,7 +88,7 @@ class Command(BaseCommand):
                     department, c = Department.objects.get_or_create(name=department_name,
                                                                      organization=organization)
                     seminar, c = Seminar.objects.get_or_create(course=course, rank=seminar_rank)
-
+                    print str(seminar.id)
                     exist = False
 
                     media_packages = seminar.media.all()
@@ -119,7 +125,7 @@ class Command(BaseCommand):
                         print path
                         decoder = timeside.decoder.FileDecoder(root+os.sep+filename)
                         decoder.setup()
-                        time.sleep(0.1)
+                        time.sleep(0.5)
                         value = str(datetime.timedelta(0,decoder.input_duration))
                         t = value.split(':')
                         t[2] = t[2].split('.')[0]
@@ -136,10 +142,12 @@ class Command(BaseCommand):
                                 related.title = 'preview'
                                 related.set_mime_type()
                                 related.save()
+                                print 'thumb added'
                                 break
 
                         media = Media(item=item, course=course, type=ext)
                         media.set_mime_type()
+                        media.is_published = True
                         media.save()
                         
                         media_package_exist = False
@@ -159,6 +167,8 @@ class Command(BaseCommand):
                         if ext in self.audio_formats:
                             media_package.audio.add(media)
 
+                        media_package.is_published = True
+                        media_package.save()
 
                         logger.logger.info(path)
                         i += 1
index 4a014a105a337217203ae3ee1b61bc0aea7ce32a..0fe009ac70a92a72147009fbab670d8a0324ddf2 100644 (file)
@@ -39,7 +39,7 @@
 
 <div class="audio">
 <audio controls preload="auto">
-    {% for media in media_package.audio.all %}
+    {% for media in media_package.audio.all|free_first %}
         <source src="{{ MEDIA_URL }}{{ media.item.file }}" type="{{ media.mime_type }}" />
     {% endfor %}
 </audio>
@@ -60,7 +60,7 @@
 {% endif %}
 
 {% if user.is_staff or user.is_superuser %}
-<dt>{% trans "Mime type" %}</dt><dd>{% for media in media_package.video.all %}{{ media.mime_type }}, {% endfor %}</dd>
+<dt>{% trans "Mime type" %}</dt><dd>{% for media in media_package.audio.all %}{{ media.mime_type }}, {% endfor %}</dd>
 <dt>{% trans "Date added" %}</dt><dd>{{ media_package.date_added }}</dd>
 <dt>{% trans "Date modified" %}</dt><dd>{{ media_package.date_modified }}</dd>
 <dt>{% trans "Media package ID" %}</dt><dd>{{ media_package.id }}</dd>
@@ -76,4 +76,4 @@
 
 {% block chat %}
 
-{% endblock chat %}
\ No newline at end of file
+{% endblock chat %}
index 1674a1319694aa5910ad17c7412b1bbf755aafa7..097e654223c1e80a2ad71cf9cf994eb2e03e70a4 100644 (file)
@@ -87,7 +87,7 @@ $(window).ready(function(){
 
 <div class="video">
 <video id="my_video_1" class="video-js vjs-default-skin" width="640" height="360" controls preload="auto" data-setup='{}'>
-{% for media in media_package.video.all %}
+{% for media in media_package.video.all|free_first %}
     <source src="{{ MEDIA_URL }}{{ media.item.file }}" type="{{ media.mime_type }}" />
 {% endfor %}
 </video>
@@ -124,4 +124,4 @@ $(window).ready(function(){
 
 {% block chat %}
 
-{% endblock chat %}
\ No newline at end of file
+{% endblock chat %}
index 7c0cd18a1cec6de57a740e7b16091a14699cc0e5..2e3f401ac41ed9e1cc50cad44dfcbc8bb9ff8edd 100644 (file)
@@ -257,3 +257,14 @@ def in_download_formats(file):
 @register.filter
 def user_seminars(user):
     return all_seminars(user)['all_seminars']
+
+@register.filter
+def free_first(qs):
+    free_formats = ['webm', 'ogg']
+    medias = []
+    for media in qs:
+        if 'webm' in media.mime_type or 'ogg' in media.mime_type:
+            medias.insert(0, media)
+        else:
+            medias.append(media)
+    return medias