diff -r 06d158b5d24b -r a8ad7ebf5902 web/ldt/ldt_utils/models.py --- a/web/ldt/ldt_utils/models.py Mon Sep 13 12:56:36 2010 +0200 +++ b/web/ldt/ldt_utils/models.py Wed Sep 15 15:07:08 2010 +0200 @@ -2,6 +2,8 @@ from django.db import models from django.utils.translation import ugettext_lazy as _ from ldt.core.models import Document, Owner +from django.contrib.auth.models import User +import tagging.fields from utils import create_ldt, copy_ldt, create_empty_iri, update_iri, generate_uuid import lxml.etree import os.path @@ -17,20 +19,36 @@ def __unicode__(self): return unicode(self.id) + " - " + self.handle + ", " + self.email + ", " + self.firstname + " " + self.lastname +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')) + 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')) + 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')) 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')) - src = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('content.src')) - videopath = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('content.videopath')) +# src = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('content.src')) +# videopath = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('content.videopath')) creation_date = models.DateTimeField(auto_now_add=True, verbose_name=_('content.creation_date')) update_date = models.DateTimeField(auto_now=True, verbose_name=_('content.update_date')) title = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('content.title')) description = models.TextField(null=True, blank=True, verbose_name=_('content.description')) - external_id = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('content.external_id')) +# external_id = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('content.external_id')) authors = models.ManyToManyField(Author, blank=True, verbose_name=_('content.authors')) 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 ) def get_duration(self): if self.duration is None: @@ -87,6 +105,61 @@ def iri_url_template(self): return "${web_url}${media_url}media/ldt/" + unicode(self.iri_id) + "/" + os.path.basename(self.iriurl) + + 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()) + + def src(): #@NoSelf + doc = """simulate videopath""" #@UnusedVariable + + def fget(self): + if self.media is None: + return None + else: + return self.media.src + + def fset(self, value): + if self.media is None or self.media.src != value: + media, created = Media.objects.get_or_create(src=value, defaults={'src':value}) + self.media = 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): @@ -155,7 +228,7 @@ ensemble_id = models.CharField(max_length=1024, unique=False) cutting_id = models.CharField(max_length=1024, unique=False) element_id = models.CharField(max_length=1024, unique=False) - tags = models.CharField(max_length=2048, unique=False, null=True, blank=True) + tags = tagging.fields.TagField(max_length=2048, null=True, blank=True, unique=False) title = models.CharField(max_length=2048, unique=False, null=True, blank=True) duration = models.IntegerField(null=True) start_ts = models.IntegerField(null=True) @@ -169,3 +242,4 @@ class Meta: unique_together = (('project_id', 'iri_id', 'ensemble_id', 'cutting_id', 'element_id'),) +