예제 #1
0
def get_recipe_(required_recipe: str) -> json:
    """
    Получение полной информации о рецепте
    :param required_recipe: Название рецепта
    :return: рецепт json формата
    """
    try:
        recipe = Recipe.get(Recipe.name == required_recipe)
        recipe_json = __create_json_recipe(recipe)
    except Exception as e:
        # Я не могу взять только текст ошибки из е, нет отдельного атрибута
        # а так он расписывает многа букав, и сложна букавы читать
        error_message = str(e).split('\n')[0]
        recipe_json = {'error': error_message}

    return json.dumps(recipe_json, ensure_ascii=False)
예제 #2
0
def delete_recipe_(name, user):
    """
    удалить свой рецепт
    :param user: Пользователь, кто пытается удалить рецепт
    :param name: название рецепты
    :return: ответ как прошла операция
    """
    try:
        recipe = Recipe.get(name=name)
        if recipe.author.id == user.id:
            success = recipe.delete_instance(recursive=True)
            if success:
                response = {'success': name + ' recipe is deleted'}
            else:
                response = {'error': 'probably wrong name'}
        else:
            response = {'error': 'u not owner of this recipe'}
    except Exception as e:
        error_message = str(e).split('\n')[0]
        response = {'error': error_message}
    return json.dumps(response, ensure_ascii=False)
예제 #3
0
def upd_recipe_(name_recipe, data, user):
    """
    изменить свой рецепт
    :param name_recipe: name of recipe to change
    :param user: Пользователь, уто пытается изменть рецепт
    :param data: put параметр 'name'
    :return: ответ как прошла операция
    """
    try:
        recipe = Recipe.get(name=name_recipe)
        if recipe.author.nickname == user.nickname:
            update = {}
            if 'name' in data and data['name']:
                update[Recipe.name] = data['name']
            if 'description' in data and data['description']:
                update[Recipe.description] = data['description']
            if 'hashtags' in data and data['hashtags']:
                update[Recipe.hashtags] = data['hashtags']
            if 'steps' in data and data['steps']:
                update[Recipe.steps] = data['steps']
            if 'dish_type' in data and data['dish_type']:
                update[Recipe.dish_type] = DishType.get(
                    dish_type_name=data['dish_type'])
            if 'image' in data and data['image']:
                update[Recipe.hashtag] = data['image']

            recipe = Recipe.update(update).where(Recipe.name == name_recipe)
            success = recipe.execute()
            if success:
                response = {'status': 'recipe changed'}
            else:
                response = {'error': 'recipe no changed'}
        else:
            response = {'error': 'u not owner of this recipe'}
    except Exception as e:
        error_message = str(e).split('\n')[0]
        response = {'error': error_message}
    return json.dumps(response, ensure_ascii=False)
예제 #4
0
def favorite_recipe_(data, user):
    """
    Добавить рецепт в избранное пользователя
    :param data: post параметр 'name'
    :param user: пользователь
    :return: ответ как прошла операция
    """
    try:
        recipe = data['name']
        with db.atomic():
            # Я просто по приколу так написал вместо джоина 'рецепт' таблицы, не думал что будет работать.
            # только под конец написания узнал
            favorite, new_favorite = Favorites.get_or_create(
                recipe=Recipe.get(Recipe.name == recipe), user=user.id)
            if new_favorite:
                favorite.save()
                response = {'success': recipe + ' added to favorites'}
            else:
                response = {'error': "it's already favorite"}
    except Exception as e:
        error_message = str(e).split('\n')[0]
        response = {'error': error_message}

    return json.dumps(response, ensure_ascii=False)
예제 #5
0
def like_to_recipe_(data, user):
    """
    Поставить рецепту лайк пользователем
    :param data: post параметр 'name'
    :param user: пользователь
    :return: ответ как прошла операция
    """
    try:
        with db.atomic():
            recipe = data['name']
            # Я просто по приколу так написал вместо джоина 'рецепт' таблицы, не думал что будет работать.
            # только под конец написания узнал
            like, new_like = Likes.get_or_create(
                recipe=Recipe.get(Recipe.name == recipe), user=user.id)
            if new_like:
                like.save()
                response = {'success': recipe + ' like is added'}
            else:
                response = {'error': 'like is already added'}
    except Exception as e:
        error_message = str(e).split('\n')[0]
        response = {'error': error_message}

    return json.dumps(response, ensure_ascii=False)