diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-03-09 17:39:59 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-03-09 17:39:59 +0100 |
commit | a825c819ede7dd3b3524f218ffafa10fdd483e87 (patch) | |
tree | 6b601e5f7f0c6ab536cdabf8827e671f7a255869 | |
parent | 85c1ee167e2bbc4a3a71562f4d4423d1e88dcf79 (diff) | |
download | Chimère-a825c819ede7dd3b3524f218ffafa10fdd483e87.tar.bz2 Chimère-a825c819ede7dd3b3524f218ffafa10fdd483e87.zip |
Manage multimedia type tree
-rw-r--r-- | chimere/forms.py | 10 | ||||
-rw-r--r-- | chimere/models.py | 27 |
2 files changed, 29 insertions, 8 deletions
diff --git a/chimere/forms.py b/chimere/forms.py index 4933c3a..430cb0c 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2008-2011 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2008-2012 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as @@ -31,7 +31,8 @@ from django.contrib.admin.widgets import AdminDateWidget from django.core.mail import EmailMessage, BadHeaderError from chimere.models import Marker, Route, PropertyModel, Property, Area,\ - News, Category, SubCategory, RouteFile, MultimediaFile, PictureFile + News, Category, SubCategory, RouteFile, MultimediaFile, MultimediaType, \ + PictureFile from chimere.widgets import AreaField, PointField, TextareaWidget, \ DatePickerWidget @@ -317,6 +318,11 @@ class MultimediaFileForm(BaseFileForm): model = MultimediaFile exclude = ('order',) + def __init__(self, *args, **kwargs): + super(MultimediaFileForm, self).__init__(*args, **kwargs) + self.fields['multimedia_type'].widget.choices = \ + MultimediaType.get_tuples() + MultimediaFileFormSet = formset_factory(MultimediaFileForm, can_delete=True) class PictureFileForm(BaseFileForm): diff --git a/chimere/models.py b/chimere/models.py index da9104d..03c54a8 100644 --- a/chimere/models.py +++ b/chimere/models.py @@ -368,21 +368,36 @@ class MultimediaType(models.Model): name = models.CharField(_(u"Name"), max_length=150) mime_type = models.CharField(_(u"Mime type"), max_length=50, blank=True, null=True) - iframe = models.BooleanField(u"Inside an iframe", default=False) + iframe = models.BooleanField(_(u"Inside an iframe"), default=False) available = models.BooleanField(_(u"Available"), default=True) def __unicode__(self): return self.name + @classmethod + def get_tuples(cls): + vals = cls.objects.filter(available=True).order_by('media_type', + 'name') + tuples, c_tpe = [('', '--')], None + media_type_dct = dict(cls.MEDIA_TYPES) + for tpe, pk, name in [(media_type_dct[v.media_type], v.pk, v.name) + for v in vals]: + if not c_tpe or c_tpe != tpe: + c_tpe = tpe + tuples.append([tpe, []]) + tuples[-1][1].append((pk, name)) + return tuples + 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'), + '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") @@ -417,7 +432,7 @@ class PictureFile(models.Model): height_field='height', width_field='width') height = models.IntegerField(_(u"Height")) width = models.IntegerField(_(u"Width")) - miniature = models.BooleanField(_(u"Display inside the resume?")) + miniature = models.BooleanField(_(u"Display inside the description?")) order = models.IntegerField(_(u"Order"), default=1) def __unicode__(self): |