diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-11-24 19:39:06 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-11-24 19:39:06 +0100 |
commit | 651524bf93ee64f5f28605884f6b60256db43d1f (patch) | |
tree | 3eab6d3ab5f8da3f4cb7c803b2237928b27b9d74 /ishtar_common/utils.py | |
parent | 17bf67ec257d0d10decedc44a88d0ab5197c2ba8 (diff) | |
parent | 9384f39f8fd63f1e004d3abe75cb737c6651e3ed (diff) | |
download | Ishtar-651524bf93ee64f5f28605884f6b60256db43d1f.tar.bz2 Ishtar-651524bf93ee64f5f28605884f6b60256db43d1f.zip |
Merge branch 'develop' into develop-bootstrap
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r-- | ishtar_common/utils.py | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index db7a3640a..4ecddfc92 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -28,6 +28,7 @@ from django.conf import settings from django.contrib.gis.geos import GEOSGeometry from django.core.cache import cache from django.core.urlresolvers import reverse +from django.utils.datastructures import MultiValueDict as BaseMultiValueDict from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _, ugettext from django.template.defaultfilters import slugify @@ -47,13 +48,33 @@ class BColors: UNDERLINE = '\033[4m' +class MultiValueDict(BaseMultiValueDict): + def get(self, *args, **kwargs): + v = super(MultiValueDict, self).getlist(*args, **kwargs) + if callable(v): + v = v() + if type(v) in (list, tuple) and len(v) > 1: + v = ",".join(v) + elif type(v) not in (int, unicode): + v = super(MultiValueDict, self).get(*args, **kwargs) + return v + + def getlist(self, *args, **kwargs): + lst = super(MultiValueDict, self).getlist(*args, **kwargs) + if type(lst) not in (tuple, list): + lst = [lst] + return lst + + def get_current_year(): return datetime.datetime.now().year -def get_cache(cls, extra_args=[]): +def get_cache(cls, extra_args=tuple(), app_label=None): + if not app_label: + app_label = cls._meta.app_label cache_key = u"{}-{}-{}".format( - settings.PROJECT_SLUG, cls._meta.app_label, cls.__name__) + settings.PROJECT_SLUG, app_label, cls.__name__) for arg in extra_args: if not arg: cache_key += '-0' |