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 |