summaryrefslogtreecommitdiff
path: root/chimere/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/models.py')
-rw-r--r--chimere/models.py43
1 files changed, 40 insertions, 3 deletions
diff --git a/chimere/models.py b/chimere/models.py
index f33772c..5282fca 100644
--- a/chimere/models.py
+++ b/chimere/models.py
@@ -30,6 +30,7 @@ from django.contrib.gis.db import models
from django.contrib.gis.gdal import SpatialReference
from django.contrib import admin
from django.core.files import File
+from django.core.exceptions import ValidationError
from django import forms
from django.utils.translation import ugettext_lazy as _
@@ -351,18 +352,54 @@ class Marker(GeographicItem):
self.default_category.pk)
return settings.BASE_URL + 'ty/' + TinyUrl.getUrnByParameters(parameters)
+class MultimediaType(models.Model):
+ MEDIA_TYPES = (('A', _(u"Audio")),
+ ('V', _(u"Video")),
+ ('I', _(u"Image")))
+ media_type = models.CharField(_(u"Media type"), max_length=1,
+ choices=MEDIA_TYPES)
+ name = models.CharField(_(u"Name"), max_length=150)
+ mime_type = models.CharField(_(u"Mime type"), max_length=50)
+ available = models.BooleanField(_(u"Available"), default=True)
+
+ def __unicode__(self):
+ return self.name
+
class MultimediaFile(models.Model):
name = models.CharField(_(u"Name"), max_length=150, blank=True, null=True)
- url = models.CharField(_(u"Url"), max_length=200)
- file_type = models.CharField(_(u"File type"), max_length=6)
+ url = models.CharField(_(u"Url"), max_length=200, blank=True, null=True)
+ iframe = models.CharField(_(u"Iframe"), max_length=1000, blank=True,
+ null=True)
+ order = models.IntegerField(_(u"Order"), default=1)
+ multimedia_type = models.ForeignKey(MultimediaType, blank=True,
+ null=True)
+
+ def __unicode__(self):
+ return self.name
+
+ def clean(self):
+ if self.url and not self.multimedia_type:
+ raise ValidationError(_(u"Multimedia type is mandatory if you "\
+ u"provide an url."))
+ if not self.url and not self.iframe:
+ raise ValidationError(_(u"You must provide at least provide an "\
+ u" url or an iframe."))
+ if self.url and self.iframe:
+ raise ValidationError(_(u"You must provide an url OR an"\
+ u"iframe."))
+
class PictureFile(models.Model):
- miniature = models.BooleanField(u"Miniature")
+ miniature = models.BooleanField(_(u"Miniature"))
name = models.CharField(_(u"Name"), max_length=150, blank=True, null=True)
picture = models.ImageField(_(u"Image"), upload_to='upload',
height_field='height', width_field='width')
height = models.IntegerField(_(u"Height"))
width = models.IntegerField(_(u"Width"))
+ order = models.IntegerField(_(u"Order"), default=1)
+
+ def __unicode__(self):
+ return self.name
class RouteFile(models.Model):
name = models.CharField(_(u"Name"), max_length=150)