Проект по предмету "Методология программной инженерии", Университет ИТМО, 2-3 семестр магистратуры, 2019 год.
Преподавательский состав:
- Клименков Сергей Викторович
- Цопа Евгений Алексеевич
- Исаев Илья Владимирович
Бригада 19:
- Слободкин Артем Юрьевич
- Корзухин Сергей Владиславович
- Осадчая Алиса Олеговна
В мире, описанном в серии книг "Трилогия Бартимеуса" писателя Джонатана Страуда, отсутствует
удобный способ коммуникации между волшебником и людьми, которые хотели бы купить у него магическую
услугу. Клиенты вынуждены лично обращаться за помощью к волшебнику, что в свою очередь ограничивает
количество заявок, которые может обработать волшебник.
Проект представляет новый подход к организации выполнения магических услуг. Данная система будет
решать административные задачи по обработке заявок, их хранению и обработке, а также повысит качество
обслуживания клиентов волшебника, что позволит повысить прибыль, а у клиентов появится удобный способ
оставлять заявки. Система будет хранить файлы окружения (информация о заклинаниях, благовониях и
пентаклях), и обеспечивать интерфейс для демонов и администраторов.
Проект позволит открыть новое направление бизнеса для волшебников, сделать сферу оказания магических
услуг более понятной и доступной. На рынке появятся новые игроки - агрегаторы, которые будут
способствовать развитию данного направления бизнеса.
Dependencies:
- docker
- docker-compose
To run project execute following commands:
cd <project-dir>/docker
# build images and run in detached mode
docker-compose up --build -d
# run django migrations and (optional step) populate database with initial data
docker-compose exec web bash -c "./manage.py migrate && ./manage.py populate_db"
Now you can access these endpoints:
- 1. Логин (вход в систему)
- 2. Регистрация нового пользователя
- 3. Создание нового желания
- 4. Просмотр желаний пользователем
- 5. Регистрация нового "gifted" пользователя
- Добавлены модели
Wizard
,Student
,Spirit
. - В админской панели можно создавать и редактировать данные модели.
- Добавлены модели
- 6. Просмотр списка желаний в очереди
- Customer:
- wishes created by him;
- wishes created by him and closed;
- Wizard:
- wishes owned by him;
- wishes in active status and without owner;
- Student: wishes assigned to him;
- Spirit: wishes assigned to him;
- Customer:
- 7. Выполнение желания
- Описать state машину - как могут изменять состояние желания разные типы пользователей на всём его жизненном цикле.
- Реализовать смену состояний.
- 8. Просмотр заказчиком желания
- 9. Отмена желания
- 10. Оплата желания
- 11. Деавторизация пользователя (выход из системы)
- 12. Закрытие желания
- 13. Обработка желания
Start database and install requirements for python >= 3.6:
docker-compose -f docker/docker-compose.yml up --build -d db
python3 -m pip install -r requirements.txt -r requirements-tests.txt
Run unit tests with coverage report:
coverage run manage.py test --exclude-tag=selenium && coverage report
Run functional tests with selenium (firefox
and geckodriver
in $PATH
are required):
python3 manage.py test --tag=selenium
Run load tests on populated database (go to http://127.0.0.1:8089/ after locust
launch):
docker-compose -f docker/docker-compose.yml run --rm web bash -c "./manage.py migrate && ./manage.py populate_db"
python3 manage.py runserver 8000
locust -f wizuber/tests/load_testing.py --host="http://127.0.0.1:8000"
Generate ssh keys and copy to server to allow access from CI to deployment server:
mkdir "${HOME}/mose-deploy/"
ssh-keygen -t rsa -b 4096 -C "key for deployment" -f "${HOME}/mose-deploy/id_rsa"
ssh-copy-id -i "${HOME}/mose-deploy/id_rsa.pub" user@target
Now you can use gitlab interface to deploy code or run deploy with local gitlab-runner
:
gitlab-runner exec docker deploy-to-helios \
--env MOSE_DEPLOY_SSH_PRIVATE_KEY="$(cat $HOME/mose-deploy/id_rsa)" \
--env MOSE_DEPLOY_HELIOS_PORT="..." \
--env MOSE_DEPLOY_HELIOS_IP="..."
To start server run commands below on helios
(university server under 32-bit Solaris 10
aka SunOS 5.10
):
source "source-me.sh"
python mose/manage.py migrate
python mose/manage.py populate_db
python mose/manage.py runserver 55671
Create ssh-tunnel on local machine and then go to http://localhost:8001/wizuber/:
ssh -L 8001:localhost:55671 helios
- How to add permission to user on his creation.
- Right way to query for Permission objects.
- How to create groups and assign permission during project setup.
- How to create custom permissions without binding to specific model.
- Using Django auth UserAdmin for a custom user model.
- Run Firefox Headless Browser tests on GitLab CI
- How to Install PostgreSQL 10 Using Source Code in Linux
- Error while loading shared libraries: libpq.so.5
- Psycopg runtime requirements
Model
is name of a model as singular, e.g. Wish
or Wizard
.
Permission Name | Action | View Name | Template Name | Url Name |
---|---|---|---|---|
List | ListModel | model/list.html | list-model | |
Add | Create | CreateModel | model/create.html | create-model |
View | Detail | DetailModel | model/detail.html | detail-model |
Change | Update | UpdateModel | model/update.html | update-model |
Delete | Delete | DeleteModel | model/delete.html | delete-model |