diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-11-19 20:08:16 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-11-19 20:08:16 +0100 | 
| commit | a9d9b977778068d2609342d2749123618108e9d7 (patch) | |
| tree | 35a98f2c25a922d1e24c9e29c4b0fe76c9a81593 /ishtar_common/models.py | |
| parent | 986725aacb88131471ffe61a3a2e32c57408a05b (diff) | |
| download | Ishtar-a9d9b977778068d2609342d2749123618108e9d7.tar.bz2 Ishtar-a9d9b977778068d2609342d2749123618108e9d7.zip | |
Custom forms: admin forms
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): | 
