Exemplo n.º 1
0
async def update_discourse_data(
    id: str,
    action: Action,
    update_type: UpdateType,
    data: Union[UpdateDiscourseAddDiscourseItem,
                UpdateDiscourseAddDiscourseItemsLink,
                UpdateDiscourseDeleteDiscourseItemOrLink] = Body(...)):
    if action == 'add':
        if isinstance(data, UpdateDiscourseDeleteDiscourseItemOrLink):
            return ErrorResponseModel.return_response(
                'An error occurred', status.HTTP_403_FORBIDDEN,
                'Expected UpdateDiscourseAddDiscourseItem with action=add!')
    else:
        if isinstance(data, UpdateDiscourseAddDiscourseItem) or isinstance(
                data, UpdateDiscourseAddDiscourseItemsLink):
            return ErrorResponseModel.return_response(
                'An error occurred', status.HTTP_403_FORBIDDEN,
                'Expected UpdateDiscourseDeleteDiscourseItem with action=delete!'
            )
    discourse_data = jsonable_encoder(data)
    updated_discourse = await update_discourse(id, action, update_type,
                                               discourse_data)
    if updated_discourse:
        if type(updated_discourse) != bool:
            return ResponseModel.return_response(updated_discourse)
        else:
            return ResponseModel.return_response(
                {'message': 'The whole discourse was deleted'})
    return ErrorResponseModel.return_response(
        'An error occurred', status.HTTP_404_NOT_FOUND,
        'There was an error updating the discourse data')
Exemplo n.º 2
0
async def get_discourse_items_link(id: str):
    discourse_items_link = await retrieve_discourse_items_link(id)
    if discourse_items_link:
        return ResponseModel.return_response(discourse_items_link)
    return ErrorResponseModel.return_response(
        'An error occured', status.HTTP_404_NOT_FOUND,
        'Discourse items link doesn\'t exist')
Exemplo n.º 3
0
async def delete_discourse_data(id: str):
    deleted_discourse = await delete_discourse(id)
    if deleted_discourse:
        return ResponseModel.return_response(
            {'message': f'Discourse with id: {id} removed'})
    return ErrorResponseModel.return_response('An error occurred',
                                              status.HTTP_404_NOT_FOUND,
                                              'Discourse doesn\'t exist')
Exemplo n.º 4
0
async def get_discourse(id: str):
    client = 'ai'
    discourse = await retrieve_discourse(id, client)
    if discourse:
        return ResponseModel.return_response(discourse)
    return ErrorResponseModel.return_response('An error occurred',
                                              status.HTTP_404_NOT_FOUND,
                                              'Discourse doesn\'t exist')
Exemplo n.º 5
0
async def add_discourse_data(discourseItem: Discourse = Body(...)):
    discourse_data = jsonable_encoder(discourseItem)
    new_discourse = await add_discourse(discourse_data)
    if new_discourse:
        return ResponseModel.return_response(new_discourse)
    return ErrorResponseModel.return_response(
        'An error occurred', status.HTTP_403_FORBIDDEN,
        f'The discourse couldn\'t be added')
Exemplo n.º 6
0
async def delete_user_data(username: str):
    deleted_user = await delete_user(username)
    if deleted_user:
        return ResponseModel.return_response(
            f'User with ID: {username} removed', 'User deleted successfully')
    return ErrorResponseModel.return_response(
        'An error occurred', status.HTTP_404_NOT_FOUND,
        f'User with ID: {username} doesn\'t exist')
Exemplo n.º 7
0
async def get_student_data(username: str):
    user = await retrieve_user(username)
    if user:
        return ResponseModel.return_response(
            user, 'User data retrieved successfully')
    return ErrorResponseModel.return_response('An error occurred',
                                              status.HTTP_404_NOT_FOUND,
                                              'User doesn\'t exist')
Exemplo n.º 8
0
async def add_discourse_items_link_data(
        discourse_items_link: DiscourseItemsLink = Body(...)):
    discourse_items_link_data = jsonable_encoder(discourse_items_link)
    new_discourse_items_link = await add_discourse_items_link(
        discourse_items_link_data)
    if new_discourse_items_link:
        return ResponseModel.return_response(new_discourse_items_link)
    return ErrorResponseModel.return_response(
        'An error occurred', status.HTTP_403_FORBIDDEN,
        'The discourse items link couldn\'t be added')
Exemplo n.º 9
0
async def add_user_data(user: User = Body(...)):
    user = jsonable_encoder(user)
    password = user['password']
    user.pop('password')
    user['hashed_password'] = pwd_context.hash(password)
    new_user = await add_user(user)
    if new_user:
        return ResponseModel.return_response(new_user,
                                             'User added successfully')
    return ErrorResponseModel.return_response(
        'An error occurred', status.HTTP_403_FORBIDDEN,
        f'The username {user["username"]} is not available!')
Exemplo n.º 10
0
async def update_discourse_items_link_data(
    id: str, data: UpdateDiscourseItemsLink = Body(...)):
    data = {
        key: value
        for key, value in data.dict().items() if value is not None
    }
    updated_discourse_items_link = await update_discourse_items_link(id, data)
    if updated_discourse_items_link:
        return ResponseModel.return_response(updated_discourse_items_link)
    return ErrorResponseModel.return_response(
        'An error occurred', status.HTTP_404_NOT_FOUND,
        'There was an error updating the discourse items link data')
Exemplo n.º 11
0
async def change_user_password(username: str,
                               password: ChangePasswordModel = Body(...)):
    password = jsonable_encoder(password)
    password = password['password']
    hashed_password = pwd_context.hash(password)
    updated_user = await change_password(username, hashed_password)
    if updated_user:
        return ResponseModel.return_response(
            f'Password changed for user with username {username}',
            'Password changed successfully')
    return ErrorResponseModel.return_response('An error occurred',
                                              status.HTTP_404_NOT_FOUND,
                                              'User doesn\'t exist')
Exemplo n.º 12
0
async def update_user_data(username: str, req: UpdateUserModel = Body(...)):
    req = {k: v for k, v in req.dict().items() if v is not None}
    updated_user = await update_user(username, req)
    if updated_user:
        return ResponseModel.return_response(
            {
                'updated user':
                updated_user,
                'message':
                f'User with past username: {username} update is successful'
            }, 'User data updated successfully')
    return ErrorResponseModel.return_response(
        'An error occurred', status.HTTP_404_NOT_FOUND,
        'There was an error updating the user data')
Exemplo n.º 13
0
async def get_discourse_ids():
    discourses = await retrieve_discourse_ids()
    if discourses:
        return ResponseModel.return_response(discourses)
    return ResponseModel.return_response({'message': 'Empty List'})
Exemplo n.º 14
0
async def get_discourses_frontend():
    client = 'ai'
    discourses = await retrieve_discourses(client)
    if discourses:
        return ResponseModel.return_response(discourses)
    return ResponseModel.return_response({'message': 'Empty List'})
Exemplo n.º 15
0
async def get_users():
    users = await retrieve_users()
    if users:
        return ResponseModel.return_response(
            users, 'Users data retrieved successfully')
    return ResponseModel.return_response(users, 'Emplty list returned')
Exemplo n.º 16
0
async def get_discourse_items_links():
    discourse_items_links = await retrieve_discourse_items_links()
    if discourse_items_links:
        return ResponseModel.return_response(discourse_items_links)
    return ResponseModel.return_response({'message': 'Empty list'})