diff --git a/uffd/api/views.py b/uffd/api/views.py index 399ff5d020c8f29770753251135eb2e34f32cd3b..1871f0efd083ffbb2822fe75dad8518c40f4a39b 100644 --- a/uffd/api/views.py +++ b/uffd/api/views.py @@ -47,9 +47,11 @@ def getgroups(): abort(400) return jsonify([generate_group_dict(group) for group in groups]) -def generate_user_dict(user): +def generate_user_dict(user, all_groups=None): + if all_groups is None: + all_groups = user.groups return {'id': user.uid, 'loginname': user.loginname, 'email': user.mail, 'displayname': user.displayname, - 'groups': [group.name for group in user.groups]} + 'groups': [group.name for group in all_groups if user in group.members]} @bp.route('/getusers', methods=['GET', 'POST']) @apikey_required() @@ -58,7 +60,6 @@ def getusers(): abort(400) key = (list(request.values.keys()) or [None])[0] values = request.values.getlist(key) - Group.query.all() # Fill object cache for better preformance if key is None: users = User.query.all() elif key == 'id' and len(values) == 1: @@ -72,7 +73,10 @@ def getusers(): users = [] if group is None else group.members else: abort(400) - return jsonify([generate_user_dict(user) for user in users]) + all_groups = None + if len(users) > 1: + all_groups = Group.query.all() + return jsonify([generate_user_dict(user, all_groups) for user in users]) @bp.route('/checkpassword', methods=['POST']) @apikey_required('checkpassword')