web/ldt/ldt_utils/models.py
changeset 10 84e31387a741
parent 7 881514514df1
child 16 b3692a42ac79
equal deleted inserted replaced
9:67f071c743f5 10:84e31387a741
     4 from django.utils.translation import ugettext_lazy as _
     4 from django.utils.translation import ugettext_lazy as _
     5 from utils import create_ldt, copy_ldt, create_iri
     5 from utils import create_ldt, copy_ldt, create_iri
     6 import os
     6 import os
     7 import os.path
     7 import os.path
     8 import uuid
     8 import uuid
       
     9 import xml
     9 
    10 
    10 class Author(models.Model):
    11 class Author(models.Model):
    11 
    12 
    12     handle = models.CharField(max_length=512, unique=True, blank=True, null=True)
    13     handle = models.CharField(max_length=512, unique=True, blank=True, null=True)
    13     email = models.EmailField(unique=False, blank=True, null=True)
    14     email = models.EmailField(unique=False, blank=True, null=True)
    18         return unicode(self.id) + " - " + self.handle + ", " + self.email + ", " + self.firstname + " " + self.lastname
    19         return unicode(self.id) + " - " + self.handle + ", " + self.email + ", " + self.firstname + " " + self.lastname
    19 
    20 
    20 
    21 
    21 class Content(models.Model):
    22 class Content(models.Model):
    22     iri_id = models.CharField(max_length=1024, unique=True)
    23     iri_id = models.CharField(max_length=1024, unique=True)
    23     iriurl = models.URLField()
    24     iriurl = models.CharField(max_length=1024)
    24     videopath = models.URLField(null=True, blank=True)
    25     src = models.CharField(max_length=1024)
       
    26     videopath = models.CharField(max_length=1024, null=True, blank=True)
    25     creation_date = models.DateTimeField(auto_now_add=True)
    27     creation_date = models.DateTimeField(auto_now_add=True)
    26     update_date = models.DateTimeField(auto_now=True)
    28     update_date = models.DateTimeField(auto_now=True)
    27     title = models.CharField(max_length=1024, null=True, blank=True)
    29     title = models.CharField(max_length=1024, null=True, blank=True)
    28     description = models.TextField(null=True, blank=True)
    30     description = models.TextField(null=True, blank=True)
    29     external_id = models.CharField(max_length=1024, null=True, blank=True)
    31     external_id = models.CharField(max_length=1024, null=True, blank=True)
    30     authors = models.ManyToManyField(Author)
    32     authors = models.ManyToManyField(Author, blank=True)
    31     duration = models.IntegerField(null=True, blank=True)
    33     duration = models.IntegerField(null=True, blank=True)
    32 
    34 
    33     def get_duration(self):
    35     def get_duration(self):
    34         if self.duration is None:
    36         if self.duration is None:
    35             doc = xml.dom.minidom.parse(self.iri_file_path())
    37             doc = xml.dom.minidom.parse(self.iri_file_path())
    36             doc = Ft.Xml.Domlette.ConvertDocument(doc)        
    38             doc = Ft.Xml.Domlette.ConvertDocument(doc)        
    37             con = xml.xpath.Context.Context(doc, 1, 1, None)
    39             con = xml.xpath.Context.Context(doc, 1, 1, None)
    38             res = xml.xpath.Evaluate("/iri/body/medias/media[@id='video']/video", context=con)
    40             res = xml.xpath.Evaluate("/iri/body/medias/media[@id='video']/video", context=con)
    39             self.duration = int(res[0].getAttributeNS(None, 'dur'))
    41             self.duration = int(res[0].getAttributeNS(None, u'dur'))
    40             self.save()
    42             self.save()
    41         return self.duration
    43         return self.duration
    42     
    44     
    43     def delete(self):
    45     def delete(self):
    44         super(Content, self).delete()
    46         super(Content, self).delete()
    66             return self.iriurl
    68             return self.iriurl
    67         else:
    69         else:
    68             return unicode(web_url) + unicode(settings.MEDIA_URL)+u"media/ldt/"+unicode(self.iriurl)
    70             return unicode(web_url) + unicode(settings.MEDIA_URL)+u"media/ldt/"+unicode(self.iriurl)
    69     
    71     
    70     def iri_file_path(self):
    72     def iri_file_path(self):
    71         return os.path.join(os.path.join(os.path.join(os.path.join(settings.MEDIA_ROOT, "media"), "ldt"), self.iri_id), os.path.basename(self.iri.path))
    73         return os.path.join(os.path.join(os.path.join(os.path.join(settings.MEDIA_ROOT, "media"), "ldt"), self.iri_id), os.path.basename(self.iriurl))
    72 
    74 
    73     def iri_url_template(self):
    75     def iri_url_template(self):
    74         return "${web_url}${media_url}media/ldt/" + unicode(self.iri_id) + "/" + os.path.basename(self.iri.path)
    76         return "${web_url}${media_url}media/ldt/" + unicode(self.iri_id) + "/" + os.path.basename(self.iriurl)
    75         
    77         
    76         
    78         
    77 class Project(Document):  
    79 class Project(Document):  
    78     STATE_CHOICES=(
    80     STATE_CHOICES=(
    79     (1, 'edition'),
    81     (1, 'edition'),
   102             doc = Ft.Xml.Domlette.ConvertDocument(doc)        
   104             doc = Ft.Xml.Domlette.ConvertDocument(doc)        
   103         
   105         
   104         con = xml.xpath.Context.Context(doc, 1, 1, None)
   106         con = xml.xpath.Context.Context(doc, 1, 1, None)
   105         res = xml.xpath.Evaluate("/iri/project", context=con)
   107         res = xml.xpath.Evaluate("/iri/project", context=con)
   106         if len(res) > 0:
   108         if len(res) > 0:
   107             return res[0].getAttributeNS(None, 'abstract')
   109             return res[0].getAttributeNS(None, u'abstract')
   108         else:
   110         else:
   109             return None
   111             return None
   110         
   112         
   111 
   113 
   112     @staticmethod
   114     @staticmethod