summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/admin.py7
-rw-r--r--ishtar_common/forms.py11
-rw-r--r--ishtar_common/migrations/0213_auto_20210302_0950.py25
-rw-r--r--ishtar_common/models.py5
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", )