--- 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'),)
+