web/ldt/ldt_utils/models.py
changeset 71 fc1210bbb854
parent 67 90fd14c649bb
child 72 d672f33a3a67
--- a/web/ldt/ldt_utils/models.py	Tue Sep 21 13:07:04 2010 +0200
+++ b/web/ldt/ldt_utils/models.py	Thu Sep 23 13:45:21 2010 +0200
@@ -34,6 +34,26 @@
     title = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('title'))
     src = models.CharField(max_length=1024, unique=True, verbose_name=_('media.src'))
     
+    def stream_src():
+        
+        def fget(self):
+            res_src = self.src.rstrip()
+            if self.videopath and self.videopath.startswith("rtmp://"):
+                extension = res_src.split(".")[-1]
+                res_src = {
+                    'flv': lambda s: s,
+                    'mp3': lambda s: "%s:%s" %("mp3",res_src[:-4]),
+                    'mp4': lambda s: "%s:%s" %("mp4",res_src[:-4]),
+                    'f4v': lambda s: "%s:%s" %("mp4",res_src[:-4]),
+                }.get(extension, lambda s:s)(res_src)
+            return res_src
+    stream_src = property(**stream_src())    
+    
+    def save(self, *args, **kwargs):
+        super(Media, self).save(*args, **kwargs)
+        for content in self.content_set.all():
+            content.sync_iri_file()
+    
     def __unicode__(self):
         strings = []
         if self.title:
@@ -44,6 +64,7 @@
             strings.append(unicode(self.external_id))
         return "|".join(strings)
 
+
 class Content(models.Model):
     iri_id = models.CharField(max_length=1024, unique=True, default=generate_uuid, verbose_name=_('content.iri_id'))
     iriurl = models.CharField(max_length=1024, verbose_name=_('content.iriurl'))
@@ -71,9 +92,7 @@
         writer.deleteDocuments(lucene.Term("iri_id", self.iri_id))
         writer.commit()
         
-    #TODO: better manage the change in .iri name and error scenario (save in temp file + rename
-    def save(self, *args, **kwargs):
-        
+    def sync_iri_file(self):
         # create iri file if needed
         created = False
         try:
@@ -95,6 +114,11 @@
                     os.remove(iri_file_path)
             raise e
         
+        
+    #TODO: better manage the change in .iri name and error scenario (save in temp file + rename
+    def save(self, *args, **kwargs):
+        
+        self.sync_iri_file()        
         # update it 
         super(Content, self).save(*args, **kwargs)
     
@@ -122,6 +146,15 @@
             return None
             
     
+    def stream_src():
+        
+        def fget(self):
+            if self.media_obj is not None:
+                return self.media_obj.stream_src
+            else:
+                return None
+    stream_src = property(**stream_src())
+    
     def videopath(): #@NoSelf
         doc = """simulate videopath""" #@UnusedVariable