diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-03-02 11:23:23 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-03-02 12:44:59 +0100 |
commit | c3ac6de46a5ab6e35c0103456c47accc0f3cb3f9 (patch) | |
tree | 98dcb4e9c96101b01b4fd17bcddbd12a1c127377 /ishtar_common | |
parent | 6676d09fbd11b26d014b46585db7e6997f4d2abc (diff) | |
download | Ishtar-c3ac6de46a5ab6e35c0103456c47accc0f3cb3f9.tar.bz2 Ishtar-c3ac6de46a5ab6e35c0103456c47accc0f3cb3f9.zip |
Fix custom form -> use profile instead of person types
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/admin.py | 7 | ||||
-rw-r--r-- | ishtar_common/forms.py | 11 | ||||
-rw-r--r-- | ishtar_common/migrations/0213_auto_20210302_0950.py | 25 | ||||
-rw-r--r-- | ishtar_common/models.py | 5 |
4 files changed, 40 insertions, 8 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index 2fe0c012a..4cae9e02c 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -1573,7 +1573,6 @@ def get_choices_form(): for slug in register.keys() ] - forms = sorted(forms, key=lambda x: x[1]) cache.set(cache_key, forms, settings.CACHE_TIMEOUT) return forms @@ -1652,7 +1651,7 @@ class CustomFormAdmin(admin.ModelAdmin): list_display = ['name', 'form', 'available', 'enabled', 'apply_to_all', 'users_lbl', 'user_types_lbl'] fields = ('name', 'form', 'available', 'enabled', 'apply_to_all', 'users', - 'user_types') + 'user_types', 'profile_types') form = CustomFormForm inlines = [ExcludeFieldInline, JsonFieldInline] @@ -1665,8 +1664,8 @@ class CustomFormAdmin(admin.ModelAdmin): def get_readonly_fields(self, request, obj=None): if obj: - return ('form',) - return [] + return ('form', "user_types") + return ("user_types",) admin_site.register(models.CustomForm, CustomFormAdmin) diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 5b6501b13..27741c576 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -243,9 +243,7 @@ class CustomForm(BSForm): alt_key, alt_field = new_fields.pop(k) alt_field.order_number = k fields[alt_key] = alt_field - self.fields = fields - self._post_init() def are_available(self, keys): @@ -317,12 +315,19 @@ class CustomForm(BSForm): if not current_user: return True, [], [] base_q = {"form": cls.form_slug, 'available': True} - # order is important : try for user, user type then all + # order is important : try for user, profile type, user type then all query_dicts = [] if current_user: dct = base_q.copy() dct.update({'users__pk': current_user.pk}) query_dicts = [dct] + if current_user.current_profile: + dct = base_q.copy() + pt = current_user.current_profile.profile_type.pk + dct.update( + {'profile_types__pk': pt}) + query_dicts.append(dct) + for user_type in current_user.person.person_types.all(): dct = base_q.copy() dct.update({'user_types__pk': user_type.pk}), diff --git a/ishtar_common/migrations/0213_auto_20210302_0950.py b/ishtar_common/migrations/0213_auto_20210302_0950.py new file mode 100644 index 000000000..584ac7f62 --- /dev/null +++ b/ishtar_common/migrations/0213_auto_20210302_0950.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2021-03-02 09:50 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0212_auto_20210222_1718'), + ] + + operations = [ + migrations.AddField( + model_name='customform', + name='profile_types', + field=models.ManyToManyField(blank=True, to='ishtar_common.ProfileType'), + ), + migrations.AlterField( + model_name='customform', + name='user_types', + field=models.ManyToManyField(blank=True, help_text='Deprecated', to='ishtar_common.PersonType'), + ), + ] diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 4662bcc35..0e5a39c1f 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1098,7 +1098,10 @@ class CustomForm(models.Model): help_text=_("Apply this form to all users. If set to True, selecting " "user and user type is useless.")) users = models.ManyToManyField('IshtarUser', blank=True) - user_types = models.ManyToManyField('PersonType', blank=True) + user_types = models.ManyToManyField( + 'PersonType', blank=True, + help_text=_("Deprecated - use profile types")) + profile_types = models.ManyToManyField("ProfileType", blank=True) objects = CustomFormManager() SERIALIZATION_EXCLUDE = ("users", ) |