diff options
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index a5a3d96c1..c888e87fd 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1647,14 +1647,58 @@ class CustomForm(models.Model): verbose_name_plural = _(u"Custom forms") ordering = ['name', 'form'] + def users_lbl(self): + users = [unicode(user) for user in self.users.all()] + return " ; ".join(users) + + users_lbl.short_description = _(u"Users") + + def user_types_lbl(self): + user_types = [unicode(u) for u in self.user_types.all()] + return " ; ".join(user_types) + + user_types_lbl.short_description = _(u"User types") + + @classmethod + def register(cls): + if hasattr(cls, '_register'): + return cls._register + cache_key, value = get_cache(cls.__class__, ['dct-forms'], + app_label='ishtar_common') + if value: + cls._register = value + return cls._register + cls._register = {} + # ideally should be improved but only used in admin + from ishtar_common.admin import ISHTAR_FORMS + from ishtar_common.forms import CustomForm + + for app_form in ISHTAR_FORMS: + for form in dir(app_form): + if 'Form' not in form: + # not very clean... but do not treat inappropriate items + continue + form = getattr(app_form, form) + if not issubclass(form, CustomForm) \ + or not getattr(form, 'form_slug', None): + continue + cls._register[form.form_slug] = form + return cls._register + + def get_form_class(self): + register = self.register() + if self.form not in self._register: + return + return register[self.form] + class ExcludedField(models.Model): custom_form = models.ForeignKey(CustomForm, related_name='excluded_fields') field = models.CharField(_(u"Field"), max_length=250) class Meta: - verbose_name = _(u"Custom form - excluded field") - verbose_name_plural = _(u"Custom form - excluded fields") + verbose_name = _(u"Excluded field") + verbose_name_plural = _(u"Excluded fields") class GlobalVar(models.Model, Cached): |