diff -r cb1b83039bc1 -r 39b2dab4f939 web/ldt/ldt_utils/models.py --- 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):