Projet

Général

Profil

0001-Work-around-regression-with-model-forms-when-a-non-m.patch

Benjamin Dauvergne, 18 mars 2015 13:19

Télécharger (2,55 ko)

Voir les différences:

Subject: [PATCH 1/2] Work around regression with model forms when a non-model
 form is passed to modelform_factory by the django.contrib.admin (refs #6766)

 src/authentic2/admin.py | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
src/authentic2/admin.py
7 7
from django.utils import timezone
8 8
from django.utils.http import urlencode
9 9
from django.http import HttpResponseRedirect
10 10
from django.views.decorators.cache import never_cache
11 11
from django.contrib.auth.admin import GroupAdmin, UserAdmin
12 12
from django.contrib.auth.models import Group
13 13
from django.contrib.sessions.models import Session
14 14
from django.contrib.auth import REDIRECT_FIELD_NAME
15
from django.contrib.admin.utils import flatten_fieldsets
15 16

  
16 17
from .nonce.models import Nonce
17 18
from . import forms, models, admin_forms, compat, app_settings
18 19

  
19 20
def cleanup_action(modeladmin, request, queryset):
20 21
    queryset.cleanup()
21 22
cleanup_action.short_description = _('Cleanup expired objects')
22 23

  
......
188 189
            qs = models.Attribute.objects.filter(required=True)
189 190
            insertion_idx = 1
190 191
        if qs.exists():
191 192
            fieldsets = list(fieldsets)
192 193
            fieldsets.insert(insertion_idx, 
193 194
                    (_('Attributes'), {'fields': [at.name for at in qs]}))
194 195
        return fieldsets
195 196

  
197
    def get_form(self, request, obj=None, **kwargs):
198
        if 'fields' in kwargs:
199
            fields = kwargs.pop('fields')
200
        else:
201
            fields = flatten_fieldsets(self.get_fieldsets(request, obj))
202
        if obj:
203
            qs = models.Attribute.objects.all()
204
        else:
205
            qs = models.Attribute.objects.filter(required=True)
206
        non_model_fields = [a.name for a in qs]
207
        fields = list(set(fields) - set(non_model_fields))
208
        kwargs['fields'] = fields
209
        return super(AuthenticUserAdmin, self).get_form(request, obj=obj, **kwargs)
210

  
196 211
User = compat.get_user_model()
197 212
if User.__module__ == 'django.contrib.auth.models':
198 213
    if User in admin.site._registry:
199 214
        admin.site.unregister(User)
200 215
    admin.site.register(User, AuthenticUserAdmin)
201 216

  
202 217
class AttributeAdmin(admin.ModelAdmin):
203 218
    list_display = ('label', 'name', 'kind', 'required',
204
-