Skip to content

Correct to_dict to flat multilevel dictionaries#27

Open
sesostris wants to merge 1 commit into
hexatester:masterfrom
sesostris:master
Open

Correct to_dict to flat multilevel dictionaries#27
sesostris wants to merge 1 commit into
hexatester:masterfrom
sesostris:master

Conversation

@sesostris
Copy link
Copy Markdown
Contributor

The to_dict function fails when flattening multi-level dictionaries. For example:

from moodle.utils.helper import to_dict

user_fields = {
    "username": "myusername",
    "auth": "email",
    "password": "TopSecretPassword",
    "firstname": "Name",
    "lastname": "Surname",
    "email": "myemail@example.com",
    "idnumber": "1001",
    "customfields": [{"type": "mycustomfield", "value": "example value"}],
}

to_dict({"users": [user_fields]})

This will generate the following output:

{'users[0][username]': 'myusername',
 'users[0][auth]': 'email',
 'users[0][password]': 'TopSecretPassword',
 'users[0][firstname]': 'Name',
 'users[0][lastname]': 'Surname',
 'users[0][email]': 'myemail@example.com',
 'users[0][idnumber]': '1001',
 'users[0][customfields[0][type]]': 'mycustomfield',
 'users[0][customfields[0][value]]': 'example value'}

However, the correct output should be like this:

{'users[0][username]': 'myusername',
 'users[0][auth]': 'email',
 'users[0][password]': 'TopSecretPassword',
 'users[0][firstname]': 'Name',
 'users[0][lastname]': 'Surname',
 'users[0][email]': 'myemail@example.com',
 'users[0][idnumber]': '1001',
 'users[0][customfields][0][type]': 'mycustomfield',
 'users[0][customfields][0][value]': 'example value'}

Note the difference in the last two lines of each output.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant