From 8631cdccea4ae3564a598736652d65a8f0b9f85b Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 3 Aug 2016 18:31:09 +0200 Subject: Change mean populating dynamically forms with properties in order to allow tests --- chimere/admin.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'chimere/admin.py') diff --git a/chimere/admin.py b/chimere/admin.py index ce1f2b9..a30f0df 100644 --- a/chimere/admin.py +++ b/chimere/admin.py @@ -26,6 +26,7 @@ from copy import deepcopy from django.conf import settings from django.contrib import admin, messages from django.contrib.admin import SimpleListFilter +from django.contrib.admin.util import flatten_fieldsets from django.contrib.auth.admin import UserAdmin as VanillaUserAdmin from django.contrib.auth.models import User from django.core.exceptions import ObjectDoesNotExist @@ -341,18 +342,20 @@ class MarkerAdmin(admin.ModelAdmin): inlines = [MultimediaInline, PictureInline] has_properties = True - def __init__(self, *args, **kwargs): + def get_fieldsets(self, request, obj=None): """ Manage properties in fieldsets. """ + fieldsets = super(MarkerAdmin, self).get_fieldsets(request, obj) + newfieldsets = list(fieldsets) if self.has_properties: - main_fields = self.fieldsets[0][1]['fields'] + main_fields = newfieldsets[0][1]['fields'] for pm in PropertyModel.objects.filter(available=True)\ .order_by('order').all(): pm_name = pm.getNamedId() if pm_name not in main_fields: main_fields.append(pm_name) - super(MarkerAdmin, self).__init__(*args, **kwargs) + return newfieldsets def queryset(self, request): qs = self.model._default_manager.get_query_set() @@ -381,6 +384,8 @@ class MarkerAdmin(admin.ModelAdmin): return my_urls + urls def get_form(self, request, obj=None, **kwargs): + # remove dynamic field to prevent admin check + kwargs['fields'] = flatten_fieldsets(self.declared_fieldsets) form = super(MarkerAdmin, self).get_form(request, obj, **kwargs) q = request.user.subcategory_limit_to if not q.count(): -- cgit v1.2.3