def add_user(userid): first_name = request.data.get('first_name') last_name = request.data.get('last_name') groupids = request.data.get('groups') if groupids and isinstance(groupids, basestring): try: groupids = json.loads(groupids) if not isinstance(groupids, list): return jsonify({ 'error': 'groups must be a json marshalled' + 'list of groupids, got: {}'.format(type(groupids)) }), 400 except Exception: return jsonify({ 'error': 'groups must be a json marshalled' + 'list of groupids.' }), 400 else: return jsonify({ 'error': 'Wrong data type for groups, got {}'.format(type(groupids)) }), 400 user = fetch_user(userid) if user: return jsonify({'error': 'User {} already exists.'.format(userid, )}), 409 group_objs = [] for groupid in groupids: print "groupid {}".format(groupid) group = fetch_group(groupid) print "Group {}".format(group) if group is None: print "making group" group = Group(groupid) print "group made" group.save() print "group saved" print "group appending" group_objs.append(group) print "group appended" user = User(userid) user.first_name = first_name user.last_name = last_name print "setting group memberships" user.group_memberships = group_objs print "group memberships set" user.save() print "saved user" print "showing json" print json.dumps({'results': user.as_dict()}) print "json shown" return jsonify({'results': user.as_dict()}), 201