Skip to content

Instantly share code, notes, and snippets.

@Deniallugo
Last active October 10, 2019 13:15
Show Gist options
  • Save Deniallugo/3fa25c6dce0fae350b4b6a66ce945916 to your computer and use it in GitHub Desktop.
Save Deniallugo/3fa25c6dce0fae350b4b6a66ce945916 to your computer and use it in GitHub Desktop.

Тестовое задание для Python-разработчика

Задание:

Даны 2 json файла: post.json, в котором находится список постов.

{
    "posts": 
    [ 
        {
            "id": 1, 
            "title": "post_1",
            "date": "2019-01-01T20:56:35", 
            "body": "The post",
            "deleted": false
        }
    ]
}

comments.json, в котором находятся комментарии к постам, сопоставление по полю "post_id".

{
    "comments": 
    [
        {
            "id": 1, 
            "post_id": 1,
            "title": "comment_1",
            "date": "2019-01-02T21:58:25", 
            "comment": "Comment"
        } 
    ]
} 

Необходимо разработать бекенд, реализующий следующее API: GET "/" - возвращает список постов следующего формата.

{
    "posts": 
    [ 
        {
            "id": 1, 
            "title": "post_1",
            "date": "2019-01-01T20:56:35", 
            "body": "The post",
            "comments_count": 1
        }
    ], 
    "posts_count": 1
}
  • все записи должны быть отсортированы по дате создания (поле "date" в формате ISO 8601).
  • возвращать необходимо не удаленные записи (поле "deleted").
  • так же не нужно возвращать записи, время которых еще не наступило.
  • необходимо возвращать количество комментариев к каждому посту (поле "comments_count").

GET "/post/{id}" - возвращает пост по его id.

{
    "id": 1, 
    "title": "post_1",
    "date": "2019-01-01T20:56:35", 
    "body": "The post",
    "comments": 
    [ 
        {
            "id": 1, 
            "post_id": 1,
            "title": "comment_1",
            "date": "2019-01-02T21:58:25", 
            "comment": "Comment", 
        }
    ], 
    "comments_count": 1
}
  • все комментарии должны быть отсортированы по дате создания (поле "date" в формате ISO 8601).
  • необходимо вернуть количество комментариев к текущей посту (поле "comments_count").
  • в случае, если поста с таким id нет, необходимо вернуть код ошибки - 404.
  • в случае, если запись удалена (поле "deleted"), необходимо вернуть код ошибки - 404.
  • в случае, если время создания записи еще не наступило, необходимо вернуть код ошибки - 404.

Решение

  • Решение необходимо предоставить в виде git репозитория
  • Язык реализации Python 3.7
  • Допустимые сторонние библиотеки для кода приложения: aiohttp
  • Для тестов можно использовать любые средства, предпочтителен pytest
  • Использовать средства ведения проекта, так как будто это реальный проект
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment