예제 #1
0
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")
예제 #2
0
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()