From 40949d245041ec30c737952e7c468fc1a1f0d279 Mon Sep 17 00:00:00 2001 From: Paymir121 Date: Mon, 13 Nov 2023 22:49:01 +0300 Subject: [PATCH 1/2] fix --- README.md | 102 +++++++++++++++++----------------- docker-compose.production.yml | 6 -- docker-compose.yml | 9 +-- gateway/nginx.conf | 3 +- 4 files changed, 57 insertions(+), 63 deletions(-) diff --git a/README.md b/README.md index 1660535..9b51402 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,108 +45,105 @@ Клонируете репозиторий: ```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_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 -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/ ``` ## Запуск докер контейнеров на удаленной машине: ### Выполнить обновление 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 + 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 ``` ### Выполнить миграции: ``` -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_templates ``` ### Настройки nginx: ``` -sudo nano /etc/nginx/sites-enabled/default + sudo nano /etc/nginx/sites-enabled/default ``` ## Примеры запросов и ответов к API @@ -139,7 +151,7 @@ sudo nano /etc/nginx/sites-enabled/default ### Регистрация #### Endpoint ``` -POST api/v1/users/ + POST api/v1/users/ ``` #### Пример запроса ``` @@ -159,7 +171,7 @@ POST api/v1/users/ ### Аутентификация #### Endpoint ``` -POST api/v1/auth/token/login/ + POST api/v1/auth/token/login/ ``` #### Пример запроса @@ -180,7 +192,7 @@ POST api/v1/auth/token/login/ ### Узнать свои данные #### Endpoint. ``` -GET api/v1/users/me/ + GET api/v1/users/me/ ``` #### Пример ответа @@ -194,7 +206,7 @@ GET api/v1/users/me/ ### Просмотр списка пользователей #### Endpoint ``` -GET api/v1/users/ + GET api/v1/users/ ``` #### Пример ответа. @@ -215,17 +227,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/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..869155a 100644 --- a/gateway/nginx.conf +++ b/gateway/nginx.conf @@ -19,4 +19,5 @@ server { alias /staticfiles/; try_files $uri $uri/ /index.html; } -} \ No newline at end of file +} + \ No newline at end of file From 6a958e385b430998019e6b0b7204a92b3fac480a Mon Sep 17 00:00:00 2001 From: Paymir121 Date: Mon, 13 Nov 2023 23:03:44 +0300 Subject: [PATCH 2/2] fix --- README.md | 13 ++++++++++--- backend/documents/management/commands/render.py | 1 + gateway/nginx.conf | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9b51402..6780ae5 100644 --- a/README.md +++ b/README.md @@ -110,8 +110,8 @@ ### Выполнить Собрать статику 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/ ``` ## Запуск докер контейнеров на удаленной машине: @@ -128,7 +128,7 @@ ### Выполнить миграции: ``` - 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 ``` ### Выполнить миграции: @@ -136,8 +136,15 @@ 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_field_types sudo docker compose -f docker-compose.production.yml exec backend python manage.py init_templates ``` 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/gateway/nginx.conf b/gateway/nginx.conf index 869155a..f21298b 100644 --- a/gateway/nginx.conf +++ b/gateway/nginx.conf @@ -16,6 +16,7 @@ server { } location / { + proxy_set_header Host $http_host; alias /staticfiles/; try_files $uri $uri/ /index.html; }