Skip to content

semernyakov/justworktest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

justworktest

Проект являет собой тестовое задание, представлен в качестве примера.

Базовая архитектура

  • Docker 18.09
  • Docker-compose 1.17
  • Pipenv 18.11
  • Python 3.7
  • Django 2.2
  • Celery 4.3
  • Redis 3.2 + Redis server 4.0
  • PostgreSQL (latest) + psycopg2-binary 2.7
  • Django Rest Framework 3.9
  • Swagger 2.2
  • и т.д. ...

Все зависимости прописаны в фаилах Pipfile и Pipfile.lock

git clone https://github.com/beatum/justworktest.git && cd $_

Cборка и запуск

Выполняем сборку приложения

$ docker-compose up

Выполняем миграции

$ docker-compose run cli migrate

Загружаем фикстуры

docker-compose run cli loaddata initial_data.json

Открываем браузер по адресу http://0.0.0.0:8000/admin/

Логин: admin

Пароль: admin

Запуск тестов

docker-compose run cli test basetype

API v1

Метод GET - получить информацию о всех страницах (для пагинации задаються параметры limit и offset)

http://localhost:8000/api/v1/pages/

Пример запрос c параметрами limit и offset

Request url: http://0.0.0.0:8000/api/v1/pages/?limit=1&offset=2

Request command: curl -X GET "http://0.0.0.0:8000/api/v1/pages/?limit=1&offset=2" -H "accept: application/json" -H "X-CSRFToken: JWmaO9NKcgAlzE6Dbd2KiOjBMaXhhVzTk8x67GrcPTHfc0cO7vUuVeu4oQIScjd4"

Пример ответа

{
  "count": 3,
  "next": null,
  "previous": "http://0.0.0.0:8000/api/v1/pages/?limit=1&offset=1",
  "results": [
    {
      "url": "http://0.0.0.0:8000/api/v1/page/3/"
    }
  ]
}

Метод GET - получить детальную информацию о странице с {id}

http://localhost:8000/api/v1/page/{id}/

Пример запроса

Request url: http://127.0.0.1:8000/api/v1/page/1/
Request command: curl -X GET "http://0.0.0.0:8000/api/v1/page/1/" -H "accept: application/json" -H "X-CSRFToken: JWmaO9NKcgAlzE6Dbd2KiOjBMaXhhVzTk8x67GrcPTHfc0cO7vUuVeu4oQIScjd4"

Пример ответа:

{
  "id": 1,
  "audio": [
    {
      "id": 1,
      "title": "Аудиозапись №1",
      "order": 10,
      "counter": 2,
      "bitrate": 16,
      "page": 1
    }
  ],
  "video": [
    {
      "id": 1,
      "title": "Тестовое видео №1",
      "order": 10,
      "counter": 2,
      "video": "/uploads/media/video/2019/04/03/video.mkv",
      "subtitles": "/uploads/media/video/2019/04/03/subtitles.txt",
      "page": 1
    }
  ],
  "text": [
    {
      "id": 1,
      "title": "Текстовая запись №1",
      "order": 10,
      "counter": 2,
      "text": "Контент",
      "page": 1
    }
  ],
  "title": "Тестовая страница №1",
  "order": 10,
  "counter": 0,
  "slug": "testovaya-stranica-1"
}

Примечания

  • Сортировка всех сущностей осуществляется по полю 'order'
  • После просмотра каждой сущности поле 'counter' увеличивается на 1 ед. в асинхронном и атамарном порядке, посредством Celery
  • Поиск в админке работает по всем поляем, в т.ч. по всем основным полям в связанных моделях
  • Для отслеживания результата работы воркеров см. ./justwork/worker.log

Полезные команды

Для работы с ./manage.py в докере используйте команду:

docker-compose run cli <command>

Для создания новых фикстур

docker-compose run cli dumpdata --format=json  > ./justwork/basetype/fixtures/initial_data.json

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published