Учебный проект шаблонизатор документов.
Проект, представляет собой инструмент, который позволяет автоматизировать процесс генерации документов в формате docx или pdf на основе предварительно подготовленных шаблонов.
Пользователь может выбрать шаблон (из имеющихся в базе), выполнить заполнение полей, после чего на сервере осуществляется генерация готового документа в формате docx или pdf и сгенерированного документа пользователю. В шаблонах имеются возможности дополнительных обработок вводимых пользователем данных (склонение по падежам, приведение в нужную форму числительных и др.). Для авторизованных пользователей предусмотрена возможность добавления шаблонов в избранное и хранения истории подготовленных документов и черновиков (не полностью заполненных документов).
Неавторизованный пользователь имеет возможность:
- получить список всех доступных шаблонов базы /api/v1/template/
- скачать черновик документа в формате docx /api/v1/template/{id}/download_draft/
- скачать черновик документа в формате pdf /api/v1/template/{id}/download_draft/?pdf=true
- сгенерировать и скачать превью документа в формате docx /api/v1/template/{id}/download_preview/
- сгенерировать и скачать превью документа в формате pdf /api/v1/template/{id}/download_preview/?pdf=true
Авторизованный пользователь имеет возможность:
- добавить/удалить шаблон в/из избранное /api/v1/template/favorite
- формировать/редактировать документы на основании выбранного шаблона и пользовательски данных и сохранять документы на сервере /api/v1/document/{id}/
- скачивать сохраненные документы в формате docx /api/document/{id}/download/
- доступ к документам и данным отдельных документов имеет только автор документа
Администратор имеет возможность (в дополнение к авторизованному пользователю):
- загрузить информацию о новом шаблоне (наименование, описание полей), удалить шаблон /api/v1/template/
- обновить docx файл шаблона /api/v1/template/{id}/upload_template/
- сгенерировать миниатюру шаблона /api/v1/template/{id}/generate_thumbnail/
В дополнение к api разработаны эскизы html страниц для взаимодействия с api:
- просмотр шаблонов /view/template/
- просмотр документов /view/document/
- работа с шаблоном /view/template/{id}
- работа с документом /view/document/{id}
- Python - 3.10
- FastAPI
- SQLAlchemy - 2.0
- Pydantic - 2.5
- PostgreSQL - 13.10
- pytest
- Redis
- Celery
- jinja
- Docker
- nginx
Клонируйте репозиторий:
git clone git@github.com:ASTimch/documents-templates-fastapi.gitФайл .env-prod подготовить в соответствии с шаблоном .env-prod.example
docker compose up --build
localhost/api/v1/docs
localhost/api/v1/redoc
POST запрос по адресу /api/v1/auth/register
POST запрос по адресу /api/v1/template_field_type/list Пример тела запроса в файле /data/field_types.json
POST запрос по адресу /api/v1/template/ Пример тела запроса в файле /data/otpusk_tpl.json
PATCH запрос по адресу /api/v1/template/{id}/upload_template с содержимым файлом /data/otpusk_tpl.docx
localhost/view/
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
Файл .env подготовить в соответствии с шаблоном .env.example
alembic upgrade head
uvicorn app.main:app --reload
localhost:8000/api/v1/docs
localhost:8000/api/v1/redoc