Simplify retrieval of extra_user_preferences

This commit is contained in:
mvdbeek
2017-12-31 18:06:49 +02:00
parent 81c3b8cc4d
commit e973403ae5
2 changed files with 24 additions and 12 deletions
+12
View File
@@ -5,6 +5,7 @@ Naming: try to use class names that have a distinct plural form so that
the relationship cardinalities are obvious (e.g. prefer Dataset to Data)
"""
import errno
import json
import logging
import numbers
import operator
@@ -211,6 +212,17 @@ class User(object, Dictifiable):
self.credentials = []
# ? self.roles = []
@property
def extra_preferences(self):
data = {}
extra_user_preferences = self.preferences.get('extra_user_preferences')
if extra_user_preferences:
try:
data = json.loads(extra_user_preferences)
except Exception:
pass
return data
def set_password_cleartext(self, cleartext):
"""
Set user password to the digest of `cleartext`.
+12 -12
View File
@@ -296,21 +296,21 @@ class UserAPIController(BaseAPIController, UsesTagsMixin, CreatesUsersMixin, Cre
"""
if not preferences:
return []
data = []
# Get data if present
data_key = "extra_user_preferences"
if data_key in user.preferences:
data = json.loads(user.preferences[data_key])
extra_pref_inputs = list()
# Build sections for different categories of inputs
for item, value in preferences.items():
if value is not None:
for input in value["inputs"]:
input['help'] = 'Required' if input['required'] else ''
help = input.get('help', '')
required = 'Required' if util.string_as_bool(input.get('required')) else ''
if help:
input['help'] = "%s %s" % (help, required)
else:
input['help'] = required
field = item + '|' + input['name']
for data_item in data:
for data_item in user.extra_preferences:
if field in data_item:
input['value'] = data[data_item]
input['value'] = user.extra_preferences[data_item]
extra_pref_inputs.append({'type': 'section', 'title': value['description'], 'name': item, 'expanded': True, 'inputs': value['inputs']})
return extra_pref_inputs
@@ -455,9 +455,9 @@ class UserAPIController(BaseAPIController, UsesTagsMixin, CreatesUsersMixin, Cre
# Update values for extra user preference items
extra_user_pref_data = dict()
get_extra_pref_keys = self._get_extra_user_preferences(trans)
if get_extra_pref_keys is not None:
for key in get_extra_pref_keys:
extra_pref_keys = self._get_extra_user_preferences(trans)
if extra_pref_keys is not None:
for key in extra_pref_keys:
key_prefix = key + '|'
for item in payload:
if item.startswith(key_prefix):
@@ -465,7 +465,7 @@ class UserAPIController(BaseAPIController, UsesTagsMixin, CreatesUsersMixin, Cre
if payload[item] == "":
# Raise an exception when a required field is empty while saving the form
keys = item.split("|")
section = get_extra_pref_keys[keys[0]]
section = extra_pref_keys[keys[0]]
for input in section['inputs']:
if input['name'] == keys[1] and input['required']:
raise MessageException("Please fill the required field")