Проект разработан в мастерской Яндекс.Практикума. Цель проекта поднять навыки работы с DRF.
Проект, представляет собой шаблонизатор документов - это инструмент, который позволяет автоматизировать процесс создания документов на основе заданных шаблонов. Этот тип приложения может быть полезен во многих областях, включая бизнес, юриспруденцию, образование и другие.
В основе логики шаблонизатора лежит создание готовых word документов на основе шаблона. Шаблон создается по определенным правилам и хранится на сервере в виде docx файлов. В шаблонах предусмотрены возможности дополнительных обработок вводимых пользователем данных (склонения по падежам, доп форматирование и др), более подробно об этом можно глянуть в инструкции(ссылка). На данном этабе шаблон и его поля создаются администратором. Система регистрации и авторизации построена на основе djoser, с некоторыми модификациями
Невторизированный пользователь имеет возможность:
- просмотреть список всех доступных шаблонов базы /api/templates/
- скачать шаблон документа /api/templates/{id}/download_draft/
- сформировать превью документа на основе шаблона и предоставляемых данных полей и скачать его (без сохранения на сервере) /api/templates/{id}/download_preview/
Авторизованный пользователь имеет возможность:
- формировать документы на основании выбранного шаблона и предоставленных данных и сохранять документы на сервере
- скачивать сохраненные документы в формате docx /api/documents/{id}/download_dpcument/
- добавлять шаблоны или документы в избранное
- доступ к документам и данным отдельных документов имеет только администратор или автор документа
Администратор имеет возможность:
- загрузить информацию о новом шаблоне (наименование, описание полей) POST /api/templates/
- обновить docx файл шаблона PUT(PATCH) /api/templates/{id}/upload_template/
- Python - 3.9
- Django - 3.2
- DRF - 3.12.4
- PostgreSQL - 13.10
- Docker - 4.19
Просите разрешение у владельца репозитория( можно со слезами на глазах) Клонируете репозиторий:
git clone git@github.com:document-template-engine/backend.git
python -m venv venv
source venv/bin/activate
source venv/scripts/activate
cd backend
python -m pip install --upgrade pip
pip install -r requirements.txt
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
python manage.py createsuperuser
python manage.py init_field_types
python manage.py init_templates
docker compose up --build
docker compose exec backend python manage.py migrate
docker compose exec backend python manage.py createsuperuser
sudo docker compose exec backend python manage.py collectstatic
sudo docker compose exec backend cp -r /app/collected_static/. /app/static/
sudo apt update
sudo docker compose -f docker-compose.production.yml up --build
sudo docker compose -f docker-compose.production.yml exec backend python manage.py migrate
docker compose -f docker-compose.production.yml exec backend python manage.py createsuperuser
sudo docker compose -f docker-compose.production.yml exec backend python manage.py collectstatic
sudo docker compose -f docker-compose.production.yml exec backend cp -r /app/collected_static/. /app/static/
sudo docker compose -f docker-compose.production.yml exec backend python manage.py init_field_types
sudo docker compose -f docker-compose.production.yml exec backend python manage.py init_templates
sudo nano /etc/nginx/sites-enabled/default
POST api/v1/users/
{
"email": "user@mail.ru",
"password": "testuser123"
}
{
"id": 1,
"email": "user@mail.ru"
}
POST api/v1/auth/token/login/
{
"email": "user@mail.ru",
"password": "testuser123"
}
{
"auth_token": "7d577706781e1cf230b79813688a85193682b1ff"
}
GET api/v1/users/me/
{
"id": 1,
"email": "user@mail.ru"
}
GET api/v1/users/
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"email": "user@mail.ru"
},
{
"id": 2,
"email": "user_2@mail.ru"
}
]
}