def put(self, post_id=None): if not post_id: return "Відсутній id в url" json_data = json.dumps(request.json) try: try: post_data = PostSchema().loads(json_data) post_data = json.loads(PostSchema().dumps(post_data)) post = Post(id=post_id) reference_tags_list = post_data['tag'] tag_list_updated = [] for tag_str in reference_tags_list: reference_tag = Tag.objects.filter(id=tag_str) tag_list_updated.append(reference_tag[0].id) reference_author = Author.objects.filter(id=post_data['author']) post.update(id=post_id, body=post_data['body'], title=post_data['title'], author=reference_author[0].id, tag=tag_list_updated) except ValidationError as error: post_data = error.messages return post_data except Val_error as error: data = "Введений ID у невірному форматі або неіснуючий: " + str(error) return data
def post(self, *args): json_data = json.dumps(request.json) try: result = PostSchema().loads(json_data) res = json.loads(PostSchema().dumps(result)) Post.objects.create(**res).save().to_json() author = Author.objects.get(id=result['author']) author.num_of_publications += 1 author.save() except ValidationError as error: res = error.messages return res
def get(self, post_id=None): if post_id: try: post = Post.objects.get(id=post_id) post.number_of_views += 1 post.save() return PostSchema().dump(post) except DoesNotExist as error: data = "За введеним ID наразі немає записів (або отриманий запис має посилання на " \ "інший неіснуючий): " + str(error) return data except Val_error as error: data = "Введений ID у невірному форматі:" + str(error) return jsonify(data) else: try: posts = Post.objects return PostSchema().dump(posts, many=True) except DoesNotExist as error: data = "Один з отриманих записів має посилання на інший неіснуючий: " + str(error) return data
def get(self, tag_id=None): if tag_id: try: tag = Tag.objects.get(id=tag_id) posts = Post.objects.filter(tag__contains=tag) tag = TagSchema().dump(tag) posts = PostSchema().dump(posts, many=True) data = {'tag': tag, 'posts': posts} except DoesNotExist as error: data = "За введеним ID наразі немає записів (або отриманий запис має посилання на " \ "інший неіснуючий): " + str(error) except Val_error as error: data = "Введений ID у невірному форматі або неіснуючий: " + str(error) return jsonify(data) else: tags = Tag.objects return TagSchema().dump(tags, many=True)
def get(self, author_id=None): if author_id: try: author = Author.objects.get(id=author_id) author_posts = Post.objects.filter(author=author_id) author = AuthorSchema().dump(author) author_posts = PostSchema(exclude=['author']). \ dump(author_posts, many=True) data = {'author': author, 'posts': author_posts} return data except DoesNotExist as error: data = "За введеним ID наразі немає записів (або отриманий запис має посилання на " \ "інший неіснуючий): " + str(error) return jsonify(data) except Val_error as error: data = "Введений ID у невірному форматі:" + str(error) return jsonify(data) else: authors = Author.objects return AuthorSchema().dump(authors, many=True)
def delete(self, post_id=None): if not post_id: return "Відсутній id в url" try: post_to_delete = Post.objects.get(id=post_id) post_to_delete = PostSchema().dump(post_to_delete) author_str = post_to_delete['author'] author_list = author_str.split() author = Author.objects.filter(name=author_list[0], surname=author_list[1])[0] author = Author.objects.get(id=author.id) author.num_of_publications -= 1 author.save() tag = Post(id=post_id) tag.delete() return post_to_delete except DoesNotExist as error: data = "За введеним ID наразі немає записів: " + str(error) return data except Val_error as error: data = "Введений ID у невірному форматі: " + str(error) return data
def get(self): try: return jsonResponse({"posts": PostSchema(many=True).dump(Post.query.all())}, 200) except Exception as e: return jsonResponse({"error": str(e)}, 400)
return new_user @app.route('/api/v1/users', methods=['GET']) @login_required @marshal_with(UserSchema(many=True)) def get_users(): try: users: list = User.query.all() except Exception as e: return {'message': str(e)}, 400 return users @app.route('/api/v1/posts', methods=['GET']) @marshal_with(PostSchema(many=True)) def get_posts(): try: posts: list = Post.get_posts() except Exception as e: logger.warning(f'post: - get posts action failed with error: {e}') return {'message': str(e)}, 400 return posts @app.route('/api/v1/posts', methods=['POST']) @login_required @use_kwargs(PostSchema) @marshal_with(PostSchema) def add_post(**kwargs): try: