Projet

Général

Profil

0001-api-add-support-for-custom-rest_framework-fields-to-.patch

Benjamin Dauvergne, 24 mars 2017 14:05

Télécharger (2,41 ko)

Voir les différences:

Subject: [PATCH] api: add support for custom rest_framework fields to
 attribute kinds (fixes #15608)

 src/authentic2/api_views.py       | 8 +++++---
 src/authentic2/attribute_kinds.py | 3 +++
 2 files changed, 8 insertions(+), 3 deletions(-)
src/authentic2/api_views.py
23 23
from rest_framework.fields import CreateOnlyDefault
24 24

  
25 25
from .custom_user.models import User
26
from . import utils, decorators
26
from . import utils, decorators, attribute_kinds
27 27
from .models import Attribute, PasswordReset
28 28
from .a2_rbac.utils import get_default_ou
29 29

  
......
278 278
        for at in Attribute.objects.all():
279 279
            if at.name in self.fields:
280 280
                continue
281
            self.fields[at.name] = serializers.CharField(source='attributes.%s' % at.name,
282
                                                         required=at.required, allow_blank=True)
281
            kind = attribute_kinds.get_kind(at.kind)
282
            field_class = kind['rest_framework_field_class']
283
            self.fields[at.name] = field_class(source='attributes.%s' % at.name,
284
                                               required=at.required, allow_blank=True)
283 285

  
284 286
    def check_perm(self, perm, ou):
285 287
        self.context['view'].check_perm(perm, ou)
src/authentic2/attribute_kinds.py
10 10
from django.utils.functional import allow_lazy
11 11
from django.template.defaultfilters import capfirst
12 12

  
13
from rest_framework import serializers
14

  
13 15
from .decorators import to_iter
14 16
from .plugins import collect_from_plugins
15 17
from . import app_settings
......
109 111
    d.setdefault('default', None)
110 112
    d.setdefault('serialize', lambda x: x)
111 113
    d.setdefault('deserialize', lambda x: x)
114
    d.setdefault('rest_framework_field_class', serializers.CharField)
112 115
    return d
113
-