diff options
Diffstat (limited to 'chimere/models.py')
| -rw-r--r-- | chimere/models.py | 30 | 
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',  | 
