summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r--ishtar_common/models.py52
1 files changed, 34 insertions, 18 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 460612e17..6c4ec2e49 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -28,6 +28,7 @@ import tempfile
import copy
from django.conf import settings
+from django.core.cache import cache
from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.core.files.uploadedfile import SimpleUploadedFile
from django.core.validators import validate_slug
@@ -45,7 +46,8 @@ from django.contrib import admin
from simple_history.models import HistoricalRecords as BaseHistoricalRecords
-from ooo_replace import ooo_replace
+from ishtar_common.ooo_replace import ooo_replace
+from ishtar_common.utils import get_cache
def post_save_user(sender, **kwargs):
user = kwargs['instance']
@@ -85,6 +87,8 @@ class ValueGetter(object):
values['VALUES'] = u'\n'.join(
[u"%s: %s" % (k, v) for k, v in sorted(value_list,
key=lambda x:x[0])])
+ for global_var in GlobalVar.objects.all():
+ values[global_var.slug] = global_var.value or ""
return values
@classmethod
@@ -525,7 +529,6 @@ class BaseHistorizedItem(models.Model):
items.append('00000000')
return u"-".join([unicode(item) for item in items])
-
class ShortMenuItem(object):
def get_short_menu_class(self):
return ''
@@ -539,26 +542,39 @@ class LightHistorizedItem(BaseHistorizedItem):
super(LightHistorizedItem, self).save(*args, **kwargs)
return True
-class Wizard(models.Model):
- url_name = models.CharField(_(u"URL name"), max_length=128, unique=True)
+class GlobalVar(models.Model):
+ slug = models.SlugField(_(u"Variable name"), unique=True)
+ description = models.TextField(_(u"Description of the variable"),
+ null=True, blank=True)
+ value = models.TextField(_(u"Value"), null=True, blank=True)
class Meta:
- verbose_name = _(u"Wizard")
- ordering = ['url_name']
+ verbose_name = _(u"Global variable")
+ verbose_name_plural = _(u"Global variables")
+ ordering = ['slug']
def __unicode__(self):
- return unicode(self.url_name)
-
-class WizardStep(models.Model):
- order = models.IntegerField(_(u"Order"))
- wizard = models.ForeignKey(Wizard, verbose_name=_(u"Wizard"))
- url_name = models.CharField(_(u"URL name"), max_length=128)
- name = models.CharField(_(u"Label"), max_length=128)
- class Meta:
- verbose_name = _(u"Wizard step")
- ordering = ['wizard', 'order']
+ return unicode(self.slug)
- def __unicode__(self):
- return u"%s » %s" % (unicode(self.wizard), unicode(self.name))
+ @classmethod
+ def get_cache(cls, slug):
+ cache_key, value = get_cache(cls, slug)
+ if value:
+ return value
+ try:
+ obj = cls.objects.get(slug=slug)
+ cache.set(cache_key, obj.value, settings.CACHE_TIMEOUT)
+ return obj.value
+ except cls.DoesNotExist:
+ return None
+
+def cached_globalvar_changed(sender, **kwargs):
+ if not kwargs['instance']:
+ return
+ var = kwargs['instance']
+ cache_key, value = get_cache(GlobalVar, var.slug)
+ cache.set(cache_key, var.value, settings.CACHE_TIMEOUT)
+
+post_save.connect(cached_globalvar_changed, sender=GlobalVar)
class UserDashboard:
def __init__(self):