--- 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):