web/ldt/ldt_utils/models.py
changeset 62 39b2dab4f939
parent 60 a8ad7ebf5902
child 63 7b721b427b73
--- a/web/ldt/ldt_utils/models.py	Wed Sep 15 15:20:26 2010 +0200
+++ b/web/ldt/ldt_utils/models.py	Tue Sep 21 04:27:08 2010 +0200
@@ -21,18 +21,28 @@
 
 class Media(models.Model):
     external_id = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('media.external_id'))
-    external_permalink = models.URLField(max_length=1024, verbose_name=_('content.external_permalink'))
-    external_publication_url = models.URLField(max_length=1024, verbose_name=_('content.external_publication_url'))
-    external_src_url = models.URLField(max_length=1024, verbose_name=_('content.external_publication_url'))
+    external_permalink = models.URLField(max_length=1024, null=True, blank=True, verbose_name=_('content.external_permalink'))
+    external_publication_url = models.URLField(max_length=1024, null=True, blank=True, verbose_name=_('content.external_publication_url'))
+    external_src_url = models.URLField(max_length=1024, null=True, blank=True, verbose_name=_('content.external_publication_url'))
     creation_date = models.DateTimeField(auto_now_add=True, verbose_name=_('media.creation_date'))
     media_creation_date = models.DateTimeField(null=True, blank=True, verbose_name=_('media.media_creation_date'))
     update_date = models.DateTimeField(auto_now=True, verbose_name=_('media.update_date'))
     videopath = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('media.videopath'))
     duration = models.IntegerField(null=True, blank=True, verbose_name=_('media.duration'))
-    creator = models.ForeignKey(User, blank=True, verbose_name=_('media.creator'))
+    creator = models.ForeignKey(User, blank=True, null=True, verbose_name=_('media.creator'))
     description = models.TextField(null=True, blank=True, verbose_name=_('description'))
     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 __unicode__(self):
+        strings = []
+        if self.title:
+            strings.append(unicode(self.title))
+        else:
+            strings.append(unicode(self.src))
+        if self.external_id:
+            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'))
@@ -48,7 +58,7 @@
     duration = models.IntegerField(null=True, blank=True, verbose_name=_('content.duration'))
     content_creation_date = models.DateTimeField(null=True, blank=True, verbose_name=_('content.content_creation_date'))
     tags = tagging.fields.TagField(max_length=2048, null=True, blank=True )
-    media = models.ForeignKey('Media', blank=True, null=True )
+    media_obj = models.ForeignKey('Media', blank=True, null=True )
 
     def get_duration(self):
         if self.duration is None:
@@ -105,19 +115,32 @@
 
     def iri_url_template(self):
         return "${web_url}${media_url}media/ldt/" + unicode(self.iri_id) + "/" + os.path.basename(self.iriurl)
+
+
+    def __get_empty_media(self):
+        if settings.EMPTY_MEDIA_EXTERNALID:
+            empty_media = Media.objects.get(externalid=settings.EMPTY_MEDIA_EXTERNALID)
+            return empty_media
+        else:
+            return None
+            
     
     def videopath(): #@NoSelf
         doc = """simulate videopath""" #@UnusedVariable
        
         def fget(self):
-            if self.media is None:
-                return None
+            if self.media_obj is None:
+                empty_media = self.__get_empty_media()
+                if empty_media:
+                    return empty_media.videopath
+                else: 
+                    return None
             else:
-                return self.media.videopath
+                return self.media_obj.videopath
            
         def fset(self, value):
-            if self.media is not None:
-                self.media.videopath = value
+            if self.media_obj is not None:
+                self.media_obj.videopath = value
                       
         return locals()
        
@@ -127,39 +150,24 @@
         doc = """simulate videopath""" #@UnusedVariable
        
         def fget(self):
-            if self.media is None:
-                return None
+            if self.media_obj is None:
+                empty_media = self.__get_empty_media()
+                if empty_media:
+                    return empty_media.src
+                else:
+                    return None
             else:
-                return self.media.src
+                return self.media_obj.src
            
         def fset(self, value):
-            if self.media is None or self.media.src != value:
+            if self.media_obj is None or self.media_obj.src != value:
                 media, created = Media.objects.get_or_create(src=value, defaults={'src':value})                
-                self.media = media
+                self.media_obj = media
                 self.save()
                       
         return locals()
        
     src = property(**src())
-    
-    def videopath(): #@NoSelf
-        doc = """simulate videopath""" #@UnusedVariable
-       
-        def fget(self):
-            if self.media is None:
-                return None
-            else:
-                return self.media.videopath
-           
-        def fset(self, value):
-            if self.media is not None:
-                self.media.videopath = value
-                      
-        return locals()
-       
-    videopath = property(**videopath())
-
-
         
         
 class Project(Document):