summaryrefslogtreecommitdiff
path: root/chimere/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2013-03-14 18:48:00 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2013-03-14 18:48:00 +0100
commit054fdbdf7a1e5106725b8b5a36db99242cfa65c1 (patch)
tree1633b26e884feb1f29afedbb80cef7a6ecbdba2d /chimere/models.py
parent8a5ba2650678ec22107a1a0a10650b6e0cc14683 (diff)
parentd02ec4246813eb0787bf3ab54af1af9ce32bd376 (diff)
downloadChimère-054fdbdf7a1e5106725b8b5a36db99242cfa65c1.tar.bz2
Chimère-054fdbdf7a1e5106725b8b5a36db99242cfa65c1.zip
Merge branch 'master' into saclay
Conflicts: chimere/locale/fr/LC_MESSAGES/django.po chimere/static/chimere/css/styles.css chimere/static/chimere/js/jquery.chimere.js chimere/templates/chimere/detail.html chimere/templatetags/chimere_tags.py chimere/utils.py chimere/views.py example_project/settings.py
Diffstat (limited to 'chimere/models.py')
-rw-r--r--chimere/models.py42
1 files changed, 31 insertions, 11 deletions
diff --git a/chimere/models.py b/chimere/models.py
index a059b35..90cb06a 100644
--- a/chimere/models.py
+++ b/chimere/models.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2008-2012 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2008-2013 É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
@@ -331,6 +331,10 @@ class Importer(models.Model):
zipped = models.BooleanField(_(u"Zipped file"), default=False)
overwrite = models.BooleanField(_(u"Overwrite existing data"),
default=False)
+ get_description = models.BooleanField(_(u"Get description from source"),
+ default=False)
+ default_description = models.TextField(_(u"Default description"),
+ blank=True, null=True)
origin = models.CharField(_(u"Origin"), max_length=100,
blank=True, null=True)
license = models.CharField(_(u"License"), max_length=100,
@@ -425,6 +429,13 @@ class GeographicItem(models.Model):
self.import_key = new_keys
self.save()
+ def has_modified(self):
+ if (self.ref_item and self.ref_item != self) \
+ or self.__class__.objects.filter(ref_item=self
+ ).exclude(pk=self.pk).count():
+ return True
+ return False
+
@classmethod
def properties(cls):
return [pm for pm in PropertyModel.objects.filter(available=True)]
@@ -505,7 +516,10 @@ class Marker(GeographicItem):
@property
def date(self):
- if settings.CHIMERE_DAYS_BEFORE_EVENT:
+ if settings.CHIMERE_DAYS_BEFORE_EVENT and self.start_date:
+ today = datetime.date.today()
+ if self.end_date and self.start_date < today:
+ return self.end_date
return self.start_date
@property
@@ -629,11 +643,14 @@ class Marker(GeographicItem):
def default_category(self):
# Should we select only available ones ?
# Should we catch if not exists ?
- return self.categories.all()[0]
+ cats = self.categories
+ if cats.count():
+ return cats.all()[0]
def get_absolute_url(self, area_name=''):
- parameters = 'current_feature=%d&checked_categories=%s' % (self.id,
- self.default_category.pk)
+ parameters = 'current_feature=%d' % self.id
+ if self.default_category:
+ parameters += '&checked_categories=%s' % self.default_category.pk
urn = TinyUrl.getUrnByParameters(parameters)
area_name = area_name + '/' if area_name else ''
url = reverse('chimere:tiny', args=[area_name, urn])
@@ -890,7 +907,7 @@ def picturefile_post_save(sender, **kwargs):
basename, format = os.path.splitext(filetail)
basename = defaultfilters.slugify(basename)
basename = re.sub(r'-','_', basename)
- miniature = basename + '_thumb' + format
+ miniature = basename + '_thumb.jpg'
filename = file.path
miniature_filename = os.path.join(filehead, miniature)
try:
@@ -910,10 +927,12 @@ def picturefile_post_save(sender, **kwargs):
image.thumbnail([image_x, image_y], Image.ANTIALIAS)
temp_image = open(miniature_filename, 'w')
+ if image.mode != "RGB":
+ image = image.convert('RGB')
try:
- image.save(temp_image, image.format, quality=90, optimize=1)
+ image.save(temp_image, 'JPEG', quality=90, optimize=1)
except:
- image.save(temp_image, image.format, quality=90)
+ image.save(temp_image, 'JPEG', quality=90)
short_name = miniature_filename[len(settings.MEDIA_ROOT):]
picturefile.thumbnailfile = short_name
@@ -1396,8 +1415,8 @@ def area_post_save(sender, **kwargs):
perm = Permission.objects.filter(codename=mnemo)
lbl = "Can change " + area.name
if not perm.count():
- content_type = ContentType.objects.get(app_label="chimere",
- model="area")
+ content_type, created = ContentType.objects.get_or_create(
+ app_label="chimere", model="area")
perm = Permission(name=lbl, content_type_id=content_type.id,
codename=mnemo)
perm.save()
@@ -1424,7 +1443,8 @@ def area_post_save(sender, **kwargs):
('chimere', 'multimediafile'),
('chimere', 'picturefile'),
('chimere', 'routefile')):
- ct = ContentType.objects.get(app_label=app_label, model=model)
+ ct, created = ContentType.objects.get_or_create(app_label=app_label,
+ model=model)
for p in Permission.objects.filter(content_type=ct).all():
group.permissions.add(p)