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) |