Beispiel #1
0
def test_camel_case():
    assert camel_case('aCamelCasedString') == 'aCamelCasedString'
    assert camel_case('A_snake_cased_string') == 'aSnakeCasedString'
    assert camel_case('A-kebab-cased-string') == 'aKebabCasedString'
    assert camel_case('A normal sentence') == 'aNormalSentence'
    assert camel_case('_an underscore-prefix') == '_anUnderscorePrefix'
    assert camel_case('__a private-prefix') == '__aPrivatePrefix'
    assert camel_case('FoobarAPIController') == 'foobarApiController'
    assert camel_case('') == ''
    assert camel_case(None) is None
Beispiel #2
0
    def _update_fields(self, obj=None, many=False):
        """
        Overridden to automatically convert snake-cased field names to
        camel-cased (when dumping) and to load camel-cased field names back
        to their snake-cased counterparts
        """
        fields = super()._update_fields(obj, many)
        new_fields = self.dict_class()
        for name, field in fields.items():
            if (field.dump_to is None
                    and not name.startswith('_')
                    and '_' in name):
                camel_cased_name = camel_case(name)
                field.dump_to = camel_cased_name
                field.load_from = camel_cased_name
            if name in READ_ONLY_FIELDS:
                field.dump_only = True
            new_fields[name] = field

        # validate id
        if 'id' in new_fields:
            new_fields['id'].validators = [self.validate_id]

        self.fields = new_fields
        return new_fields