test_aideco

Тестовое задание:

Сделать простой веб-сайт для отображения табло рейсов в аэропорту

  1. У рейса есть номер, город вылета/прилета, тип самолета, время, фактическое время, статус (вылетел, приземлился, идет посадка, задержан до и т.п.).
  2. Возможность получать, добавлять, редактировать, удалять рейсы.
  3. Возможность сделать выборку по городу, статусу.
  4. Должно быть табло прилета, вылета и интерфейс администратора для управления.
  5. Должен быть счетчик рейсов.
  6. Должна быть подробная документация о том, как развернуть проект.
  7. Проект должен быть готов к тому, чтобы вывесить его на внешнем домене.
  8. Оформить все в git-репозитории (включая документацию по API)

Будет оцениваться именно качество готового решения.

Деплой (автоматизированный режим)

Производится запуском скрипта deploy.sh на стороне сервера.

В процессе установки потребуется указать суперпользователя для БД.

БД

По умолчанию проект сконфигурирован на использование sqlite3. Для использования другой БД (например, MySQL) необходимо дополнительно:

  • Установить модуль mysqlclient==1.3.6
  • Заменить в файле settings.py DATABASES на:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '',
            'USER': '',
            'PASSWORD': '',
            'HOST': '',
            'PORT': '',
        }
    }

и, заполнив конфигурационные параметры, приступить к миграции. После миграции необходимо создать суперпользователя для работы с панелью администратора.

Возможно заполнить БД тестовыми данными через главное меню.

Панель администратора

Используется встроенная админ панель Django. Доступ по адресу http://host:port/admin/

(Для полноценного проекта целесообразна разработка собственной панели администратора)

API

Доступно выполнение запроса к БД извне посредствам выполнения GET запроса по адресу http://host:port/api/v1/flights/ с параметрами фильтрации:

(Если фильтры не пустые, то производится фильтрация по вхождению подстроки)

  • arr_or_dep - 'arr', 'dep' (прибытия или отправления соответственно)
  • status - статус
  • city - направление
  • flight - рейс

Нужно установить Content-Type в значение application/json