diff --git a/README.md b/README.md index c391d6c..3e9c696 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,22 @@ многих областях, включая бизнес, юриспруденцию, образование и другие. + +## Основная логика +В основе логики шаблонизатора лежит создание готовых word документов на основе шаблона. Шаблон создается по определенным правилам и хранится на сервере в виде docx файлов. В шаблонах предусмотрены возможности дополнительных обработок вводимых пользователем данных (склонения по падежам, доп форматирование и др), более подробно об этом можно глянуть в инструкции([ссылка](https://github.com/document-template-engine/demo-repository/files/13055545/_._._.docx)). На данном этабе шаблон и его поля создаются администратором. Система регистрации и авторизации построена на основе djoser, с некоторыми модификациями + +Невторизированный пользователь имеет возможность: + - просмотреть список всех доступных шаблонов базы /api/templates/ + - скачать шаблон документа /api/templates/{id}/download_draft/ + - сформировать превью документа на основе шаблона и предоставляемых данных полей и скачать его (без сохранения на сервере) /api/templates/{id}/download_preview/ +Авторизованный пользователь имеет возможность: + - формировать документы на основании выбранного шаблона и предоставленных данных и сохранять документы на сервере + - скачивать сохраненные документы в формате docx /api/documents/{id}/download_dpcument/ + - добавлять шаблоны или документы в избранное + - доступ к документам и данным отдельных документов имеет только администратор или автор документа + + + ### Технологии - **Python - 3.9** - **Django - 3.2** @@ -17,7 +33,6 @@ ### Авторы - [Nikki Nikonor](https://github.com/Paymir121) -- [Дубинин Николай](https://github.com/dubininnik) - [Тимченко Александр](https://github.com/ASTimch) - [Скуридин Андрей](https://github.com/andrzej-skuridin) - [Николай Петров](https://github.com/NikolayPetrow23) @@ -30,109 +45,113 @@ Клонируете репозиторий: ```bash -git clone git@github.com:document-template-engine/backend.git + git clone git@github.com:document-template-engine/backend.git ``` -### Cоздать и активировать виртуальное окружение: +### Cоздать виртуальное окружение: +``` + python -m venv venv +``` +# активировать виртуальное окружение, Если у вас Linux/macOS ``` -python -m venv venv - -# Если у вас Linux/macOS - source venv/bin/activate - -# Если у вас windows - +``` +# Активировать виртуальное окружение, Если у вас windows +``` source venv/scripts/activate - ``` + ### Установить зависимости из файла requirements.txt: ``` -cd backend -python -m pip install --upgrade pip -pip install -r requirements.txt + cd backend + python -m pip install --upgrade pip + pip install -r requirements.txt ``` ### Выполнить миграции: ``` -cd backend -python manage.py makemigrations -python manage.py migrate + python manage.py makemigrations + python manage.py migrate ``` ### Запустить проект: ``` -cd backend -python manage.py runserver + python manage.py runserver ``` ### Создать суперпользователя: ``` -cd backend -python manage.py createsuperuser + python manage.py createsuperuser ``` ### Добавить темлейтов в базу: ``` -cd backend -python manage.py init_field_types -python manage.py init_templates + python manage.py init_field_types + python manage.py init_templates + ``` ## Запуск докер контейнеров на локальной машине: ### Билдим проект и запускаем: ``` -docker compose up --build + docker compose up --build ``` ### Выполнить миграции: ``` -docker compose exec backend python manage.py migrate + docker compose exec backend python manage.py migrate ``` ### Выполнить создание суперпользователя: ``` -docker compose exec backend python manage.py createsuperuser + docker compose exec backend python manage.py createsuperuser ``` ### Выполнить Собрать статику Django: ``` -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 exec backend python manage.py collectstatic + sudo docker compose exec backend cp -r /app/collected_static/. /app/static/ ``` ## Запуск докер контейнеров на удаленной машине: ### Выполнить обновление apt: ``` -sudo apt update + sudo apt update ``` ### Билдим проект и запускаем: ``` -sudo docker compose -f docker-compose.production.yml up --build + sudo docker compose -f docker-compose.production.yml up --build ``` ### Выполнить миграции: ``` -docker compose -f docker-compose.production.yml exec backend python manage.py migrate + 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 + docker compose -f docker-compose.production.yml exec backend python manage.py createsuperuser +``` + +### Выполнить Собрать статику Django: +``` + 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_templates + 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 ``` ### Настройки nginx: ``` -sudo nano /etc/nginx/sites-enabled/default + sudo nano /etc/nginx/sites-enabled/default ``` ## Примеры запросов и ответов к API @@ -140,7 +159,7 @@ sudo nano /etc/nginx/sites-enabled/default ### Регистрация #### Endpoint ``` -POST api/v1/users/ + POST api/v1/users/ ``` #### Пример запроса ``` @@ -160,7 +179,7 @@ POST api/v1/users/ ### Аутентификация #### Endpoint ``` -POST api/v1/auth/token/login/ + POST api/v1/auth/token/login/ ``` #### Пример запроса @@ -181,7 +200,7 @@ POST api/v1/auth/token/login/ ### Узнать свои данные #### Endpoint. ``` -GET api/v1/users/me/ + GET api/v1/users/me/ ``` #### Пример ответа @@ -195,7 +214,7 @@ GET api/v1/users/me/ ### Просмотр списка пользователей #### Endpoint ``` -GET api/v1/users/ + GET api/v1/users/ ``` #### Пример ответа. @@ -216,17 +235,3 @@ GET api/v1/users/ ] } ``` - -## Основная логика -В основе логики шаблонизатора лежит создание готовых word документов на основе шаблона. Шаблон создается по определенным правилам и хранится на сервере в виде docx файлов. В шаблонах предусмотрены возможности дополнительных обработок вводимых пользователем данных (склонения по падежам, доп форматирование и др), более подробно об этом можно глянуть в инструкции([ссылка](https://github.com/document-template-engine/demo-repository/files/13055545/_._._.docx)). На данном этабе шаблон и его поля создаются администратором. Система регистрации и авторизации построена на основе djoser, с некоторыми модификациями - -Невторизированный пользователь имеет возможность: - - просмотреть список всех доступных шаблонов базы /api/templates/ - - скачать шаблон документа /api/templates/{id}/download_draft/ - - сформировать превью документа на основе шаблона и предоставляемых данных полей и скачать его (без сохранения на сервере) /api/templates/{id}/download_preview/ -Авторизованный пользователь имеет возможность: - - формировать документы на основании выбранного шаблона и предоставленных данных и сохранять документы на сервере - - скачивать сохраненные документы в формате docx /api/documents/{id}/download_dpcument/ - - добавлять шаблоны или документы в избранное - - доступ к документам и данным отдельных документов имеет только администратор или автор документа - diff --git a/backend/documents/management/commands/render.py b/backend/documents/management/commands/render.py index e69de29..8b13789 100644 --- a/backend/documents/management/commands/render.py +++ b/backend/documents/management/commands/render.py @@ -0,0 +1 @@ + diff --git a/docker-compose.production.yml b/docker-compose.production.yml index e5a5d50..eb6f5ed 100644 --- a/docker-compose.production.yml +++ b/docker-compose.production.yml @@ -16,7 +16,6 @@ services: backend: image: documents23/document-template-engine_backend:latest - command: ["commands/app.sh"] env_file: .env volumes: - static:/app/static/ @@ -39,8 +38,3 @@ services: volumes: - static:/staticfiles/ - media:/app/media/ - - - - - diff --git a/docker-compose.yml b/docker-compose.yml index 45dda0d..65a682d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,6 @@ services: backend: build: ./backend/ - command: ["commands/app.sh"] env_file: .env volumes: - static:/app/static/ @@ -25,14 +24,16 @@ services: frontend: image: documents23/document-template-engine_frontend:latest + env_file: .env + command: cp -r /app/build/. /static/ volumes: - - ./frontend/:/app/result_build/ + - static:/static gateway: - build: ./nginx/ + build: ./gateway/ env_file: .env ports: - 9000:80 volumes: - static:/staticfiles/ - - media:/app/media/ + - media:/app/media/ \ No newline at end of file diff --git a/gateway/nginx.conf b/gateway/nginx.conf index f823e86..f21298b 100644 --- a/gateway/nginx.conf +++ b/gateway/nginx.conf @@ -16,7 +16,9 @@ server { } location / { + proxy_set_header Host $http_host; alias /staticfiles/; try_files $uri $uri/ /index.html; } -} \ No newline at end of file +} + \ No newline at end of file