summaryrefslogtreecommitdiff
path: root/chimere/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/models.py')
-rw-r--r--chimere/models.py30
1 files changed, 29 insertions, 1 deletions
diff --git a/chimere/models.py b/chimere/models.py
index 6ca2771..da9104d 100644
--- a/chimere/models.py
+++ b/chimere/models.py
@@ -20,7 +20,7 @@
"""
Models description
"""
-import os, string, json
+import os, string, json, re
import lxml.etree as ElementTree
from datetime import datetime, timedelta
from subprocess import Popen, PIPE
@@ -374,6 +374,20 @@ class MultimediaType(models.Model):
def __unicode__(self):
return self.name
+IFRAME_LINKS = {
+ 'youtube':((re.compile(r'youtube.com\/watch\?v=([A-Za-z0-9]*)'),
+ re.compile(r'youtu.be\/([A-Za-z0-9]*)'),
+ re.compile(r'youtube.com\/embed\/([A-Za-z0-9]*)')),
+ "http://www.youtube.com/embed/%s"),
+ 'dailymotion':((re.compile(r'dailymotion.com/video/([A-Za-z0-9]*)_[A-Za-z0-9_-]*'),
+ re.compile(r'dailymotion.com/embed/video/([A-Za-z0-9]*)'),
+ re.compile("http://www.dailymotion.com/embed/video/%s")),
+ 'http://www.dailymotion.com/embed/video/%s'),
+ 'vimeo':((re.compile(r'vimeo.com/([A-Za-z0-9]*)'),
+ re.compile(r'vimeo.com/video/([A-Za-z0-9]*)')),
+ "http://player.vimeo.com/video/%s")
+}
+
class MultimediaFile(models.Model):
name = models.CharField(_(u"Name"), max_length=150, blank=True, null=True)
url = models.CharField(_(u"Url"), max_length=200)
@@ -383,6 +397,20 @@ class MultimediaFile(models.Model):
def __unicode__(self):
return self.name or u""
+ def save(self, *args, **kwargs):
+ # manage iframe of video providers
+ if self.multimedia_type.name.lower() in IFRAME_LINKS:
+ regexps, lnk = IFRAME_LINKS[self.multimedia_type.name.lower()]
+ key = None
+ for regexp in regexps:
+ key = regexp.findall(self.url)
+ if key:
+ key = key[0]
+ break
+ if key:
+ self.url = lnk % key
+ super(MultimediaFile, self).save(*args, **kwargs)
+
class PictureFile(models.Model):
name = models.CharField(_(u"Name"), max_length=150, blank=True, null=True)
picture = models.ImageField(_(u"Image"), upload_to='upload',