web/ldt/ldt_utils/models.py
changeset 94 9927a619d2b5
parent 91 9c83809fda01
parent 88 7f2c2d9adf58
child 113 0c166a3e65b2
equal deleted inserted replaced
93:2f978b081c4c 94:9927a619d2b5
    21     def __unicode__(self):
    21     def __unicode__(self):
    22         return unicode(self.id) + " - " + self.handle + ", " + self.email + ", " + self.firstname + " " + self.lastname
    22         return unicode(self.id) + " - " + self.handle + ", " + self.email + ", " + self.firstname + " " + self.lastname
    23 
    23 
    24 class Media(models.Model):
    24 class Media(models.Model):
    25     external_id = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('media.external_id'))
    25     external_id = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('media.external_id'))
    26     external_permalink = models.URLField(max_length=1024, null=True, blank=True, verbose_name=_('content.external_permalink'))
    26     external_permalink = models.URLField(max_length=1024, verify_exists=False, null=True, blank=True, verbose_name=_('media.external_permalink'))
    27     external_publication_url = models.URLField(max_length=1024, null=True, blank=True, verbose_name=_('content.external_publication_url'))
    27     external_publication_url = models.URLField(max_length=1024, verify_exists=True, null=True, blank=True, verbose_name=_('media.external_publication_url'))
    28     external_src_url = models.URLField(max_length=1024, null=True, blank=True, verbose_name=_('content.external_publication_url'))
    28     external_src_url = models.URLField(max_length=1024, verify_exists=False, null=True, blank=True, verbose_name=_('media.external_src_url'))
    29     creation_date = models.DateTimeField(auto_now_add=True, verbose_name=_('media.creation_date'))
    29     creation_date = models.DateTimeField(auto_now_add=True, verbose_name=_('media.creation_date'))
    30     media_creation_date = models.DateTimeField(null=True, blank=True, verbose_name=_('media.media_creation_date'))
    30     media_creation_date = models.DateTimeField(null=True, blank=True, verbose_name=_('media.media_creation_date'))
    31     update_date = models.DateTimeField(auto_now=True, verbose_name=_('media.update_date'))
    31     update_date = models.DateTimeField(auto_now=True, verbose_name=_('media.update_date'))
    32     videopath = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('media.videopath'))
    32     videopath = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('media.videopath'))
    33     duration = models.IntegerField(null=True, blank=True, verbose_name=_('media.duration'))
    33     duration = models.IntegerField(null=True, blank=True, verbose_name=_('media.duration'))
    45                 res_src = {
    45                 res_src = {
    46                     'flv': lambda s: s,
    46                     'flv': lambda s: s,
    47                     'mp3': lambda s: "%s:%s" %("mp3",res_src[:-4]),
    47                     'mp3': lambda s: "%s:%s" %("mp3",res_src[:-4]),
    48                     'mp4': lambda s: "%s:%s" %("mp4",res_src[:-4]),
    48                     'mp4': lambda s: "%s:%s" %("mp4",res_src[:-4]),
    49                     'f4v': lambda s: "%s:%s" %("mp4",res_src[:-4]),
    49                     'f4v': lambda s: "%s:%s" %("mp4",res_src[:-4]),
    50                 }.get(extension, lambda s:s)(res_src)
    50                 }.get(extension, lambda s:s)(res_src.lower())
    51             return res_src
    51             return res_src
    52         
    52         
    53         return locals()
    53         return locals()
    54     
    54     
    55     stream_src = property(**stream_src())    
    55     stream_src = property(**stream_src())    
    80     authors = models.ManyToManyField(Author, blank=True, verbose_name=_('content.authors'))
    80     authors = models.ManyToManyField(Author, blank=True, verbose_name=_('content.authors'))
    81     duration = models.IntegerField(null=True, blank=True, verbose_name=_('content.duration'))
    81     duration = models.IntegerField(null=True, blank=True, verbose_name=_('content.duration'))
    82     content_creation_date = models.DateTimeField(null=True, blank=True, verbose_name=_('content.content_creation_date'))
    82     content_creation_date = models.DateTimeField(null=True, blank=True, verbose_name=_('content.content_creation_date'))
    83     tags = tagging.fields.TagField(max_length=2048, null=True, blank=True )
    83     tags = tagging.fields.TagField(max_length=2048, null=True, blank=True )
    84     media_obj = models.ForeignKey('Media', blank=True, null=True )
    84     media_obj = models.ForeignKey('Media', blank=True, null=True )
       
    85     
       
    86     class Meta:
       
    87         ordering = ["title"]
    85 
    88 
    86     def get_duration(self):
    89     def get_duration(self):
    87         if self.duration is None:
    90         if self.duration is None:
    88             doc = lxml.etree.parse(self.iri_file_path())
    91             doc = lxml.etree.parse(self.iri_file_path())
    89             res = doc.xpath("/iri/body/medias/media[@id='video']/video")
    92             res = doc.xpath("/iri/body/medias/media[@id='video']/video")
    90             self.duration = int(res[0].get(u'dur') or 0)
    93             if len(res) > 0:
       
    94                 try:
       
    95                     self.duration = int(res[0].get(u'dur',0) or 0)
       
    96                 except:
       
    97                     self.duration = 0
       
    98             else:
       
    99                 self.duration = 0
    91             self.save()
   100             self.save()
    92         return self.duration
   101         return self.duration
    93     
   102     
    94     def delete(self):
   103     def delete(self):
    95         super(Content, self).delete()
   104         super(Content, self).delete()
   246     modification_date = models.DateTimeField(auto_now=True)
   255     modification_date = models.DateTimeField(auto_now=True)
   247     created_by = models.CharField(_("created by"), max_length=70)
   256     created_by = models.CharField(_("created by"), max_length=70)
   248     changed_by = models.CharField(_("changed by"), max_length=70)
   257     changed_by = models.CharField(_("changed by"), max_length=70)
   249     state = models.IntegerField(choices=STATE_CHOICES, default=1)
   258     state = models.IntegerField(choices=STATE_CHOICES, default=1)
   250     
   259     
       
   260     class Meta:
       
   261         ordering = ["title"]
       
   262 
       
   263     
   251     def __unicode__(self):
   264     def __unicode__(self):
   252         return unicode(self.id) + u": " + unicode(self.ldt_id)
   265         return unicode(self.id) + u": " + unicode(self.ldt_id)
   253     
   266     
   254     def get_description(self, doc=None):
   267     def get_description(self, doc=None):
   255         
   268         
   284         project.save()
   297         project.save()
   285         for content in self.contents.all():
   298         for content in self.contents.all():
   286             project.contents.add(content)
   299             project.contents.add(content)
   287         project.save()
   300         project.save()
   288         return project
   301         return project
       
   302     
       
   303     def checkAccess(self, user):
       
   304         if (user and user.is_staff) or self.state == 2: 
       
   305             return True
       
   306         else:
       
   307             return False
       
   308         
   289 
   309 
   290 class Segment(models.Model):
   310 class Segment(models.Model):
   291     
   311     
   292     project_obj = models.ForeignKey(Project, null=True)
   312     project_obj = models.ForeignKey(Project, null=True)
   293     content = models.ForeignKey(Content)
   313     content = models.ForeignKey(Content)