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)
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)
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)
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)
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)