def api_put_speech_part_type(api_version): try: data = request.get_json() if "data" in data: data = data["data"] try: modified_data = [] for speech_part_type in data: a = SpeechPartType.query.filter( SpeechPartType.id == speech_part_type.get('id')).one() a.label = speech_part_type.get("label") a.lang_code = speech_part_type.get("lang_code") a.description = speech_part_type.get("description") db.session.add(a) modified_data.append(a) db.session.commit() except Exception as e: print(str(e), speech_part_type) db.session.rollback() return make_409(str(e)) return make_200([d.serialize() for d in modified_data]) else: return make_400("no data") except NoResultFound: return make_404("SpeechPartType not found")
def api_post_users_roles(api_version, user_id): """ { "data": [ { "name": "admin" }, { "name": "teacher" } ] } :param api_version: :param user_id: :return: """ data = request.get_json() if "data" in data: data = data["data"] user = current_app.get_current_user() target_user = User.query.filter(User.id == user_id).first() for role_name in [r.get("name", None) for r in data]: if not role_name in target_user.roles: if role_name == "admin" and not user.is_admin: return make_403() else: role = Role.query.filter(Role.name == role_name).first() if role: target_user.roles.append(role) db.session.add(target_user) try: db.session.commit() return make_200(data=[r.serialize() for r in target_user.roles]) except Exception as e: db.session.rollback() return make_400(str(e)) else: return make_409()