From 910157e66d70838852d0da1cd1e65520b8db592b Mon Sep 17 00:00:00 2001 From: Eduard Izmalkov Date: Tue, 24 Oct 2023 23:28:58 +0300 Subject: [PATCH 01/80] feat(Document): generate pdf-version of document BREAKING CHANGE: --- backend/Dockerfile | 6 ++++++ backend/api/v1/views.py | 38 +++++++++++++++++++++++++++++++++++--- backend/commands/app.sh | 1 + nginx/nginx.conf | 1 + 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 2f45186..6e89c4c 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,5 +1,11 @@ FROM python:3.9 +RUN echo "deb http://deb.debian.org/debian bookworm main contrib" | tee /etc/apt/sources.list +RUN apt-get update +RUN apt-get install -y --no-install-recommends libreoffice-writer +RUN apt-get install -y libreoffice-java-common +RUN apt-get install -y ttf-mscorefonts-installer + WORKDIR /app COPY requirements.txt . diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 9db1a82..d84e38c 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -1,3 +1,8 @@ +from io import BytesIO +import subprocess +import tempfile +from pathlib import Path + from django.http import FileResponse from django.shortcuts import get_object_or_404 from django_filters.rest_framework import DjangoFilterBackend @@ -49,7 +54,7 @@ class CategoryViewSet(viewsets.ModelViewSet): permissions_classes = (AllowAny,) -def send_file(filestream, filename: str): +def send_file(filestream, filename: str, as_attachment: bool = True): """Функция подготовки открытого двоичного файла к отправке.""" response = FileResponse( @@ -205,8 +210,7 @@ def history_documents(self, request): url_path=r"download_document", ) def download_document(self, request, pk=None): - """Скачивание готового документа""" - + """Скачивание готового документа.""" document = get_object_or_404(Document, id=pk) context = dict() for docfield in FieldToDocument.objects.filter(document=document): @@ -222,6 +226,34 @@ def download_document(self, request, pk=None): response = send_file(buffer, f"{document.template.name}.docx") return response + @action( + detail=True, + permissions_classes=[IsAuthenticated], + url_path="download_pdf", + ) + def download_pdf(self, request, pk=None): + """Генерация и выдача на скачивание pdf-файла.""" + with tempfile.NamedTemporaryFile() as output: + outfile = Path(output.name).resolve() + outfile.write_bytes( + b''.join(self.download_document(request, pk).streaming_content) + ) + subprocess.run([ + "soffice", + "--headless", + "--invisible", + "--nologo", + "--convert-to", + "pdf", + "--outdir", + outfile.parent, + outfile.absolute(), + ]) + newfile = outfile.with_suffix(".pdf") + buffer = BytesIO(newfile.read_bytes()) + response = send_file(buffer, newfile.name) + return response + class DocumentFieldViewSet(viewsets.ModelViewSet): """Поле шаблона.""" diff --git a/backend/commands/app.sh b/backend/commands/app.sh index 2578818..b94a237 100644 --- a/backend/commands/app.sh +++ b/backend/commands/app.sh @@ -1,4 +1,5 @@ #!/bin/bash + python manage.py makemigrations python manage.py migrate diff --git a/nginx/nginx.conf b/nginx/nginx.conf index 93500d0..654ef5e 100644 --- a/nginx/nginx.conf +++ b/nginx/nginx.conf @@ -34,6 +34,7 @@ server { location /swagger/ { proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-Host $server_name; proxy_pass http://backend:9000/swagger/; } From 109d2c68e0a8d17f3171d282366442df22068abd Mon Sep 17 00:00:00 2001 From: Paymir121 Date: Sun, 12 Nov 2023 22:17:27 +0300 Subject: [PATCH 02/80] =?UTF-8?q?=D0=B7=D0=B0=D0=B3=D0=BB=D1=83=D1=88?= =?UTF-8?q?=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/api/v1/views.py | 26 +++++++++++++++++--------- backend/request/documents.http | 7 ++++--- backend/request/users.http | 8 ++++---- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 32aaee2..7cbdafb 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -152,7 +152,8 @@ class DocumentViewSet(viewsets.ModelViewSet): queryset = Document.objects.all() serializer_class = DocumentReadSerializerMinified http_method_names = ("get", "post", "patch", "delete") - permissions_classes = (IsAuthenticated,) + # permissions_classes = (IsAuthenticated,) + permissions_classes = (AllowAny,) filter_backends = ( filters.SearchFilter, filters.OrderingFilter, @@ -164,8 +165,12 @@ class DocumentViewSet(viewsets.ModelViewSet): def get_queryset(self): """Выдаем только список документов текущего пользователя.""" + #ЗАглушка if self.request.user.is_authenticated: return self.request.user.documents + else: + user = User.objects.get(id=1) + return Document.objects.get(owner=user) return Document.objects.none() def get_serializer_class(self): @@ -182,7 +187,8 @@ def perform_create(self, serializer): @action( detail=False, permission_classes=[ - IsAuthenticated, + # IsAuthenticated, + AllowAny, ], url_path=r"draft", ) @@ -206,7 +212,7 @@ def history_documents(self, request): """Возвращает список законченных документов/история""" user = self.request.user queryset = Document.objects.filter(completed=True, owner=user) - serializer = DocumentReadSerializer( + serializer = DocumentReadSerializerMinified( queryset, many=True, context={"request": request} ) return Response(serializer.data, status=status.HTTP_200_OK) @@ -257,17 +263,19 @@ class DocumentFieldViewSet(viewsets.ModelViewSet): serializer_class = DocumentFieldSerializer http_method_names = ("get",) - permissions_classes = (IsAuthenticated,) + # permissions_classes = (IsAuthenticated,) + permissions_classes = (AllowAny,) pagination_class = None def get_queryset(self): document_id = self.kwargs.get("document_id") document = get_object_or_404(Document, id=document_id) - if ( - not (self.request.user.is_authenticated) - or document.owner != self.request.user - ): - raise PermissionDenied() + #ЗАглушка + # if ( + # not (self.request.user.is_authenticated) + # or document.owner != self.request.user + # ): + # raise PermissionDenied() return document.document_fields.objects.all() diff --git a/backend/request/documents.http b/backend/request/documents.http index 32ec0d5..265bb6d 100644 --- a/backend/request/documents.http +++ b/backend/request/documents.http @@ -1,10 +1,11 @@ @TOKEN = Token bb4f5dbedaafd2730f35803e7087e797479d68f5 -@URL = https://documents-template.site/ +# @URL = https://documents-template.site/ +@URL = http://127.0.0.1:8000 ### GET {{URL}}/api/documents/32/ Content-Type: application/json -Authorization: {{TOKEN}} +# Authorization: {{TOKEN}} { } @@ -12,7 +13,7 @@ Authorization: {{TOKEN}} ### POST {{URL}}/api/documents/ Content-Type: application/json -Authorization: {{TOKEN}} +# Authorization: {{TOKEN}} { "description": "doc1", diff --git a/backend/request/users.http b/backend/request/users.http index d2f6eed..5e77a07 100644 --- a/backend/request/users.http +++ b/backend/request/users.http @@ -1,13 +1,13 @@ @TOKEN = Token b5b767cb36da725f900892f627a28dc1c0e40488 -@URL = https://documents-template.site -# @URL = http://127.0.0.1:8000 +# @URL = https://documents-template.site +@URL = http://127.0.0.1:8000 ### POST {{URL}}/api/users/ Content-Type: application/json { - "email": "nikox11882@mail.ru", + "email": "nikox1181182@mail.ru", "username": "nikox1122@mail.ru", "password": "456852Zx", "first_name": "kewk", @@ -19,7 +19,7 @@ POST {{URL}}/api/auth/token/login/ Content-Type: application/json { - "email": "nikox112@mail.ru", + "email": "nikox118182@mail.ru", "password": "456852Zx" } From ffa372d4160e119058402e43e39e75cc55272762 Mon Sep 17 00:00:00 2001 From: Paymir121 Date: Sun, 12 Nov 2023 22:24:07 +0300 Subject: [PATCH 03/80] =?UTF-8?q?=D0=B7=D0=B0=D0=B3=D0=BB=D1=83=D1=88?= =?UTF-8?q?=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/api/v1/views.py | 2 +- backend/request/documents.http | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 7cbdafb..4fe8a2b 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -170,7 +170,7 @@ def get_queryset(self): return self.request.user.documents else: user = User.objects.get(id=1) - return Document.objects.get(owner=user) + return Document.objects.filter(owner=user) return Document.objects.none() def get_serializer_class(self): diff --git a/backend/request/documents.http b/backend/request/documents.http index 265bb6d..a40b568 100644 --- a/backend/request/documents.http +++ b/backend/request/documents.http @@ -1,10 +1,9 @@ @TOKEN = Token bb4f5dbedaafd2730f35803e7087e797479d68f5 -# @URL = https://documents-template.site/ -@URL = http://127.0.0.1:8000 +@URL = https://documents-template.site/ +# @URL = http://127.0.0.1:8000 ### -GET {{URL}}/api/documents/32/ -Content-Type: application/json +GET {{URL}}/api/documents/1 # Authorization: {{TOKEN}} { From 34b653b0ddedc096372b63ed62c0f479db39c945 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B8=D0=BC=D1=87=D0=B5=D0=BD=D0=BA=D0=BE=20=D0=90?= =?UTF-8?q?=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= <122796143+ASTimch@users.noreply.github.com> Date: Mon, 13 Nov 2023 13:38:46 +0300 Subject: [PATCH 04/80] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлена команда init_field_types (инициализация типов полей в шаблонах) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 305aca0..1c24fa2 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,7 @@ python manage.py createsuperuser ### Добавить темлейтов в базу: ``` cd backend +python manage.py init_field_types python manage.py init_templates ``` From c7aadebce1314d2e92fa1f105480a29feb0d6748 Mon Sep 17 00:00:00 2001 From: Nikita Romanov Date: Mon, 13 Nov 2023 13:39:38 +0300 Subject: [PATCH 05/80] new serv --- .github/workflows/main.yml | 24 +++++++- docker-compose.production.yml | 26 +++++---- docker-compose.yml | 17 ++---- gateway/Dockerfile | 2 + gateway/nginx.conf | 52 +++++++++++++++++ ...21\203\320\272\321\206\320\270\321\217.md" | 57 +++++++++++++++++++ 6 files changed, 154 insertions(+), 24 deletions(-) create mode 100644 gateway/Dockerfile create mode 100644 gateway/nginx.conf create mode 100644 "\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217.md" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 69c0fc0..d95747b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -62,6 +62,27 @@ jobs: push: true tags: ${{ secrets.DOCKER_USERNAME }}/${{ secrets.PROJECT_NAME }}_backend:latest + + build_gateway_and_push_to_docker_hub: + name: Push gateway Docker image to DockerHub + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to Docker + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: Push to DockerHub + uses: docker/build-push-action@v4 + with: + context: ./gateway/ + push: true + tags: ${{ secrets.DOCKER_USERNAME }}/${{ secrets.PROJECT_NAME }}_gateway:latest + deploy: runs-on: ubuntu-latest needs: @@ -91,7 +112,8 @@ jobs: sudo docker compose -f docker-compose.production.yml down sudo docker compose -f docker-compose.production.yml up -d sudo docker system prune -af - + + send_message: runs-on: ubuntu-latest needs: deploy diff --git a/docker-compose.production.yml b/docker-compose.production.yml index 07b52ee..b6bdd9b 100644 --- a/docker-compose.production.yml +++ b/docker-compose.production.yml @@ -1,3 +1,4 @@ + version: '3.8' volumes: @@ -26,19 +27,20 @@ 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 - nginx: - image: nginx:1.19.3 + gateway: + image: documents23/document-template-engine_gateway:latest + env_file: .env ports: - - "8000:80" + - 8088:80 volumes: - - ./proxy-server/nginx.conf:/etc/nginx/conf.d/default.conf - - ./frontend/build:/usr/share/nginx/html/ - - ./docs/:/usr/share/nginx/html/api/docs/ - - static:/var/html/static/ - - media:/var/html/media/ - depends_on: - - backend - restart: always \ No newline at end of file + - static:/staticfiles/ + - media:/app/media/ + + + + + diff --git a/docker-compose.yml b/docker-compose.yml index ce0efa4..d6cbfcc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,16 +28,11 @@ services: volumes: - ./frontend/:/app/result_build/ - nginx: - image: nginx:1.19.3 + gateway: + build: ./nginx/ + env_file: .env ports: - - "8000:80" + - 8088:80 volumes: - - ./proxy-server/nginx.conf:/etc/nginx/conf.d/default.conf - - ./frontend/build:/usr/share/nginx/html/ - - ./docs/:/usr/share/nginx/html/api/docs/ - - static:/var/html/static/ - - media:/var/html/media/ - depends_on: - - backend - restart: always + - static:/staticfiles/ + - media:/app/media/ diff --git a/gateway/Dockerfile b/gateway/Dockerfile new file mode 100644 index 0000000..f0808a1 --- /dev/null +++ b/gateway/Dockerfile @@ -0,0 +1,2 @@ +FROM nginx:1.22.1 +COPY nginx.conf /etc/nginx/templates/default.conf.template diff --git a/gateway/nginx.conf b/gateway/nginx.conf new file mode 100644 index 0000000..8b078fc --- /dev/null +++ b/gateway/nginx.conf @@ -0,0 +1,52 @@ +server { + listen 80; + + location /media/ { + proxy_set_header Host $http_host; + root /var/html/; + } + + location /static/admin/ { + proxy_set_header Host $http_host; + root /var/html/; + } + + location /static/rest_framework/ { + proxy_set_header Host $http_host; + root /var/html/; + } + + location /static/drf-yasg/ { + proxy_set_header Host $http_host; + root /var/html/; + } + + location /admin/ { + proxy_set_header Host $http_host; + proxy_pass http://backend:9000/admin/; + } + + location /api/ { + proxy_set_header Host $http_host; + proxy_pass http://backend:9000/api/; + } + + location /swagger/ { + proxy_set_header X-Forwarded-Protocol $scheme; + proxy_set_header Host $http_host; + proxy_pass http://backend:9000/swagger/; + } + + location /redoc/ { + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-Protocol $scheme; + proxy_pass http://backend:9000/redoc/; + } + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + + } +} + diff --git "a/\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217.md" "b/\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217.md" new file mode 100644 index 0000000..db43139 --- /dev/null +++ "b/\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217.md" @@ -0,0 +1,57 @@ +# Запуск бека на локальной машине + +## Устанавливаем Python +Для работы бека нужен Python 3.9, для этого можно скачать с офф сайта или же через Microsoft Store(рекомендуется) + +## Создаем виртуальное окружение +Через Bash заходим в папку с Backend(Там где находиться requirements.txt и manage.py) и прописываем команду + +### Cоздать и активировать виртуальное окружение: +#### Создание виртуального окружения +``` + python3.9 -m venv venv +``` + +#### Активация виртаульного окружения +##### Если у вас Linux/macOS +``` + source venv/bin/activate +``` + +##### Если у вас windows +``` + source venv/scripts/activate + +``` + +### Установить зависимости из файла requirements.txt: +Скачиваем и устанавливаем все зависимости +``` + python -m pip install --upgrade pip + pip install -r requirements.txt +``` + +### Выполнить миграции: +``` + cd backend + python manage.py makemigrations + python manage.py migrate +``` + +### Запустить проект: +``` + cd backend + python manage.py runserver +``` + +### Создать суперпользователя: +``` + cd backend + python manage.py createsuperuser +``` + +### Добавить темлейтов в базу: +``` + cd backend + python manage.py init_templates +``` \ No newline at end of file From 1b056f6b54e3f3bfae9d599c2265a90f983aa680 Mon Sep 17 00:00:00 2001 From: Nikita Romanov Date: Mon, 13 Nov 2023 14:37:02 +0300 Subject: [PATCH 06/80] new serv --- README.md | 2 +- docker-compose.production.yml | 2 +- docker-compose.yml | 2 +- gateway/nginx.conf | 54 ++++++++--------------------------- proxy-server/nginx.conf | 52 --------------------------------- 5 files changed, 15 insertions(+), 97 deletions(-) delete mode 100644 proxy-server/nginx.conf diff --git a/README.md b/README.md index 305aca0..1660535 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,7 @@ docker compose exec backend python manage.py createsuperuser ### Выполнить Собрать статику Django: ``` -docker compose exec backend python manage.py collectstatic +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/ ``` diff --git a/docker-compose.production.yml b/docker-compose.production.yml index b6bdd9b..e5a5d50 100644 --- a/docker-compose.production.yml +++ b/docker-compose.production.yml @@ -35,7 +35,7 @@ services: image: documents23/document-template-engine_gateway:latest env_file: .env ports: - - 8088:80 + - 9000:80 volumes: - static:/staticfiles/ - media:/app/media/ diff --git a/docker-compose.yml b/docker-compose.yml index d6cbfcc..45dda0d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,7 +32,7 @@ services: build: ./nginx/ env_file: .env ports: - - 8088:80 + - 9000:80 volumes: - static:/staticfiles/ - media:/app/media/ diff --git a/gateway/nginx.conf b/gateway/nginx.conf index 8b078fc..f823e86 100644 --- a/gateway/nginx.conf +++ b/gateway/nginx.conf @@ -1,52 +1,22 @@ server { listen 80; - - location /media/ { - proxy_set_header Host $http_host; - root /var/html/; - } - - location /static/admin/ { - proxy_set_header Host $http_host; - root /var/html/; - } - - location /static/rest_framework/ { - proxy_set_header Host $http_host; - root /var/html/; - } - - location /static/drf-yasg/ { - proxy_set_header Host $http_host; - root /var/html/; - } - - location /admin/ { - proxy_set_header Host $http_host; - proxy_pass http://backend:9000/admin/; - } + index index.html; location /api/ { - proxy_set_header Host $http_host; - proxy_pass http://backend:9000/api/; + proxy_set_header Host $http_host; + proxy_pass http://backend:9000/api/; } - - location /swagger/ { - proxy_set_header X-Forwarded-Protocol $scheme; - proxy_set_header Host $http_host; - proxy_pass http://backend:9000/swagger/; + location /admin/ { + proxy_set_header Host $http_host; + proxy_pass http://backend:9000/admin/; } - - location /redoc/ { - proxy_set_header Host $http_host; - proxy_set_header X-Forwarded-Protocol $scheme; - proxy_pass http://backend:9000/redoc/; + location /media/ { + proxy_set_header Host $http_host; + alias /app/media/; } location / { - root /usr/share/nginx/html; - index index.html index.htm; - + alias /staticfiles/; + try_files $uri $uri/ /index.html; } -} - +} \ No newline at end of file diff --git a/proxy-server/nginx.conf b/proxy-server/nginx.conf deleted file mode 100644 index 8b078fc..0000000 --- a/proxy-server/nginx.conf +++ /dev/null @@ -1,52 +0,0 @@ -server { - listen 80; - - location /media/ { - proxy_set_header Host $http_host; - root /var/html/; - } - - location /static/admin/ { - proxy_set_header Host $http_host; - root /var/html/; - } - - location /static/rest_framework/ { - proxy_set_header Host $http_host; - root /var/html/; - } - - location /static/drf-yasg/ { - proxy_set_header Host $http_host; - root /var/html/; - } - - location /admin/ { - proxy_set_header Host $http_host; - proxy_pass http://backend:9000/admin/; - } - - location /api/ { - proxy_set_header Host $http_host; - proxy_pass http://backend:9000/api/; - } - - location /swagger/ { - proxy_set_header X-Forwarded-Protocol $scheme; - proxy_set_header Host $http_host; - proxy_pass http://backend:9000/swagger/; - } - - location /redoc/ { - proxy_set_header Host $http_host; - proxy_set_header X-Forwarded-Protocol $scheme; - proxy_pass http://backend:9000/redoc/; - } - - location / { - root /usr/share/nginx/html; - index index.html index.htm; - - } -} - From b93e112e6d927bb827678c64c05dd83c8397c6d0 Mon Sep 17 00:00:00 2001 From: Paymir121 Date: Mon, 13 Nov 2023 22:35:04 +0300 Subject: [PATCH 07/80] fix --- backend/Dockerfile | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 33c9113..843c019 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,22 +1,9 @@ -FROM python:3.9-bullseye - -ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - libc6 \ - libgcc1 \ - libgssapi-krb5-2 \ - libicu67 \ - libssl1.1 \ - libstdc++6 \ - zlib1g +FROM python:3.9 WORKDIR /app COPY requirements.txt . - RUN pip install -r requirements.txt --no-cache-dir COPY . . - -RUN chmod a+x commands/app.sh +CMD ["gunicorn", "--bind", "0.0.0.0:9000", "backend.wsgi"] From 40949d245041ec30c737952e7c468fc1a1f0d279 Mon Sep 17 00:00:00 2001 From: Paymir121 Date: Mon, 13 Nov 2023 22:49:01 +0300 Subject: [PATCH 08/80] 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 09/80] 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; } From 8f10e8a95c21694b3e4b125e1c873e736455b4b5 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Tue, 14 Nov 2023 19:18:59 +0300 Subject: [PATCH 10/80] Update settings.py --- backend/backend/settings.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 3dbc708..71dd2db 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -117,8 +117,7 @@ STATIC_ROOT = BASE_DIR / "collected_static" STATICFILES_DIRS = ((BASE_DIR / "static/"),) - -INITIAL_DATA_DIR = BASE_DIR / "data" +INITIAL_DATA_DIR = BASE_DIR / "static/data/" MEDIA_URL = "/media/" MEDIA_ROOT = "/app/media" From d7106cd6d98a19b772b1a5fed4edc3691e6dbe83 Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Wed, 15 Nov 2023 02:03:17 +0300 Subject: [PATCH 11/80] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D1=8B=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=BE=D0=BB=D0=B5=D0=B9=20=D1=88=D0=B0=D0=B1?= =?UTF-8?q?=D0=BB=D0=BE=D0=BD=D0=B0=20post=20=D0=B8=20=D0=B7=D0=B0=D0=B3?= =?UTF-8?q?=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0?= =?UTF-8?q?=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/api/v1/permissions.py | 17 ++++ backend/api/v1/serializers.py | 142 +++++++++++++++++++++++++++++++- backend/api/v1/urls.py | 12 +++ backend/api/v1/utils.py | 14 ++++ backend/api/v1/views.py | 123 ++++++++++++++++++++------- backend/backend/settings.py | 2 +- backend/core/constants.py | 14 ++++ backend/core/template_render.py | 2 +- backend/documents/models.py | 42 ++++++++++ 9 files changed, 335 insertions(+), 33 deletions(-) diff --git a/backend/api/v1/permissions.py b/backend/api/v1/permissions.py index fe42e00..b1950d8 100644 --- a/backend/api/v1/permissions.py +++ b/backend/api/v1/permissions.py @@ -29,6 +29,23 @@ def has_object_permission(self, request, view, obj): return obj.owner == request.user or request.user.is_superuser +class IsAdminOrReadOnly(permissions.BasePermission): + """Доступ: Админ или только для чтения""" + + def has_permission(self, request, view): + """Видеть список могут все, добавлять только администратор.""" + + return request.method in permissions.SAFE_METHODS or ( + request.user.is_authenticated and request.user.is_superuser + ) + + def has_object_permission(self, request, view, obj): + return ( + request.method in permissions.SAFE_METHODS + or request.user.is_superuser + ) + + class IsOwner(permissions.BasePermission): """Доступ: только владелец.""" diff --git a/backend/api/v1/serializers.py b/backend/api/v1/serializers.py index 7d745e2..6e6796d 100644 --- a/backend/api/v1/serializers.py +++ b/backend/api/v1/serializers.py @@ -1,10 +1,12 @@ """Сериализаторы для API.""" -from django.core.files.base import ContentFile from django.contrib.auth import get_user_model +from django.core.files.base import ContentFile from django.db import transaction from djoser.serializers import UserSerializer -from rest_framework import serializers +from rest_framework import serializers, status +from rest_framework.response import Response +from .utils import get_non_unique_items from core.constants import Messages from documents.models import ( Category, @@ -14,6 +16,8 @@ FavTemplate, Template, TemplateField, + TemplateFieldGroup, + TemplateFieldType, ) User = get_user_model() @@ -57,6 +61,26 @@ class Meta: ) +class TemplateFieldWriteSerializer(serializers.ModelSerializer): + """Сериализатор поля шаблона для записи/обновления""" + + type = serializers.SlugRelatedField( + queryset=TemplateFieldType.objects.all(), slug_field="type" + ) + group = serializers.IntegerField(required=False) + + class Meta: + model = TemplateField + fields = ( + "tag", + "name", + "hint", + "group", + "type", + "length", + ) + + class TemplateFieldSerializerMinified(serializers.ModelSerializer): """Сериализатор поля шаблона сокращенный (без полей группы)""" @@ -76,6 +100,14 @@ class Meta: ) +class TemplateGroupSerializerMinified(serializers.ModelSerializer): + """Сериализатор группы полей шаблона без вложенных полей""" + + class Meta: + model = TemplateFieldGroup + fields = ("id", "name") + + class TemplateGroupSerializer(serializers.ModelSerializer): """Сериализатор группы полей шаблона""" @@ -100,6 +132,19 @@ def to_representation(self, instance): return response +class TemplateGroupWriteSerializer(serializers.ModelSerializer): + """Сериализатор группы полей шаблона для записи/обновления""" + + id = serializers.IntegerField() + + class Meta: + model = TemplateFieldGroup + fields = ( + "id", + "name", + ) + + class TemplateSerializerMinified(serializers.ModelSerializer): """Сериализатор шаблонов сокращенный.""" @@ -139,11 +184,18 @@ class TemplateSerializerPlain(TemplateSerializerMinified): allow_empty=True, ) + groups = TemplateGroupSerializerMinified( + source="field_groups", + read_only=True, + many=True, + allow_empty=True, + ) + class Meta(TemplateSerializerMinified.Meta): model = Template exclude = ("template",) # fields = "__all__" - read_only_fields = ("is_favorited",) + read_only_fields = ("is_favorited", "groups") class TemplateSerializer(TemplateSerializerMinified): @@ -176,6 +228,79 @@ def to_representation(self, instance): return response +class TemplateWriteSerializer(serializers.ModelSerializer): + """Сериализатор шаблонов для записи/изменения.""" + + fields = TemplateFieldWriteSerializer(many=True) + groups = TemplateGroupWriteSerializer(many=True) + + class Meta: + model = Template + fields = ("name", "deleted", "description", "fields", "groups") + + def validate(self, data): + # проверка, что все поля имеют уникальные тэги + data_fields = data.get("fields") + field_tags = [f["tag"] for f in data_fields] + tags_duplicates = get_non_unique_items(field_tags) + if tags_duplicates: + raise serializers.ValidationError( + detail=Messages.TEMPLATE_FIELD_TAGS_ARE_NOT_UNIQUE.format( + tags_duplicates + ) + ) + + # проверка, что все группы имеют уникальный id + data_groups = data.get("groups") + group_ids = [g["id"] for g in data_groups] + ids_duplicates = get_non_unique_items(group_ids) + if ids_duplicates: + raise serializers.ValidationError( + detail=Messages.TEMPLATE_GROUP_IDS_ARE_NOT_UNIQUE.format( + ids_duplicates + ) + ) + + # проверка, что поля шаблона привязаны к описанным группам в group + field_groups = set([f.get("group") for f in data_fields]) + if None in field_groups: + field_groups.discard(None) + unknown_groups = field_groups - set(group_ids) + if unknown_groups: + raise serializers.ValidationError( + detail=Messages.UNKNOWN_GROUP_ID.format(unknown_groups) + ) + return data + + def create(self, data): + data_fields = data.pop("fields") + data_groups = data.pop("groups") + template = Template.objects.create(**data) + # создание групп + data_groups.sort(key=lambda x: x["id"]) + group_models = {} + for group in data_groups: + model = TemplateFieldGroup.objects.create( + name=group["name"], template=template + ) + group_models[group["id"]] = model + # создание полей + template_fields = [] + for data in data_fields: + group_id = data["group"] + if group_id: + data["group"] = group_models[group_id] + template_fields.append(TemplateField(template=template, **data)) + TemplateField.objects.bulk_create(template_fields) + return template + + def to_representation(self, instance): + request = self.context.get("request") + return TemplateSerializerPlain( + instance, context={"request": request} + ).data + + class DocumentFieldSerializer(serializers.ModelSerializer): """Сериализатор поля документов.""" @@ -350,6 +475,17 @@ def validate_field(self, template_field): return template_field +class TemplateFileUploadSerializer(serializers.ModelSerializer): + errors = serializers.SerializerMethodField() + + class Meta: + model = Template + fields = ("template", "errors") + + def get_errors(self, instance): + return instance.get_consistency_errors() + + class CustomUserSerializer(UserSerializer): password = serializers.CharField(write_only=True) diff --git a/backend/api/v1/urls.py b/backend/api/v1/urls.py index d8861ea..0659d04 100644 --- a/backend/api/v1/urls.py +++ b/backend/api/v1/urls.py @@ -1,11 +1,13 @@ from api.v1.views import ( AnonymousDownloadPreviewAPIView, + CheckTemplateConsistencyAPIView, DocumentFieldViewSet, DocumentViewSet, TemplateFieldViewSet, TemplateViewSet, FavTemplateAPIview, FavDocumentAPIview, + UploadTemplateFileAPIView, # RegisterView, ) from django.urls import include, path, re_path @@ -52,6 +54,16 @@ AnonymousDownloadPreviewAPIView.as_view(), name="download_preview", ), + re_path( + r"^templates/(?P[0-9]+)/check_consistency/$", + CheckTemplateConsistencyAPIView.as_view(), + name="check_consistency", + ), + re_path( + r"^templates/(?P[0-9]+)/upload_template/$", + UploadTemplateFileAPIView.as_view(), + name="upload_template", + ), # path("users/", RegisterView.as_view(), name="register"), path("", include(router_v1.urls)), path("", include("djoser.urls")), diff --git a/backend/api/v1/utils.py b/backend/api/v1/utils.py index 5f152d0..f0fabf6 100644 --- a/backend/api/v1/utils.py +++ b/backend/api/v1/utils.py @@ -1,3 +1,4 @@ +from typing import Any, List, Set from django.core.mail import send_mail @@ -11,3 +12,16 @@ def send_email(data): [data["to_email"]], fail_silently=False, ) + + +def get_non_unique_items(items: List[Any]) -> Set[Any]: + """Возвращает множество неуникальных элементов списка.""" + + visited = set() + non_unique = set() + for item in items: + if item not in visited: + visited.add(item) + else: + non_unique.add(item) + return non_unique diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 6b9bbea..71c141f 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -4,6 +4,7 @@ import subprocess import tempfile from pathlib import Path +from typing import Dict, List import aspose.words as aw from django.contrib.auth import get_user_model @@ -20,23 +21,25 @@ ) from rest_framework.decorators import action from rest_framework.exceptions import PermissionDenied -from rest_framework.permissions import AllowAny, IsAuthenticated +from rest_framework.permissions import AllowAny, IsAuthenticated, IsAdminUser from rest_framework.response import Response from rest_framework.views import APIView -from api.v1.permissions import IsOwner, IsOwnerOrAdminOrReadOnly -from api.v1.serializers import ( +from .permissions import IsAdminOrReadOnly, IsOwner, IsOwnerOrAdminOrReadOnly +from .serializers import ( CategorySerializer, DocumentFieldForPreviewSerializer, DocumentFieldSerializer, - DocumentReadSerializerMinified, DocumentReadSerializerExtended, + DocumentReadSerializerMinified, DocumentWriteSerializer, FavDocumentSerializer, FavTemplateSerializer, TemplateFieldSerializer, + TemplateFileUploadSerializer, TemplateSerializer, TemplateSerializerMinified, + TemplateWriteSerializer, ) # from api.v1.utils import Util @@ -56,7 +59,7 @@ class CategoryViewSet(viewsets.ModelViewSet): queryset = Category.objects.all() serializer_class = CategorySerializer - permissions_classes = (AllowAny,) + permission_classes = (AllowAny,) def send_file(filestream, filename: str, as_attachment: bool = True): @@ -73,8 +76,8 @@ class TemplateViewSet(viewsets.ModelViewSet): """Шаблон.""" serializer_class = TemplateSerializer - http_method_names = ("get", "delete") - permissions_classes = (AllowAny,) + http_method_names = ("get", "delete", "post") + permission_classes = (IsAdminOrReadOnly,) # AllowAny filter_backends = ( DjangoFilterBackend, filters.SearchFilter, @@ -93,6 +96,8 @@ class TemplateViewSet(viewsets.ModelViewSet): def get_serializer_class(self): if self.action == "list": return TemplateSerializerMinified + elif self.action == "create": + return TemplateWriteSerializer return TemplateSerializer def get_queryset(self): @@ -140,7 +145,7 @@ class TemplateFieldViewSet(viewsets.ModelViewSet): serializer_class = TemplateFieldSerializer http_method_names = ("get",) - permissions_classes = (AllowAny,) + permission_classes = (AllowAny,) pagination_class = None def get_queryset(self): @@ -155,8 +160,8 @@ class DocumentViewSet(viewsets.ModelViewSet): queryset = Document.objects.all() serializer_class = DocumentReadSerializerMinified http_method_names = ("get", "post", "patch", "delete") - # permissions_classes = (IsAuthenticated,) - permissions_classes = (AllowAny,) + # permission_classes = (IsAuthenticated,) + permission_classes = (AllowAny,) filter_backends = ( filters.SearchFilter, filters.OrderingFilter, @@ -168,7 +173,7 @@ class DocumentViewSet(viewsets.ModelViewSet): def get_queryset(self): """Выдаем только список документов текущего пользователя.""" - #ЗАглушка + # ЗАглушка if self.request.user.is_authenticated: return self.request.user.documents else: @@ -244,7 +249,7 @@ def download_document(self, request, pk=None): @action( detail=True, - permissions_classes=[IsAuthenticated], + permission_classes=[IsAuthenticated], url_path="download_pdf", ) def download_pdf(self, request, pk=None): @@ -252,24 +257,26 @@ def download_pdf(self, request, pk=None): with tempfile.NamedTemporaryFile() as output: outfile = Path(output.name).resolve() outfile.write_bytes( - b''.join(self.download_document(request, pk).streaming_content) + b"".join(self.download_document(request, pk).streaming_content) + ) + subprocess.run( + [ + "soffice", + "--headless", + "--invisible", + "--nologo", + "--convert-to", + "pdf", + "--outdir", + outfile.parent, + outfile.absolute(), + ] ) - subprocess.run([ - "soffice", - "--headless", - "--invisible", - "--nologo", - "--convert-to", - "pdf", - "--outdir", - outfile.parent, - outfile.absolute(), - ]) newfile = outfile.with_suffix(".pdf") buffer = io.BytesIO(newfile.read_bytes()) response = send_file(buffer, newfile.name) return response - + @action( detail=True, permission_classes=[IsOwner], @@ -293,14 +300,14 @@ class DocumentFieldViewSet(viewsets.ModelViewSet): serializer_class = DocumentFieldSerializer http_method_names = ("get",) - # permissions_classes = (IsAuthenticated,) - permissions_classes = (AllowAny,) + # permission_classes = (IsAuthenticated,) + permission_classes = (AllowAny,) pagination_class = None def get_queryset(self): document_id = self.kwargs.get("document_id") document = get_object_or_404(Document, id=document_id) - #ЗАглушка + # ЗАглушка # if ( # not (self.request.user.is_authenticated) # or document.owner != self.request.user @@ -400,6 +407,66 @@ def post(self, request, template_id): return response +class CheckTemplateConsistencyAPIView(views.APIView): + permission_classes = (AllowAny,) # isAdmin + + def get(self, request, template_id): + template = get_object_or_404(Template, id=template_id) + errors = template.get_consistency_errors() + if errors: + return Response( + data={"result": Messages.TEMPLATE_CONSISTENT}, + status=status.HTTP_200_OK, + ) + return Response(data={"errors": errors}, status=status.HTTP_200_OK) + + +class UploadTemplateFileAPIView(generics.UpdateAPIView): + queryset = Template.objects.all() + serializer_class = TemplateFileUploadSerializer + lookup_field = "id" + lookup_url_kwarg = "template_id" + permission_classes = (IsAdminUser,) + http_method_names = ["patch", "put"] + + # class UploadTemplateFileAPIView(views.APIView): + # serializer + # permission_classes = (AllowAny,) # isAdmin + + # def post(self, request, template_id): + # serializer = TemplateFileUploadSerializer(data=request.data) + # if serializer.is_valid(): + # print(serializer.validated_data) + # # Process the uploaded file here + # # Save it to the server or perform any required operations + # return Response({"message": "File uploaded successfully"}) + # else: + # return Response( + # serializer.errors, status=status.HTTP_400_BAD_REQUEST + # ) + + # template = get_object_or_404(Template, id=template_id) + # excess_tags, excess_fields = template.get_inconsistent_tags() + # if not excess_tags and not excess_fields: + # return Response( + # data={"result": Messages.TEMPLATE_CONSISTENT}, + # status=status.HTTP_200_OK, + # ) + # context = {"errors": []} + # if excess_tags: + # context["errors"].append( + # {"message": Messages.TEMPLATE_EXCESS_TAGS, "tags": excess_tags} + # ) + # if excess_fields: + # context["errors"].append( + # { + # "message": Messages.TEMPLATE_EXCESS_FIELDS, + # "tags": excess_fields, + # } + # ) + # return Response(data=context, status=status.HTTP_200_OK) + + # class RegisterView(generics.GenericAPIView): # serializer_class = CustomUserSerializer diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 3dbc708..4844fd3 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -30,7 +30,7 @@ "api", "users", "documents", - "colorfield", + "colorfield", # wtf ? "core", ] diff --git a/backend/core/constants.py b/backend/core/constants.py index 7158bb4..35ef6f2 100644 --- a/backend/core/constants.py +++ b/backend/core/constants.py @@ -42,3 +42,17 @@ class Messages: FILE_NOT_FOUND: Final = "Файл '{}' не найден." UNKNOWN_GROUP_ID: Final = "Ошибка: неизвестный идентификатор группы '{}'" UNKNOWN_TYPE: Final = "Ошибка: неизвестный тип поля '{}'" + + TEMPLATE_EXCESS_TAGS: Final = ( + "Шаблон содержит тэги, для которых отсутствуют поля в базе" + ) + TEMPLATE_EXCESS_FIELDS: Final = ( + "В шаблоне отсутствуют тэги, для которых имеются поля в базе" + ) + TEMPLATE_CONSISTENT: Final = "Шаблон и поля согласованы" + TEMPLATE_FIELD_TAGS_ARE_NOT_UNIQUE: Final = ( + "Поля шаблона содержат неуникальные теги {}" + ) + TEMPLATE_GROUP_IDS_ARE_NOT_UNIQUE: Final = ( + "Группы полей шаблона содержат неуникальные идентификаторы id {}" + ) diff --git a/backend/core/template_render.py b/backend/core/template_render.py index 24cc00b..700734e 100644 --- a/backend/core/template_render.py +++ b/backend/core/template_render.py @@ -295,7 +295,7 @@ def _combine_styled_tag_runs(self, tag_style, runs): start_run = None def prepare_template(self): - """Подгтотовка шаблона к использованию (объединение прогонов)""" + """Подготовка шаблона к использованию (объединение прогонов)""" self._template.init_docx() docx = self._template.docx tag_style = docx.styles[self.TAG_STYLE_NAME] diff --git a/backend/documents/models.py b/backend/documents/models.py index f90dffe..12b62a7 100644 --- a/backend/documents/models.py +++ b/backend/documents/models.py @@ -1,9 +1,12 @@ """Модели документов.""" +from typing import Dict, List, Tuple + from django.contrib.auth import get_user_model from django.core.exceptions import ValidationError from django.db import models from core.constants import Messages +from core.template_render import DocumentTemplate User = get_user_model() @@ -79,6 +82,45 @@ def save(self, *args, **kwargs): print(e) return super().save(*args, **kwargs) + def get_inconsistent_tags(self) -> Tuple[Tuple, Tuple]: + """ + Возвращает списки несогласованных тэгов между БД и шаблоном docx. + + :returns: (excess_tags, excess_fields) + excess_tags - кортеж тэгов, которые имеются в docx, но отсутствуют в БД. + excess_fields - кортеж тэгов, которые имеются в БД, но отсутствуют в docx. + """ + docx_tags, field_tags = set(), set() + if self.template: + try: + doc = DocumentTemplate(self.template) + docx_tags = set(doc.get_tags()) + except Exception as e: + print(e) # TODO: add logging + + field_tags = {field.tag for field in self.fields.all()} + excess_tags = tuple(docx_tags - field_tags) + excess_fields = tuple(field_tags - docx_tags) + return (excess_tags, excess_fields) + + def get_consistency_errors(self) -> List: + """Генерирует ответ в зависимости от согласованности полей шаблона.""" + + excess_tags, excess_fields = self.get_inconsistent_tags() + errors = [] + if excess_tags: + errors.append( + {"message": Messages.TEMPLATE_EXCESS_TAGS, "tags": excess_tags} + ) + if excess_fields: + errors.append( + { + "message": Messages.TEMPLATE_EXCESS_FIELDS, + "tags": excess_fields, + } + ) + return errors + class TemplateFieldGroup(models.Model): """Группы полей шаблона.""" From 9e0b9905e82f011f92fe33a53babbe5d555b9644 Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Wed, 15 Nov 2023 16:16:45 +0300 Subject: [PATCH 12/80] fix: flake8 issues --- backend/api/v1/serializers.py | 4 ++-- backend/api/v1/views.py | 1 - backend/documents/models.py | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/backend/api/v1/serializers.py b/backend/api/v1/serializers.py index 6e6796d..2dc3c51 100644 --- a/backend/api/v1/serializers.py +++ b/backend/api/v1/serializers.py @@ -1,10 +1,10 @@ """Сериализаторы для API.""" +import base64 from django.contrib.auth import get_user_model from django.core.files.base import ContentFile from django.db import transaction from djoser.serializers import UserSerializer -from rest_framework import serializers, status -from rest_framework.response import Response +from rest_framework import serializers from .utils import get_non_unique_items from core.constants import Messages diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 71c141f..9b025ab 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -4,7 +4,6 @@ import subprocess import tempfile from pathlib import Path -from typing import Dict, List import aspose.words as aw from django.contrib.auth import get_user_model diff --git a/backend/documents/models.py b/backend/documents/models.py index 12b62a7..07c40f5 100644 --- a/backend/documents/models.py +++ b/backend/documents/models.py @@ -1,5 +1,5 @@ """Модели документов.""" -from typing import Dict, List, Tuple +from typing import List, Tuple from django.contrib.auth import get_user_model from django.core.exceptions import ValidationError From 6cb2feafff4b0daeea1230c4621048715ac75fcc Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Wed, 15 Nov 2023 16:30:03 +0300 Subject: [PATCH 13/80] fix: clear garpage comments --- backend/api/v1/views.py | 37 ------------------------------------- 1 file changed, 37 deletions(-) diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 9b025ab..2d91e38 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -428,43 +428,6 @@ class UploadTemplateFileAPIView(generics.UpdateAPIView): permission_classes = (IsAdminUser,) http_method_names = ["patch", "put"] - # class UploadTemplateFileAPIView(views.APIView): - # serializer - # permission_classes = (AllowAny,) # isAdmin - - # def post(self, request, template_id): - # serializer = TemplateFileUploadSerializer(data=request.data) - # if serializer.is_valid(): - # print(serializer.validated_data) - # # Process the uploaded file here - # # Save it to the server or perform any required operations - # return Response({"message": "File uploaded successfully"}) - # else: - # return Response( - # serializer.errors, status=status.HTTP_400_BAD_REQUEST - # ) - - # template = get_object_or_404(Template, id=template_id) - # excess_tags, excess_fields = template.get_inconsistent_tags() - # if not excess_tags and not excess_fields: - # return Response( - # data={"result": Messages.TEMPLATE_CONSISTENT}, - # status=status.HTTP_200_OK, - # ) - # context = {"errors": []} - # if excess_tags: - # context["errors"].append( - # {"message": Messages.TEMPLATE_EXCESS_TAGS, "tags": excess_tags} - # ) - # if excess_fields: - # context["errors"].append( - # { - # "message": Messages.TEMPLATE_EXCESS_FIELDS, - # "tags": excess_fields, - # } - # ) - # return Response(data=context, status=status.HTTP_200_OK) - # class RegisterView(generics.GenericAPIView): # serializer_class = CustomUserSerializer From b26cecc09075005db69a3b2e77524696a6d39d35 Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Thu, 16 Nov 2023 09:09:41 +0300 Subject: [PATCH 14/80] =?UTF-8?q?bugfix:=20templates/id/download=5Fpreview?= =?UTF-8?q?/=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=B5=20document?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/api/v1/serializers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/api/v1/serializers.py b/backend/api/v1/serializers.py index 2dc3c51..d7f5670 100644 --- a/backend/api/v1/serializers.py +++ b/backend/api/v1/serializers.py @@ -460,11 +460,11 @@ class Meta: class DocumentFieldForPreviewSerializer(serializers.ModelSerializer): """Сериализатор для полей превью документа.""" - description = serializers.CharField(required=False, max_length=200) + # description = serializers.CharField(required=False, max_length=200) class Meta: model = DocumentField - fields = "__all__" + fields = ("field", "value") def validate_field(self, template_field): template_fields = self.context.get("template_fields", set()) From 7e84b58f9875413f2762660bd37561cb13067a0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B8=D0=BC=D1=87=D0=B5=D0=BD=D0=BA=D0=BE=20=D0=90?= =?UTF-8?q?=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= <122796143+ASTimch@users.noreply.github.com> Date: Thu, 16 Nov 2023 09:22:10 +0300 Subject: [PATCH 15/80] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлено описание ручек загрузки шаблонов для админа --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3e9c696..0a1cd9f 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,16 @@ - просмотреть список всех доступных шаблонов базы /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** From 4bd003e7373df7a158948dbd5901eef082b984cd Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Thu, 16 Nov 2023 23:10:37 +0300 Subject: [PATCH 16/80] aspone --- backend/api/v1/views.py | 34 +++++++++++++++++----------------- backend/requirements.txt | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 2d91e38..5f6d66b 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -5,7 +5,7 @@ import tempfile from pathlib import Path -import aspose.words as aw +# import aspose.words as aw from django.contrib.auth import get_user_model from django.http import FileResponse from django.shortcuts import get_object_or_404 @@ -276,22 +276,22 @@ def download_pdf(self, request, pk=None): response = send_file(buffer, newfile.name) return response - @action( - detail=True, - permission_classes=[IsOwner], - ) - def download_pdf_aspose(self, request, pk=None): - """Скачивание pdf-файла.""" - document = get_object_or_404(Document, id=pk, owner=request.user) - docx_stream = io.BytesIO( - b"".join(self.download_document(request, pk).streaming_content) - ) - docx_file = aw.Document(docx_stream) - buffer = io.BytesIO() - docx_file.save(buffer, aw.SaveFormat.PDF) - buffer.seek(0, os.SEEK_SET) - response = send_file(buffer, f"{document.template.name}.pdf") - return response + # @action( + # detail=True, + # permission_classes=[IsOwner], + # ) + # def download_pdf_aspose(self, request, pk=None): + # """Скачивание pdf-файла.""" + # document = get_object_or_404(Document, id=pk, owner=request.user) + # docx_stream = io.BytesIO( + # b"".join(self.download_document(request, pk).streaming_content) + # ) + # docx_file = aw.Document(docx_stream) + # buffer = io.BytesIO() + # docx_file.save(buffer, aw.SaveFormat.PDF) + # buffer.seek(0, os.SEEK_SET) + # response = send_file(buffer, f"{document.template.name}.pdf") + # return response class DocumentFieldViewSet(viewsets.ModelViewSet): diff --git a/backend/requirements.txt b/backend/requirements.txt index 43f53b5..6b82fa5 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,5 +1,5 @@ asgiref==3.7.2 -aspose-words==23.10.0 +# aspose-words==23.10.0 atomicwrites==1.4.1 attrs==23.1.0 Babel==2.13.0 From 3eb0d2de5f814378c594cec62a426d7b902f97de Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Fri, 17 Nov 2023 22:40:59 +0300 Subject: [PATCH 17/80] fix: static for backend --- gateway/nginx.conf | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gateway/nginx.conf b/gateway/nginx.conf index f21298b..79927db 100644 --- a/gateway/nginx.conf +++ b/gateway/nginx.conf @@ -15,6 +15,21 @@ server { alias /app/media/; } + location /static/admin/ { + proxy_set_header Host $http_host; + alias /staticfiles/admin/; + } + + location /static/rest_framework/ { + proxy_set_header Host $http_host; + alias /staticfiles/rest_framework/; + } + + location /static/drf-yasg/ { + proxy_set_header Host $http_host; + alias /staticfiles/drf-yasg/; + } + location / { proxy_set_header Host $http_host; alias /staticfiles/; From c2019fa110906908e73f3b57d112e6373a23b659 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Sat, 18 Nov 2023 19:23:16 +0300 Subject: [PATCH 18/80] Update main.yml --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d95747b..394cb88 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -95,7 +95,6 @@ jobs: with: host: ${{ secrets.HOST }} username: ${{ secrets.USER }} - key: ${{ secrets.SSH_KEY }} passphrase: ${{ secrets.SSH_PASSPHRASE }} source: "docker-compose.production.yml" target: "documents_templates" From b0800f3a5dfdfdfa52e4b71970d4a21d702469f9 Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Sat, 18 Nov 2023 21:21:08 +0300 Subject: [PATCH 19/80] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=D1=8B=20=D1=81?= =?UTF-8?q?=D0=B5=D1=80=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8?= =?UTF-8?q?=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=D0=B0=20+=20=D0=BC?= =?UTF-8?q?=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8=20Template=20(=D0=BF=D0=BE=D0=BB=D0=B5=20updated,=20?= =?UTF-8?q?=D0=B0=D0=B4=D0=BC=D0=B8=D0=BD=D0=BA=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/api/v1/serializers.py | 4 +- backend/api/v1/tests.py | 193 ++++++++++++++++++ backend/documents/admin.py | 4 +- .../0029_alter_template_modified.py | 18 ++ .../migrations/0030_auto_20231118_2115.py | 22 ++ backend/documents/models.py | 8 +- backend/request/template.http | 105 +++++++++- 7 files changed, 347 insertions(+), 7 deletions(-) create mode 100644 backend/api/v1/tests.py create mode 100644 backend/documents/migrations/0029_alter_template_modified.py create mode 100644 backend/documents/migrations/0030_auto_20231118_2115.py diff --git a/backend/api/v1/serializers.py b/backend/api/v1/serializers.py index d7f5670..beb0f2d 100644 --- a/backend/api/v1/serializers.py +++ b/backend/api/v1/serializers.py @@ -67,7 +67,7 @@ class TemplateFieldWriteSerializer(serializers.ModelSerializer): type = serializers.SlugRelatedField( queryset=TemplateFieldType.objects.all(), slug_field="type" ) - group = serializers.IntegerField(required=False) + group = serializers.IntegerField(required=False, default=None) class Meta: model = TemplateField @@ -287,7 +287,7 @@ def create(self, data): # создание полей template_fields = [] for data in data_fields: - group_id = data["group"] + group_id = data.get("group") if group_id: data["group"] = group_models[group_id] template_fields.append(TemplateField(template=template, **data)) diff --git a/backend/api/v1/tests.py b/backend/api/v1/tests.py new file mode 100644 index 0000000..0058ea3 --- /dev/null +++ b/backend/api/v1/tests.py @@ -0,0 +1,193 @@ +import json + +from api.v1.serializers import TemplateWriteSerializer +from django.test import TestCase + +from core.constants import Messages +from documents.models import Template, TemplateFieldType + +duplicate_fields_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str"}, + {"tag": "tag2", "name": "Поле 2", "type": "str"}, + {"tag": "tag1", "name": "Поле 3", "type": "str"}, + ], + "groups": [], +} + +duplicate_group_ids_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str"}, + {"tag": "tag2", "name": "Поле 2", "type": "str"}, + {"tag": "tag3", "name": "Поле 3", "type": "str"}, + ], + "groups": [ + {"id": 1, "name": "Группа 1"}, + {"id": 2, "name": "Группа 2"}, + {"id": 1, "name": "Группа 3"}, + ], +} + +unknown_group_id_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str", "group": 1}, + {"tag": "tag2", "name": "Поле 2", "type": "str", "group": 2}, + {"tag": "tag3", "name": "Поле 3", "type": "str", "group": 3}, + ], + "groups": [ + {"id": 1, "name": "Группа 1"}, + {"id": 2, "name": "Группа 2"}, + ], +} + +valid_template_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str", "group": 1}, + {"tag": "tag2", "name": "Поле 2", "type": "int", "group": 2}, + {"tag": "tag3", "name": "Поле 3", "type": "str", "group": 2}, + {"tag": "tag4", "name": "Поле 4", "type": "int"}, + ], + "groups": [ + {"id": 1, "name": "Группа 1"}, + {"id": 2, "name": "Группа 2"}, + ], +} + +unknown_field_type_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str"}, + {"tag": "tag2", "name": "Поле 2", "type": "int"}, + {"tag": "tag3", "name": "Поле 3", "type": "unknown_type"}, + ], + "groups": [], +} + +templatefieldtype_fixture = [ + {"type": "int", "name": "Целочисленный"}, + {"type": "str", "name": "Строковый"}, +] + + +class Test(TestCase): + @classmethod + def setUpClass(cls) -> None: + super().setUpClass() + for data in templatefieldtype_fixture: + TemplateFieldType.objects.create(**data) + + def test_duplicate_field_tags_is_not_valid(self): + """Проверка, что дубликатные тэги полей взводят ошибку""" + + serializer = TemplateWriteSerializer(data=duplicate_fields_fixture) + self.assertFalse(serializer.is_valid()) + pattern = Messages.TEMPLATE_FIELD_TAGS_ARE_NOT_UNIQUE.format(".*") + self.assertRegex( + json.dumps(serializer.errors, ensure_ascii=False), + rf".*{pattern}.*", + ) + + def test_duplicate_group_ids_is_not_valid(self): + """Проверка, что дубликатные id групп взводят ошибку""" + + serializer = TemplateWriteSerializer(data=duplicate_group_ids_fixture) + self.assertFalse(serializer.is_valid()) + pattern = Messages.TEMPLATE_GROUP_IDS_ARE_NOT_UNIQUE.format(".*") + self.assertRegex( + json.dumps(serializer.errors, ensure_ascii=False), + rf".*{pattern}.*", + ) + + def test_undefined_field_group_is_not_valid(self): + """Проверка, что неописанные id групп в полях взводят ошибку""" + + serializer = TemplateWriteSerializer(data=unknown_group_id_fixture) + self.assertFalse(serializer.is_valid()) + pattern = Messages.UNKNOWN_GROUP_ID.format(".*") + self.assertRegex( + json.dumps(serializer.errors, ensure_ascii=False), + rf".*{pattern}.*", + ) + + def test_unknown_field_type_is_not_valid(self): + """Проверка, что неописанный тип поля взводит ошибку""" + + serializer = TemplateWriteSerializer(data=unknown_field_type_fixture) + self.assertFalse(serializer.is_valid()) + + def test_valid_template_is_created(self): + """Проверка, что валидный шаблон успешно создается в базе""" + Template.objects.all().delete() + serializer = TemplateWriteSerializer(data=valid_template_fixture) + self.assertTrue(serializer.is_valid()) + serializer.save() + fields = valid_template_fixture.pop("fields") + groups = valid_template_fixture.pop("groups") + self.assertTrue( + Template.objects.filter(**valid_template_fixture).exists(), + "Валидный шаблон в базе не создан", + ) + template = Template.objects.filter(**valid_template_fixture).first() + + # проверка, что поля созданы и они привязаны к правильной группе + for field in fields: + with self.subTest(field=field): + self.assertTrue( + template.fields.filter( + name=field["name"], tag=field["tag"] + ).exists(), + "Поле {} для шаблона не создано".format(field), + ) + field_obj = template.fields.filter( + name=field["name"], tag=field["tag"] + ).first() + self.assertEqual( + field_obj.type.type, + field["type"], + "Поле {} привязано к неправильному типу".format(field), + ) + + # проверка, что созданы все группы для полей + for group in groups: + with self.subTest(group=group, template=template): + self.assertTrue( + template.field_groups.filter( + name=(group["name"]) + ).exists(), + "Группа {} для шаблона не создана".format(group), + ) + + # проверка, что поля привязаны к правильным группам + groups_dct = {} + for g in groups: + id = g.pop("id") + groups_dct[id] = g + for f in fields: + if "group" in f: + f["group"] = groups_dct[f["group"]] + + for field in fields: + field_obj = template.fields.filter( + name=field["name"], tag=field["tag"] + ).first() + with self.subTest(field=field): + if "group" in field: + self.assertEqual( + field_obj.group.name, + field["group"]["name"], + "Поле {} неправильно привязано к группе".format(field), + ) diff --git a/backend/documents/admin.py b/backend/documents/admin.py index 8ca55db..629ed86 100644 --- a/backend/documents/admin.py +++ b/backend/documents/admin.py @@ -44,13 +44,13 @@ class TemplateAdmin(admin.ModelAdmin): "owner", "category", "template", - "modified", + "updated", "deleted", "description", "image", ) list_filter = ("owner", "category", "deleted") - readonly_fields = ("id",) + readonly_fields = ("id", "updated") inlines = (TemplateFieldInlineAdmin,) def get_form(self, request, instance=None, **kwargs): diff --git a/backend/documents/migrations/0029_alter_template_modified.py b/backend/documents/migrations/0029_alter_template_modified.py new file mode 100644 index 0000000..bf37d57 --- /dev/null +++ b/backend/documents/migrations/0029_alter_template_modified.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2 on 2023-11-18 18:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('documents', '0028_remove_documentfield_description'), + ] + + operations = [ + migrations.AlterField( + model_name='template', + name='modified', + field=models.DateTimeField(auto_now=True, verbose_name='Дата модификации'), + ), + ] diff --git a/backend/documents/migrations/0030_auto_20231118_2115.py b/backend/documents/migrations/0030_auto_20231118_2115.py new file mode 100644 index 0000000..ebd149a --- /dev/null +++ b/backend/documents/migrations/0030_auto_20231118_2115.py @@ -0,0 +1,22 @@ +# Generated by Django 3.2 on 2023-11-18 18:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('documents', '0029_alter_template_modified'), + ] + + operations = [ + migrations.RemoveField( + model_name='template', + name='modified', + ), + migrations.AddField( + model_name='template', + name='updated', + field=models.DateTimeField(auto_now=True, verbose_name='Дата изменения'), + ), + ] diff --git a/backend/documents/models.py b/backend/documents/models.py index 07c40f5..ee0a6d2 100644 --- a/backend/documents/models.py +++ b/backend/documents/models.py @@ -46,11 +46,15 @@ class Template(models.Model): null=True, blank=True, ) - template = models.FileField(upload_to="templates/") + template = models.FileField( + upload_to="templates/", verbose_name="Файл шаблона" + ) name = models.CharField( max_length=255, verbose_name="Наименование шаблона" ) - modified = models.DateField(verbose_name="Дата модификации", auto_now=True) + updated = models.DateTimeField( + verbose_name="Дата изменения", auto_now=True + ) deleted = models.BooleanField(verbose_name="Удален") description = models.TextField(verbose_name="Описание шаблона") image = models.ImageField( diff --git a/backend/request/template.http b/backend/request/template.http index 46c00cf..bd115dc 100644 --- a/backend/request/template.http +++ b/backend/request/template.http @@ -1,4 +1,5 @@ @TOKEN = Token 640063c217c9693de37f04d65249f35a19705efb + # @URL = https://documents-template.site/ @URL = http://localhost:8000 @@ -97,4 +98,106 @@ Content-Type: application/json "field": 9 } ] -} \ No newline at end of file +} + +### Добавить новый шаблон и описание его полей в базу (ТОЛЬКО ДЛЯ АДМИНА) +POST {{URL}}/api/templates/ +Content-Type: application/json +Authorization: {{TOKEN}} + +{ + "name": "Заявление в детский сад", + "deleted": true, + "description": "Данный шаблон необходим для заполнения заявления в детский сад. Заявление может быть составлено в простой письменной форме. Можно доработать шаблон под себя и прописать наиболее важные поля после его скачивания.", + "fields": [ + { + "tag": "ДетскийСадНомерНазвание", + "name": "Номер и название детского сада", + "hint": "66 Непоседы", + "group": 1, + "type": "str20", + "length": 40 + }, + { + "tag": "АдресатФИО", + "name": "ФИО заведующего (укажите в дательном падеже)", + "hint": "Ивановой Ирине Петровне", + "group": 2, + "type": "fio", + "length": 40 + + }, + { + "tag": "ОтправительФИО", + "name": "ФИО родителя/законного представителя (в родительном падеже)", + "hint": "Иванова Ивана Ивановича", + "group": 3, + "type": "fio", + "length": 40 + }, + { + "tag": "ОтправительПочтовыйАдрес", + "name": "Почтовый адрес", + "hint": "город, улица, номер квартиры", + "group": 3, + "type": "str40", + "length": 40 + }, + { + "tag": "РебенокФИО", + "name": "ФИО ребенка (в творительном падеже)", + "hint": "Ивановым Данилой Ивановичем", + "group": 4, + "type": "fio", + "length": 40 + }, + { + "tag": "РебенокГруппа", + "name": "Номер или название группы", + "hint": "№3 или средняя", + "group": 4, + "type": "str20", + "length": 40 + }, + { + "tag": "Дата1", + "name": "Дата начала отпуска", + "hint": "дд.мм.гггг", + "type": "date", + "length": 40 + }, + { + "tag": "Дата2", + "name": "Дата окончания отпуска", + "hint": "дд.мм.гггг", + "type": "date", + "length": 40 + }, + { + "tag": "Дата3", + "name": "Дата подачи заявления", + "hint": "дд.мм.гггг", + "type": "date", + "length": 40 + } + ], + "groups": [ + { + "id": 1, + "name": "Данные о детском саде" + }, + { + "id": 2, + "name": "Адресат" + }, + { + "id": 3, + "name": "Отправитель" + }, + { + "id": 4, + "name": "Ребенок" + } + ] +} + From eded5c0f6f2cf71d9b617d684e763fb3c312feb9 Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Sun, 19 Nov 2023 19:58:16 +0300 Subject: [PATCH 20/80] =?UTF-8?q?fix:=20patch=20document=20=D0=BE=D1=88500?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D0=BE=D1=82=D1=81=D1=83=D1=82=D1=81?= =?UTF-8?q?=D0=B2=D0=B8=D0=B8=20document=5Ffields=20=D0=B2=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=81=D0=B5=20+=20=D0=B2=D0=BE=D0=B7=D0=B2?= =?UTF-8?q?=D1=80=D0=B0=D1=89=D0=B0=D0=BB=D1=81=D1=8F=20=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D1=80=D1=8B=20instance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/api/v1/serializers.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/backend/api/v1/serializers.py b/backend/api/v1/serializers.py index beb0f2d..41feeb9 100644 --- a/backend/api/v1/serializers.py +++ b/backend/api/v1/serializers.py @@ -418,7 +418,7 @@ class Meta: @transaction.atomic def create(self, validated_data): """Создание документа и полей документа""" - document_fields = validated_data.pop("document_fields") + document_fields = validated_data.pop("document_fields", None) document = Document.objects.create(**validated_data) document.create_document_fields(document_fields) return document @@ -426,12 +426,13 @@ def create(self, validated_data): @transaction.atomic def update(self, instance, validated_data): """Обновление документа и полей документа""" - document_fields = validated_data.pop("document_fields") + document_fields = validated_data.pop("document_fields", None) Document.objects.filter(id=instance.id).update(**validated_data) document = Document.objects.get(id=instance.id) - document.document_fields.all().delete() - document.create_document_fields(document_fields) - return instance + if document_fields is not None: + document.document_fields.all().delete() + document.create_document_fields(document_fields) + return document def to_representation(self, instance): return DocumentReadSerializerMinified( From 972a4f4585e69ac8d8710d90394314529a809c23 Mon Sep 17 00:00:00 2001 From: Eduard Izmalkov Date: Mon, 20 Nov 2023 20:00:31 +0300 Subject: [PATCH 21/80] refactor(api.v1.views): move create docx and pdf to utils.py --- backend/api/v1/utils.py | 56 +++++++++++++++++++++++++++++++++++++++- backend/api/v1/views.py | 55 +++------------------------------------ backend/requirements.txt | 1 - 3 files changed, 59 insertions(+), 53 deletions(-) diff --git a/backend/api/v1/utils.py b/backend/api/v1/utils.py index f0fabf6..a19214f 100644 --- a/backend/api/v1/utils.py +++ b/backend/api/v1/utils.py @@ -1,6 +1,15 @@ +"""Утилиты.""" + +import io +import pathlib +import subprocess +import tempfile from typing import Any, List, Set + from django.core.mail import send_mail +from documents.models import Document, DocumentTemplate + class Util: @staticmethod @@ -16,7 +25,6 @@ def send_email(data): def get_non_unique_items(items: List[Any]) -> Set[Any]: """Возвращает множество неуникальных элементов списка.""" - visited = set() non_unique = set() for item in items: @@ -25,3 +33,49 @@ def get_non_unique_items(items: List[Any]) -> Set[Any]: else: non_unique.add(item) return non_unique + + +def fill_docx_template_for_document(document: Document) -> io.BytesIO: + """Создание документа из шаблона.""" + context = { + docfield.field.tag: docfield.value + for docfield in document.document_fields.all() + } + context_default = { + field.tag: field.name for field in document.template.fields.all() + } + path = document.template.template + doc = DocumentTemplate(path) + buffer = doc.get_partial(context, context_default) + return buffer + + +def create_document_pdf_for_export(document: Document) -> io.BytesIO: + """Создание pdf-файла.""" + doc_file = fill_docx_template_for_document(document) + pdf_file = convert_file_to_pdf(doc_file) + buffer = io.BytesIO(pdf_file.read_bytes()) + return buffer + + +def convert_file_to_pdf(in_file: io.BytesIO) -> pathlib.Path: + """Файл в двоичном виде конвертируем в pdf и возвращаем путь до него.""" + with tempfile.NamedTemporaryFile() as output: + out_file = pathlib.Path(output.name).resolve() + out_file.write_bytes(in_file.getvalue()) + subprocess.run( + [ + "soffice", + "--headless", + "--invisible", + "--nologo", + "--convert-to", + "pdf", + "--outdir", + out_file.parent, + out_file.absolute(), + ], + check=True, + ) + pdf_file = out_file.with_suffix(".pdf") + return pdf_file diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 2d91e38..1da35b4 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -1,11 +1,8 @@ """Вьюсеты v1 API.""" import io import os -import subprocess -import tempfile from pathlib import Path -import aspose.words as aw from django.contrib.auth import get_user_model from django.http import FileResponse from django.shortcuts import get_object_or_404 @@ -42,6 +39,7 @@ ) # from api.v1.utils import Util +from api.v1 import utils as v1utils from core.constants import Messages from core.template_render import DocumentTemplate from documents.models import ( @@ -232,17 +230,7 @@ def history_documents(self, request): def download_document(self, request, pk=None): """Скачивание готового документа.""" document = get_object_or_404(Document, id=pk) - context = dict() - for docfield in document.document_fields.all(): - template_field = docfield.field - context[template_field.tag] = docfield.value - context_default = { - field.tag: field.name for field in document.template.fields.all() - } - - path = document.template.template - doc = DocumentTemplate(path) - buffer = doc.get_partial(context, context_default) + buffer = v1utils.fill_docx_template_for_document(document) response = send_file(buffer, f"{document.template.name}.docx") return response @@ -253,43 +241,8 @@ def download_document(self, request, pk=None): ) def download_pdf(self, request, pk=None): """Генерация и выдача на скачивание pdf-файла.""" - with tempfile.NamedTemporaryFile() as output: - outfile = Path(output.name).resolve() - outfile.write_bytes( - b"".join(self.download_document(request, pk).streaming_content) - ) - subprocess.run( - [ - "soffice", - "--headless", - "--invisible", - "--nologo", - "--convert-to", - "pdf", - "--outdir", - outfile.parent, - outfile.absolute(), - ] - ) - newfile = outfile.with_suffix(".pdf") - buffer = io.BytesIO(newfile.read_bytes()) - response = send_file(buffer, newfile.name) - return response - - @action( - detail=True, - permission_classes=[IsOwner], - ) - def download_pdf_aspose(self, request, pk=None): - """Скачивание pdf-файла.""" - document = get_object_or_404(Document, id=pk, owner=request.user) - docx_stream = io.BytesIO( - b"".join(self.download_document(request, pk).streaming_content) - ) - docx_file = aw.Document(docx_stream) - buffer = io.BytesIO() - docx_file.save(buffer, aw.SaveFormat.PDF) - buffer.seek(0, os.SEEK_SET) + document = get_object_or_404(Document, pk=pk) + buffer = v1utils.create_document_pdf_for_export(document) response = send_file(buffer, f"{document.template.name}.pdf") return response diff --git a/backend/requirements.txt b/backend/requirements.txt index 43f53b5..ccc2dd1 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,5 +1,4 @@ asgiref==3.7.2 -aspose-words==23.10.0 atomicwrites==1.4.1 attrs==23.1.0 Babel==2.13.0 From d7d7d88b4055019704aec3c9ec8d16a0890a25ff Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Mon, 20 Nov 2023 20:52:10 +0300 Subject: [PATCH 22/80] =?UTF-8?q?=3Fpdf=3Dtrue=20added=20to=20template/{id?= =?UTF-8?q?}/donwload=5Fdraft/=20=D0=B8=20template/{id}/donwload=5Fpreview?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/api/v1/views.py | 11 ++++++++++- ...\321\202\321\201\320\260\320\264_tpl.docx" | Bin 19569 -> 19599 bytes 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 1da35b4..4bb42eb 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -119,6 +119,10 @@ def download_draft(self, request, pk=None): doc = DocumentTemplate(path) buffer = doc.get_draft(context) filename = f"{template.name}_шаблон.docx" + if request.query_params.get("pdf"): + pdf_file = v1utils.convert_file_to_pdf(buffer) + buffer = io.BytesIO(pdf_file.read_bytes()) + filename = f"{template.name}_шаблон.pdf" response = send_file(buffer, filename) return response @@ -355,7 +359,12 @@ def post(self, request, template_id): } doc = DocumentTemplate(template.template) buffer = doc.get_partial(context, context_default) - response = send_file(buffer, f"{template.name}_preview.docx") + filename = f"{template.name}_preview.docx" + if request.query_params.get("pdf"): + pdf_file = v1utils.convert_file_to_pdf(buffer) + buffer = io.BytesIO(pdf_file.read_bytes()) + filename = f"{template.name}_preview.pdf" + response = send_file(buffer, filename) return response diff --git "a/backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.docx" "b/backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.docx" index f3408201aceec4bbf4649b9e9a6b77d9cd22b1ed..e20c8c5f4196b5f6d83f7b59f7c029b17c874b68 100644 GIT binary patch delta 9161 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 Q+JRUo)59Am{P)KH0{Z@Qm;e9( From 26c786fd033264a71343e049a15def9138d3f80f Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Tue, 21 Nov 2023 08:30:41 +0300 Subject: [PATCH 23/80] Template field description added --- .../migrations/0031_alter_template_template.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 backend/documents/migrations/0031_alter_template_template.py diff --git a/backend/documents/migrations/0031_alter_template_template.py b/backend/documents/migrations/0031_alter_template_template.py new file mode 100644 index 0000000..150251f --- /dev/null +++ b/backend/documents/migrations/0031_alter_template_template.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2 on 2023-11-21 05:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('documents', '0030_auto_20231118_2115'), + ] + + operations = [ + migrations.AlterField( + model_name='template', + name='template', + field=models.FileField(upload_to='templates/', verbose_name='Файл шаблона'), + ), + ] From cca8c1f12f24192bfe6a69fd06cf31b587b815f0 Mon Sep 17 00:00:00 2001 From: Eduard Izmalkov Date: Tue, 21 Nov 2023 21:14:33 +0300 Subject: [PATCH 24/80] fix(download_pdf): deleting temporary pdf-files --- backend/api/v1/utils.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/backend/api/v1/utils.py b/backend/api/v1/utils.py index a19214f..e2b49e7 100644 --- a/backend/api/v1/utils.py +++ b/backend/api/v1/utils.py @@ -53,13 +53,12 @@ def fill_docx_template_for_document(document: Document) -> io.BytesIO: def create_document_pdf_for_export(document: Document) -> io.BytesIO: """Создание pdf-файла.""" doc_file = fill_docx_template_for_document(document) - pdf_file = convert_file_to_pdf(doc_file) - buffer = io.BytesIO(pdf_file.read_bytes()) + buffer = convert_file_to_pdf(doc_file) return buffer -def convert_file_to_pdf(in_file: io.BytesIO) -> pathlib.Path: - """Файл в двоичном виде конвертируем в pdf и возвращаем путь до него.""" +def convert_file_to_pdf(in_file: io.BytesIO) -> io.BytesIO: + """Файл в виде строки байт преобразуем в строку байт pdf-файла.""" with tempfile.NamedTemporaryFile() as output: out_file = pathlib.Path(output.name).resolve() out_file.write_bytes(in_file.getvalue()) @@ -78,4 +77,6 @@ def convert_file_to_pdf(in_file: io.BytesIO) -> pathlib.Path: check=True, ) pdf_file = out_file.with_suffix(".pdf") - return pdf_file + out_buffer = pdf_file.read_bytes() + pdf_file.unlink(missing_ok=True) + return out_buffer From 4f3a2f87443aa40a3285086da942c574d5a6ec18 Mon Sep 17 00:00:00 2001 From: Eduard Izmalkov Date: Tue, 21 Nov 2023 21:56:07 +0300 Subject: [PATCH 25/80] feat(TemplateFields): add validation regexp for template fields --- backend/data/template_field_types.json | 38 +++++++++++++++++--------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/backend/data/template_field_types.json b/backend/data/template_field_types.json index 1340354..6dc2844 100644 --- a/backend/data/template_field_types.json +++ b/backend/data/template_field_types.json @@ -1,64 +1,76 @@ [ { "type": "fio", - "name": "Фамилия Имя Отчество" + "name": "Фамилия Имя Отчество", + "mask": "/^[\w-]+ (?:[\w-]+ )?[\w-]+$/" }, { "type": "phone", - "name": "Номер телефона" + "name": "Номер телефона", + "mask": "/^\+?\d(?: ?\(\d+\) ?)?[\d -]+$/" }, { "type": "email", - "name": "Адрес email" + "name": "Адрес email", + "mask": "/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/" }, { "type": "date", - "name": "Дата" + "name": "Дата", + "mask": "/^(?:3[01]|[12][0-9]|0?[1-9]).(?:1[0-2]|0?[1-9]).(?:19|20)\d\d$/" }, { "type": "time", - "name": "Время" + "name": "Время", + "mask": "/^(?:[01]?[0-9]|2[0-3]):(?:[0-5][0-9])$/" }, { "type": "currency", - "name": "Сумма" + "name": "Сумма", + "mask": "/^[\+-]?\d+(?:\.|,)?\d?\d?\D*$/" }, { "type": "str", - "name": "Строка" + "name": "Строка", + "mask": "/^.*$/" }, { "type": "int", - "name": "Целочисленный" + "name": "Целочисленный", + "mask": "/^\d*$/" }, { "type": "float", "name": "Вещественный" + "mask": "/^\d+(?:\.|,)?\d*$/" }, { "type": "bool", - "name": "Логический" + "name": "Логический", + "mask": "/^true|false|да|нет|yes|no|истина|ложь$/i" }, { "type": "str20", - "name": "Строка(до 20 символов)" + "name": "Строка(до 20 символов)", + "mask": "/^.{20}$/" }, { "type": "str40", "name": "Строка(до 40 символов)" + "mask": "/^.{40}$/" }, { "type": "ddd_ddd", "name": "Код вида 123-456", - "mask": "^\\d{3}-\\d{3}$" + "mask": "/^\d{3}-\d{3}$/" }, { "type": "d10", "name": "Код из 10 цифр", - "mask": "^\\d{10}$" + "mask": "/^\d{10}$/" }, { "type": "list_fio", "name": "Список ФИО" } -] \ No newline at end of file +] From 8299cb495604fdb97b17a45153ad2a2e7d9e44e3 Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Wed, 22 Nov 2023 18:27:03 +0300 Subject: [PATCH 26/80] =?UTF-8?q?fix:template=5Fupload=20+=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D1=8B=20=D0=BF=D1=80=D0=B5=D1=82=D0=B5=D0=BD=D0=B7=D0=B8?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/api/v1/views.py | 3 +- backend/backend/settings.py | 1 + backend/core/constants.py | 1 + .../management/commands/init_templates.py | 49 +++- backend/data/template_list.json | 44 ++- ...\320\277\321\203\321\201\320\272_tpl.json" | 8 + ...\320\275\320\267\320\270\321\217_tpl.docx" | Bin 0 -> 18863 bytes ...\320\275\320\267\320\270\321\217_tpl.json" | 0 ...\320\273\321\203\320\263\320\270_tpl.docx" | Bin 0 -> 17657 bytes ...\320\273\321\203\320\263\320\270_tpl.json" | 162 +++++++++++ ...\321\201\321\202\320\262\320\260_tpl.docx" | Bin 0 -> 17699 bytes ...\321\201\321\202\320\262\320\260_tpl.json" | 146 ++++++++++ ...\321\206\320\265\321\200\321\202_tpl.docx" | Bin 0 -> 16449 bytes ...\321\206\320\265\321\200\321\202_tpl.json" | 178 ++++++++++++ ...\320\265\320\271\321\201\320\260_tpl.docx" | Bin 0 -> 17991 bytes ...\320\265\320\271\321\201\320\260_tpl.json" | 218 +++++++++++++++ ...\320\270\314\206\321\201\320\260_tpl.docx" | Bin 0 -> 18476 bytes ...\320\270\314\206\321\201\320\260_tpl.json" | 258 ++++++++++++++++++ ...\321\201\320\276\321\202\321\213_tpl.docx" | Bin 0 -> 17601 bytes ...\321\201\320\276\321\202\321\213_tpl.json" | 198 ++++++++++++++ ...\320\260\320\261\320\276\321\202_tpl.docx" | Bin 0 -> 17456 bytes ...\320\260\320\261\320\276\321\202_tpl.json" | 178 ++++++++++++ ...\320\260\320\261\320\276\321\202_tpl.docx" | Bin 0 -> 16981 bytes ...\320\260\320\261\320\276\321\202_tpl.json" | 178 ++++++++++++ ...\321\201\321\202\320\262\320\260_tpl.docx" | Bin 0 -> 18157 bytes ...\321\201\321\202\320\262\320\260_tpl.json" | 170 ++++++++++++ ...\320\275\320\267\320\270\321\217_tpl.docx" | Bin 18903 -> 0 bytes 27 files changed, 1774 insertions(+), 18 deletions(-) create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_tpl.docx" rename "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_tpl.json" => "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_tpl.json" (100%) create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\272_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\320\276\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\320\270_\320\276_\320\275\320\265\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274_\320\276\320\272\320\260\320\267\320\260\320\275\320\270\320\270_\320\277\320\273\320\260\321\202\320\275\320\276\320\271_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\321\203\321\201\320\273\321\203\320\263\320\270_tpl.docx" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\272_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\320\276\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\320\270_\320\276_\320\275\320\265\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274_\320\276\320\272\320\260\320\267\320\260\320\275\320\270\320\270_\320\277\320\273\320\260\321\202\320\275\320\276\320\271_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\321\203\321\201\320\273\321\203\320\263\320\270_tpl.json" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\273\320\270_\320\276\320\261\320\274\320\265\320\275_\321\202\320\276\320\262\320\260\321\200\320\260_\320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260_tpl.docx" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\273\320\270_\320\276\320\261\320\274\320\265\320\275_\321\202\320\276\320\262\320\260\321\200\320\260_\320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260_tpl.json" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\262\321\200\320\260\321\202\320\265_\320\264\320\265\320\275\320\265\320\263_\320\267\320\260_\320\261\320\270\320\273\320\265\321\202\321\213_\320\275\320\260_\320\272\320\276\320\275\321\206\320\265\321\200\321\202_tpl.docx" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\262\321\200\320\260\321\202\320\265_\320\264\320\265\320\275\320\265\320\263_\320\267\320\260_\320\261\320\270\320\273\320\265\321\202\321\213_\320\275\320\260_\320\272\320\276\320\275\321\206\320\265\321\200\321\202_tpl.json" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\202\321\203\321\200\320\276\320\277\320\265\321\200\320\260\321\202\320\276\321\200\320\276\320\274_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\262_\321\201\320\262\321\217\320\267\320\270_\321\201_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\271_\321\200\320\265\320\271\321\201\320\260_tpl.docx" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\202\321\203\321\200\320\276\320\277\320\265\321\200\320\260\321\202\320\276\321\200\320\276\320\274_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\262_\321\201\320\262\321\217\320\267\320\270_\321\201_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\271_\321\200\320\265\320\271\321\201\320\260_tpl.json" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.docx" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.json" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\321\211\320\265\321\200\320\261\320\260_\321\201\320\260\320\273\320\276\320\275\320\276\320\274_\320\272\321\200\320\260\321\201\320\276\321\202\321\213_tpl.docx" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\321\211\320\265\321\200\320\261\320\260_\321\201\320\260\320\273\320\276\320\275\320\276\320\274_\320\272\321\200\320\260\321\201\320\276\321\202\321\213_tpl.json" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\275\320\260\321\200\321\203\321\210\320\265\320\275\320\270\320\270_\321\201\321\200\320\276\320\272\320\276\320\262_\320\276\320\272\320\260\320\267\320\260\320\275\320\270\321\217_\321\203\321\201\320\273\321\203\320\263_\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217_\321\200\320\260\320\261\320\276\321\202_tpl.docx" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\275\320\260\321\200\321\203\321\210\320\265\320\275\320\270\320\270_\321\201\321\200\320\276\320\272\320\276\320\262_\320\276\320\272\320\260\320\267\320\260\320\275\320\270\321\217_\321\203\321\201\320\273\321\203\320\263_\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217_\321\200\320\260\320\261\320\276\321\202_tpl.json" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\275\320\265\320\264\320\276\321\201\321\202\320\260\321\202\320\272\320\260\321\205_\320\276\320\272\320\260\320\267\320\260\320\275\320\275\321\213\321\205_\321\203\321\201\320\273\321\203\320\263_\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205_\321\200\320\260\320\261\320\276\321\202_tpl.docx" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\275\320\265\320\264\320\276\321\201\321\202\320\260\321\202\320\272\320\260\321\205_\320\276\320\272\320\260\320\267\320\260\320\275\320\275\321\213\321\205_\321\203\321\201\320\273\321\203\320\263_\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205_\321\200\320\260\320\261\320\276\321\202_tpl.json" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\277\321\200\320\276\320\264\320\260\320\266\320\265_\321\202\320\276\320\262\320\260\321\200\320\260_\320\275\320\265\320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260_tpl.docx" create mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\277\321\200\320\276\320\264\320\260\320\266\320\265_\321\202\320\276\320\262\320\260\321\200\320\260_\320\275\320\265\320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260_tpl.json" delete mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_tpl.docx" diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 4bb42eb..8415ed0 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -375,11 +375,12 @@ def get(self, request, template_id): template = get_object_or_404(Template, id=template_id) errors = template.get_consistency_errors() if errors: + return Response(data={"errors": errors}, status=status.HTTP_200_OK) + else: return Response( data={"result": Messages.TEMPLATE_CONSISTENT}, status=status.HTTP_200_OK, ) - return Response(data={"errors": errors}, status=status.HTTP_200_OK) class UploadTemplateFileAPIView(generics.UpdateAPIView): diff --git a/backend/backend/settings.py b/backend/backend/settings.py index bdb4701..3863837 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -117,6 +117,7 @@ STATIC_ROOT = BASE_DIR / "collected_static" STATICFILES_DIRS = ((BASE_DIR / "static/"),) +# INITIAL_DATA_DIR = BASE_DIR / "data/" # for local run INITIAL_DATA_DIR = BASE_DIR / "static/data/" MEDIA_URL = "/media/" diff --git a/backend/core/constants.py b/backend/core/constants.py index 35ef6f2..445c493 100644 --- a/backend/core/constants.py +++ b/backend/core/constants.py @@ -39,6 +39,7 @@ class Messages: TEMPLATE_LOAD_FINISHED: Final = ( "Загрузка завершена. Загружено {} шаблонов." ) + TEMPLATE_JSON_CORRUPTED: Final = "Ошибка в структуре json файла '{}'" FILE_NOT_FOUND: Final = "Файл '{}' не найден." UNKNOWN_GROUP_ID: Final = "Ошибка: неизвестный идентификатор группы '{}'" UNKNOWN_TYPE: Final = "Ошибка: неизвестный тип поля '{}'" diff --git a/backend/core/management/commands/init_templates.py b/backend/core/management/commands/init_templates.py index e6565cc..b0673f8 100644 --- a/backend/core/management/commands/init_templates.py +++ b/backend/core/management/commands/init_templates.py @@ -7,6 +7,7 @@ from backend.settings import INITIAL_DATA_DIR +from api.v1.serializers import TemplateWriteSerializer from core.constants import Messages from documents.models import ( Template, @@ -18,6 +19,10 @@ TEMPLATE_LIST_SOURCE_FILE: str = "template_list.json" +def print_red(s): + print("\033[31m{}\033[0m".format(s)) + + def create_field_groups( group_list: List[Dict], template: Template ) -> Dict[int, TemplateFieldGroup]: @@ -58,38 +63,56 @@ def create_template_fields( def load_template(docx_file_name, json_file_name): + print("\n") print(Messages.TEMPLATE_LOADING.format(docx_file_name)) if not os.path.isfile(docx_file_name): - print(Messages.FILE_NOT_FOUND.format(docx_file_name)) + print_red(Messages.FILE_NOT_FOUND.format(docx_file_name)) return 0 if not os.path.isfile(json_file_name): - print(Messages.FILE_NOT_FOUND.format(json_file_name)) + print_red(Messages.FILE_NOT_FOUND.format(json_file_name)) return 0 with open(json_file_name, encoding="utf-8") as jsonfile: - context = json.load(jsonfile) - fields = context.pop("fields") - groups_list = context.pop("groups") - name = context.get("name") + try: + context = json.load(jsonfile) + except Exception as e: + print_red(Messages.TEMPLATE_JSON_CORRUPTED.format(json_file_name)) + print(e) + return 0 + new_docx_name = context.pop("template") + name = context.get("name", None) qs = Template.objects.filter(name=name) if qs.exists(): print(Messages.TEMPLATE_ALREADY_EXISTS.format(name), end="") choice = input() if choice == "1": - qs.delete() + try: + qs.delete() + except Exception as e: + print("Error at template delete operation!") + print(e) elif choice != "2": return 0 try: - template = Template(template="", **context) - template.save() + serializer = TemplateWriteSerializer(data=context) + if not serializer.is_valid(): + print_red( + Messages.TEMPLATE_JSON_CORRUPTED.format(json_file_name) + ) + print_red(serializer.errors) + return 0 + template = serializer.save() with open(docx_file_name, "rb") as f: template.template.save(new_docx_name, File(f)) + + # проверка консистентности загруженных полей и шаблона docx + errors = template.get_consistency_errors() + if errors: + print_red("Ошибки в шаблоне\n", errors) except Exception as e: - print("Error for data {}".format(context)) - print(e) + print_red("Error for data {}".format(context)) + print_red(e) return 0 - field_groups = create_field_groups(groups_list, template) - create_template_fields(fields, template, field_groups) print(Messages.TEMPLATE_LOADED.format(docx_file_name)) return 1 diff --git a/backend/data/template_list.json b/backend/data/template_list.json index 1e8d0f4..3bd140c 100644 --- a/backend/data/template_list.json +++ b/backend/data/template_list.json @@ -1,4 +1,44 @@ [ + { + "template": "претензии/претензия_tpl.docx", + "fields": "претензии/претензия_tpl.json" + }, + { + "template": "претензии/претензия_к_медицинской_организации_о_некачественном_оказании_платной_медицинской_услуги_tpl.docx", + "fields": "претензии/претензия_к_медицинской_организации_о_некачественном_оказании_платной_медицинской_услуги_tpl.json" + }, + { + "template": "претензии/претензия_на_возврат_или_обмен_товара_надлежащего_качества_tpl.docx", + "fields": "претензии/претензия_на_возврат_или_обмен_товара_надлежащего_качества_tpl.json" + }, + { + "template": "претензии/претензия_о_возврате_денег_за_билеты_на_концерт_tpl.docx", + "fields": "претензии/претензия_о_возврате_денег_за_билеты_на_концерт_tpl.json" + }, + { + "template": "претензии/претензия_о_возмещении_туроператором_убытков_в_связи_с_задержкой_рейса_tpl.docx", + "fields": "претензии/претензия_о_возмещении_туроператором_убытков_в_связи_с_задержкой_рейса_tpl.json" + }, + { + "template": "претензии/претензия_о_возмещении_убытков_причиненных_задержкой_рейса_tpl.docx", + "fields": "претензии/претензия_о_возмещении_убытков_причиненных_задержкой_рейса_tpl.json" + }, + { + "template": "претензии/претензия_о_возмещении_ущерба_салоном_красоты_tpl.docx", + "fields": "претензии/претензия_о_возмещении_ущерба_салоном_красоты_tpl.json" + }, + { + "template": "претензии/претензия_о_нарушении_сроков_оказания_услуг_выполнения_работ_tpl.docx", + "fields": "претензии/претензия_о_нарушении_сроков_оказания_услуг_выполнения_работ_tpl.json" + }, + { + "template": "претензии/претензия_о_недостатках_оказанных_услуг_выполненных_работ_tpl.docx", + "fields": "претензии/претензия_о_недостатках_оказанных_услуг_выполненных_работ_tpl.json" + }, + { + "template": "претензии/претензия_о_продаже_товара_ненадлежащего_качества_tpl.docx", + "fields": "претензии/претензия_о_продаже_товара_ненадлежащего_качества_tpl.json" + }, { "template": "заявление_детсад_tpl.docx", "fields": "заявление_детсад_tpl.json" @@ -7,10 +47,6 @@ "template": "заявление_на_отпуск_tpl.docx", "fields": "заявление_на_отпуск_tpl.json" }, - { - "template": "претензия_tpl.docx", - "fields": "претензия_tpl.json" - }, { "template": "договор_найма_жилого_помещения_tpl.docx", "fields": "договор_найма_жилого_помещения_tpl.json" diff --git "a/backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\320\277\321\203\321\201\320\272_tpl.json" "b/backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\320\277\321\203\321\201\320\272_tpl.json" index 48fa371..121758b 100644 --- "a/backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\320\277\321\203\321\201\320\272_tpl.json" +++ "b/backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\320\277\321\203\321\201\320\272_tpl.json" @@ -67,6 +67,14 @@ "group": 3, "type": "currency", "length": 40 + }, + { + "tag": "дата", + "name": "Дата завявления", + "hint": "ДД.ММ.ГГГГ (10.02.2023)", + "group": 3, + "type": "date", + "length": 40 } ], "groups": [ diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_tpl.docx" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..a2f2edfad0a8441c249897dfe8c6d1c6d1ec0555 GIT binary patch literal 18863 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 b_#d-?ycF1ncmV*gAAdj}5}GFZ+u8pErV)Z) literal 0 HcmV?d00001 diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_tpl.json" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_tpl.json" similarity index 100% rename from "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_tpl.json" rename to "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_tpl.json" diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\272_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\320\276\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\320\270_\320\276_\320\275\320\265\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274_\320\276\320\272\320\260\320\267\320\260\320\275\320\270\320\270_\320\277\320\273\320\260\321\202\320\275\320\276\320\271_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\321\203\321\201\320\273\321\203\320\263\320\270_tpl.docx" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\272_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\320\276\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\320\270_\320\276_\320\275\320\265\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274_\320\276\320\272\320\260\320\267\320\260\320\275\320\270\320\270_\320\277\320\273\320\260\321\202\320\275\320\276\320\271_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\321\203\321\201\320\273\321\203\320\263\320\270_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..5087a1f40c69a4554235a606eaec3a83d58be7fd GIT binary patch literal 17657 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 literal 0 HcmV?d00001 diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\272_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\320\276\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\320\270_\320\276_\320\275\320\265\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274_\320\276\320\272\320\260\320\267\320\260\320\275\320\270\320\270_\320\277\320\273\320\260\321\202\320\275\320\276\320\271_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\321\203\321\201\320\273\321\203\320\263\320\270_tpl.json" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\272_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\320\276\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\320\270_\320\276_\320\275\320\265\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274_\320\276\320\272\320\260\320\267\320\260\320\275\320\270\320\270_\320\277\320\273\320\260\321\202\320\275\320\276\320\271_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\321\203\321\201\320\273\321\203\320\263\320\270_tpl.json" new file mode 100644 index 0000000..1805551 --- /dev/null +++ "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\272_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\320\276\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\320\270_\320\276_\320\275\320\265\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274_\320\276\320\272\320\260\320\267\320\260\320\275\320\270\320\270_\320\277\320\273\320\260\321\202\320\275\320\276\320\271_\320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\271_\321\203\321\201\320\273\321\203\320\263\320\270_tpl.json" @@ -0,0 +1,162 @@ +{ + "template": "претензия_к_медицинской_организации_о_некачественном_оказании_платной_медицинской_услуги_tpl.docx", + "name": "Претензия к медицинской организации о некачественном оказании платной медицинской услуги", + "deleted": "False", + "description": "Данный шаблон поможет обратиться за возмещенииемм в медицинское учреждение о некачественном оказании платной медицинской услуги.", + "fields": [ + { + "tag": "АдресатОрганизация", + "name": "Наименование организации", + "hint": "ООО \"Ромашка\"", + "group": 1, + "type": "str40", + "length": 40 + }, + { + "tag": "АдресатАдрес", + "name": "Почтовый адрес", + "hint": "633104, Новосибирская обл., г. Обь, проспект Мозжерина, д. 10 офис 201", + "group": 1, + "type": "str", + "length": 100 + }, + { + "tag": "ОтправительФИОродПадеж", + "name": "ФИО (в родительном падеже)", + "hint": "Иванова Алексея Дмитриевича", + "group": 2, + "type": "fio", + "length": 40 + }, + { + "tag": "ОтправительАдрес", + "name": "Почтовый адрес", + "hint": "450045, Респ. Башкортостан, г. Уфа, ул. Ленина, 36, кв. 60", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "ОтправительТелефон", + "name": "Номер телефона", + "hint": "+79175678356", + "group": 2, + "type": "phone", + "length": 12 + }, + { + "tag": "ОтправительEmail", + "name": "Электронная почта", + "hint": "shablonizator@mail.ru", + "group": 2, + "type": "email", + "length": 40 + }, + { + "tag": "ДатаЗаключенияДоговора", + "name": "Дата заключения договора", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 40 + }, + { + "tag": "ПерваяСторонаФИОтворПадеж", + "name": "Первая сторона (ФИО в творительном падеже)", + "hint": "Ивановым Алексеем Дмитриевичем", + "group": 3, + "type": "str40", + "length": 40 + }, + { + "tag": "ВтораяСторонаФИОилиОргТворПадеж", + "name": "Подтверждающие документы (в творительном падеже)", + "hint": "ФИО или ООО \"Ромашка\"", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "НомерДоговора", + "name": "Номер договора", + "hint": "№ 12345", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "СуммаОказанныхУслуг", + "name": "Стоимость услуг (работ)", + "hint": "В рублях, копейки через точку", + "group": 3, + "type": "currency", + "length": 100 + }, + { + "tag": "ПодтверждающиеДокументыТворительныйПадеж", + "name": "Подтверждающие документы", + "hint": "квитанцией, чеком", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "Дата", + "name": "Дата подтверждающего документа", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 40 + }, + { + "tag": "СтатусИсполненияОбязательств", + "name": "Статус исполнения обязательств", + "hint": "Не исполнены в установленный договором срок, исполнены частично", + "group": 4, + "type": "str", + "length": 100 + }, + { + "tag": "СодержаниеПредъявляемыхТребований", + "name": "Содержание предъявляемых требований", + "hint": "Безвозмездно устранить недостатки оказанной услуги, возместить понесенные расходы по устранению недостатков оказанной услуги", + "group": 4, + "type": "str", + "length": 100 + }, + { + "tag": "ОжидаемыйСрокИсполненияТребований", + "name": "Ожидаемый срок исполнения требований", + "hint": "ДД.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 40 + }, + { + "tag": "Документы", + "name": "Документы", + "hint": "Копия кассового чека", + "group": 4, + "type": "str", + "length": 100 + } + ], + "groups": [ + { + "id": 1, + "name": "Адресат" + }, + { + "id": 2, + "name": "Отправитель" + }, + { + "id": 3, + "name": "Данные о договоре" + }, + { + "id": 4, + "name": "Содержание претензии" + } + ] +} \ No newline at end of file diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\273\320\270_\320\276\320\261\320\274\320\265\320\275_\321\202\320\276\320\262\320\260\321\200\320\260_\320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260_tpl.docx" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\273\320\270_\320\276\320\261\320\274\320\265\320\275_\321\202\320\276\320\262\320\260\321\200\320\260_\320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..99a85cec28b62c35a396cabcbae630fe88851540 GIT binary patch literal 17699 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 M52114`}Obt0CV_nL;wH) literal 0 HcmV?d00001 diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\273\320\270_\320\276\320\261\320\274\320\265\320\275_\321\202\320\276\320\262\320\260\321\200\320\260_\320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260_tpl.json" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\273\320\270_\320\276\320\261\320\274\320\265\320\275_\321\202\320\276\320\262\320\260\321\200\320\260_\320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260_tpl.json" new file mode 100644 index 0000000..7bfe762 --- /dev/null +++ "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\273\320\270_\320\276\320\261\320\274\320\265\320\275_\321\202\320\276\320\262\320\260\321\200\320\260_\320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260_tpl.json" @@ -0,0 +1,146 @@ +{ + "template": "претензия_на_возврат_или_обмен_товара_надлежащего_качества_tpl.docx", + "name": "Претензия на возврат или обмен товара надлежащего качества", + "deleted": "False", + "description": "Данный шаблон поможет запросить возврат или обмен товара надлежащего качества.", + "fields": [ + { + "tag": "АдресатОрганизация", + "name": "Наименование организации", + "hint": "ООО \"Ромашка\"", + "group": 1, + "type": "str40", + "length": 40 + }, + { + "tag": "АдресатАдрес", + "name": "Почтовый адрес", + "hint": "633104, Новосибирская обл., г. Обь, проспект Мозжерина, д. 10 офис 201", + "group": 1, + "type": "str", + "length": 100 + }, + { + "tag": "ОтправительФИОродПадеж", + "name": "ФИО (в родительном падеже)", + "hint": "Иванова Алексея Дмитриевича", + "group": 2, + "type": "fio", + "length": 40 + }, + { + "tag": "ОтправительАдрес", + "name": "Почтовый адрес", + "hint": "450045, Респ. Башкортостан, г. Уфа, ул. Ленина, 36, кв. 60", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "ОтправительТелефон", + "name": "Номер телефона", + "hint": "+79175678356", + "group": 2, + "type": "phone", + "length": 12 + }, + { + "tag": "ОтправительEmail", + "name": "Электронная почта", + "hint": "shablonizator@mail.ru", + "group": 2, + "type": "email", + "length": 40 + }, + { + "tag": "ДатаПриобретенияТовара", + "name": "Дата приобретения товара", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 40 + }, + { + "tag": "НаименованиеТовара", + "name": "Наименование товара", + "hint": "ботинки, платье и т.д.", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "ПодтверждающиеДокументы", + "name": "Подтверждающие документы (в творительном падеже)", + "hint": "Кассовым чеком, товарным чеком", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "ПричинаНевозможностиИспользования", + "name": "Причина невозможности использования", + "hint": "не подходит по фасону, габаритам, размеру", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "ДатаОбращенияПоОбмену", + "name": "Дата обращения по поводу обмена", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 20 + }, + { + "tag": "НеобходимыйКритерийТовара", + "name": "Необходимый критерий товара (в родительном падеже)", + "hint": "размера, габарита, фасона, формы, расцветки, комплектации", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "СодержаниеПредъявляемыхТребований", + "name": "Содержание предъявляемых требований", + "hint": "обменять на товар, соответствующий критериям, или произвести возврат", + "group": 4, + "type": "str", + "length": 100 + }, + { + "tag": "ОжидаемыйСрокИсполненияТребований", + "name": "Ожидаемый срок исполнения требований", + "hint": "ДД.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 40 + }, + { + "tag": "Документы", + "name": "Документы", + "hint": "Копия кассового чека", + "group": 4, + "type": "str", + "length": 100 + } + ], + "groups": [ + { + "id": 1, + "name": "Адресат" + }, + { + "id": 2, + "name": "Отправитель" + }, + { + "id": 3, + "name": "Информация о товаре" + }, + { + "id": 4, + "name": "Содержание претензии" + } + ] +} \ No newline at end of file diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\262\321\200\320\260\321\202\320\265_\320\264\320\265\320\275\320\265\320\263_\320\267\320\260_\320\261\320\270\320\273\320\265\321\202\321\213_\320\275\320\260_\320\272\320\276\320\275\321\206\320\265\321\200\321\202_tpl.docx" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\262\321\200\320\260\321\202\320\265_\320\264\320\265\320\275\320\265\320\263_\320\267\320\260_\320\261\320\270\320\273\320\265\321\202\321\213_\320\275\320\260_\320\272\320\276\320\275\321\206\320\265\321\200\321\202_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..d088b02caef25f670e28083c559b961a2b0febe1 GIT binary patch literal 16449 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 I+<)x-KTF!m)Bpeg literal 0 HcmV?d00001 diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\262\321\200\320\260\321\202\320\265_\320\264\320\265\320\275\320\265\320\263_\320\267\320\260_\320\261\320\270\320\273\320\265\321\202\321\213_\320\275\320\260_\320\272\320\276\320\275\321\206\320\265\321\200\321\202_tpl.json" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\262\321\200\320\260\321\202\320\265_\320\264\320\265\320\275\320\265\320\263_\320\267\320\260_\320\261\320\270\320\273\320\265\321\202\321\213_\320\275\320\260_\320\272\320\276\320\275\321\206\320\265\321\200\321\202_tpl.json" new file mode 100644 index 0000000..508194c --- /dev/null +++ "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\262\321\200\320\260\321\202\320\265_\320\264\320\265\320\275\320\265\320\263_\320\267\320\260_\320\261\320\270\320\273\320\265\321\202\321\213_\320\275\320\260_\320\272\320\276\320\275\321\206\320\265\321\200\321\202_tpl.json" @@ -0,0 +1,178 @@ +{ + "template": "претензия_о_возврате_денег_за_билеты_на_концерт_tpl.docx", + "name": "Претензия о возврате денег за билеты на концерт", + "deleted": "False", + "description": "Этот шаблон поможет вам запросить возврат средств за приобретенные билеты на концерт, отмененный из-за определенных обстоятельств.", + "fields": [ + { + "tag": "АдресатОрганизация", + "name": "Наименование организации", + "hint": "ООО Ромашка", + "group": 1, + "type": "str40", + "length": 40 + }, + { + "tag": "АдресатАдрес", + "name": "Почтовый адрес", + "hint": "633104, Новосибирская обл., г. Обь, проспект Мозжерина, д. 10 офис 201", + "group": 1, + "type": "str", + "length": 100 + }, + { + "tag": "ОтправительФИОродПадеж", + "name": "ФИО (в родительном падеже)", + "hint": "Иванова Алексея Дмитриевича", + "group": 2, + "type": "fio", + "length": 40 + }, + { + "tag": "ОтправительАдрес", + "name": "Почтовый адрес", + "hint": "450045, Респ. Башкортостан, г. Уфа, ул. Ленина, 36, кв. 60", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "ОтправительТелефон", + "name": "Номер телефона", + "hint": "+79175678356", + "group": 2, + "type": "phone", + "length": 12 + }, + { + "tag": "ОтправительEmail", + "name": "Электронная почта", + "hint": "shablonizator@mail.ru", + "group": 2, + "type": "email", + "length": 40 + }, + { + "tag": "ДатаПокупкиБилета", + "name": "Дата покупки билета", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 40 + }, + { + "tag": "СайтПокупкиБилета", + "name": "Сайт покупки билета", + "hint": "www.afisha.yandex.ru", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "СтоимостьБилета", + "name": "Стоимость билета", + "hint": "В рублях, копейки через точку", + "group": 3, + "type": "currency", + "length": 40 + }, + { + "tag": "КомиссияСервиса", + "name": "Комиссия сервиса", + "hint": "В рублях, копейки через точку", + "group": 3, + "type": "currency", + "length": 40 + }, + { + "tag": "ПодтверждающиеДокументыТворПадеж", + "name": "Подтверждающие документы в творительном падеже", + "hint": "Чеком об оплате", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "НаименованиеКонцерта", + "name": "Наименование концерта", + "hint": "FEDUK", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "ОрганизаторКонцерта", + "name": "Организатор концерта", + "hint": "MusicToThe", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "НомерЗаказа", + "name": "Номер заказа", + "hint": "5657206541", + "group": 3, + "type": "int", + "length": 100 + }, + { + "tag": "НомерБилета", + "name": "Номер билета", + "hint": "БХ352647", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "ДатаПереносаКонцерта", + "name": "Дата переноса концерта", + "hint": "ДД.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 100 + }, + { + "tag": "ОжидаемыйСрокИсполненияТребований", + "name": "Ожидаемый срок исполнения требований", + "hint": "ДД.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 40 + }, + { + "tag": "СодержаниеПредъявляемыхТребований", + "name": "Соодержание предъявляемых требований", + "hint": "Возместить стоимость билета, включая комиссию сервиса", + "group": 4, + "type": "int", + "length": 40 + }, + { + "tag": "Документы", + "name": "Документы", + "hint": "Копия кассового чека", + "group": 4, + "type": "str", + "length": 100 + } + ], + "groups": [ + { + "id": 1, + "name": "Адресат" + }, + { + "id": 2, + "name": "Отправитель" + }, + { + "id": 3, + "name": "Данные о договоре" + }, + { + "id": 4, + "name": "Содержание претензии" + } + ] +} \ No newline at end of file diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\202\321\203\321\200\320\276\320\277\320\265\321\200\320\260\321\202\320\276\321\200\320\276\320\274_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\262_\321\201\320\262\321\217\320\267\320\270_\321\201_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\271_\321\200\320\265\320\271\321\201\320\260_tpl.docx" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\202\321\203\321\200\320\276\320\277\320\265\321\200\320\260\321\202\320\276\321\200\320\276\320\274_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\262_\321\201\320\262\321\217\320\267\320\270_\321\201_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\271_\321\200\320\265\320\271\321\201\320\260_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..88342f53965c6b3c96f799bba074c88f06f4632b GIT binary patch literal 17991 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 R0ND4xxOb&V=lkvH{{S+mC1C&n literal 0 HcmV?d00001 diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\202\321\203\321\200\320\276\320\277\320\265\321\200\320\260\321\202\320\276\321\200\320\276\320\274_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\262_\321\201\320\262\321\217\320\267\320\270_\321\201_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\271_\321\200\320\265\320\271\321\201\320\260_tpl.json" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\202\321\203\321\200\320\276\320\277\320\265\321\200\320\260\321\202\320\276\321\200\320\276\320\274_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\262_\321\201\320\262\321\217\320\267\320\270_\321\201_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\271_\321\200\320\265\320\271\321\201\320\260_tpl.json" new file mode 100644 index 0000000..e6b4d2a --- /dev/null +++ "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\202\321\203\321\200\320\276\320\277\320\265\321\200\320\260\321\202\320\276\321\200\320\276\320\274_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\262_\321\201\320\262\321\217\320\267\320\270_\321\201_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\271_\321\200\320\265\320\271\321\201\320\260_tpl.json" @@ -0,0 +1,218 @@ +{ + "template": "претензия_о_возмещении_туроператором_убытков_в_связи_с_задержкой_рейса_tpl.docx", + "name": "Претензия о возмещении туроператором убытков в связи с задержкой рейса", + "deleted": "False", + "description": "Этот шаблон поможет Вам официально выразить недовольство качеством полученных услуг и разрешить конфликты.", + "fields": [ + { + "tag": "АдресатОрганизация", + "name": "Наименование организации", + "hint": "ООО \"Ромашка\"", + "group": 1, + "type": "str40", + "length": 40 + }, + { + "tag": "АдресатАдрес", + "name": "Почтовый адрес", + "hint": "633104, Новосибирская обл., г. Обь, проспект Мозжерина, д. 10 офис 201", + "group": 1, + "type": "str", + "length": 100 + }, + { + "tag": "ОтправительФИОродПадеж", + "name": "ФИО (в родительном падеже)", + "hint": "Иванова Алексея Дмитриевича", + "group": 2, + "type": "fio", + "length": 40 + }, + { + "tag": "ОтправительАдрес", + "name": "Почтовый адрес", + "hint": "450045, Респ. Башкортостан, г. Уфа, ул. Ленина, 36, кв. 60", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "ОтправительТелефон", + "name": "Номер телефона", + "hint": "+79175678356", + "group": 2, + "type": "phone", + "length": 12 + }, + { + "tag": "ОтправительEmail", + "name": "Электронная почта", + "hint": "shablonizator@mail.ru", + "group": 2, + "type": "email", + "length": 40 + }, + { + "tag": "ДатаЗаключенияДоговора", + "name": "Дата заключения договора", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 40 + }, + { + "tag": "ПерваяСторонаФИОтворПадеж", + "name": "Первая сторона (ФИО в творительном падеже)", + "hint": "Ивановым Алексеем Дмитриевичем", + "group": 3, + "type": "str40", + "length": 40 + }, + { + "tag": "ВтораяСторонаФИОилиОргТворПадеж", + "name": "Подтверждающие документы (в творительном падеже)", + "hint": "ООО \"Ромашка\"", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "НомерДоговора", + "name": "Номер договора", + "hint": "12345", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "КоличествоДнейТура", + "name": "Количество дней тура", + "hint": "12", + "group": 3, + "type": "int", + "length": 100 + }, + { + "tag": "ДатаНачалаТура", + "name": "Дата начала тура", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 40 + }, + { + "tag": "ДатаОкончанияТура", + "name": "Дата окончания тура", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 40 + }, + { + "tag": "СтоимостьТура", + "name": "Стоимость тура", + "hint": "В рублях, копейки через точку", + "group": 3, + "type": "currency", + "length": 100 + }, + { + "tag": "ВремяЗадержкиРейса", + "name": "Подтверждающие документы", + "hint": "1 ч 30 мин", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "ФактическоеВремяВылетаРейса", + "name": "Фактическое время вылета рейса", + "hint": "2:35", + "group": 3, + "type": "time", + "length": 40 + }, + { + "tag": "ФактическоеДатаВылетаРейса", + "name": "Фактическая дата вылета рейса", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 40 + }, + { + "tag": "ПодтверждающиеДокументыТворительныйПадеж", + "name": "Подтверждающие документы", + "hint": "Справка об отмене рейса", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "ОтправительФИОдательныйПадеж", + "name": "ФИО (в дательном падеже)", + "hint": "Иванова Алексея Дмитриевича", + "group": 2, + "type": "fio", + "length": 40 + }, + { + "tag": "СуммаМатериальныхУбытков", + "name": "Сумма материальных убытков", + "hint": "В рублях, копейки через точку", + "group": 3, + "type": "currency", + "length": 100 + }, + { + "tag": "ДокументыПодтверждающиеУбыткиВтворительномПадеже", + "name": "Документы подтверждающие убытки (в творительном падеже)", + "hint": "Справкой о переносе рейса", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "ОжидаемыйСрокИсполненияТребований", + "name": "Ожидаемый срок исполнения требований", + "hint": "ДД.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 40 + }, + { + "tag": "СодержаниеПредъявляемыхТребований", + "name": "Содержание предъявляемых требований", + "hint": "Возместить стоимость авиабилета, материальные убытки", + "group": 4, + "type": "str", + "length": 100 + }, + { + "tag": "Документы", + "name": "Документы, прикладываемые к претензии", + "hint": "Копия договора, копия маршрутной квитанции и т.д.", + "group": 4, + "type": "str", + "length": 100 + } + ], + "groups": [ + { + "id": 1, + "name": "Адресат" + }, + { + "id": 2, + "name": "Отправитель" + }, + { + "id": 3, + "name": "Данные о договоре" + }, + { + "id": 4, + "name": "Содержание претензии" + } + ] +} \ No newline at end of file diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.docx" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..bf34b7c7faa6a01d99c2ebe80f6a5928ac4a41d9 GIT binary patch literal 18476 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 W`t+gk007*_U($!s1PK53-~Rz%82fwx literal 0 HcmV?d00001 diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.json" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.json" new file mode 100644 index 0000000..ecc7995 --- /dev/null +++ "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.json" @@ -0,0 +1,258 @@ +{ + "template": "претензия_о_возмещении_убытков_причиненных_задержкой_рейса_tpl.docx", + "name": "Претензия о возмещении убытков, причиненных задержкой рейса", + "deleted": "False", + "description": "Данный шаблон поможет вам запросить компенсацию за убытки, возникшие из-за задержки рейса, и защитить свои интересы в путешествиях.", + "fields": [ + { + "tag": "АдресатОрганизация", + "name": "Наименование организации", + "hint": "АО \"Авиакомпания \"Сибирь\"", + "group": 1, + "type": "str40", + "length": 40 + }, + { + "tag": "АдресатАдрес", + "name": "Почтовый адрес", + "hint": "633104, Новосибирская обл., г. Обь, проспект Мозжерина, д. 10 офис 201", + "group": 1, + "type": "str", + "length": 80 + }, + { + "tag": "ОтправительФИОродПадеж", + "name": "ФИО (в родительном падеже)", + "hint": "Иванова Алексея Дмитриевича", + "group": 2, + "type": "fio", + "length": 40 + }, + { + "tag": "ОтправительФИО", + "name": "ФИО (в именительном падеже)", + "hint": "Иванов Алексей Дмитриевич", + "group": 2, + "type": "fio", + "length": 40 + }, + { + "tag": "ОтправительАдрес", + "name": "Почтовый адрес", + "hint": "450045, Респ. Башкортостан, г. Уфа, ул. Ленина, 36, кв. 60", + "group": 2, + "type": "str", + "length": 80 + }, + { + "tag": "ОтправительТелефон", + "name": "Номер телефона", + "hint": "+79175678356", + "group": 2, + "type": "phone", + "length": 12 + }, + { + "tag": "ОтправительEmail", + "name": "Электронная почта", + "hint": "shablonizator@mail.ru", + "group": 2, + "type": "email", + "length": 40 + }, + { + "tag": "БилетыДата", + "name": "Дата заключения договора (приобретения авиабилетов)", + "hint": "ДД.ММ.ГГГГ (11.10.2023)", + "group": 3, + "type": "date", + "length": 40 + }, + { + "tag": "ЗаказчикФИО", + "name": "ФИО заказчика (в именительном падеже)", + "hint": "Иванов Алексей Дмитриевич", + "group": 3, + "type": "str40", + "length": 40 + }, + { + "tag": "НомерРейса", + "name": "Номер рейса (буквы и цифры)", + "hint": "S7 1122", + "group": 3, + "type": "str20", + "length": 20 + }, + { + "tag": "АдресОтправление", + "name": "Населенный пункт и регион отправления (в родительном падеже)", + "hint": "г. Уфы Республики Башкортостан", + "group": 3, + "type": "str", + "length": 80 + }, + { + "tag": "АдресПрибытие", + "name": "Населенный пункт и регион прибытия (в родительном падеже)", + "hint": "г. Домодедово Московской области", + "group": 3, + "type": "str", + "length": 80 + }, + { + "tag": "БилетСтоимость", + "name": "Стоимость приобретенных авиабилетов", + "hint": "16 789.00", + "group": 4, + "type": "currency", + "length": 40 + }, + { + "tag": "БилетНомер", + "name": "Номер маршрутной квитанции", + "hint": "3789995", + "group": 4, + "type": "int", + "length": 40 + }, + { + "tag": "БилетДата", + "name": "Дата приобретения авиабилета", + "hint": "ДД.ММ.ГГГГ (11.10.2023)", + "group": 4, + "type": "date", + "length": 40 + }, + { + "tag": "ВремяВылета", + "name": "Время вылета рейса в авиабилете", + "hint": "03 часов 45 минут", + "group": 4, + "type": "time", + "length": 40 + }, + { + "tag": "ДатаВылета", + "name": "Дата вылета рейса", + "hint": "ДД.ММ.ГГГГ (11.10.2023)", + "group": 4, + "type": "date", + "length": 40 + }, + { + "tag": "ФактическийВремя", + "name": "Фактическое время вылета рейса", + "hint": "03:45 (для 3 часа 45 минут)", + "group": 5, + "type": "time", + "length": 40 + }, + { + "tag": "ФактическийДата", + "name": "Фактическая дата вылета рейса", + "hint": "ДД.ММ.ГГГГ (11.10.2023)", + "group": 5, + "type": "date", + "length": 40 + }, + { + "tag": "ЗаказчикФИОродПадеж", + "name": "Время задержки рейса", + "hint": "3 часа", + "group": 5, + "type": "time", + "length": 40 + }, + { + "tag": "РейсЗадержка", + "name": "Время задержки рейса", + "hint": "3 часа", + "group": 5, + "type": "time", + "length": 40 + }, + { + "tag": "СуммаВыплаты", + "name": "Сумма штрафа, подлежащая уплате", + "hint": "3,25 руб", + "group": 5, + "type": "currency", + "length": 40 + }, + { + "tag": "СледРейс", + "name": "Номер рейса, на который произошло опоздание", + "hint": "S7 1122", + "group": 3, + "type": "str20", + "length": 20 + }, + { + "tag": "СледАвиа", + "name": "Наименование организации, на рейс которой произошло опоздание", + "hint": "АО \"Авиакомпания \"Аеро\"", + "group": 1, + "type": "str40", + "length": 40 + }, + { + "tag": "СледНомер", + "name": "Номер маршрутной квитанции", + "hint": "3,25 руб", + "group": 5, + "type": "currency", + "length": 40 + }, + { + "tag": "СледСумма", + "name": "Стоимость неиспользованных авиабилетов", + "hint": "3,25 руб", + "group": 5, + "type": "currency", + "length": 40 + }, + { + "tag": "СледДата", + "name": "Дата приобретения авиабилета", + "hint": "3,25 руб", + "group": 5, + "type": "currency", + "length": 40 + }, + { + "tag": "Документы", + "name": "Документы, прикладываемые к претензии", + "hint": "Прикрепите имеющиеся документы", + "group": 5, + "type": "str", + "length": 40 + } + ], + "groups": [ + { + "id": 1, + "name": "Адресат" + }, + { + "id": 2, + "name": "Отправитель" + }, + { + "id": 3, + "name": "Данные о рейсе" + }, + { + "id": 4, + "name": "Авиабилеты" + }, + { + "id": 5, + "name": "Изменения в рейсе" + }, + { + "id": 6, + "name": "Данные следующего рейса" + } + ] +} \ No newline at end of file diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\321\211\320\265\321\200\320\261\320\260_\321\201\320\260\320\273\320\276\320\275\320\276\320\274_\320\272\321\200\320\260\321\201\320\276\321\202\321\213_tpl.docx" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\321\211\320\265\321\200\320\261\320\260_\321\201\320\260\320\273\320\276\320\275\320\276\320\274_\320\272\321\200\320\260\321\201\320\276\321\202\321\213_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..bfae0a8355cdccbe335affb0df2481ab0be1dfc4 GIT binary patch literal 17601 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 literal 0 HcmV?d00001 diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\321\211\320\265\321\200\320\261\320\260_\321\201\320\260\320\273\320\276\320\275\320\276\320\274_\320\272\321\200\320\260\321\201\320\276\321\202\321\213_tpl.json" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\321\211\320\265\321\200\320\261\320\260_\321\201\320\260\320\273\320\276\320\275\320\276\320\274_\320\272\321\200\320\260\321\201\320\276\321\202\321\213_tpl.json" new file mode 100644 index 0000000..bd3c921 --- /dev/null +++ "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\321\211\320\265\321\200\320\261\320\260_\321\201\320\260\320\273\320\276\320\275\320\276\320\274_\320\272\321\200\320\260\321\201\320\276\321\202\321\213_tpl.json" @@ -0,0 +1,198 @@ +{ + "template": "претензия_о_возмещении_ущерба_салоном_красоты_tpl.docx", + "name": "Претензия о возмещении ущерба салоном красоты", + "deleted": "False", + "description": "Этот шаблон поможет вам запросить компенсацию за ущерб, причиненный в салоне красоты, и защитить свои права как клиента", + "fields": [ + { + "tag": "НаименованиеОрганизацииИлиФИОИсполнителя ", + "name": "Наименование организации или ФИО исполнителя (в дательном падеже)", + "hint": "ООО \"Ромашка\"", + "group": 1, + "type": "str40", + "length": 40 + }, + { + "tag": "ПочтовыйАдрес", + "name": "Почтовый адрес", + "hint": "633104, Новосибирская обл., г. Обь, проспект Мозжерина, д. 10 офис 201", + "group": 1, + "type": "str", + "length": 100 + }, + { + "tag": "ФИОВРодПад", + "name": "ФИО (в родительном падеже)", + "hint": "Ивановой Марии Дмитриевны", + "group": 2, + "type": "fio", + "length": 40 + }, + { + "tag": "ОтправительАдрес", + "name": "Почтовый адрес", + "hint": "450045, Респ. Башкортостан, г. Уфа, ул. Ленина, 36, кв. 60", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "Телефон", + "name": "Телефон", + "hint": "+79175678356", + "group": 2, + "type": "phone", + "length": 15 + }, + { + "tag": "ЭлектроннаяПочта", + "name": "Электронная почта", + "hint": "shablonizator@mail.ru", + "group": 2, + "type": "email", + "length": 50 + }, + { + "tag": "ДатаПосещенияСалона", + "name": "Дата посещения салона", + "hint": "ЧЧ.ММ.ГГГГ (10.02.2023)", + "group": 3, + "type": "date", + "length": 10 + }, + { + "tag": "НаименованиеСалонаКрасоты", + "name": "Наименование салона красоты", + "hint": "Монэ", + "group": 3, + "type": "str40", + "length": 40 + }, + { + "tag": "НаименованиеОказаннойУслуги", + "name": "Наименование оказанной услуги", + "hint": "Окрашивание волос, маникюр", + "group": 3, + "type": "str40", + "length": 50 + }, + { + "tag": "СтоимостьУслуги", + "name": "Стоимость услуги", + "hint": "В рублях, копейки через точку", + "group": 3, + "type": "currency", + "length": 10 + }, + { + "tag": "ПодтверждающиеДокументы", + "name": "Подтверждающие документы (в творительном падеже)", + "hint": "Чеком об оплате", + "group": 3, + "type": "str40", + "length": 70 + }, + { + "tag": "ФИОМастера", + "name": "ФИО мастера", + "hint": "Петрова Дарья Леонидовна", + "group": 3, + "type": "fio", + "length": 40 + }, + { + "tag": "СутьПретензии", + "name": "Суть претензии", + "hint": "Цвет волос не соответствовал запрошенному и гарантированному парикмахером перед началом процедуры окрашивания", + "group": 4, + "type": "str", + "length": 100 + }, + { + "tag": "СтатусИсполненияОбязательств", + "name": "Статус исполнения обязательств", + "hint": "Не исполнены в установленный договором срок, исполнены частично", + "group": 4, + "type": "str40", + "length": 40 + }, + { + "tag": "ФИОЗаказчика", + "name": "ФИО заказчика", + "hint": "Иванова Мария Дмитриевна", + "group": 4, + "type": "fio", + "length": 40 + }, + { + "tag": "СуммаМатериальныхУбытков", + "name": "Сумма материальных убытков", + "hint": "В рублях, копейки через точку", + "group": 4, + "type": "currency", + "length": 12 + }, + { + "tag": "ОжидаемыйCрокИсполненияТребований", + "name": "Ожидаемый срок исполнения требований", + "hint": "ЧЧ.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 10 + }, + { + "tag": "СодержаниеПредъявляемыхТребований", + "name": "Содержание предъявляемых требований", + "hint": "Вернуть сумму за оказанные услуги, возместить расходы", + "group": 4, + "type": "str", + "length": 100 + }, + { + "tag": "ДокументыПрикладываемыеКПретензии", + "name": "Документы, прикладываемые к претензии", + "hint": "Копия чека об оплате", + "group": 4, + "type": "str", + "length": 100 + }, + { + "tag": "Дата", + "name": "Дата", + "hint": "ЧЧ.ММ.ГГГГ", + "group": 5, + "type": "date", + "length": 10 + }, + { + "tag": "ФИО", + "name": "ФИО Заказчика (в именительном падеже)", + "hint": "Иванова М.Д.", + "group": 5, + "type": "fio", + "length": 40 + } + ], + "groups": [ + { + "id": 1, + "name": "Адресат" + }, + { + "id": 2, + "name": "Отправитель" + }, + { + "id": 3, + "name": "Данные о договоре" + }, + { + "id": 4, + "name": "Содержание претензии" + }, + { + "id": 5, + "name": "Подтверждение претензии" + } + ] +} \ No newline at end of file diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\275\320\260\321\200\321\203\321\210\320\265\320\275\320\270\320\270_\321\201\321\200\320\276\320\272\320\276\320\262_\320\276\320\272\320\260\320\267\320\260\320\275\320\270\321\217_\321\203\321\201\320\273\321\203\320\263_\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217_\321\200\320\260\320\261\320\276\321\202_tpl.docx" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\275\320\260\321\200\321\203\321\210\320\265\320\275\320\270\320\270_\321\201\321\200\320\276\320\272\320\276\320\262_\320\276\320\272\320\260\320\267\320\260\320\275\320\270\321\217_\321\203\321\201\320\273\321\203\320\263_\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217_\321\200\320\260\320\261\320\276\321\202_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..5631da2b3ed3ca1e37cc6377d5452893fcdb9255 GIT binary patch literal 17456 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 literal 0 HcmV?d00001 diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\275\320\265\320\264\320\276\321\201\321\202\320\260\321\202\320\272\320\260\321\205_\320\276\320\272\320\260\320\267\320\260\320\275\320\275\321\213\321\205_\321\203\321\201\320\273\321\203\320\263_\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205_\321\200\320\260\320\261\320\276\321\202_tpl.json" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\275\320\265\320\264\320\276\321\201\321\202\320\260\321\202\320\272\320\260\321\205_\320\276\320\272\320\260\320\267\320\260\320\275\320\275\321\213\321\205_\321\203\321\201\320\273\321\203\320\263_\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205_\321\200\320\260\320\261\320\276\321\202_tpl.json" new file mode 100644 index 0000000..1e5a767 --- /dev/null +++ "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\275\320\265\320\264\320\276\321\201\321\202\320\260\321\202\320\272\320\260\321\205_\320\276\320\272\320\260\320\267\320\260\320\275\320\275\321\213\321\205_\321\203\321\201\320\273\321\203\320\263_\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205_\321\200\320\260\320\261\320\276\321\202_tpl.json" @@ -0,0 +1,178 @@ +{ + "template": "претензия_о_недостатках_оказанных_услуг_выполненных_работ_tpl.docx", + "name": "Претензия о недостатках оказанных услуг (выполненных работ)", + "deleted": "False", + "description": "Этот шаблон поможет Вам официально выразить недовольство качеством полученных услуг и разрешить конфликты.", + "fields": [ + { + "tag": "АдресатОрганизация", + "name": "Наименование организации", + "hint": "ООО \"Ромашка\"", + "group": 1, + "type": "str40", + "length": 40 + }, + { + "tag": "АдресатАдрес", + "name": "Почтовый адрес", + "hint": "633104, Новосибирская обл., г. Обь, проспект Мозжерина, д. 10 офис 201", + "group": 1, + "type": "str", + "length": 100 + }, + { + "tag": "ОтправительФИОродПадеж", + "name": "ФИО (в родительном падеже)", + "hint": "Иванова Алексея Дмитриевича", + "group": 2, + "type": "fio", + "length": 40 + }, + { + "tag": "ОтправительАдрес", + "name": "Почтовый адрес", + "hint": "450045, Респ. Башкортостан, г. Уфа, ул. Ленина, 36, кв. 60", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "ОтправительТелефон", + "name": "Номер телефона", + "hint": "+79175678356", + "group": 2, + "type": "phone", + "length": 12 + }, + { + "tag": "ОтправительEmail", + "name": "Электронная почта", + "hint": "shablonizator@mail.ru", + "group": 2, + "type": "email", + "length": 40 + }, + { + "tag": "ДатаЗаключенияДоговора", + "name": "Дата заключения договора", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 40 + }, + { + "tag": "ПерваяСторонаФИОтворПадеж", + "name": "Первая сторона (ФИО в творительном падеже)", + "hint": "Ивановым Алексеем Дмитриевичем", + "group": 3, + "type": "str40", + "length": 40 + }, + { + "tag": "ВтораяСторонаФИОилиОргТворПадеж", + "name": "Подтверждающие документы (в творительном падеже)", + "hint": "ФИО или ООО \"Ромашка\"", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "НомерДоговора", + "name": "Номер договора", + "hint": "№ 12345", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "ОбязательствоИсполнителя", + "name": "Обязательство исполнителя", + "hint": "Обеспечить качество и своевременность оказания услуг", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "СуммаОказанныхУслуг", + "name": "Стоимость услуг (работ)", + "hint": "В рублях, копейки через точку", + "group": 3, + "type": "currency", + "length": 100 + }, + { + "tag": "ПодтверждающиеДокументыТворительныйПадеж", + "name": "Подтверждающие документы", + "hint": "Квитанция или чек об оплате и т.д.", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "ДатаПодтверждающегоДокумента", + "name": "Дата подтверждающего документа", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 40 + }, + { + "tag": "ДатаОбнаруженияНедостатков", + "name": "Дата обнаружения недостатков", + "hint": "ДД.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 100 + }, + { + "tag": "НедостаткиОказанныхУслуг", + "name": "Недостатки оказанных услуг", + "hint": "Не соответствуют указанным в договоре требованиям", + "group": 3, + "type": "str", + "length": 250 + }, + { + "tag": "СодержаниеПредъявляемыхТребований", + "name": "Безвозмездно устранить выявленные недостатки, возместить ущерб", + "hint": "Не соответствуют указанным в договоре требованиям", + "group": 4, + "type": "str", + "length": 100 + }, + { + "tag": "ОжидаемыйСрокИсполненияТребований", + "name": "Ожидаемый срок исполнения требований", + "hint": "ДД.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 40 + }, + { + "tag": "Документы", + "name": "Документы, прикладываемые к претензии", + "hint": "Копия договора, копия квитанции об оплате и т.д.", + "group": 4, + "type": "str", + "length": 100 + } + ], + "groups": [ + { + "id": 1, + "name": "Адресат" + }, + { + "id": 2, + "name": "Отправитель" + }, + { + "id": 3, + "name": "Данные о договоре" + }, + { + "id": 4, + "name": "Содержание претензии" + } + ] +} \ No newline at end of file diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\277\321\200\320\276\320\264\320\260\320\266\320\265_\321\202\320\276\320\262\320\260\321\200\320\260_\320\275\320\265\320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260_tpl.docx" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\277\321\200\320\276\320\264\320\260\320\266\320\265_\321\202\320\276\320\262\320\260\321\200\320\260_\320\275\320\265\320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..e5ffc8f258d96c361ed05b445c1b410b4528c59f GIT binary patch literal 18157 zcmeIaWpo_LwkBF)vRJank}Q@iW@eTwW@ct)28)@QS+>ApW@ct)W{Y2S&po%hea^gD z^LuWrl@*m4@$IaP*gIoWl&mBeI2r&F01W^D2mrgppn1 z*bNszR+I(`B^*#{b?l8S9cXF(`1~Jf{eM_Q|Mut=aa}-Z{lIq-@ES1HCb!&$nJ-Oi zFu8)c1O=@j{uOm)(R|_Um1}VkRO?7jbYyxae$w3`L&Rw_LF*DbNeMoz4QBpPyGP@> z)fJE!)LKaII&ZuEA$|Ye_;r{_oMJd2Tn#;J0vj^+S4hfOC+gl8q5HjJI5R?uiCF{U z+Wag#rG?F%1u>GH&7aVBF?$EN@t2-s)sV>X_*6^%|{S#pC!!hDdXY zJ1T5TI$Dy9Sp5oE?90}vWB2@y;=a%zDwtfDP}*ltV@(wGw}Y^KEMAri0=1tyTQ)cu zTKqS_wd>#I!%^?;t1mnN0ILoFAOi=*#m3%{*3ibl$qKl%{jsK_Sxgc`+4QD<@&f%n8?sfh|o}G zWs-wKsQ*Eti2?U@V)ysLYSSf>s=A_JP;^ds*1lx4!N5srLbfu+e z%5(gt`s4yX%Mc{ud*qJ0S7&V#YBCeX5k<{f%Pr)0tSR`hf3^|3@@+D2! zm1Z;36R$CmX-=}5Ox24TM3`n2!Xm7btP!dS)6nI~qYj{oYko5Iv(p_=3{;7IbRMEk*_-SR?~%_R_b05mCL~o3OTt#6 zHhE%7);>SNB^dtL<()*kr}MLSSm!H!{J9{}XXNoi6PPQHvP3kPph_G>lC%(8MlTK| z;m<4lx?fCgk1o+8&BTckE!4;lQ@qlG^N4LYZ}m@#GB)utJ8PO zxjpJuwQVmZ+J~pP(V44gNSB1!>H^eJ-sIvP5$jVBVckaBI3JRB;^{PH0Ow&`Q)<@Or;&Ucw- zF{H_ST`9fNj&;q-zdF?ychtD<)B+36H|>5K#))BBE>9)=WB^a{ycUjT_)W#iA)` z;Bz`IUnm&%kHHXL;(%@GIOlBV#wt2?2X>sgo{s%l?x8T)VKn0JZgaM5mS{icYYZBL zYxRluUu|B!d{`GV=3KErJ-3L5-u1x~xGB7Dnt37TCnTrsTSXhbr9!Y zMJ_{i;8L`4>a?_rY9baxcNf_^<@qq3R55nV6gc=z~x zTt$tFRDXDFe)oMko_+f@20oFh!A_?>zBcu}CIt^?Axn&>k7e-Hxi`4FzG5`uV=tVJv02plkh&UrY8)DC2lQEsNy;QqdqRJ3n{GC zIX$HoOUXOk8zZ|nzw-y|on4T}M5lWJjW@(gF@}iJp$cR?D64M?taxIhXZ$@=VB$CF zCY?tJ89#_s-2nqOd74y`L%dn`NZg^ETi;^{W6#0U6If#w`}Jc57(Y_99`|*iy@}c_ zEG*KzQO*WN#AsQ>_tca6v(*G>n|sbs`@Z;#_%9Z~yESBw{raFtFIyczf^-&#L&9dK zv_F~S$Yq^RyM03&c&ta|<9!RxK8yF@K_T^>iJ+r5tBU}KYrKlezc)0YlOaf;S{&I*VC71#b!|i?zo&+-5sWE>yi(R$#G4M z)8F@1V&U=qNyfk-(z3HEQDsQdm+DR3$WYB*&zc&yFb0 znJ{BEdmkh7ZGLEt%h<&snUrDu#1PDW2RU)G8TxiH= z@FIL(flr(BaHLy1v3+kU%lY!Sf`mD;^eBPW<{5{=$_@O`Ycv=AV6@_ z7iaefU~C9K4V;A;VDLd-NLlw=?V=Q7W^KPk>QXk_$2QGSyVwT6TR%}%(0WuwDmkyF#XdiCLEcC4@P8AckdCyAS^ca+5Cn}(!t9QVzxw2ooQ*UPgQian z4VIlot{WScMaFm;k0VaaSUKbXLxXAl_V6aNO#6P*0EIR}JMmM8_q8DjSEhJ?p@NXw zizjuQl#!89&3@jhMP~I^zDNN70p@tl%A~i}J4a1-*B$dTbLpwtry~K9MySPVDq%fz zrFbzVTUu;Bcw1*N#VgF*)#ybIJsJCWP$nWW!Oz&7bsr*M*)QBMA>n$a@sRz#rSxHJ z2|^$#2Xa<#M{cg4Zsj#8Qb<&)Q=V;f=d_o1ax|2R9`(SGZRY~)o|e6Dmpgo^LrBmjA)4!;V3kR2 z)R7H$o)M4A=4yT6-uPEX-mLX`q}&@Cq`19F!O>)8pYS$l<1ka1-g|I1bmG7+_aDBn zM-Uq#w^tz0Ef|+W1VdQoQ7|r-uWZXgo~>Q%<4GaCLBZmz6L}$FB&h(w2}YZj4Q5A0 zRgd1w<<50dG25Jz9T?5^!K|MUtjD)kqoTMN%IZA+s20kk6hZcgkjSkei)sL@D3trs zoA6DZ{fJ>loIQwTvva|z1P7)V_Y%T12{xm!`B#uI{^`QqErC7gIP2NzrX-@UgKf$5 z7-AUoXXf@U@z6|iwl6Nc!%D;JL(L_o&Lgu>V}YWDBc$B&imqiNDZF%eeOL*y3W8k6 zUprq37rS{v2vNAutWtSJ*6^aemoavrzBp!iHabKeVd)(qh!+wJ+jD-n93&0+39*-Z zA-oqoH5eV&LkAu5!bPq^WvGPwdJr>J)q}hO+d@{I*`-V;c}jr{hO{SpZ}Dl?k$TtG zPtK9jU@MJ~vqWpFb5Z%|qdi%qx_OnbXNj=O8hj{X^{dtAC4&L79=m&Y`?;8C*v4P& z4E;8p5Di;#7P(wI)fFArAfku*oLL7jCtz20myEd+Hhn>IqBN^Dj*8gUplD`}|i#+`Op=#_>6ZWS@fE#QH6U^lFU81V+xzdOY&+H_vUP0 zP+r<3GT!o$uwZS0+Q%2as(hS;Ar)cgxo^)NQ!BYmJR# z`PnP=g*?dO@36tr8h9TPeP+yt>e~kQ?E7{k)%2)nJ9H@4Kg-D{!>tW+5Irk?R)pR1 zRCZJB!t+7n^-eK=4Y_%-0UBffZmuotLucUt4LKoj0N@h<8stxN?SJ_+{%*AW%fA5v z^hN@E|G!--;>V8v)Wd$fvUd5wZR(FZK75Ab5LTx+xlI?uy2 zbeAT#NY;y}(m!QOty9iAlKOLEtNVZ?iE9wRu+7FkfOzw~5g2kkYG+Kp4+o@B(N_pC z9BQ9UJzYtE%Kr%-8yGm~Au8ha>nAc{7-=GFp!t>fJb{@+K1KYqGfSGBx_=`g%vIzw zEAh2L%IidGBe*?=qv)I5r$i!9-lf-DjQ_-3vhI=BPeAYX%Vz)p9mq3(GMA&Nk(Ckc zpP%%9`UBK7!f{y9ylHQFKir)EV%d=lK|QU`T(L%}Nl)N1w{jDyHZ~-7V=V#~xSmZ; z5>S7dFOE{biqrBc(Bl*+G=wCVw3)=&)6MO2|N1bVGsDnL@65-8 zTr4*dS&)%I^RW*Q9Lv^6%I4REyh9&1xu<70I0bSTX;v-&WiE`KF!Y3&9I{SyGgpG!yNictgy<|hZXS-8SG=Fu-4A5y&TKU0 zwDhPTd*eKL)EG&4H33?lqRj}x0^LF*)JMDxuJ>QU;#d3d@T{*;v))?_NVhx%Anjgh|+@xaf=i6b7zX3x?^!~|#p$khyl)(Uq+ zgWCC{km@!nQrt-@{rbU^Wo?F-KZChfFq7-2iX;E>iGI_NP~)6r@_7IAL^hY3^ZQlp zGcT{l<>t~W{=UVJ5iLIPl;r1=6`6N$$BDVDKH#vV1V9hAP8KLpus8*TS(9HyM7Jg%f z=YpH-wX)n5mh3SDlL4l$fF-n;;}+>ZA{T;6h08q9kEzjXjjX@ul>UJY)si?ui@pI9P-fU5O_=6O22E35f7kcJVS3D__u*wLzuQ!9# z#6&nlnOOLkkQgXjxcb8x>qu~V@lC@fkZU6`#;4XBMYW4U_Tv34yC3zbqEBn=kaAu1 z_rAuFN4JspBjpV?^%o?9Gs=V<2jI)rOs%oPu&lmb*Ls0X$8ht_jwY-`fgA6;WlSM= zv+P;n;ZW3%g)(z+%uGU`QAbd4@Cim_;$T?0vd~**#kQmID>wOC)i(u>sw%yL!<`=L z4{WOvM#QXj5v+8Yc+|(a8k2`2ZxlQZFMdeH({!q4);`j;ERgS>%dLxV{GxB*gHxv+ z9)ql0Mtge2u@n5Ry%*s(diMS~Kt}@-<(YED7(>p$k4o1WSrMz=5sonUnGxA3X<5eGUvHM-Ho>(yWz1=C9jUzJbNr5fkTNOe8M z)?f3A!i$EOKRkp$xXaIE%rd<{ry0+<@st`$e@Ts(=%=~<_$9T%bt*dWBck`uq+f~I zppnppoc1DDNs~q~zM6EWJvry5BqQHs zEMvn^)N~eRUEPKXhVtVvqlGjMuhye}V+#n8tQ>Aqw2OPwS!ag`6X z_TW=zYWY)+u`emL3pj6X4wejGwrncg6rEWU7(45&&kz+VjUh%TdC*a*<2!w93THwu z(uo`EB=L^&_t`nT4LSR<=@t|A*F+ZvyvR#FYs{f$y5uj_MUmqoFgFkt(%NYt(%FWo>^2Q)t&gMj=!#Hcp#78TMO>G-gJ$3@lOEwzu8^TlC@n<~VmSa&$DaHgWi4q5P@5 zVY9-5etcS<7MiclBMt$<>LxBv(#vM5-Ad4j=IRrL}tPA91^Y!jW zN9&3SHV&A1GZdPpNks~{hJoSy#fg46)-;BIK7uX@njob1T+u{~dxeoIG-)gWdv5Qi zrz_nUNb1NG@Vad^Nn{3j@?2q~3USi1FtkQ5S2(Arjs9I_H0GXFwrH;)ir&wS>nNq% zIL~S&$2Z2Pdf2?H=JbLhzF_#!w}Y zxer>pbkI*9eX&vIhChQPr6#4wFMNazL$+a((9BIsV;)u!5u02l2zg_$h6$sVFQHSd zB>vLrOxh^t@7^Z=LNWS5-Opdbidxg)P`SKl$QMHN!~IQ#9hESQmTvZ3SVp$1#b&E$ zzC!W_2g)QGI>puUzMT;Q8tvy_=#T!ztuL|`g1%FA(eFrI(V(5H?r+d!9Xw*KorAM6 zMXdJw()#?Nnka>V%?Bik-RbN^NF}uzY?BSZ;@TF^f)Z6LgB+oFi1L?G#=t7En9&M+D%%>b;)HuHGlwT0mPR$Wo zzcy&A85d9K4F9k^x>q%z7o<`Fze{q~zN-}Zj%Ne?;2M=Xwy9vKbb$Av2XgX*T(d8+ zd#9FbQlij^hGrA97Gd3ys|Ng?7R7BWqA1NuP}P%Qs5;A`Ho;Otfl6pxK^^fb7t;P- z^SH`-n4kfdpSia8Dn)WJ4fpeCCvr>qtFLA$o0ihIY@UWfp}FBC5N$$=bn{`>DdHT% zTIN`40GJJl=X_(bCu)Q0X;ov_D%_XTalRHU$C||v>Dyp!mQ%yfWRgtFU88*IBzHA) zBaK6RSoH@Yw0a$NHxhDm56yL_UvP5q;BCSv8!T;j!;(z?^^Yg(G(9qOthVAGJgFt* z8Ey>+#4^-xl+*J9O2!zq!qto(GjfF>A1Uuf7ZZQ6Rxe^HB9RZw`R%QlK32kHpuk)4 zb)zu|xShIu6Bbtv+g_LMDZtg}>9hSvZ4A%F(VY+ZmbN}RaM|)y2jHxZw zxaiE|7+X}4o&BAR2lDH{)m;ZrUH*4#P1ad!+#G0s5d(wIr~q<+fs=!yjg_jEC9RpG zk=38-^yfTc0C^5j;r>6Agjh+3WjeH=_b|~F>FP1g55e@ClSyoRAUH|bl1Yi`&1J-> z@jCbeM+O|3G|jWz2Y6nhY2y}h94ck-P*|Tkb_l)=e}GP=;w#>H9iX?5=!@G#A%>rf z#AeEt!uq-h%TQYp0b%!X4_3poDu+H_8kJ%!klz>9Vy@Szb{=99nv}Anv#1B4D$a=o zjq$2F+3~_Fl~ZE*^V84HdUo@DfvlSd78MnLi4$jTn?rMT{gumff69Oii5o!W%F9NG zjpvYu6n@>yF5=mHF0*2s>X?#7CS#~oVLAq^fkrg=z*My-@wNj!bhZ2E1w=XK{+59^ z(0hJgV?9ra7Q)A$oV`=~_6@e#^XYR>ryHppYXhu4pWGXMm0v%7iG}^{46SFQM7GY* zp$UC*K5L82jaH#v)N*)O`vv_u)|*}@*ey&cdc7S{>>}OsYMhH;MNqysfBlB#1WMuI z$8oLm{lrB^8*q~TeF}pt?1ndibCUp^M$CVkLRotoTZjL0u$3A%UL}fhhDwZRp855mcq}bK_=64kBiGe>nJfbo8u?`mZr@ejSrJFZsX@B zr+ex&Q~SF<6ec(h1e(5JH%L|XpO_Cj*4{@`=oU4dDf6=pQ!8!aXr9dD&sc$D^zWnh zQ490d7`RAgAOQdAbhHsd13D(5HVr)8&n5>RWWDiBCOp)7gp z3ghZ}41FV{9L_F0;0V{<8fWi8B&f5*+|Qr?b7h$@HX>2xk|tZkZk>3%9&v|MSa7Vm zbDmYe%_m0g#$A7bLi|2hS#s@#$3(~j*;t675cip{WEJ!=RSO_tj*5ag-qY!HAPHn_ zH}PrR#rNt}jbR<;+mW}85kJy61RR%quo!ksrRWv<#{D`|$01A@NZb^*9Lc2+i zrbt;&c2ypW)k3Dh zJ@438-q1WVFU)oweipwH{A7Oc!>bs6`$j^+OSW$V>)^#AhsIlpiD4USCcHeFbf2%( z3UX7fQ*IX4;cAi^(AhrsfYBHu!B?O?Kg;3nJ`Fkj@EJZ7Vm=vPk7J~K{8e7>>NA}u zv%-fU@qlPny7c9)(*c)@Esh#LtlX2Yu_mouOE1&|cNuxCjBR^V!Z#J6_?+uhj{f$< zD=8p(>F$*RlH5zwCPx~JL{=QA5zs;C>Z0RU-?5(eqtf1VO3ueFv3 z%x1ZgBHF<&l{F$g4J+iYPM@)C!mUlbqW(CcdgS8HW1xKz(ZqkLH#`n^{{(FvH#vWjJwrM8 z#Y?B^Ab7xktt3GA9mV^DyU9X$9>@~)$SbHb=EKK|J9s3n_88pmH)rUV__zzhZ} zDYxV2i&*lO@sdjf$F#2Y@|Kz4q8K$jPClH0UE*DB22i%QAe9AbeLo)4lAx}q$m+E_ z`sq=X>-UQ9?|J{DRBDf2KffXX0NCLG0OG%-(!tTq(&$gcbysW6ex(t;{o?C}Uw-*L zp~c9x4#UZsU50DC+4fz(v;%x>Oc1kp39-?VM}t@B`U4EdnPXAB^aEA~>lc7OT8W@6 z*JqZq`c!ekST20Oo6HLURKXx^N4w1SW|T4e&e4$ROW!$pj@ckl(t1Y3x=uDPJ064^ z|8z(%S0PzGR9bZV+wnrjll>hPEuMZF6zJ!%Y?7@ZQ*E?x6HZPywqlr}j!n3Y(I@hR`vubu@@B*}w@CsEfhImafP`w)b=;&6Bag9J7*--B+GVboSR3rq zCg2{>sV8<}hdF?4AgY?iM%BIbX`YRW!FCnf0I-V&WhYxlF zCHHyt6S?l=57WvQ885VNJ|v(l+gorPL?exZdkd!wGdg#ycN^?7;asZRL~etNLx*W3 zg#EOKUt9-J2?g};BH~)v#<0xR*m+~D`FbE0HN+~1c|o7BKWTG5N! zlvyoZ54Aju70sp>QK1}=Eyb5Bm^J2mD8Jdd2~-?V@|FFRf=aJ^qzMi6aiQx0P84V9R;k>Mkm||lSFRY(FnQV`PPCB zeQ&e5pQ2MGaYQ+3yy6?GFjjh94y& z?^h_n!|Q54nV*_0?e0s#n2r|$l^-PJwSh+MjqGrs5ziOMdKBYQ) z3KB}_cYsWn-^Wnv+DlTz$dQjFC3wtO_3GD8Rmk7`wFpn&f#14SZ;I*qv>kRzQoaN% zjVine4dw=E76yiqr`0UObp+8ym1k82h1j({!r&O@q+2G0qGGGg&mT)0n>=MJ@sBT< zm>G}uu_8CS6p{Nwde~#}8^gbD_gH}^Hh-KjE!%cz)ezD+Z;6=$%IkL}}%fg3!lGS03(a2wD6wz)izqD=Idwos15j@o8?WZx)= zW7^)UwBr`15_ur5%e-zI+J-)3$jI<*e@^@2pDlLqLNeeWPG9y zH%vnbVmvnil$ozd473I%-OspQDfV%~-jg(p>g#d}vN9nm#A*rg2#CulZgwQs(chM0 zx}Uj+QZzBHNy;o}b^B}d+B3XmdbUc>{h_p#gWI(}n!n0PIVINdHg3%XLats?`0Fct zKxFXdcB}_sZLNi8)5+ux7tdlmAyG8p(pjs#^n7q}y(+$P9j#qrxIgHGolJ+KS&j}TrTl+|rd0UoBngH2Xf8wS(+TNDV(3kxoo z<*zmll9XZ!Uyyyu@m7TQtnb&Dy6xLv{T{;@A%K_AQhux|%C^z*Md$fo8mrNF_mfK5z!-h&f+gWs8r$`f+_WbYU zWsw>(E9hc%MjFs~PQr46U%JdNhsz;iGQHEPR~}HK*YNTQIblVlofFoZYXlu(PI21| z>5#J;pZ5V>it0Q65;0&w+` zJsJ45AlNfIfuMUDV8b8BUyXm=76v`#xBG<$fd&3wqfxGP;wA37Wh zaqh-nC>mgxj}VpWhNI@*8=xoHJK)uQT-oIAM0k-{BC%8?XOl*bNxwIffI4m6tkjf)Iqr`B`Ldm<|5o|24kH0thKc86TD~BTV-0Qxx!ik zxd)l(R5{Vo^f(i6=46dk%hrO-MLXr; zkuypl>CP1e$xX@#fGu?N`lZ3pz}EO$+^$e_z>YL?pnVaxK$9H&HwLOXBoIkvp-y>j zTfX}4Mg{oXjM89PYsH=++$8f5-$HCcT_9Lm5e(A>NQ`j~X*kkcmL&gAf&`$zE}KHk zzIMgf0_;F&bBS^}IeeMi2b}#z@f5ufoEUgPO?#FPxMd_g%hl=(NT13{29^5QzpFF+ z?;oVmyfo6>C3hLQN^z%*gmMme9&fH$H!IHkUA;yjvOH)EYg)pcL{NZ+U@?^k{L()JJ=J~+<(>l3-(NX?alp4J~0+9TEY5s?>VwQ!1-`lBj&j*vre9A2PU9#5uBcESnb4I{m7 z5m>V}l$g+x*}8x-w8x@CcA=43VUu=vX2>oydp!MmyX&fPY*8Foc)j^m+D=+TCdzp( zl8*7QN=rPU^;ME}`?(4*u?+G_9YG zP0W{z_*yy-k_PrPUdj%rS6<9*j0lR?w5S6eiuwiFtvnw{TT}WAFZ#YMeDSKhZIKv( z6nWq%>3w6w9 z_|UM1@d!(EaewtVJ+I_m6?2c$gI+q;_tkpt9)bX<{pR<+L$iWcgn?5*7p}LXE81uu zkC&sX?ClGkzK!TE@6Rl6l9q3acqVhOk?bIIuQk%2-W@Kk+6&dzZru$lSw0uX*+U5Q zbu3$ZZMgj4vnFp3sAbIBPrhPkAnu7=(=eTE)~pWsvCDYGuwHQnK|kU@GGH`?L0joT z!}1`s5q{qh#v_D?MMRx)snY0)YITMjMkvCJYut74nmkiJHZ8U=l26NtG?7^rW z7W_EiFiy{4amo@q){UtOw#X%^wJXo295p;+%Uu6eH9patA@e=2SJP4i zh%UDgA<UO9yT5e!xjdxA>;6YV7E!l@sRIrdA3cZq1&ly{&OU+H<*D z^a@G|4f5yftA)**pUTpPnU?4$%J%Wfc+;ElYE0Kmq$RS-Fqc9C`@bq>Ze&D!$#L<# z%P5#af6hgq!9|%vHsPwr*ZXQ33F}lrW9+P$Lk-0?D(S&q)JlBwzL(NYbj>XF@j7pT zxe0`#f7L`1Z>45$X{l@G<~xWAcl(`TLREsvkAhY6wJvTWYhQm(-eke?qD}P$lyaj% z_%5aF>mP5xJrMuyzoOv#l#31Y{9OWlgJ}Pc~FwC9unFA&%1LT^h3Y;>-3DG!)HMjJNyF0G;#& zBTe4Rt3C4LmmNa^BQ6N?Ib_vJl?j=V?}xfKAQa-HCVAjAlS$_3@*1XN&Tyu#U#Y>H zDk$>A?IR*ZP+gv#4Pi9mSNq+PqukRD9Gr}|iD2jIYA+?6qmkrweh|4LQ(Vs1c}_Kp z{*2O}6RGK>y2*LJn{2c-BBgaf;=l?rmWdzLPE@MeAvkD2r4;qm|V!Z^<=wH=4n1zv7!rxueJOlkD`} zG1Pw=%lHNdUIgGc(gU|s{xS{auN^aVxoWL84H4(%RnyzF)^?|Di;Q4tE5*~K9f zgt~28l8ocy4~qB35`;EW)fkN;2Zyu)P1!y#wki{_7F6b|hZULALWkP8D0>LXfAxym- zOiOtks}F*<7YKhVoG_Zu3Qx~|mmhPpW)a> z@=_jF4og}r8e&M$_mHI+5UiL$Lpipd)I067jX)8Ek^*Gu#YR#ZZ`IaCzzXg04Td0N z8+(-xvY0}n zCZHw5LM8ZNE87wsC!u&JrCCQ9-1WD$kF7^C@mWb*`Fh{OaRk49=_Uqy5tOIl%9TG$ zZ#e2hvWgV&vRU4^6}8iH(+Q`PuHUZ|l$^RG6Zjk^yp8uave*o3iukmGEj!MG`- znv^L1X|=Ft;Kj^I9i9@X)Xf%tVjo@Iy7>+25-DRKhN<75+)^`HOX4k~nw;}gIAdmU zy1*_MBXoI^VS!0~dwysE&q{x!Or73S#uU9Q6(45A@9Ks6HCd58^{%hj{US74FtUx6 zkf38E-T1rav0o(lEDemp3ErdsX0;#Gl>V-yt{}(+P03(%8SJ8LcM&T8pb*UU-gUwy z3?O+Ohgvw#_OUXlOL(DR`%S?v7RFa98qlj}?s#x5tN(KwZaMm6pWk8TE+2jA@y zi*Mp*0L4l1!I~Vf4vmVuhzP)0@X!m5jzqs|>lM{$u^QjD*kfg@eymVvxDnXbR3;lx z=!r)@g%%b@5P>HGEZlzS+J!S+s4r=sc){I;&JMm9!YFrB+B+n}#KM1ve+LfwzbitH zyzK7Xz!q{K%i;mq^{+_w|4Kgo?|AnAWFG&)wf|KjCaS}L!CuJC*Uj}VQ=5!c*Nz5LM(LQ1vZsSW0+Jb33N##V(h9E23d|Z=ayu% zI!ex8`vvaj4*oGg*~E{#MkFqnJ7LCzQ-VT-F?48KH{HMj}TZ$k8J zl$D0TG+W%w_^kbR&JzeIHBj~a&wqmPujl+%{U81kLss&i1pc`n|6jmA>U!WU|F%2- zci`_EmH&dy15=j&ZQJti@P8)G{{;pBf`E$s|6dyY@05PelKzX<_Q(HC&h+mje$O5I ziv%Lxf06imCfV=sf2NiE1qJ{Z2?75p$>ete|4eH5JAr$m-wFJc;_y3_--G*q(P1L_ zuc!D&sQ-8T?_tQl@WbT)8ioH3O8yT1-7@*RO*KQ+?7&;WopCjjto`swfRe<}cfhfDMP4gO#1!0+gPzK{Qoe&zf74F0FLv#cZp UP-6ZF{UQQpfkFo+_{Z7*2L{DG!Th{FVm-M4kfx^ws|Vw*SRfpdoSGyq_LH=rQOcV76&Ryp6nYU^Fkr2;1}pFq}zR z@IfHI{_}dBx0ir$r(C#vR{I>87tN5@;;4^Atvds zMEWiMQ5IiIrjAZbNftnQqQ?ICNd+jG%>2v%RMjVdXv(A*WnzvYOn3qB2+ZqO?JGZt zE2Ngh;9I_F2_?D@h%B+(bkLJRybD? z*hqZI5~^Wf=QjAZ^b%A<1H}3EnuS3X9?Gf?O;vfcVk|tOF`A%`#W=#?g>tQ%CW4_ zQonJ7hNUcouq6Pd?T=L)jSPjj1@>s3Z(|Uy}9t2@D|nZ|aE`ht+)bRU`eSeb8U(sbg_{9mk#|8nXT z@x5Pa3Bz|4@E$PRDYw>(kuObWFtd)a3J#$mCW*YhV!r(G&b6`vq;;YvGCnt-Fyro! zDeSb9sCA8%tOOh03AyyF-LLW5;R=ux)KSRbx@5ZxlX3Xl_jAASxLJc*18VfA$ zDKvGm2l;?f@b^J6v>74A^nw9#eSWr`((+@fH)Bp3!{U;;sD=l48MjbZFmBrvrZ9ixR-M*>;%P$5_b79U2Wl)!dODKKIQAi?Kz%I$0OHq0aj~&Cq%*WJ zaI*Ru!~Ph&&bcjYu*K}Rf%kb~?nl84!x;OE?UwlSMkayKdsMGT@L|Jo#3IGu7z(I4 zQ-G;YE?H8XmU>B2G^lH0JOG|;Ap|@s>!~Hwd%AU>&~GK=l{OjYC*5p~MZ*eyU?vAM z&Mz)5KAe|Xe;g0XtkE3Q>OG_zA8m!VC9BCrN^e>+ae6!|d%u`HNZSdWJXmB2R~k7- zdQizkZH>jSe!NtBJGwUOEy1q|7gqy>N?%>-HGA6_b#Gs7Y3W=oK1MlLHZNH((bSt< z{$4&c_SoFmv|5UK_%Ux@VS&l~Lq%)60=pCMUZu(jZ`qv+NAq2b%M`ZU86pZ%*SWJx zr~YLK89q22L)5ynLHizfP9DG?(Yy>lF&jhC8@KiraI6RjMD_XG!5lvnh9(a#@g#g{ zEL{9$h@vF;=&-aEZ$O4tJ}|tCRJqn!zleoRr&c{4uHzNJj&!JiwYdm zt<$(EAkBodP4}u3Nkn5C+s5B&zZs-L4Ki{I>5{E=vCKn zpI1(rkE5w>k4H=(dp3;?*HZI?o z3S(fp#~r$!ofTtop)0MUq%KgI-ggU6AYaA<0p-cr)Z-;DXq!`|O4Uj>R^CF7Hz9vn zlWw;wCu#1}DVfYI9;6ru1shCeXr0mwn)zKpQuPLPyir6gxb_T$MVY3k%{Bh=E1&m| z5sbEq0Mbdz@s%J__hf=Mcqi~}T;y}O{?P8LIqB1^ks3W8Bb`_L=Mr==B<_+z-D^W5Q9z?3vE1$;Qcs%toAtJwZ zU2%l`#o1NL4(FY2$zCO1GgSAg9I*iNtE>+e^(i2qSwGAOzpI3&*=N^kZos)@9QJ$H zZ-2LT%p|a6(bC>}dY;Y)P%d}p$p@8iwIr5PZAH@aQC*g(42iAgKWnweFMR|Fmh3m5 z-#rp*Bpo&g#B*gXZ9}hUcCw6CB_er4Er=~jiC!hzM|4^t)A5nRaQP6W_g?{~w?IfzSEMdOMA zVdFgQ4_?TlLUG=_HG~#sFfh(@R=3&Z0Qk|N=HD*AZTRkT@?q6rEzR5Wp;V_bbR1Hb^OY_ zS^Pr^VkOp}BeTWUA!$)y^kL`k@X-uEh63^YVJ7)-`f7{Re5~M6UV$VZb$W(5F>!}B zesLLqpeywGfXnrBztP*-}QwdT|onn07dRek_3di0rQX-J}i#eQpwezA8AWS{^kPq9muB9#qMPzB0f zZq=q77|f`b#lEV|@eSN>_N5j|)g0A-K7AxeRtR>dw3>i_9 zI!YhHo_(4uzrfG-b#rIss_j9SUwP5GV2P4qdiy90mpBE z)Z}x>)%6#`#Ph3a=@FkTtWrIN;*a#1egdLyEMP{W>!EE>rD`Un<%h~lwPMy-P$;@c zLC%*%4;fA-JDkINHh(U`QJnxV9+pv~Kq zkvytMA2*#dmq6$nNqQAtCue+n8A|A?XCEmoLS86P)JPW3?7lzMG zW4>wbKuf_G0L>5$*zh`-;pYT#WT>gE)E)`_aMHW|lSEkp8*npj#rF8GqaIG%8z@>3 zVJsdM+Z(v_4!mrbZj28stW3&<574T#@5 zexV2=q&vt@4b9nc?T=m)rI1hcQPg%9wiyw>lSuZZ*{HG2N(WIOT5N>RD@#|_4W6hr zkTNiJCkTLzF8D``XX4?wUM2hAW z7LbSHZ?GGAHsP7(Lfn=KGeq>ncj25WLn4Au3w@?ba%kNJLCw%i6($+}z~cEy^Km~c z=lP5I>^8xOz(E}*blp3^dosyuFbGx%rn)D24p>qEr!o4iL;5E;`~&bL-A#?zjr2bIeLXuUkR}?v-xc~{9gfW1#J+%!Rq*y4>v@6Rq-+E z$+@`ZA?&c;pJKbZp3M9hEBK*7chg=r(~Eu;+x9u8xJeR)|G3z5#Mq_l8Qz%LZxD?; zTq`Sp6M;o2;JkDKKaFg600$&F~MKn3k^83!il8R~yNNQfv2eXE`E)CdkswM`w$FVH` zjT<9~r%z`JygLFs0wML;?+GgenT1dAzBgOMj?hO|JbcWRltOb#l*>x$VzJ$VU0@jV zl6o}xm8FI8!4E1|-ShX7htXJ=GRK3GjpX?JPW_C}AJh3ylkt^ZVkOsynN3}dzub`h z`1;^}=9>(OO>=b^(CHVLBEIYFJmsh|^h{!_T^69r9qED7m3~eqY1A!;#AsDd^EhKaDwU7T?Ta%eDJ-v^tmKJSRfCV_ei z`dJx6c}EUlXP|ZlS{Fc{jIDmdl_SB)y>fxqAy!{2XwMhHE?PQAVMvTxbwD+O4{3C2 zCOlHs_N0AM!W5aBt*!y2oKUW1&Xgn^!Zd@#MA`L40`wqF8Fh|Mha z%MLjolut)vLqg)V*V1y|uU8C~h)Akmsh+!PiiUC|-A7bX5 z$}RbnNz}-$!_VFjzKFEhWoW6J=Z8HS4|Y)ZuAAXiaa>MOz=;*Q&t^Bcd+Z zVY0J|#27I*slKBjY;2(MmjnG?Fw@+~Ux6}l{tJmw4B8pBso_6>96WzDD=or=^4^9#?Hqk~BmjzeEpUE`n4wsYgs~*rePv@@G z1BI{LC+19CBBlZx`!Z%Pqxj#+b=!ItU^08~?^}8v;D(=5h-3ZSm}D~Xt~J9GQvf#5`m*^ z{5ICLYmB&>+DkYX(?tn*#15>DEjlkp0%qq6!uIkGpnM1jW_jr8nka5#0(}+ULnPXgdw%7R zlsm8VxFIJJ@iv00icla~$b9LW3VIrTjhUwFZZYTG3 z1#)#XB`7074WC$qjjZXJ z%#^B7sY{!5+#Y7Sk;|OV`^>vauS8>NB=&htNynnNas2>G z30>q};lV>$lP%d#C8*U&0XG3|7^u5)i~>7rDesQ826&Z>$&JY*3zQ=q2-@UZuILSv z6v09=OR)vyb0aI)JYB99V~D%pdD>~u&!YjQkgILEwb-p&dql3J8;+I@W=mcmwEd@) z6p`g8H96m!cnZto@FABc!ZsGPc@%BZc(P)8);(f;@;E*h@F(VqDXJUt?(i?WYs$@J z94x?Z72fP8&jAGks{r!!t<2>Fn_Egr8YYGPKmavFGjvPT>NHUd$pCwN$!Ia+YDBSH zENv)Hm*-)TiEW;*uZ1YIOA<)~XP8bVQ|!!QlE$P^!eI++#VsJRb1LCs*tbl&21pT0 z-;s?u@fcU{;M5Yl$r7JzgFc<>ah3I^i9 zr%`(E$M0u{`6^6t%0y@y+)f#|5ff~KGNkPt`Nn{|yYH}RF~D`gu8|=uE#gjmyvn%_mCUDA#ZF2nC6lsd<}pBUOx2cwu++!Hg+`@Nc0Z675UU zkTi<5IxMCM@um^=?Nf8Iz`+%A5DN*G9V7rtQso*HM;5!2T^W=lXwWY__P^?B>WQz9 zB7=904pf{QC$fk{P$K|Te(KHPLBZS1L9Qt!o@0NR<4JO|%j^x?D>>HC7>J+8A099_ zy{$&u=|`p)bETy#JdQPp@eA-8kU7^BgkhmHl@#fkwF!_K!}3Pc*|Ea*3!qa{;#Ppe z>UawT)1mcsHyM=oypEtBC@VTOzaDG7H)J0m$)9oz#j!YAVgsh`#`D;yov=(FY114# z9By>+=>q^&eG8eBK>;hA^t7W2^j(fza>{2ZYUcAEv$0U}Vw5!`whVQ8s!a4`$o3aw zBaV-iT&qry*kj}mU*QoSA=2IIGcum=-$V=JCh_Y4^GpbpXR}@&gD@il+M8RxeuY8C zopY2l7`dHxnwY2r5uf^)Pk%p1f1g|v47D85bI7R^Z*WVeqN*E;05ZyC#|LgRS$KUU zsT1iXGyIMBM#RO{(VSOS2ouEcYMVuO3fJV}qwyous~-BXUJVVzpltpXLi@+IrN>W= zp{i@g?Gk1f=zP8O53TugX#7XGm;1POsU5=HltE0S?c8XG>Xz20&?GBfki3VuK$_m%xemorwy z_`cYym)`nV{SMz~Q&qdma=6C(Fx;8Ilpzip3en|Te&wHaLS3TsBrfwXBh}wmtI&3w zABbx7ajtn+o6KIIbgUYeO^<~^A4O4E?g$jx(8PL1#RSl<*C8TGAebmKfp8u)z0m5n z&Yi+&EjeV(*sZak_WGm{o=5Fj{?ZIG1B zuN85RA%5mS&u(NE@Hon>R-SS(oPjXxjF=p(QDhtE-SPfxHrK(4i4gcaTkH5r?kPny z7Yr=%iu}Tr;Qrz2F$OLs8;_fZR)+zJ+60F-|-JEs>ikX#8OjU z&(>u=y&b2Y?}n>C+@I2L>29CUw|(w+Q?@^(I+;wpyq|V&e%;aWeC)M{pt)w`cXD~A z45+fHT>Cj>4c73F1G&a@XAf8hifZR&1p<+Xj;hXZV`3gtF$%_kF83DU+SrTYv+O*d zSOr{54;06%`ljTs09Z2$b4F@BI;vGBHTN+=UPRoP;kn@EdabYZhNpPULuLZ&D_{z) zX$+iv(`O!~U1iLpKyKsHzaF0uMtHMY zF@7zY*IOv+ig=VF&V&`TqGVv6aK)1%39pQlle`z(G!=`AO3}fctn4f{Tpoyg5 z;QJAog^h0I%EDlo9oL1zuiWZu)zlg|p{n!_0)2k0KfJ3-7#X|SOR(N!;?WfEYD^x6 zxLxo(wgQuer|DG7tbL+uSs>rHnA@1pLaA@ygWaed5sRo?Mt6S0u^0TQeGut4aq;;r zKt}@%>6L2T7+uc5k6PCmQ4zDr5t=agl@ZY?vtea{lJz^h)nV|i_$+e5ej)0N_{Cm# z=NdR=arYqE38j#}GU1F1-r@)7TinhvHs6a{FT#yHqy`^cxvXMGf-=Mi z(Ss2+Nz40(&(DkxQH3X6+Z!2PLK>SeVhE*FuTvmLyW8$e$vrN#n`7Sty7l$B+6zp1-dj$b8f@duS8=$ zn|EuAfmeW1dYg)amP6bb%O;YIH^F|1Q3U1!iUD+^E-O7p?G%mm2)OSgG(QQ^ROmdWPz{}Z+|zW|mmg|{_!{w4D7{RY*DFvlm0x)Go;hO$8Oxrbv^C~z zUAO>u&z^5PWqHB=UR&%bf4~Y-XNQ2&t}HlaO%G~QDQ)Oyvelm1t<_#Xjd2O~#EGiwuvKL*MM)iaxQ7KBe8-Oqqu(+)K9C=aUh z0@H;;^>9w%UPUAvq=aEWLW6c8?^m3i`eX;;1w!2e3-6bM?Rz(=%Qjc#_IATcREA!) zg4GoV{>!b@f?f`_Z=P9|9S3=f6||}p7T&d7x6aSMC#$FDt?#(2RbRzfI>2nnlm?kR%QBn>7p#^m?A4ehBPz**c&ciRW)BL4wW&Fkz!Soi zNbE^8TIV}OzqxS6-JO^u%TCvFh7*6kqSQX?-BrIq@{DzAN0;KXDDP6i_I*_w-E3yD zQ%Pdn22`6~x#Ta~<=e zr{LQy&*$L%`5kwwzyLP>$X)Q}JNG?*3>zrg?3KfzB>%WhQD54-Y0RRTh}Cl@PRtB= zt&(IEnW?yK68M$1dFe_Mh|9NG=#fSJ>#9#^jZ2?kk`+&2@aKrc#a#p@%>&uV8Bl7A z)=R(=g4T7@BL45D*xJcIG)5$*PUG@-IG2)M(ydt4S$dp?dpwqJh1s?l2kj>pi}ct> zhU%8YlNoggJ`*{Dm2-0B$-;6OGL2srdGVlj^+$ydbwa zVv?xJHz_MtCS|4Ik^_vrWIaQo{H#bq|48TW=tSGcPH4XdGFz$hMi_}o zQD2PVzq9ojbEZjE67ZfO`ezhEy`T^4m}@`mjpkvI=qp<#=|+@)NY!1kH=VK|Jw)2D zN5;S5tU9h^YE}y8RH~{O+saM#Ae>T?3$7D;vQ~^!65e**}ED zYcb}552o9lr>Y?kBovf9fXhwZH?3P6mtqBPGnSM`#JHG;&QoxO@bxqEMB3o5(8IxW zlxcXqaDj2sEf#g3KBHQs+v%@tEy=l8Z<6kn7nde1&16!w0}qtLN&MRS$G-N<^{`o!87T#G}#xNFC z(JE6_B|aoP$;Uv-M^+p(`S4`zT6Q*kcT{vrUXWb1UrKPY`H(k0y`aCq;nfatuX#@U zLQD>OR5Q4JFnTy%5&y_5SyzPWcm!mIP?p?1K1@LJk%nuM8k@FT>P(VIoh_&Vh*N)T z+lb6(7Tn3(bR6sFf6e95LHVvZ^7YW3#{>XC`ujY_+Q~}a$o}i${O2SldEI)C1tItf zeZ_?y5ifKMQEM(hS&S87xFD? z1~Q}{u&yntb)Bg>iMk1a0HruY|7r59C=?0W3kwoV*r2~Kh*e-@oCT-zhYqQbU?R{I z(V;~}1roZ|`mBB!YpkU&UN{mp^Xet0w8;pBlq-xj8l4vo=IYiq!MiGGBk)1 zvuM6|0rKvfH*vEV)*}&YMnMjK>8y0c>JA|h4k^08_ljS|nuNgz>y+()w!zF<^NFXp z^j6({x?|h!iXdvtez1E}feiYDq$l)MWJWSI|zy@vAqOGkngYU+bl--{3Io{!z#DU2)Y1iN60y#lrUV z00axd1Mw}FSl7D%le%K+T>$y{8>BZQL2zGEZ-_;vzZceKdlkAX+IL3FB=eVu3bB{A zaZ%KS^TYTdpVZcc3DnwjBQw;SYqq5|3Q*pF5jH!?KL;luTv*6;Tl}QOPdYwaI zyW@3Iw8h>!&k2y_F+uq%DO6~fzVR6@u!CxDv{R-)>087npdJ%LDM>-jU!^Mu&k?38 zP4l~(>s7nB)12iW4aCg^C%+iuKhR+A=EH-FQN-FLd6M@zK5~i4ObN_fsYkOP5*?ek zJEu7J!T4ivZ)uku^QYqZ_~FI!Bbc+cJ5M@(&C<-3oxF`RZMNLOMV<33_dVH5p*yB9 z@wB0-i$T#YIVN069eIeT^n*)5@%a-lOW`N!YnQSahV1S*(QkfOnI`EA;XOCd;|abZx84|6LfA zPnOUNA{<AtpY4i?}tJ?t%AfB-M^@A3w6Fa>ia`?5gH^O^5zjhiJP3Pi~mTt?Y zj0-(a+D0Le zxg};p8J4-K1BE;o%2;D~-i~iS9JhH^mhq&Dmn%4At47eL$;!6#r47$t!{#E3Q{!-%C*#H32|dDA&&*x7Rwq3XG{wJGNw zVs?EwRqUXKKCqT5di7H*K-Ribw>*pLju)lI&)GKXJrYR`r?Xcf(3}UVmV{<*ZgzTB;{Bf7oIecf&u-GYl1-`s7OaB{c8Az6xjT0dJ(22O@^UX)tZ zeCRlsjFUT^ja?KxwWIDNx`lC)?DX{oLQc$l`=^OL<b_VG{j63m3)9>%X9$N}-j zRhk86(OiXQ(KtnB(QnDa#Z=v9=|uli)Lpu@YN!=Sy0}g;8hBk?Fznr;yB#=(&MB3T zWH=M<*%hubiT5c9?$XGnd6x~wha)$qvGF!M(1&=e-refaj)(lbQ@BgM#UB-_bsS&b zLQN{Y(6~h-*^W9S`b%g(5_6#fo3RIS+B5E9(vhlJsZ+_9H{d1M#=*O_9}$hViL6i( zZPgQ7O+`$pf+Kp8f_KPEqc_?uj$OiP)V38b&VN5>aKk#uNg{Zx#)e`Ba&qJ?4ohv( zav|+J(i^cc+lgkILdqUiXFq68B(9YI&|>--msq;02s-OcFT26JlNIlF1k3>s8L@f% z+nR`w`hFvdA(~cNrURNM1zGL{gSCg1Yut4|vUD2t;}ALPZAl6ket?O+%f+z)JX-o2 z#R`GL%;-Kb9vfkpA9+Mt0*~U2cg`cSbbJr&1y}Af4JW3PAWnj5HarK;esW1fbKVCV z1}w$al~~_?8j*^a(=QNZj@ndOQeL@kk5bOP>;wl9e6%!KclOFlXR^ydbuQs?*3Z1n%lvIr$_ zS*8>s=ZiV(&ZaAzgN#Zz6Sk&T@bwc3HC2OzvfzLIf*lC4!)b%3)9xUnlm*0SGF1o=PMZt)GKG)n^ZJ{$AH< zn~Qo;{it=pY}~|CY8aa^|I`R%&D8N|)N&|YTsU%@5{%#5NTt||+51T>QX$dKu)n9a~(FC%&Q&W0e)!7gyL8OBq9j+lt>;&T{ z93DGbh~lTd&%OT&OtBMCz}uSXaquW1E6LyJsObv}I%QTcNSN);ra>KAytG)Gmq97^lTs z>-`RbtL+0G)nXnbV!D@VQ^LN4!SlfIDIw3i%EynH#<*cu6Wig9pbaK1vrkch1drRO#hm zCeS~&J=s>o?<@04bJ*zG7VrJ2;4RQ|6~C=~-smtBE&kp%u*R>$jk7=cBKDCfk>4q< zz^GflmilJlK)-)AG~;rbs@bWuXYMqvszTQcBkvOj)m-v%X0{$oFN^>2cD)?Z&HMIt zO?Pu;v%9Ur@P-8aNrdK8IsKleK(3;EabuIuSx;L%o-IpL?N(ph?p<41kgpsceI0+= z_cSZ;8c1!V+4CoF=P(`or|Z+p)ALQlyZTn9#m{#x1uzPTI)pjN3~I3Jbqbd(3k=E~c`2>1 zM{k|OR{faxZQIJN)^xq~P6g;p>EorJpshgiNz2R>`Z%i@CVX_w&f8Irn+&3ku{CdQ zW^0e*S95#MDIIccFetWn*kifN;W8&@|J|A6;slDk|K;X+1qT55dOz!bg3>NV`U?Nz zYX6!6*ksTn3~!TN`0#bG@}<*9t*v!p8~8J?hggy&emrpA5fw_{_Z3`} za_!u$KK}A>X=>?kPwZP~v|=ks!k-k_HV7A(T68|(-Pq0~=`x{~V@J$c8M8^fsb0F; z)><-~tizvB-!S7UAWsl)yOppgXM%vCNh3A}Lse)|^-UhwRkQ&XyRX)A66RMPxQ&Fi z&d|jRuH81cr$8Zxl3rz=$ub;ky74mx3d@lkrDB{pRWM~f?wI3CV@Qob!IeR(f=e~E z1BuTxrzXS?z1ze7B_8i)i4 zmij>rj$0H*OC&ZwtpS>D2qd;b1V4V>sQW0~Xl*LB(KV!yao2ewQZ2288&51~Wrx#r zhPglK)ZRn}WD|(bMwh*+p}f+Ijn}dL+~hgv1;1G90KDY?)*r*c((0V-6)oqw?D>^G z&^(Qanp@FK0ntMx;Ecu*h(VEo_7yl{qEU`v{E37Wnc#f!q-r16eJf^dd zxdshBm+nu@C{C!?LQ_}@eS2Z#P*05LYAjw%%fop*IABS5HG=yNR`+wq5B`q57d1Kf2= z;$OVsGl%59uVl*W-F+ziDhA!cTGpvUf#{{6f;vLz+!~XT5T}Q<0Q#Vk@Jy?H8uvwuyepW?x0;w)Cs8GXU36k0lc~ zdudpWZGJ14HTD%5XHCrtt z+&$3`{5dgcJ~F@}_PF=4FsAlbDrwJwx&>5xyjr5V*|43VpAWgb58aoc#}O6SK8CLvp><+= zRFxr>7f>Zfa9~zPfAWmBh`Uw(imF02rRoJKQA|rLhh(o)E=L8W^5NL;}(tTbiW7+(%&+BvJH<6|W8dACUSk+3hw@_l@mlbREUp7j8S= zj%e%EsoE{rE=TySE|m&%wv_D$W6e$6-v?Ih6+2B30Grq@!0XCzB6YgbFXOnv;_Wa* z^cuLMvWxeKqw?UhE}~v7dhJhk5W{bln55^PvUkOEt~L(Sk3Rpa0zi76vcG>Rz{QsW zApENW=-Ga~1NY}j9RDZ(Uso#jv<0mpp$V=MC`^7cM8@Cg? z9Gull#0QZ}k~A>a5Q9VPhx7UjEp2gJ%khuY1VT#GMacF!M3QPm(17q5IU=0*zEEDH-=##t#aBA_L1Wg2cshH#^_uSL zR%gzOhlgGq*d*PvtZ*1Nb2}`d>M}{`xyHbbh*aLMkFv;{s_MbJ(l`PL`*5znhFW)7;@JSd(Z(nW@*HCUW=!S z1~>E`H#!rzZ+V;ZHgB)dJ$=l2+jM{D2zF1)7Hv$w$&=x;OJBj}hC5Z5kr#sf)ih)= zIaVMf=xy|b(EJn zIcFs*U>TrYV%xFjDGc7;OXa%h1u&gXqd1(|4ZP{S3GYK^eMvlAtW%N?pQ8U(`6TlX zl>r2z`LZeh`wBK+js9)>FYDRJO8h&6e_vzcU(r9m^zdI+-1sZ-uZs`-6WaZij`<%; z5&RYY@9Dq)1OotgV*d^P|40V@E2qC^fc}$LKkok{AM~#*{+bu_PZrn2e`E2lSu%fx z|21~|Pk037-{Aii$^9$-uQ8y1;sa>^-u*u!LVpGSb*}MGuqxNzz<-%}{0E1>*rosE zV9oP44*zDQ{uTf4mdiiUUqdw?0Kk9PF@J^s`*Z(a;ZZ;S1^%~DKvn|uOS}L8V7@+p MUlQ6Q{Kww^2NvwL%K!iX From a7e0744fc19c87a4c398cdca9861b50de79e50a7 Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Thu, 23 Nov 2023 16:08:19 +0300 Subject: [PATCH 27/80] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=D0=BE=D0=B2=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D0=B4=D0=B5=D1=82=D1=81=D0=BA=D0=B8=D0=BC=20=D1=81=D0=B0?= =?UTF-8?q?=D0=B4=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../management/commands/init_templates.py | 9 +- backend/core/template_render.py | 8 + backend/data/template_list.json | 44 +++- ...\321\202\321\201\320\260\320\264_tpl.docx" | Bin ...\321\202\321\201\320\260\320\264_tpl.json" | 0 ...\320\264\321\201\321\202\320\262_tpl.docx" | Bin 0 -> 16579 bytes ...\320\264\321\201\321\202\320\262_tpl.json" | 91 +++++++ ...320\277\320\276_\321\201\320\276_tpl.docx" | Bin 0 -> 14656 bytes ...320\277\320\276_\321\201\320\276_tpl.json" | 115 +++++++++ ...320\267_\320\264\320\276\321\203_tpl.docx" | Bin 0 -> 14653 bytes ...320\267_\320\264\320\276\321\203_tpl.json" | 155 ++++++++++++ ...\320\265\320\275\320\270\321\217_tpl.docx" | Bin 0 -> 13671 bytes ...\320\265\320\275\320\270\321\217_tpl.json" | 123 +++++++++ ...260\321\206\320\270\320\270_2023_tpl.docx" | Bin 0 -> 19804 bytes ...260\321\206\320\270\320\270_2023_tpl.json" | 187 ++++++++++++++ ...\320\262\320\276\320\264\320\260_tpl.docx" | Bin 0 -> 17822 bytes ...\320\262\320\276\320\264\320\260_tpl.json" | 235 ++++++++++++++++++ ...\320\261\320\264\320\276\321\203_tpl.docx" | Bin 0 -> 15866 bytes ...\320\261\320\264\320\276\321\203_tpl.json" | 226 +++++++++++++++++ ...\320\261\320\264\320\276\321\203_tpl.docx" | Bin 0 -> 14182 bytes ...\320\261\320\264\320\276\321\203_tpl.json" | 119 +++++++++ ...\320\262\320\276\320\264\320\260_tpl.docx" | Bin 0 -> 14411 bytes ...\320\262\320\276\320\264\320\260_tpl.json" | 127 ++++++++++ ...\320\275\320\275\321\213\321\205_tpl.docx" | Bin 0 -> 18067 bytes ...\320\275\320\275\321\213\321\205_tpl.json" | 148 +++++++++++ ...\320\265\320\271\321\201\320\260_tpl.json" | 2 +- 26 files changed, 1583 insertions(+), 6 deletions(-) rename "backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.docx" => "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.docx" (100%) rename "backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.json" => "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.json" (100%) create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\267\320\273\320\270\321\210\320\275\320\265_\321\203\320\277\320\273\320\260\321\207\320\265\320\275\320\275\321\213\321\205_\320\264\320\265\320\275\320\265\320\266\320\275\321\213\321\205_\321\201\321\200\320\265\320\264\321\201\321\202\320\262_tpl.docx" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\267\320\273\320\270\321\210\320\275\320\265_\321\203\320\277\320\273\320\260\321\207\320\265\320\275\320\275\321\213\321\205_\320\264\320\265\320\275\320\265\320\266\320\275\321\213\321\205_\321\201\321\200\320\265\320\264\321\201\321\202\320\262_tpl.json" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\321\201\321\203\321\202\321\201\321\202\320\262\320\270\320\265_\320\277\320\276_\321\201\320\276_tpl.docx" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\321\201\321\203\321\202\321\201\321\202\320\262\320\270\320\265_\320\277\320\276_\321\201\320\276_tpl.json" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265_\320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\270\320\267_\320\264\320\276\321\203_tpl.docx" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265_\320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\270\320\267_\320\264\320\276\321\203_tpl.json" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265_\320\263\320\270\320\261\320\272\320\276\320\263\320\276_\320\263\321\200\320\260\321\204\320\270\320\272\320\260_\320\277\320\276\321\201\320\265\321\211\320\265\320\275\320\270\321\217_tpl.docx" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265_\320\263\320\270\320\261\320\272\320\276\320\263\320\276_\320\263\321\200\320\260\321\204\320\270\320\272\320\260_\320\277\320\276\321\201\320\265\321\211\320\265\320\275\320\270\321\217_tpl.json" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\262\321\213\320\277\320\273\320\260\321\202\320\265_\320\272\320\276\320\274\320\277\320\265\320\275\321\201\320\260\321\206\320\270\320\270_2023_tpl.docx" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\262\321\213\320\277\320\273\320\260\321\202\320\265_\320\272\320\276\320\274\320\277\320\265\320\275\321\201\320\260\321\206\320\270\320\270_2023_tpl.json" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270_\320\262_\320\277\320\276\321\200\321\217\320\264\320\272\320\265_\320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260_tpl.docx" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270_\320\262_\320\277\320\276\321\200\321\217\320\264\320\272\320\265_\320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260_tpl.json" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\262_\320\274\320\261\320\264\320\276\321\203_tpl.docx" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\262_\320\274\320\261\320\264\320\276\321\203_tpl.json" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276\320\261_\320\276\321\202\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270_\320\270\320\267_\320\274\320\261\320\264\320\276\321\203_tpl.docx" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276\320\261_\320\276\321\202\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270_\320\270\320\267_\320\274\320\261\320\264\320\276\321\203_tpl.json" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\276\321\202\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265_\320\270\320\267_\320\264\320\276\321\203_\320\262_\320\277\320\276\321\200\321\217\320\264\320\272\320\265_\320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260_tpl.docx" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\276\321\202\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265_\320\270\320\267_\320\264\320\276\321\203_\320\262_\320\277\320\276\321\200\321\217\320\264\320\272\320\265_\320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260_tpl.json" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\321\201\320\276\320\263\320\273\320\260\321\201\320\270\320\265_\320\275\320\260_\320\276\320\261\321\200\320\260\320\261\320\276\321\202\320\272\321\203_\320\277\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\321\205_\320\264\320\260\320\275\320\275\321\213\321\205_tpl.docx" create mode 100644 "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\321\201\320\276\320\263\320\273\320\260\321\201\320\270\320\265_\320\275\320\260_\320\276\320\261\321\200\320\260\320\261\320\276\321\202\320\272\321\203_\320\277\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\321\205_\320\264\320\260\320\275\320\275\321\213\321\205_tpl.json" diff --git a/backend/core/management/commands/init_templates.py b/backend/core/management/commands/init_templates.py index b0673f8..909b718 100644 --- a/backend/core/management/commands/init_templates.py +++ b/backend/core/management/commands/init_templates.py @@ -19,8 +19,10 @@ TEMPLATE_LIST_SOURCE_FILE: str = "template_list.json" -def print_red(s): - print("\033[31m{}\033[0m".format(s)) +def print_red(*args): + print("\033[31m", end="") + print(*args, end="") + print("\033[0m") def create_field_groups( @@ -110,7 +112,8 @@ def load_template(docx_file_name, json_file_name): if errors: print_red("Ошибки в шаблоне\n", errors) except Exception as e: - print_red("Error for data {}".format(context)) + msg = "Error for data {}".format(json.dumps(context)) + print_red(msg) print_red(e) return 0 print(Messages.TEMPLATE_LOADED.format(docx_file_name)) diff --git a/backend/core/template_render.py b/backend/core/template_render.py index 700734e..1d63fc9 100644 --- a/backend/core/template_render.py +++ b/backend/core/template_render.py @@ -107,6 +107,13 @@ def ablt(self, words: str) -> str: return value return self.inflect_words(words, "ablt") + def loct(self, words: str) -> str: + """Преобразует слова предложный падеж""" + skip, value = self._skip_filter(words) + if skip: + return value + return self.inflect_words(words, "loct") + def noun_plural(self, word: str, n: int) -> str: """Склонение заданного слова (существительное) в зависимости от числа n.""" skip, value = self._skip_filter(word) @@ -181,6 +188,7 @@ def get_filters(self): "genitive": self.genitive, "dative": self.dative, "ablt": self.ablt, + "loct": self.loct, "noun_plural": self.noun_plural, "adj_plural": self.adj_plural, "currency_to_words": self.currency_to_words, diff --git a/backend/data/template_list.json b/backend/data/template_list.json index 3bd140c..65348b5 100644 --- a/backend/data/template_list.json +++ b/backend/data/template_list.json @@ -40,8 +40,48 @@ "fields": "претензии/претензия_о_продаже_товара_ненадлежащего_качества_tpl.json" }, { - "template": "заявление_детсад_tpl.docx", - "fields": "заявление_детсад_tpl.json" + "template": "детский_сад/заявление_на_возврат_излишне_уплаченных_денежных_средств_tpl.docx", + "fields": "детский_сад/заявление_на_возврат_излишне_уплаченных_денежных_средств_tpl.json" + }, + { + "template": "детский_сад/заявление_на_отсутствие_по_со_tpl.docx", + "fields": "детский_сад/заявление_на_отсутствие_по_со_tpl.json" + }, + { + "template": "детский_сад/заявление_на_разрешение_забирать_ребенка_из_доу_tpl.docx", + "fields": "детский_сад/заявление_на_разрешение_забирать_ребенка_из_доу_tpl.json" + }, + { + "template": "детский_сад/заявление_на_установление_гибкого_графика_посещения_tpl.docx", + "fields": "детский_сад/заявление_на_установление_гибкого_графика_посещения_tpl.json" + }, + { + "template": "детский_сад/заявление_об_отчислении_из_мбдоу_tpl.docx", + "fields": "детский_сад/заявление_об_отчислении_из_мбдоу_tpl.json" + }, + { + "template": "детский_сад/отчисление_из_доу_в_порядке_перевода_tpl.docx", + "fields": "детский_сад/отчисление_из_доу_в_порядке_перевода_tpl.json" + }, + { + "template": "детский_сад/заявление_о_выплате_компенсации_2023_tpl.docx", + "fields": "детский_сад/заявление_о_выплате_компенсации_2023_tpl.json" + }, + { + "template": "детский_сад/заявление_о_зачислении_ребенка_в_мбдоу_tpl.docx", + "fields": "детский_сад/заявление_о_зачислении_ребенка_в_мбдоу_tpl.json" + }, + { + "template": "детский_сад/заявление_о_зачислении_в_порядке_перевода_tpl.docx", + "fields": "детский_сад/заявление_о_зачислении_в_порядке_перевода_tpl.json" + }, + { + "template": "детский_сад/согласие_на_обработку_персональных_данных_tpl.docx", + "fields": "детский_сад/согласие_на_обработку_персональных_данных_tpl.json" + }, + { + "template": "детский_сад/заявление_детсад_tpl.docx", + "fields": "детский_сад/заявление_детсад_tpl.json" }, { "template": "заявление_на_отпуск_tpl.docx", diff --git "a/backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.docx" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.docx" similarity index 100% rename from "backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.docx" rename to "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.docx" diff --git "a/backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.json" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.json" similarity index 100% rename from "backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.json" rename to "backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.json" diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\267\320\273\320\270\321\210\320\275\320\265_\321\203\320\277\320\273\320\260\321\207\320\265\320\275\320\275\321\213\321\205_\320\264\320\265\320\275\320\265\320\266\320\275\321\213\321\205_\321\201\321\200\320\265\320\264\321\201\321\202\320\262_tpl.docx" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\267\320\273\320\270\321\210\320\275\320\265_\321\203\320\277\320\273\320\260\321\207\320\265\320\275\320\275\321\213\321\205_\320\264\320\265\320\275\320\265\320\266\320\275\321\213\321\205_\321\201\321\200\320\265\320\264\321\201\321\202\320\262_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..554e08c8718b648c3852b33c2d7831f2a44272b2 GIT binary patch literal 16579 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 literal 0 HcmV?d00001 diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\267\320\273\320\270\321\210\320\275\320\265_\321\203\320\277\320\273\320\260\321\207\320\265\320\275\320\275\321\213\321\205_\320\264\320\265\320\275\320\265\320\266\320\275\321\213\321\205_\321\201\321\200\320\265\320\264\321\201\321\202\320\262_tpl.json" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\267\320\273\320\270\321\210\320\275\320\265_\321\203\320\277\320\273\320\260\321\207\320\265\320\275\320\275\321\213\321\205_\320\264\320\265\320\275\320\265\320\266\320\275\321\213\321\205_\321\201\321\200\320\265\320\264\321\201\321\202\320\262_tpl.json" new file mode 100644 index 0000000..d776ac4 --- /dev/null +++ "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\267\320\273\320\270\321\210\320\275\320\265_\321\203\320\277\320\273\320\260\321\207\320\265\320\275\320\275\321\213\321\205_\320\264\320\265\320\275\320\265\320\266\320\275\321\213\321\205_\321\201\321\200\320\265\320\264\321\201\321\202\320\262_tpl.json" @@ -0,0 +1,91 @@ +{ + "template": "заявление_на_возврат_излишне_уплаченных_денежных_средств_tpl.docx", + "name": "Заявление на возврат излишне уплаченных средств", + "deleted": "False", + "description": "Заявление на возврат излишне уплаченных средств", + "fields": [ + { + "tag": "НаименованиеОрганизации", + "name": "Наименование Детского сада", + "hint": "МБДОУ № 364", + "group": 1, + "type": "str", + "length": 100 + + }, + { + "tag": "ФИОЗаведующегоДатПадеж", + "name": "ФИО Заведующего в дательном падеже", + "hint": "Ивановой Тамаре Ивановне", + "group": 1, + "type": "str", + "length": 100 + }, + { + "tag": "ФИОРодителяРодПадеж", + "name": "ФИО Родителя в родительном падеже", + "hint": "Васильевой Ирины Ивановны", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "ФИОРебенкаРодПадеж", + "name": "ФИО Ребенка в родительном падеже", + "hint": "Васильева Павла Сергеевича", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "ДатаРожденияРебенка", + "name": "Дата рождения ребенка", + "hint": "ДД.ММ.ГГГГ", + "group": 2, + "type": "date", + "length": 20 + }, + { + "tag": "Сумма", + "name": "Сумма возврата в рублях", + "hint": "1217.54", + "group": 3, + "type": "currency", + "length": 40 + }, + { + "tag": "НомерРСчета", + "name": "Номер Расчетного счета", + "hint": "4231 1111 1111 1111 1111", + "group": 3, + "type": "str20", + "length": 20 + }, + { + "tag": "Дата", + "name": "Дата подачи заявления", + "hint": "ДД.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 10 + } + ], + "groups": [ + { + "id": 1, + "name": "Данные детского сада" + }, + { + "id": 2, + "name": "Данные родителя и ребенка" + }, + { + "id": 3, + "name": "Данные возврата средств" + }, + { + "id": 4, + "name": "Даты" + } + ] +} diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\321\201\321\203\321\202\321\201\321\202\320\262\320\270\320\265_\320\277\320\276_\321\201\320\276_tpl.docx" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\321\201\321\203\321\202\321\201\321\202\320\262\320\270\320\265_\320\277\320\276_\321\201\320\276_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..78e5a1379b1891a01b7f166dcfe3eaef633ffb81 GIT binary patch literal 14656 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 literal 0 HcmV?d00001 diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\321\201\321\203\321\202\321\201\321\202\320\262\320\270\320\265_\320\277\320\276_\321\201\320\276_tpl.json" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\321\201\321\203\321\202\321\201\321\202\320\262\320\270\320\265_\320\277\320\276_\321\201\320\276_tpl.json" new file mode 100644 index 0000000..e8f059e --- /dev/null +++ "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\321\201\321\203\321\202\321\201\321\202\320\262\320\270\320\265_\320\277\320\276_\321\201\320\276_tpl.json" @@ -0,0 +1,115 @@ +{ + "template": "заявление_на_отсутствие_по_со_tpl.docx", + "name": "Заявление на отсутствие по семейным обстоятельствам", + "deleted": "False", + "description": "Заявление в детский сад на отсутствие по семейным обстоятельствам", + "fields": [ + { + "tag": "НаименованиеОрганизации", + "name": "Наименование Детского сада", + "hint": "МБДОУ № 364", + "group": 1, + "type": "str", + "length": 100 + + }, + { + "tag": "ФИОЗаведующегоДатПадеж", + "name": "ФИО Заведующего в дательном падеже", + "hint": "Ивановой Тамаре Ивановне", + "group": 1, + "type": "str", + "length": 100 + }, + { + "tag": "ФИОРодителяРодПадеж", + "name": "ФИО Родителя в родительном падеже", + "hint": "Васильевой Ирины Ивановны", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "АдресПроживанияРодителя", + "name": "Адрес проживания родителя", + "hint": "г. Пермь, ул. Шахтеров, д. 34, кв. 11", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "КонтактныйТелефон", + "name": "Контактный телефон", + "hint": "+71111111111", + "group": 2, + "type": "phone", + "length": 20 + }, + { + "tag": "ФИОРебенкаДатПадеж", + "name": "ФИО Ребенка в дательном падеже", + "hint": "Васильеву Павлу Сергеевичу", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "ГруппаДС", + "name": "Название или номер группы детского сада", + "hint": "Ладошки", + "group": 1, + "type": "str40", + "length": 40 + }, + { + "tag": "ДатаНачала", + "name": "Дата начала посещения по гибкому графику", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 30 + }, + { + "tag": "ДатаОкончания", + "name": "Дата окончания посещения по гибкому графику", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 30 + }, + { + "tag": "ФИОРодителя", + "name": "ФИО родителя в именительном падеже", + "hint": "Иванов Иван Иванович", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "Дата", + "name": "Дата подачи заявления", + "hint": "ДД.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 30 + } + ], + "groups": [ + { + "id": 1, + "name": "Данные детского сада" + }, + { + "id": 2, + "name": "Данные родителя и ребенка" + }, + { + "id": 3, + "name": "Информация о днях отсутствия" + }, + { + "id": 4, + "name": "Даты" + } + ] +} diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265_\320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\270\320\267_\320\264\320\276\321\203_tpl.docx" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265_\320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\270\320\267_\320\264\320\276\321\203_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..ed3a82a3c035db94467bfc21642497bbe62ec208 GIT binary patch literal 14653 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 F{{gO^x32&I literal 0 HcmV?d00001 diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265_\320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\270\320\267_\320\264\320\276\321\203_tpl.json" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265_\320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\270\320\267_\320\264\320\276\321\203_tpl.json" new file mode 100644 index 0000000..ade16cb --- /dev/null +++ "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265_\320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\270\320\267_\320\264\320\276\321\203_tpl.json" @@ -0,0 +1,155 @@ +{ + "template": "заявление_на_разрешение_забирать_ребенка_из_доу_tpl.docx", + "name": "Заявление на разрешение забирать ребенка из ДОУ", + "deleted": "False", + "description": "Заявление на разрешение забирать ребенка из ДОУ", + "fields": [ + { + "tag": "НаименованиеОрганизации", + "name": "Наименование Детского сада", + "hint": "МБДОУ № 364", + "group": 1, + "type": "str", + "length": 100 + + }, + { + "tag": "ФИОЗаведующегоДатПадеж", + "name": "ФИО Заведующего в дательном падеже", + "hint": "Ивановой Тамаре Ивановне", + "group": 1, + "type": "str", + "length": 100 + }, + { + "tag": "ФИОРодителяРодПадеж", + "name": "ФИО Родителя в родительном падеже", + "hint": "Васильевой Ирины Ивановны", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "ФИОРебенкаРодПадеж", + "name": "ФИО Ребенка в родительном падеже", + "hint": "Васильева Павла Сергеевича", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "ДатаРожденияРебенка", + "name": "Дата рождения ребенка", + "hint": "ДД.ММ.ГГГГ", + "group": 2, + "type": "date", + "length": 20 + }, + { + "tag": "ГруппаДС", + "name": "Название или номер группы детского сада", + "hint": "Ладошки", + "group": 1, + "type": "str40", + "length": 40 + }, + { + "tag": "ФИО1", + "name": "ФИО первого доверенного лица", + "hint": "Иванов Иван Иванович", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "Родство1", + "name": "Степень родства первого доверенного лица", + "hint": "Бабушка", + "group": 3, + "type": "str20", + "length": 20 + }, + { + "tag": "ДатаРожд1", + "name": "Дата рождения первого доверенного лица", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 20 + }, + { + "tag": "ФИО2", + "name": "ФИО второго доверенного лица", + "hint": "Иванов Иван Иванович", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "Родство2", + "name": "Степень родства второго доверенного лица", + "hint": "Бабушка", + "group": 3, + "type": "str20", + "length": 20 + }, + { + "tag": "ДатаРожд2", + "name": "Дата рождения второго доверенного лица", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 20 + }, + { + "tag": "ФИО3", + "name": "ФИО третьего доверенного лица", + "hint": "Иванов Иван Иванович", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "Родство3", + "name": "Степень родства третьего доверенного лица", + "hint": "Бабушка", + "group": 3, + "type": "str20", + "length": 20 + }, + { + "tag": "ДатаРожд3", + "name": "Дата рождения третьего доверенного лица", + "hint": "ДД.ММ.ГГГГ", + "group": 3, + "type": "date", + "length": 20 + }, + { + "tag": "Дата", + "name": "Дата подачи заявления", + "hint": "ДД.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 20 + } + ], + "groups": [ + { + "id": 1, + "name": "Данные детского сада" + }, + { + "id": 2, + "name": "Данные родителя и ребенка" + }, + { + "id": 3, + "name": "Данные доверенных лиц" + }, + { + "id": 4, + "name": "Даты" + } + ] +} diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265_\320\263\320\270\320\261\320\272\320\276\320\263\320\276_\320\263\321\200\320\260\321\204\320\270\320\272\320\260_\320\277\320\276\321\201\320\265\321\211\320\265\320\275\320\270\321\217_tpl.docx" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265_\320\263\320\270\320\261\320\272\320\276\320\263\320\276_\320\263\321\200\320\260\321\204\320\270\320\272\320\260_\320\277\320\276\321\201\320\265\321\211\320\265\320\275\320\270\321\217_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..caaecb8e686a229c0cbeb63c58d0921bea4845aa GIT binary patch literal 13671 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 LBQS-!dVzQV@@Zg> literal 0 HcmV?d00001 diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\262\321\213\320\277\320\273\320\260\321\202\320\265_\320\272\320\276\320\274\320\277\320\265\320\275\321\201\320\260\321\206\320\270\320\270_2023_tpl.json" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\262\321\213\320\277\320\273\320\260\321\202\320\265_\320\272\320\276\320\274\320\277\320\265\320\275\321\201\320\260\321\206\320\270\320\270_2023_tpl.json" new file mode 100644 index 0000000..4ac0104 --- /dev/null +++ "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\262\321\213\320\277\320\273\320\260\321\202\320\265_\320\272\320\276\320\274\320\277\320\265\320\275\321\201\320\260\321\206\320\270\320\270_2023_tpl.json" @@ -0,0 +1,187 @@ +{ + "template": "заявление_о_выплате_компенсации_2023_tpl.docx", + "name": "Заявление о выплате компенсации 2023", + "deleted": "False", + "description": "Заявление о выплате компенсации 2023", + "fields": [ + { + "tag": "НаименованиеОрганизации", + "name": "Наименование Детского сада", + "hint": "МБДОУ № 364", + "group": 1, + "type": "str", + "length": 100 + + }, + { + "tag": "ФИОЗаведующегоДатПадеж", + "name": "ФИО Заведующего в дательном падеже", + "hint": "Ивановой Тамаре Ивановне", + "group": 1, + "type": "str", + "length": 100 + }, + { + "tag": "ФИОРодителяРодПадеж", + "name": "ФИО Родителя в родительном падеже", + "hint": "Васильевой Ирины Ивановны", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "АдресРегистрацииРодителя", + "name": "Адрес регистрации родителя", + "hint": "г. Сызрань, ул. Тульская, 4, кв. 12", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "СерияНомерПаспортаРодителя", + "name": "Серия и номер паспорта родителя", + "hint": "0101 010101", + "group": 2, + "type": "d10", + "length": 30 + }, + { + "tag": "ДатаВыдачиПаспорта", + "name": "Дата выдачи паспорта", + "hint": "ДД.ММ.ГГГГ", + "group": 2, + "type": "date", + "length": 30 + }, + { + "tag": "КемВыданПаспорт", + "name": "Наименование организации, выдавшей паспорт", + "hint": "ГУ МВД г. Сызрань", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "КонтактныйТелефон", + "name": "Контактный телефон", + "hint": "+71111111111", + "group": 2, + "type": "phone", + "length": 30 + }, + { + "tag": "EmailРодителя", + "name": "E-mail родителя", + "hint": "example@mail.ru", + "group": 2, + "type": "email", + "length": 100 + }, + { + "tag": "ФИОРебенкаРодПадеж", + "name": "ФИО Ребенка в родительном падеже", + "hint": "Васильева Павла Сергеевича", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "ДатаРожденияРебенка", + "name": "Дата рождения ребенка", + "hint": "ДД.ММ.ГГГГ", + "group": 2, + "type": "date", + "length": 30 + }, + { + "tag": "РебенокПоСчету", + "name": "Какой по счету ребенок в семье?", + "hint": "2", + "group": 2, + "type": "int", + "length": 3 + }, + { + "tag": "ПолныйАдресРегистрацииРебенка", + "name": "Полный адрес регистрации ребенка", + "hint": "г. Сызрань, ул. Тульская, 4, кв. 12", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "ПолныйАдресПроживанияРебенка", + "name": "Полный адрес проживания ребенка", + "hint": "г. Сызрань, ул. Тульская, 4, кв. 12", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "НомерРасчетногоСчета", + "name": "Номер расчетного счета для выплаты компенсации", + "hint": "1111 1111 1111 1111 1111", + "group": 3, + "type": "str", + "length": 30 + }, + { + "tag": "НаименованиеКредитнойОрганизации", + "name": "Наименование кредитной организации", + "hint": "Сбербанк", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "СНИЛСРебенка", + "name": "Номер СНИЛС ребенка", + "hint": "111-111-111 11", + "group": 2, + "type": "str", + "length": 30 + }, + { + "tag": "СНИЛСРодителя", + "name": "Номер СНИЛС родителя", + "hint": "111-111-111 11", + "group": 2, + "type": "str", + "length": 20 + }, + { + "tag": "ФИОРодителя", + "name": "ФИО родителя в именительном падеже", + "hint": "Иванова Инна Ивановна", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "Дата", + "name": "Дата подачи заявления", + "hint": "ДД.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 30 + } + ], + "groups": [ + { + "id": 1, + "name": "Данные детского сада" + }, + { + "id": 2, + "name": "Данные родителя и ребенка" + }, + { + "id": 3, + "name": "Информация о выплате компенсации" + }, + { + "id": 4, + "name": "Даты" + } + ] +} diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270_\320\262_\320\277\320\276\321\200\321\217\320\264\320\272\320\265_\320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260_tpl.docx" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270_\320\262_\320\277\320\276\321\200\321\217\320\264\320\272\320\265_\320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..5943e3eccc281c4ad712d480cea34f2963cdba2c GIT binary patch literal 17822 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 literal 0 HcmV?d00001 diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270_\320\262_\320\277\320\276\321\200\321\217\320\264\320\272\320\265_\320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260_tpl.json" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270_\320\262_\320\277\320\276\321\200\321\217\320\264\320\272\320\265_\320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260_tpl.json" new file mode 100644 index 0000000..7f75416 --- /dev/null +++ "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270_\320\262_\320\277\320\276\321\200\321\217\320\264\320\272\320\265_\320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260_tpl.json" @@ -0,0 +1,235 @@ +{ + "template": "заявление_о_зачислении_в_порядке_перевода_tpl.docx", + "name": "Заявление о зачислении в порядке перевода из другого ДОУ", + "deleted": "False", + "description": "Заявление о зачислении в порядке перевода", + "fields": [ + { + "tag": "НаименованиеОрганизации", + "name": "Наименование Детского сада в который зачисляется ребенок", + "hint": "МБДОУ № 364", + "group": 1, + "type": "str", + "length": 100 + + }, + { + "tag": "ФИОЗаведующегоДатПадеж", + "name": "ФИО Заведующего в дательном падеже", + "hint": "Ивановой Тамаре Ивановне", + "group": 1, + "type": "str", + "length": 100 + }, + { + "tag": "ФИОРодителяРодПадеж", + "name": "ФИО Родителя (законного представителя) в родительном падеже", + "hint": "Васильевой Ирины Ивановны", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "АдресРегистрацииРодителя", + "name": "Адрес регистрации родителя (законного представителя)", + "hint": "г. Пермь, ул. Шахтеров, д. 34, кв. 11", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "СерияНомерПаспортаРодителя", + "name": "Серия и номер паспорта родителя (законного представителя)", + "hint": "0101 010101", + "group": 2, + "type": "d10", + "length": 30 + }, + { + "tag": "ДатаВыдачиПаспорта", + "name": "Дата выдачи паспорта", + "hint": "ДД.ММ.ГГГГ", + "group": 2, + "type": "date", + "length": 30 + }, + { + "tag": "КемВыданПаспорт", + "name": "Наименование организации, выдавшей паспорт", + "hint": "ГУ МВД г. Сызрань", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "КонтактныйТелефон", + "name": "Контактный телефон", + "hint": "+71111111111", + "group": 2, + "type": "phone", + "length": 30 + }, + { + "tag": "EmailРодителя", + "name": "E-mail родителя (законного представителя)", + "hint": "example@mail.ru", + "group": 2, + "type": "email", + "length": 100 + }, + { + "tag": "ФИОРебенкаРодПадеж", + "name": "ФИО Ребенка в родительном падеже", + "hint": "Васильева Павла Сергеевича", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "НаименованиеОрганизацииВыбывыния", + "name": "Наименование детского сада, из которого отчисляется ребенок", + "hint": "МБДОУ № 12", + "group": 1, + "type": "str", + "length": 100 + }, + { + "tag": "MinВозраст", + "name": "Минимальный возраст детей в группе", + "hint": "4", + "group": 1, + "type": "int", + "length": 1 + }, + { + "tag": "MaxВозраст", + "name": "Максимальный возраст детей в группе", + "hint": "5", + "group": 1, + "type": "int", + "length": 1 + }, + { + "tag": "ДатаРожденияРебенка", + "name": "Дата рождения ребенка", + "hint": "ДД.ММ.ГГГГ", + "group": 2, + "type": "date", + "length": 30 + }, + { + "tag": "МестоРожденияРебенка", + "name": "Место рождения ребенка", + "hint": "с. Усть-Авам Дудинского района", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "АдресПроживанияРебенка", + "name": "Фактический адрес проживания ребенка", + "hint": "г. Пермь, ул. Шахтеров, д. 34, кв. 11", + "group": 2, + "type": "str", + "length": 100 + }, + { + "tag": "ДатаЗачисленияРебенка", + "name": "Дата зачисления ребенка", + "hint": "ДД.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 30 + }, + { + "tag": "ФИОМатери", + "name": "ФИО матери в именительном падеже", + "hint": "Иванова Анна Ивановна", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "АдресМатери", + "name": "Адрес матери", + "hint": "г. Пермь, ул. Шахтеров, д. 34, кв. 11", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "ТелефонМатери", + "name": "Телефон матери", + "hint": "+79111111111", + "group": 3, + "type": "phone", + "length": 30 + }, + { + "tag": "ФИООтца", + "name": "ФИО отца в именительном падеже", + "hint": "Иванова Андрей Иванович", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "АдресОтца", + "name": "Адрес отца", + "hint": "г. Пермь, ул. Шахтеров, д. 34, кв. 11", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "ТелефонОтца", + "name": "Телефон отца", + "hint": "+79111111111", + "group": 3, + "type": "phone", + "length": 30 + }, + { + "tag": "ФИОРодителя", + "name": "ФИО родителя (законное представителя) в именительном падеже", + "hint": "Иванов Иван Иванович", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "ЯзыкВоспитанияВСаду", + "name": "Языка воспитания в саду", + "hint": "русский", + "group": 3, + "type": "str", + "length": 100 + }, + { + "tag": "Дата", + "name": "Дата подачи заявления", + "hint": "ДД.ММ.ГГГГ", + "group": 4, + "type": "date", + "length": 30 + } + ], + "groups": [ + { + "id": 1, + "name": "Данные детских садов" + }, + { + "id": 2, + "name": "Данные родителя (законного представителя) и ребенка" + }, + { + "id": 3, + "name": "Данные родителей ребенка" + }, + { + "id": 4, + "name": "Даты" + } + ] +} diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\262_\320\274\320\261\320\264\320\276\321\203_tpl.docx" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\276_\320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\262_\320\274\320\261\320\264\320\276\321\203_tpl.docx" new file mode 100644 index 0000000000000000000000000000000000000000..592db0d069b6e8872f83d3f0b0f56b606cea9680 GIT binary patch literal 15866 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 z

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 Date: Thu, 23 Nov 2023 18:47:46 +0300 Subject: [PATCH 28/80] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BB=D0=B5=20default=20-=20?= =?UTF-8?q?=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87=D0=B0=D0=BD=D0=B8=D1=8E=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=BB=D0=B5=D0=B9=20=D1=88?= =?UTF-8?q?=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/api/v1/serializers.py | 13 +-- backend/api/v1/utils.py | 3 +- backend/api/v1/views.py | 5 +- ...320\267_\320\264\320\276\321\203_tpl.docx" | Bin 14653 -> 14846 bytes ...320\267_\320\264\320\276\321\203_tpl.json" | 107 +++++++++--------- backend/documents/admin.py | 20 ++++ .../migrations/0032_templatefield_default.py | 18 +++ backend/documents/models.py | 7 +- 8 files changed, 110 insertions(+), 63 deletions(-) create mode 100644 backend/documents/migrations/0032_templatefield_default.py diff --git a/backend/api/v1/serializers.py b/backend/api/v1/serializers.py index 41feeb9..773d0ab 100644 --- a/backend/api/v1/serializers.py +++ b/backend/api/v1/serializers.py @@ -68,17 +68,13 @@ class TemplateFieldWriteSerializer(serializers.ModelSerializer): queryset=TemplateFieldType.objects.all(), slug_field="type" ) group = serializers.IntegerField(required=False, default=None) + default = serializers.CharField( + trim_whitespace=False, max_length=255, required=False + ) class Meta: model = TemplateField - fields = ( - "tag", - "name", - "hint", - "group", - "type", - "length", - ) + fields = ("tag", "name", "hint", "group", "type", "length", "default") class TemplateFieldSerializerMinified(serializers.ModelSerializer): @@ -97,6 +93,7 @@ class Meta: "type", "mask", "length", + "default", ) diff --git a/backend/api/v1/utils.py b/backend/api/v1/utils.py index e2b49e7..612170b 100644 --- a/backend/api/v1/utils.py +++ b/backend/api/v1/utils.py @@ -42,7 +42,8 @@ def fill_docx_template_for_document(document: Document) -> io.BytesIO: for docfield in document.document_fields.all() } context_default = { - field.tag: field.name for field in document.template.fields.all() + field.tag: field.default or field.name + for field in document.template.fields.all() } path = document.template.template doc = DocumentTemplate(path) diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 8415ed0..8fac5a8 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -63,7 +63,7 @@ def send_file(filestream, filename: str, as_attachment: bool = True): """Функция подготовки открытого двоичного файла к отправке.""" response = FileResponse( streaming_content=filestream, - as_attachment=True, + as_attachment=as_attachment, filename=filename, ) return response @@ -355,7 +355,8 @@ def post(self, request, template_id): if data["value"]: # write only fields with non empty value context[data["field"].tag] = data["value"] context_default = { - field.tag: field.name for field in template.fields.all() + field.tag: field.default or field.name + for field in template.fields.all() } doc = DocumentTemplate(template.template) buffer = doc.get_partial(context, context_default) diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265_\320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\270\320\267_\320\264\320\276\321\203_tpl.docx" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265_\320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\270\320\267_\320\264\320\276\321\203_tpl.docx" index ed3a82a3c035db94467bfc21642497bbe62ec208..58209db25bc6f2764634d5e5abd9a1c0cd47b753 100644 GIT binary patch delta 9513 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 delta 9276 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 diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265_\320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\270\320\267_\320\264\320\276\321\203_tpl.json" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265_\320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\270\320\267_\320\264\320\276\321\203_tpl.json" index ade16cb..0261416 100644 --- "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265_\320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\270\320\267_\320\264\320\276\321\203_tpl.json" +++ "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265_\320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214_\321\200\320\265\320\261\320\265\320\275\320\272\320\260_\320\270\320\267_\320\264\320\276\321\203_tpl.json" @@ -9,16 +9,15 @@ "name": "Наименование Детского сада", "hint": "МБДОУ № 364", "group": 1, - "type": "str", + "type": "str", "length": 100 - }, { "tag": "ФИОЗаведующегоДатПадеж", "name": "ФИО Заведующего в дательном падеже", "hint": "Ивановой Тамаре Ивановне", "group": 1, - "type": "str", + "type": "str", "length": 100 }, { @@ -26,7 +25,7 @@ "name": "ФИО Родителя в родительном падеже", "hint": "Васильевой Ирины Ивановны", "group": 2, - "type": "str", + "type": "str", "length": 100 }, { @@ -34,7 +33,7 @@ "name": "ФИО Ребенка в родительном падеже", "hint": "Васильева Павла Сергеевича", "group": 2, - "type": "str", + "type": "str", "length": 100 }, { @@ -42,7 +41,7 @@ "name": "Дата рождения ребенка", "hint": "ДД.ММ.ГГГГ", "group": 2, - "type": "date", + "type": "date", "length": 20 }, { @@ -50,87 +49,93 @@ "name": "Название или номер группы детского сада", "hint": "Ладошки", "group": 1, - "type": "str40", + "type": "str40", "length": 40 }, - { - "tag": "ФИО1", + { + "tag": "ФИО1", "name": "ФИО первого доверенного лица", "hint": "Иванов Иван Иванович", "group": 3, - "type": "str", + "type": "str", "length": 100 - }, - { - "tag": "Родство1", + }, + { + "tag": "Родство1", "name": "Степень родства первого доверенного лица", "hint": "Бабушка", "group": 3, - "type": "str20", + "type": "str20", "length": 20 - }, - { - "tag": "ДатаРожд1", + }, + { + "tag": "ДатаРожд1", "name": "Дата рождения первого доверенного лица", "hint": "ДД.ММ.ГГГГ", "group": 3, - "type": "date", + "type": "date", "length": 20 - }, - { - "tag": "ФИО2", + }, + { + "tag": "ФИО2", "name": "ФИО второго доверенного лица", "hint": "Иванов Иван Иванович", "group": 3, - "type": "str", - "length": 100 - }, - { - "tag": "Родство2", + "type": "str", + "length": 100, + "default": " " + }, + { + "tag": "Родство2", "name": "Степень родства второго доверенного лица", "hint": "Бабушка", "group": 3, - "type": "str20", - "length": 20 - }, - { - "tag": "ДатаРожд2", + "type": "str20", + "length": 20, + "default": " " + }, + { + "tag": "ДатаРожд2", "name": "Дата рождения второго доверенного лица", "hint": "ДД.ММ.ГГГГ", "group": 3, - "type": "date", - "length": 20 - }, - { - "tag": "ФИО3", + "type": "date", + "length": 20, + "default": " " + }, + { + "tag": "ФИО3", "name": "ФИО третьего доверенного лица", "hint": "Иванов Иван Иванович", "group": 3, - "type": "str", - "length": 100 - }, - { - "tag": "Родство3", + "type": "str", + "length": 100, + "default": " " + }, + { + "tag": "Родство3", "name": "Степень родства третьего доверенного лица", "hint": "Бабушка", "group": 3, - "type": "str20", - "length": 20 - }, - { - "tag": "ДатаРожд3", + "type": "str20", + "length": 20, + "default": " " + }, + { + "tag": "ДатаРожд3", "name": "Дата рождения третьего доверенного лица", "hint": "ДД.ММ.ГГГГ", "group": 3, - "type": "date", - "length": 20 - }, + "type": "date", + "length": 20, + "default": " " + }, { "tag": "Дата", "name": "Дата подачи заявления", "hint": "ДД.ММ.ГГГГ", "group": 4, - "type": "date", + "type": "date", "length": 20 } ], @@ -152,4 +157,4 @@ "name": "Даты" } ] -} +} \ No newline at end of file diff --git a/backend/documents/admin.py b/backend/documents/admin.py index 629ed86..c207c13 100644 --- a/backend/documents/admin.py +++ b/backend/documents/admin.py @@ -1,4 +1,5 @@ """Настройки админки для приложения "Документы".""" +from django import forms from django.contrib import admin from documents import models @@ -36,6 +37,12 @@ def formfield_for_foreignkey(self, db_field, request, **kwargs): ) return super().formfield_for_foreignkey(db_field, request, **kwargs) + def formfield_for_dbfield(self, db_field, request, **kwargs): + formfield = super().formfield_for_dbfield(db_field, request, **kwargs) + if db_field.name == "default": + formfield.strip = False + return formfield + @admin.register(models.Template) class TemplateAdmin(admin.ModelAdmin): @@ -72,6 +79,17 @@ class TemplateFieldTypeAdmin(admin.ModelAdmin): search_fields = ("name",) +class TemplateFieldForm(forms.ModelForm): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + # allow space for default value + self.fields["default"].strip = False + + class Meta: + model = models.TemplateField + fields = "__all__" + + @admin.register(models.TemplateField) class TemplateFieldAdmin(admin.ModelAdmin): list_display = ( @@ -88,6 +106,8 @@ class TemplateFieldAdmin(admin.ModelAdmin): readonly_fields = ("id",) search_fields = ("name",) + form = TemplateFieldForm + def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "group": field_id = request.resolver_match.kwargs.get("object_id") diff --git a/backend/documents/migrations/0032_templatefield_default.py b/backend/documents/migrations/0032_templatefield_default.py new file mode 100644 index 0000000..daa9fdf --- /dev/null +++ b/backend/documents/migrations/0032_templatefield_default.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2 on 2023-11-23 14:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('documents', '0031_alter_template_template'), + ] + + operations = [ + migrations.AddField( + model_name='templatefield', + name='default', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Значение по умолчанию'), + ), + ] diff --git a/backend/documents/models.py b/backend/documents/models.py index ee0a6d2..fdb67ba 100644 --- a/backend/documents/models.py +++ b/backend/documents/models.py @@ -203,6 +203,12 @@ class TemplateField(models.Model): length = models.PositiveIntegerField( blank=True, null=True, verbose_name="Размер поля ввода" ) + default = models.CharField( + max_length=255, + blank=True, + null=True, + verbose_name="Значение по умолчанию", + ) class Meta: verbose_name = "Поле шаблона" @@ -261,7 +267,6 @@ def create_document_fields(self, fields_data): template_field = field_data["field"] template = TemplateField.objects.get(id=template_field.id).template if self.template == template: - # Эту проверку надо в валидатор засунуть. # Проверяется, принадлежит ли поле шаблону документа document_fields.append( DocumentField( From 97c2f13d6e960aed91bb43a0a37f913efde79aca Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Fri, 24 Nov 2023 16:49:51 +0300 Subject: [PATCH 29/80] =?UTF-8?q?fix/custom=20message=20email=20=D1=83?= =?UTF-8?q?=D0=B6=D0=B5=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/backend/settings.py | 2 +- backend/users/models.py | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 3863837..b8bcfbc 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -149,7 +149,7 @@ "user_list": ["rest_framework.permissions.AllowAny"], "user": ["djoser.permissions.CurrentUserOrAdminOrReadOnly"], }, - "HIDE_USERS": False, + "HIDE_USERS": True, "PASSWORD_RESET_CONFIRM_URL": "#/set_password/{uid}/{token}", "SERIALIZERS": { "user_create": "api.v1.serializers.CustomUserSerializer", diff --git a/backend/users/models.py b/backend/users/models.py index 1bf4a3a..0ada553 100644 --- a/backend/users/models.py +++ b/backend/users/models.py @@ -5,7 +5,12 @@ class User(AbstractUser): bio = models.TextField("Биография", null=True, blank=True) email = models.EmailField( - verbose_name="email address", max_length=254, unique=True + verbose_name="email address", + max_length=254, + unique=True, + error_messages={ + "unique": "Данная почта уже используется", + }, ) class Meta: From a62f866317e322bee7adb8b1d2c0ec6e4f77697d Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Fri, 24 Nov 2023 16:50:57 +0300 Subject: [PATCH 30/80] fix:user email model --- .../users/migrations/0002_alter_user_email.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 backend/users/migrations/0002_alter_user_email.py diff --git a/backend/users/migrations/0002_alter_user_email.py b/backend/users/migrations/0002_alter_user_email.py new file mode 100644 index 0000000..0946ee8 --- /dev/null +++ b/backend/users/migrations/0002_alter_user_email.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2 on 2023-11-24 13:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='email', + field=models.EmailField(error_messages={'unique': 'Данная почта уже используется'}, max_length=254, unique=True, verbose_name='email address'), + ), + ] From 8901febfd85ec5d485263b5fdf971180e67801a5 Mon Sep 17 00:00:00 2001 From: Andrzej Skuridin <132286874+andrzej-skuridin@users.noreply.github.com> Date: Fri, 24 Nov 2023 21:25:38 +0300 Subject: [PATCH 31/80] Endpoint /me fix put/patch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Прописал кастомный сериализатор для ручки /me. --- backend/backend/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index b8bcfbc..a0fbd0a 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -154,6 +154,7 @@ "SERIALIZERS": { "user_create": "api.v1.serializers.CustomUserSerializer", "user": "api.v1.serializers.CustomUserSerializer", + "current_user": "api.v1.serializers.CustomUserSerializer", }, "SENDACTIVATIONEMAIL": True, "ACTIVATION_URL": "#activation/{uid}/{token}", From 4e7fe9e0eec226e9fc047294a4a6e3127125eded Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Sun, 26 Nov 2023 00:17:03 +0300 Subject: [PATCH 32/80] =?UTF-8?q?=D0=9C=D0=B5=D0=BB=D0=BA=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B0=20=D1=88=D0=B0=D0=B1=D0=BB?= =?UTF-8?q?=D0=BE=D0=BD=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\320\264\321\201\321\202\320\262_tpl.docx" | Bin 16579 -> 16580 bytes ...\320\265\320\275\320\270\321\217_tpl.docx" | Bin 13671 -> 13734 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\267\320\273\320\270\321\210\320\275\320\265_\321\203\320\277\320\273\320\260\321\207\320\265\320\275\320\275\321\213\321\205_\320\264\320\265\320\275\320\265\320\266\320\275\321\213\321\205_\321\201\321\200\320\265\320\264\321\201\321\202\320\262_tpl.docx" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\270\320\267\320\273\320\270\321\210\320\275\320\265_\321\203\320\277\320\273\320\260\321\207\320\265\320\275\320\275\321\213\321\205_\320\264\320\265\320\275\320\265\320\266\320\275\321\213\321\205_\321\201\321\200\320\265\320\264\321\201\321\202\320\262_tpl.docx" index 554e08c8718b648c3852b33c2d7831f2a44272b2..9a7ba2c7c59d064b5867fee2a848fbef6f482b4e 100644 GIT binary patch delta 9579 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 diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265_\320\263\320\270\320\261\320\272\320\276\320\263\320\276_\320\263\321\200\320\260\321\204\320\270\320\272\320\260_\320\277\320\276\321\201\320\265\321\211\320\265\320\275\320\270\321\217_tpl.docx" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265_\320\263\320\270\320\261\320\272\320\276\320\263\320\276_\320\263\321\200\320\260\321\204\320\270\320\272\320\260_\320\277\320\276\321\201\320\265\321\211\320\265\320\275\320\270\321\217_tpl.docx" index caaecb8e686a229c0cbeb63c58d0921bea4845aa..58fe668ef59f4f6d35392a697f16a26e0978da0a 100644 GIT binary patch delta 8102 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 From e9711f6efb4b3f71e1cc8b10654f2a32c200d2bc Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Sun, 26 Nov 2023 03:49:07 +0300 Subject: [PATCH 33/80] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20custom=5Ffieldtypes=5Fvalidation=20(=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D0=B2=D0=B5=D1=80=D1=82=D0=B8=D1=82=20=D0=B4=D0=B0?= =?UTF-8?q?=D1=82=D1=83=20=D0=B2=20=D0=B4=D0=B4.=D0=BC=D0=BC.=D0=B3=D0=B3?= =?UTF-8?q?=D0=B3=D0=B3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/api/v1/serializers.py | 40 ++++++++++++++++++----------------- backend/api/v1/utils.py | 26 +++++++++++++++++++++-- backend/api/v1/views.py | 5 +++-- 3 files changed, 48 insertions(+), 23 deletions(-) diff --git a/backend/api/v1/serializers.py b/backend/api/v1/serializers.py index 773d0ab..4874d24 100644 --- a/backend/api/v1/serializers.py +++ b/backend/api/v1/serializers.py @@ -6,7 +6,7 @@ from djoser.serializers import UserSerializer from rest_framework import serializers -from .utils import get_non_unique_items +from .utils import custom_fieldtypes_validation, get_non_unique_items from core.constants import Messages from documents.models import ( Category, @@ -308,6 +308,24 @@ class Meta: exclude = ("document",) +class DocumentFieldWriteSerializer(serializers.ModelSerializer): + """Сериализатор для полей документа или превью шаблона.""" + + # description = serializers.CharField(required=False, max_length=200) + + class Meta: + model = DocumentField + fields = ("field", "value") + + def validate_field(self, template_field): + template_fields = self.context.get("template_fields", set()) + if template_field not in template_fields: + raise serializers.ValidationError( + Messages.WRONG_TEMPLATE_FIELD.format(template_field.id) + ) + return template_field + + class DocumentReadSerializerMinified(serializers.ModelSerializer): """Сериализатор документов сокращенный (без информации о полях)""" @@ -417,6 +435,7 @@ def create(self, validated_data): """Создание документа и полей документа""" document_fields = validated_data.pop("document_fields", None) document = Document.objects.create(**validated_data) + custom_fieldtypes_validation(document_fields) document.create_document_fields(document_fields) return document @@ -427,6 +446,7 @@ def update(self, instance, validated_data): Document.objects.filter(id=instance.id).update(**validated_data) document = Document.objects.get(id=instance.id) if document_fields is not None: + custom_fieldtypes_validation(document_fields) document.document_fields.all().delete() document.create_document_fields(document_fields) return document @@ -455,24 +475,6 @@ class Meta: fields = "__all__" -class DocumentFieldForPreviewSerializer(serializers.ModelSerializer): - """Сериализатор для полей превью документа.""" - - # description = serializers.CharField(required=False, max_length=200) - - class Meta: - model = DocumentField - fields = ("field", "value") - - def validate_field(self, template_field): - template_fields = self.context.get("template_fields", set()) - if template_field not in template_fields: - raise serializers.ValidationError( - Messages.WRONG_TEMPLATE_FIELD.format(template_field.id) - ) - return template_field - - class TemplateFileUploadSerializer(serializers.ModelSerializer): errors = serializers.SerializerMethodField() diff --git a/backend/api/v1/utils.py b/backend/api/v1/utils.py index 612170b..0179d08 100644 --- a/backend/api/v1/utils.py +++ b/backend/api/v1/utils.py @@ -1,14 +1,15 @@ """Утилиты.""" +import datetime import io import pathlib import subprocess import tempfile -from typing import Any, List, Set +from typing import Any, Dict, List, Set, Union from django.core.mail import send_mail -from documents.models import Document, DocumentTemplate +from documents.models import Document, DocumentTemplate, TemplateField class Util: @@ -81,3 +82,24 @@ def convert_file_to_pdf(in_file: io.BytesIO) -> io.BytesIO: out_buffer = pdf_file.read_bytes() pdf_file.unlink(missing_ok=True) return out_buffer + + +def date_iso_to_ddmmyyyy(value: str): + """Преобразует строку из ISO формата в dd.mm.yyyy""" + try: + date = datetime.date.fromisoformat(value) + return date.strftime("%d.%m.%Y") + except Exception as e: + print(e) # TODO logging + return value + + +def custom_fieldtypes_validation( + validated_data: List[Dict[str, Union[TemplateField, str]]] +): + """Валидация полей согласно кастомным типам""" + for data in validated_data: + field = data["field"] + if field.type.type == "date": + data["value"] = date_iso_to_ddmmyyyy(data["value"]) + print("DATE CONVERTED TO ", data["value"]) diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 8fac5a8..74ffa6c 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -24,7 +24,7 @@ from .permissions import IsAdminOrReadOnly, IsOwner, IsOwnerOrAdminOrReadOnly from .serializers import ( CategorySerializer, - DocumentFieldForPreviewSerializer, + DocumentFieldWriteSerializer, DocumentFieldSerializer, DocumentReadSerializerExtended, DocumentReadSerializerMinified, @@ -344,12 +344,13 @@ class AnonymousDownloadPreviewAPIView(views.APIView): def post(self, request, template_id): template = get_object_or_404(Template, id=template_id) document_fields = request.data.get("document_fields") - serializer = DocumentFieldForPreviewSerializer( + serializer = DocumentFieldWriteSerializer( data=document_fields, context={"template_fields": set(template.fields.all())}, many=True, ) serializer.is_valid(raise_exception=True) + v1utils.custom_fieldtypes_validation(serializer.validated_data) context = {} for data in serializer.validated_data: if data["value"]: # write only fields with non empty value From 7474665e5f92ea60d52cfd27dee6764890295dfa Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Sun, 26 Nov 2023 19:22:11 +0300 Subject: [PATCH 34/80] =?UTF-8?q?=D0=BC=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BE=D0=BA=20=D0=BF=D0=BE=20=D0=BC=D0=B0=D1=80=D1=88=D1=80?= =?UTF-8?q?=D1=83=D1=82=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/api/v1/permissions.py | 4 ++++ backend/api/v1/urls.py | 24 ++++++++++++------------ backend/api/v1/views.py | 19 ++++++++++--------- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/backend/api/v1/permissions.py b/backend/api/v1/permissions.py index b1950d8..0f795c3 100644 --- a/backend/api/v1/permissions.py +++ b/backend/api/v1/permissions.py @@ -49,6 +49,10 @@ def has_object_permission(self, request, view, obj): class IsOwner(permissions.BasePermission): """Доступ: только владелец.""" + def has_permission(self, request, view): + """Видеть список может только владелец.""" + return request.user.is_authenticated + def has_object_permission(self, request, view, obj): """Под объектом подразумевается Document.""" return request.user.is_authenticated and obj.owner == request.user diff --git a/backend/api/v1/urls.py b/backend/api/v1/urls.py index 0659d04..65698cc 100644 --- a/backend/api/v1/urls.py +++ b/backend/api/v1/urls.py @@ -26,20 +26,20 @@ router_v1.register( r"templates/(?P[0-9]+)/fields", - basename="fields", + basename="template_fields", viewset=TemplateFieldViewSet, ) router_v1.register( - prefix="documents", - basename="documents", - viewset=DocumentViewSet, + r"documents/(?P[0-9]+)/fields", + basename="document_fields", + viewset=DocumentFieldViewSet, ) router_v1.register( - r"documents/(?P[0-9]+)/fields", - basename="fields", - viewset=DocumentFieldViewSet, + prefix="documents", + basename="documents", + viewset=DocumentViewSet, ) urlpatterns = [ @@ -49,18 +49,18 @@ path( "documents//favorite/", FavDocumentAPIview.as_view() ), - re_path( - r"^templates/(?P[0-9]+)/download_preview/$", + path( + "templates//download_preview/", AnonymousDownloadPreviewAPIView.as_view(), name="download_preview", ), - re_path( - r"^templates/(?P[0-9]+)/check_consistency/$", + path( + "templates//check_consistency/", CheckTemplateConsistencyAPIView.as_view(), name="check_consistency", ), re_path( - r"^templates/(?P[0-9]+)/upload_template/$", + "templates//upload_template/", UploadTemplateFileAPIView.as_view(), name="upload_template", ), diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 8fac5a8..083bf39 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -111,6 +111,7 @@ def get_queryset(self): url_name="download_draft", ) def download_draft(self, request, pk=None): + # template = get_object_or_404(Template, pk=pk) template = serializers.PrimaryKeyRelatedField( many=False, queryset=Template.objects.all() ).to_internal_value(data=pk) @@ -254,22 +255,22 @@ def download_pdf(self, request, pk=None): class DocumentFieldViewSet(viewsets.ModelViewSet): """Поле шаблона.""" + queryset = Document.objects.all() serializer_class = DocumentFieldSerializer http_method_names = ("get",) - # permission_classes = (IsAuthenticated,) - permission_classes = (AllowAny,) + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) pagination_class = None def get_queryset(self): document_id = self.kwargs.get("document_id") document = get_object_or_404(Document, id=document_id) - # ЗАглушка - # if ( - # not (self.request.user.is_authenticated) - # or document.owner != self.request.user - # ): - # raise PermissionDenied() - return document.document_fields.objects.all() + if ( + not self.request.user.is_staff + and document.owner != self.request.user + ): + raise PermissionDenied() + return document.document_fields.all() class FavTemplateAPIview(APIView): From d0b00957f9d73547a4b7243d721b0f48464c2724 Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Mon, 27 Nov 2023 01:04:28 +0300 Subject: [PATCH 35/80] =?UTF-8?q?hotfix/=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20pdf=20=D0=B4=D0=BB=D1=8F=20=D1=87=D0=B5=D1=80=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=B8=20=D1=88=D0=B0?= =?UTF-8?q?=D0=B1=D0=BB=D0=BE=D0=BD=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/api/v1/views.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 80d0750..d801f5a 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -121,8 +121,7 @@ def download_draft(self, request, pk=None): buffer = doc.get_draft(context) filename = f"{template.name}_шаблон.docx" if request.query_params.get("pdf"): - pdf_file = v1utils.convert_file_to_pdf(buffer) - buffer = io.BytesIO(pdf_file.read_bytes()) + buffer = v1utils.convert_file_to_pdf(buffer) filename = f"{template.name}_шаблон.pdf" response = send_file(buffer, filename) return response @@ -364,8 +363,7 @@ def post(self, request, template_id): buffer = doc.get_partial(context, context_default) filename = f"{template.name}_preview.docx" if request.query_params.get("pdf"): - pdf_file = v1utils.convert_file_to_pdf(buffer) - buffer = io.BytesIO(pdf_file.read_bytes()) + buffer = v1utils.convert_file_to_pdf(buffer) filename = f"{template.name}_preview.pdf" response = send_file(buffer, filename) return response From eb9dfb54209fa251cba5948c196059d9d755776c Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Mon, 27 Nov 2023 03:07:19 +0300 Subject: [PATCH 36/80] fix utils.py convert_file_to_pdf --- backend/api/v1/utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/api/v1/utils.py b/backend/api/v1/utils.py index 0179d08..19e8619 100644 --- a/backend/api/v1/utils.py +++ b/backend/api/v1/utils.py @@ -79,7 +79,9 @@ def convert_file_to_pdf(in_file: io.BytesIO) -> io.BytesIO: check=True, ) pdf_file = out_file.with_suffix(".pdf") - out_buffer = pdf_file.read_bytes() + out_buffer = io.BytesIO() + out_buffer.save(pdf_file.read_bytes()) + out_buffer.seek(0) pdf_file.unlink(missing_ok=True) return out_buffer From 4c55e4e3c4008cdd22983bc574da150a97e3e510 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Mon, 27 Nov 2023 17:23:04 +0300 Subject: [PATCH 37/80] Update settings.py --- backend/backend/settings.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index a0fbd0a..3a7d9b0 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -156,8 +156,9 @@ "user": "api.v1.serializers.CustomUserSerializer", "current_user": "api.v1.serializers.CustomUserSerializer", }, - "SENDACTIVATIONEMAIL": True, "ACTIVATION_URL": "#activation/{uid}/{token}", + 'SEND_ACTIVATION_EMAIL': True, + 'ACTIVATION_URL': 'auth/verify/{uid}/{token}/', } EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" From 76a8036edb251c6edce96a972cee98968a09b508 Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Mon, 27 Nov 2023 17:45:20 +0300 Subject: [PATCH 38/80] bigfix/ pdf + preview jpg --- backend/api/v1/utils.py | 2 +- ...270\320\272\320\260\320\274\320\270 1.jpg" | Bin 0 -> 38075 bytes ...234\320\221\320\224\320\236\320\243 1.jpg" | Bin 0 -> 71922 bytes ...20\260\321\206\320\270\320\270 2023 1.jpg" | Bin 0 -> 31315 bytes ...0\276 \320\224\320\236\320\236 2023 1.jpg" | Bin 0 -> 48080 bytes ...20\265\320\275\320\272\320\260 2023 1.jpg" | Bin 0 -> 54253 bytes ...273\320\265\320\275\320\270\320\270 1.jpg" | Bin 0 -> 20463 bytes ...\275\321\213\321\205_\320\224\320\241.jpg" | Bin 0 -> 42228 bytes ...265\320\262\320\276\320\264\320\260 1.jpg" | Bin 0 -> 35032 bytes ...260\320\275\320\275\321\213\320\265 1.jpg" | Bin 0 -> 108141 bytes ...5_\320\277\320\276_\320\241\320\236 1.jpg" | Bin 0 -> 23616 bytes ...5\320\270\314\206\321\201\320\260 2.jpg" | Bin 0 -> 61037 bytes ...0\265\321\201\321\202\320\262\320\260.jpg" | Bin 0 -> 80644 bytes ...275\321\206\320\265\321\200\321\202 2.jpg" | Bin 0 -> 71105 bytes ...5\320\270\314\206\321\201\320\260 2.jpg" | Bin 0 -> 59851 bytes ...0\321\201\320\276\321\202\321\213 2.jpg" | Bin 0 -> 72794 bytes ...\320\260\320\261\320\276\321\202) 2.jpg" | Bin 0 -> 66898 bytes ...5\321\201\321\202\320\262\320\260 2.jpg" | Bin 0 -> 65767 bytes ...201\320\273\321\203\320\263\320\270 2.jpg" | Bin 0 -> 78731 bytes ...00\320\260\320\261\320\276\321\202) 2.jpg" | Bin 0 -> 66701 bytes backend/data/template_field_types.json | 30 +++++++++--------- 21 files changed, 16 insertions(+), 16 deletions(-) create mode 100644 "backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\275\320\260 \321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265 \320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214 \321\200\320\265\320\261\320\265\320\275\320\272\320\260 \320\270\320\267 \320\224\320\236\320\243 \321\200\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\320\270\320\272\320\260\320\274\320\270 1.jpg" create mode 100644 "backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\275\320\260 \321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265 \320\263\320\270\320\261\320\272\320\276\320\263\320\276 \320\263\321\200\320\260\321\204\320\270\320\272\320\260 \320\277\320\276\321\201\320\265\321\211\320\265\320\275\320\270\321\217 \320\234\320\221\320\224\320\236\320\243 1.jpg" create mode 100644 "backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\276 \320\262\321\213\320\277\320\273\320\260\321\202\320\265 \320\272\320\276\320\274\320\277\320\265\320\275\321\201\320\260\321\206\320\270\320\270 2023 1.jpg" create mode 100644 "backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\276 \320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270 \320\262 \320\277\320\276\321\200\321\217\320\264\320\272\320\265 \320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260 \320\270\320\267 \320\264\321\200\321\203\320\263\320\276\320\263\320\276 \320\224\320\236\320\236 2023 1.jpg" create mode 100644 "backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\276 \320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270 \321\200\320\265\320\261\320\265\320\275\320\272\320\260 2023 1.jpg" create mode 100644 "backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\276\320\261 \320\276\321\202\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270 1.jpg" create mode 100644 "backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\264\320\265\320\275\320\265\320\266\320\275\321\213\321\205_\321\201\321\200\320\265\320\264\321\201\321\202\320\262_\320\270\320\267\320\273\320\270\321\210\320\275\320\265_\321\203\320\277\320\273\320\260\321\207\320\265\320\275\320\275\321\213\321\205_\320\224\320\241.jpg" create mode 100644 "backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\236\321\202\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265 \320\270\320\267 \320\224\320\236\320\243 \320\262 \320\224\320\236\320\243_\320\262 \320\277\320\276\321\200\321\217\320\264\320\272\320\265 \320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260 1.jpg" create mode 100644 "backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\241\320\276\320\263\320\273\320\260\321\201\320\270\320\265 \320\277\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265 \320\264\320\260\320\275\320\275\321\213\320\265 1.jpg" create mode 100644 "backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265-\320\275\320\260-\320\276\321\202\321\201\321\203\321\202\321\201\321\202\320\262\320\270\320\265_\320\277\320\276_\320\241\320\236 1.jpg" create mode 100644 "backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272 \320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\203\320\261\321\213\321\202\320\272\320\276\320\262, \320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205 \320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206 \321\200\320\265\320\270\314\206\321\201\320\260 2.jpg" create mode 100644 "backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272 \320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\275\320\260 \320\262\320\276\320\267\320\262\321\200\320\260\321\202 \320\270\320\273\320\270 \320\276\320\261\320\274\320\265\320\275 \321\202\320\276\320\262\320\260\321\200\320\260 \320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276 \320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260.jpg" create mode 100644 "backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272 \320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\262\321\200\320\260\321\202\320\265 \320\264\320\265\320\275\320\265\320\263 \320\267\320\260 \320\261\320\270\320\273\320\265\321\202\321\213 \320\275\320\260 \320\272\320\276\320\275\321\206\320\265\321\200\321\202 2.jpg" create mode 100644 "backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\202\321\203\321\200\320\276\320\277\320\265\321\200\320\260\321\202\320\276\321\200\320\276\320\274 \321\203\320\261\321\213\321\202\320\272\320\276\320\262 \320\262 \321\201\320\262\321\217\320\267\320\270 \321\201 \320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206 \321\200\320\265\320\270\314\206\321\201\320\260 2.jpg" create mode 100644 "backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\203\321\211\320\265\321\200\320\261\320\260 \321\201\320\260\320\273\320\276\320\275\320\276\320\274 \320\272\321\200\320\260\321\201\320\276\321\202\321\213 2.jpg" create mode 100644 "backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\275\320\260\321\200\321\203\321\210\320\265\320\275\320\270\320\270 \321\201\321\200\320\276\320\272\320\276\320\262 \320\276\320\272\320\260\320\267\320\260\320\275\320\270\321\217 \321\203\321\201\320\273\321\203\320\263 (\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217 \321\200\320\260\320\261\320\276\321\202) 2.jpg" create mode 100644 "backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\277\321\200\320\276\320\264\320\260\320\266\320\265 \321\202\320\276\320\262\320\260\321\200\320\260 \320\275\320\265\320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276 \320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260 2.jpg" create mode 100644 "backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\272 \320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\270\314\206 \320\276\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\320\270 \320\276 \320\275\320\265\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274 \320\276\320\272\320\260\320\267\320\260\320\275\320\270\320\270 \320\277\320\273\320\260\321\202\320\275\320\276\320\270\314\206 \320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\270\314\206 \321\203\321\201\320\273\321\203\320\263\320\270 2.jpg" create mode 100644 "backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\275\320\265\320\264\320\276\321\201\321\202\320\260\321\202\320\272\320\260\321\205 \320\276\320\272\320\260\320\267\320\260\320\275\320\275\321\213\321\205 \321\203\321\201\320\273\321\203\320\263 (\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205 \321\200\320\260\320\261\320\276\321\202) 2.jpg" diff --git a/backend/api/v1/utils.py b/backend/api/v1/utils.py index 19e8619..3c7fd63 100644 --- a/backend/api/v1/utils.py +++ b/backend/api/v1/utils.py @@ -80,7 +80,7 @@ def convert_file_to_pdf(in_file: io.BytesIO) -> io.BytesIO: ) pdf_file = out_file.with_suffix(".pdf") out_buffer = io.BytesIO() - out_buffer.save(pdf_file.read_bytes()) + out_buffer.write(pdf_file.read_bytes()) out_buffer.seek(0) pdf_file.unlink(missing_ok=True) return out_buffer diff --git "a/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\275\320\260 \321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265 \320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214 \321\200\320\265\320\261\320\265\320\275\320\272\320\260 \320\270\320\267 \320\224\320\236\320\243 \321\200\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\320\270\320\272\320\260\320\274\320\270 1.jpg" "b/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\275\320\260 \321\200\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265 \320\267\320\260\320\261\320\270\321\200\320\260\321\202\321\214 \321\200\320\265\320\261\320\265\320\275\320\272\320\260 \320\270\320\267 \320\224\320\236\320\243 \321\200\320\276\320\264\321\201\321\202\320\262\320\265\320\275\320\275\320\270\320\272\320\260\320\274\320\270 1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..acefd99b60a6a2eefbe4a6d04041252d143b42f8 GIT binary patch literal 38075 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 literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\275\320\260 \321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265 \320\263\320\270\320\261\320\272\320\276\320\263\320\276 \320\263\321\200\320\260\321\204\320\270\320\272\320\260 \320\277\320\276\321\201\320\265\321\211\320\265\320\275\320\270\321\217 \320\234\320\221\320\224\320\236\320\243 1.jpg" "b/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\275\320\260 \321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265 \320\263\320\270\320\261\320\272\320\276\320\263\320\276 \320\263\321\200\320\260\321\204\320\270\320\272\320\260 \320\277\320\276\321\201\320\265\321\211\320\265\320\275\320\270\321\217 \320\234\320\221\320\224\320\236\320\243 1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..45ab331dba55408eff4bf39c700550caa5f608dc GIT binary patch literal 71922 zcmeFZ2~bmM*De}FjffCrR1l(~qK%kVKw5@GMMXu7ii&`cRvVdwv@J-KkRUT6M5UX2 z$_H@*RD>vlQHTkUK-#7;%#omE>UMwx_Erg7v$MIo|8wiys#~{C-MZ)er|Osidco>gM3_U_uV3u7|J1alSr!px3h0x>54ov(ie`R^RU#ALP&vv`5Y zcP5`qO%`M3EH*J+Y%(jx;4v7JdH-c>%>Vf^nPWP4-hAu=vxVm92b!%gb4*N4=gc*o zH*fA-^wSyW?=f>1&$C{!aoc>GgD0>n&)ROfbnW&6*X>W*?GE(;t2|Hsl4Z8g-eJj7 z$JJ}x)~@@`%X_oW4_kZ#ckJ91w0qCq(8EWLh8+u!IQ3J^>DajVgmWpW=hJ8xE@tQC z=H(X@UcO%X>u+W3f8Drw=kC3#>YDox9yT;KH9zG&d*0F^5_fhFX3YPCaCy+6jZe5IY=tf!hXt%?V!4?257n{Ht&IHZZ1DS%_)d`96q*NMqCg4<@>5uWlpk< zb8%)L&2mmZGEkHC&1tJ8RYU;}Gc%)CLJDmA7CzRnjds?XAP+Z=;RQtHkft@P`DKwql1?I)xb+w2+O{?uRJ^@s$zO63Y&W6Y@MJ^%EC#3&CKx?~cu=Ha z8+;PTFHEK6_(lmXfsyU_M!U%yF<`=kDs?d0=h<^GK>urMx_JeGTqfOL9?q*IJ+XgQ zwqzA%W)@S(1P+i!q^gYe5ONrZFVLO@g3$RdoQedJ^I9g0PN`UOp@yA5i;11Osr^n`dp-NsGD+4fMp?ya%x5vY<4NFrz zGqykuN>YhqO$XC1p4liAlZ!bP9`u8x62zY7uI?OaiTCARrjyPpsmtP!Gy36Z{4jr~ za%wRxU3BqX%M}Tuic~1#I2W+l(n;%#tm#0DPQ2( zNB2aRaYr9N(cnk-Gd}X)$FQecf=sa=D~pLCuKVyU@41qThZ87^Bus3sP1xgJm>j^% z`%=qV47E(+%%JNAaxcNFXXDhrO}YI{Weus}Xd`Ho-&{zzc-KE{_n#DN5 zi3UfVZ9Mf7VD}8n-_RRCFs`(2fTOW z1^ZxX4clfh?K|MedvFqZZ@Wr)ruK51c zM_)dR$@$^q#j$JDdr*x;Ud1l*4j>(pC3zPU16)KttbS-5i+GgsKxtgwS-F_H*EA?YLw2d^9U63Q9Fq7H!{NX>cVzv7hIBT_FL ztmc7?2Q?oel3!SSQOunjPLJBQQMB$Yx;9+9YHS#&12CW@@|X`>Vg*6%^qLQH)*bm2DbB5ex!zNhMS4ix*) znAP9^Dw3r$`-z^JQ2}B#QXLBv>aRmm1Ch}=BW#=!d6?>d8W6aQ(kW0k>VMoM9Q#nQ z(3Y`^c9MXPCoSZg0q@(Gi-|TbYvR8-WKQEPCMwrM`H!GsW8D=0;E6jQT`UBpWZ{eD zE+n88S?CQueBVjLm1^=c`6kM#g><6v5j_T7p-)EcK!>T=w}&kf%0rK#&!n;SNzjl| z>X5+JU&oIaG)Fla>3rJWB&=9qOSXZ?owJxF^f@=#g<}I-!4)kSLy&%-@fMt9*d5Pw zVQgqF$&UdxjcOdOAb8}@&!h3YCy5LnfY7mnYzm3g)y=iR4?|)f#u14S?=I~l;=JKT z)yJzOQ5{}%(-56NRUbH$NphRToTfnQW4rK0ipPq4#%g#MKoLnz7{hYBg!DR8#98cb z+Y(l=3UDhxT@ZJatp67jro@}VNl;qNOZ67-qXYhdKx>!ayWZRJ^qr4zX7Eqwar1h6 z@|C`$V}Lxkl@!Q4$${36WgB9khfLfkYynjOX(3=xM>&o)iyFGdhXfcbqR4)tX4Y*Mk(BvKjiZ8jKspzlVzeA1=?88iR7BYqyuCiIo z8BPJE;d~?DDIT+E066W(7@km|I=NYcUoa*CJ@=BGnH}@!HwoD(?!||uw)W3|xTn9F zVwc!*wDG}$`v@?W3r!q{E}Xj!y_&?ELQ7}_wS6h~!-SiDLm53u6-5oH{4^y(ei;0#FEuj# zXWX;6|1k-u>8C*b3uB@13|VeRiYMn(Ivej2vEzzHtS;;}^TY(v!FY>^O(fY6S0Fv$ zxB&YEz+G|Drw@7&mO;TC@+*#Y&80M12SDH2Utf==0V}^5D7?Yco=v-(e%MM}V!X{% z<_R4b?lgl${*(nW^$f7SypG0JvI`i?;Bezz#DN|J)f)D~s{l!Rg}JKi2DV+8Kjy|P z{F&|zP;=p+2k;N&Q37x(U*J3nwYamE(S9daC-~OirgG((sg+jf-Cj?d*=l_1q^}4G z)gK4MWwRI_SIit;LntQN0Hn^Pqy$}L2XPBXzC2yd%9OJU+`uw6Ajg>}Ryu(Jl1u*N z`(#y53NP=S&@m%(u&QZreVae0g98NN3OSFfOD}-u^k<gPjKl!g2_b>qZ0dR<%b91RD&NBq?IYl$mW{_gy6)t=mZX9t%-z?@w>FX(dDPVcm@B{1u z)?AwQE)rk#uUrE;0Mf{z<^8G6PY2JW5{mkzY7f%B7rylsXH2Hi(7=S&5IR{o5t26Q zB|XJ~Xd^MqXLOUAWF^c5LKesJ3nfpm?g{iMm1UhsvV~)mQ@JkgpiWv+&tJsA!(O1Q zvnTEFz;uOc`}a_}_!~AKc2m^_8@zSXb*CaQU)d@GY~zP4j0Bi_jb&a@HtH#@XKgt0 z2dRM~A&i)JgeC|qA%nB@vcCf;IRI_RcnH;qDL;V=cVaJlk)cE1mR-CUUu0S8qksA^ z`OIh%=c>tPS%(60MGwah@N#G|h!aQK7)#(F&|D;J#G@(CNeceMET%b3JBtB5)vMXL zqk3PEEuP9k%%H!4^Uh9cis;3WNVQwG$0PbSH7+0V+5>M<&wmOC9^9L_xw>}zz_=2B zo>qh`0PCXYhx++pD(dAiD}a|(1r-8L+d)}w6L;>*s!k1QgrMT0&oTJG-cUZU)awON zcF8bG1dtJvq9n}Xl!@t`;>vn zI)W-!d9-!<$z z9?w{0ygQ3g-Sv9m*1=c-VvD?HF$-v}oh>C*^SIgd^s`CTy*q~7Zd1Qb^N!y(lvLPXKOq<2T$w2+`%x|P^2}{q3eES%o$2Q^`rkeRTR0S5{<)R(gNDR z*52flSxjE#_W0%X-7EbrJ{2NUN`0n>;cyWYGYgC3{C3|9&&S@%kHfjXb61Hmq zOL&^d088BbIA3mow+AJH*ZM+$G46#jfPoIuLZSoYsltlheuu+Bc$MN(6Fy&H(WmMT zyhlsy_~y*b|Khh?@}8}2N&T&f>i#bLhGY2Bd*@G@KwJ$8a^3YrP0ADkAzZUK{E{!i z`S8!iylLi0<2LA$=7rm?!JmK{3HOo^EBK!73H6{jt3`kHlZ5WEfqwz0ZAZ3184t#q zKGP`TZvlUroE+ej>sv7yo(2qhCpND(<_lKQlb|fcVq^(z5I$Wps`E{|B#iaLXNUPN zdOGGh4DVjAo!-rGgTDRXzn&*pF*KRPU#zMlbTDiiho+s3$#RqBx&Gkim$W5atBsqD{mmw?RD1gY*eC6+Xu;=zz za3V0Os>$gZ{tz#c5+_x3-o4_`&lP&XhGo&Q$CuUtBCh8_hv zsMw-ej1A4Rqvc&yT~B<>iQ9?tp}e~D-}3%-qA_*wQAit>51T?dl|t^?#sW<{P)|Oh zbl&LQ6SxiOfW88LYL3>RdHQ_dMB~lKzW`hp&K!mAJ-6SOzt#*)_uXU0BzSJSVE5bL zRP4{LnD<0`#xQdZ(Tkpdq7(y>?hD?K5x-;n$sWTEAcPMVcN2Y69M>aT2Bw{K7GH`f z2cIXIDD}0Cny-)Frjh~Qx?LfAQI@N zq>6E7v~L6L0&^(y+lFRf7Nh3n!RyopoKFYIioW`h{O$1%U}Thhyw96|Jt^ZB{?GxF zt@ALpnE%{2{0#+gjA}{C?-T<2S#lc@V%M9>u}PE-z{?VyZA9Oq^o_M+9&Cv)S2k0e zSpD(w@v-CP!A_Coqos>BEN|jfzKgmla=nio;54P_yj9GR(GJ9Y$eX-~z8y>}Xrg2( zmLQuxMB`DUGPMM%$1jegyYzdNPbkbf>*6AIzAHMVA=!=-SM)Yf=F!3q44#>mIw;=0 z-KjG8O=;h5tIH&Drbc*rI-17iF~mZ9(g~J4Q8Ss3l1(=qO6X*bB8$`fNNA#EY=nx` z$dmhwG0Nf^=p|mvyi#^k@avd;YoEZJF~GjK<{BCu+NnuO@*HTivv^t0t)SGE7{+f< znAieLL>BUZKn*1a_SC#)IF93i5VAb2;|WyM8I1v1S=VLaGUijP_WkJ=``Q?Fk3*24 zZ@PFpVbO$dJ*zsQOwax%$UZIqJGbduxWf+9PoC(RIA;iMQat@Pnwq>XXcA`MoPzCT zB9tqeOl4&Wn;cNcXa;eV8&S&=7}99xK6fD6mm4l`2R=s( z>9k%iT-zP@bJBk?>1GToEQn^ba~cY4%TvyXn7O2851Edj-44a9Ygey$d5}9Bys_94lCp7OVZe|toT-E~I0@%;u@jPm_U=eif z9va3%zbNcKTwLTJ*o5XxS+$HonTtm+-_GEP$SM~>x>Ufa(`5rByBh)BRp;x%??a`B zjlaQ>2LBH&8yauXo=VyS+gj%7YwyL6*#VQ+)I8a#OWw;Z+4}8}t09bjwqK~cNn8Q7 z-h&gND3q2^ES|+A2uIR8Tr399@FVYyGhYif8E-Jp{04ChJK?ZC!Y#@Z6dc3b(I{qv z?ofN8bn#cKkq?5U>|+Dc3eb1V7GpFu{>rdpyhU>@bfJW=LshZ5pc?wpAp{Sbp=SJo z43e?Ksw=ktG5GaIeD8n0*Fm3P@{VW)k(4A;`c{Ysl0+AebaJi;en=2l4KrL54vk;T zedGIL<`UhxnuZgR6KmeQ={|L@ikJOFMT!#%{BBBwuQFs^#J)B1)d$cUq1sKf_F##f%Op zYqTREV@h4OS6HY6S;AE}^p!>pF`Ovl^5_c7#@cavD+~jHeW?Y-O6DS7=Y75dPFz~Ooqoze z^kBN1V_Mz#9G(XLL{{^fWK{#3zcPXo%6i{UjyYo%?#9OdPY8Gav5#0W#fkJICx^2H zSxbSF`su0Qgc8>|Wd+6V1}G(r1Za;tS5KfA`7ObSFCONQ+2+s#o|E)dGr*1ZvvrOw|sesmo>h zi{#7R8G)SqlbD0E8vJ>qUA^X2=j1CH?b~W9pIoM zb(vQL9?CyZ6w=7r$rj1!Hj&Y9DbA;tu6KPR#C#n^?9*Ud0&- z6aE}xqY%wxS3v~hcTS^sM>8Mi7h?Dsnta`v0_Hu-`d;{CwX|Z9wav1$^(W%n#*%LT z9)U>`iiOZxr#IW#qz1h9CG|}IcRl_T9-g&f_2reXlz}rt(5+pEcZJwzX$Y07S0!hjm%9M}Ejf9v{i-{LIH1m&Ol&$0x-=<_UhL;a7&XY>oH z0WTVN*ZKo;o;E0fx2bb+yeluUHuc8fuH=;#@7B&^Lg5PF09uK9GNo-t3rPbS1#+n! zNk1^R`#m&XE)z$vFZ+Z#C+oM*ZI$TTx8c5Ol`RCw#NJUjl;X!oMj@M z6C!I-6g~Pfiz!kxa@)`>BN}^M{&k8Us$|O9olILeFh0$$QBXmpDs_?iXecTsecs=% zOUA}O!j#i`tJdR^MEdU@|2F+N{{NfeH{4*n{ZA#2xDuMDrWD`ga~iN+R6E8iQsai_ zsQ-X381JkBahLopPShm0tnP>1)fW3va3B&cO}I%dB5sajn4x%}nC_RZ&NwBaR=20! zfBBF`ZGQqaihTpdDz@T}LL&W$k%i#t(Y-_r?Y;irkb??eJhoQYn^K2W1r-R~XhFNd z$-A{s)h)952M{`KIFf(3=oskwMvig?nyE!U?{Tpo+vx(Jse1P)4Hduk-bY?ZK`E1yt0 zh`BCA78lB;uT$X*U6u_^SNHPWlQ+P@kIenjhnd=*`GZ9j5i>}D_Q#cxg|2}unZAU1 z|D;JzV#S>KFd51PX7mprtcGI>+dWANRZB1PSEDrzmleH;%g1dS?y-)7AxP=Nx1y?e zpFJ_OGpWIOkrshk_R21`QndU4?g+@1NV7ON?^=!p^j^)rgd#U{KWd(g9kJ%Q+S!jh zw4xd61m{q4@e6Cxm%fX0(O5A_C!GT2Gg077UQ-c1Ck=5QNJ?ccil4<;QK{2T>16Y9N2DS>CiUL2 z@y5uvZ^j8v7AwJeJ%4c zejZ^Ka|*Wr{@E%qQB8gAq!$2WNgY<%Rbf~S)gA%f=QxVGIL>q@H3`2B#EOwkPzV^? z@e#!BYJpBDS?DPMXY%V(aJVt(TnD=^L2(B2)ke=V7BH376kEg{jzJGDTHmxzaVG28 z#($%*%c&E;5b;I26>~_Z@eU}hdGI0KVkosPQXSiIzOj!O0PizaSHA#!iqiIg_%LSP zlaZR-P!ZzuBwOUWp=4`7O&1>6&m46U4(>)GHhdI1E(iUx3u&)L`dG$(R#y!}C6GvJ+b2=j0IA#9y5Jt%`Pj)Nrc9 zhqxR}m1L$^;mVn@vzXVl$U+++UBl}T7L=kcy4kG=g)^}vd5~TY^d;SN0i;NIw!rD!T^u1NdTrGrC*8C=G`))KaygNCT$j*QZc(nYKh9 zq(`t2z~?k2ZO zpvzE4QPJQ7?5j&ur4{^xyo#CT8|v3U*@jK1Y1`m!phk_ov}RDNMV5`lMb7~^nWy^T z_>5II=gvg5PP7bHs4RlSjMZkU(F2wwbq#Ed*Ru!c0ft@2U_aspkkOcC*n^;vyxBu~ zwMDVkcI?m|r=n6~L9M^Yc=s=0_wl zoPf&Qnz3V0T1fM7(^cHy6tr5ReG57$!}3UR`;R97D7YN{w&2K-gJq{rWj?%Ry=OUQ6YUo6$|Io?Ek6Kc zi{K+oy(r^9p#NStJT<+*tK8Y8TYneAr#>7T=Y_3{O{$KF2WWp!PI{Xc@q&-7SLIHg zex8!`gZ${itwia6LuP3DURtbZuF*Cdyoyd30+Bw2DFfAjRKFSj7Q^afUKT6>>>oUe zf0}pXSxfI1lrX!PTvK;v&)nYcK5k}T4?gP@xr0TT{9vj`nq1M!%NlR>CZ0LhGwfOTs-se~)jM)yP;%z?O{QfD@F9fD@Cz}(KHk2m@{Q0Bvi+|uS zcBzI_pujPf#M@UchuElEf$rZ+oqlW6q4!mk&=20B1@C?V5(=s6e*PBKXh<+cFrckZ zeak#tY2mY@|HO@{>Bz5l8lUhg)jO_ao=^FI;vp}@mJogE)=-REia`M@xr>m?!O_ow zk%tix6s43dqi+Y;IdC}W7U5Io_;Vj@s(PCq_ITL;)I;aMBmG)tBkUJ@|E;m{(Br3{ z=o8&3S4~}}^uHPZt@S^vk>>d*@PdWm^gU3xa`AhZ#?v`-WkkdfFe7@cvX=>s`@*Ab*Vg9e6t~Gv;?}9sLkw1YDKpOYbHs91(AL6-2rX zUH%YGV@5z#pliDV_od?e^xZv22X+n8!ykRLzgRJ_bNw$x>Fa8Km8|?Br2bxJ9IuO- zJ)!29(3T3^VQ-2fe7JX-U;}>-q|+ukG@Ycyu=m|#k_QtmD*%W5R}YMJ8VlUsfzw3? z2Aiq4h=k4dn>R_)QqS62HdvWo#C5WA1?vX+%)7Kx>aa}zphtAK!O$S6sw$4S37F(Q zpnDJ98$ey(Krm=5;oN@{Me{kB;f}0{k5R8}nkYkmHLzpX=uDGIPXyA(Z2WsB6Sf2Q zcWZd=}S(!I9jAnP_}3-$TiD5Y?0N;UnsR#OMZopI3#= z_CdmQKu}my%fK1kX+E#a7Ng($--HHtAIxHY_c<_&;W`P8Zr3wOWmGHrcMyd-i2v0@PT0dpZKmAW8k2unIf%$Dh zTp|%W1pB0`oP<{d%Rzi0>;vMuT-E^jC0-=kkMgjrAAu`ro4=)i@zFk

j$(LS#Z` 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 literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\276 \320\262\321\213\320\277\320\273\320\260\321\202\320\265 \320\272\320\276\320\274\320\277\320\265\320\275\321\201\320\260\321\206\320\270\320\270 2023 1.jpg" "b/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\276 \320\262\321\213\320\277\320\273\320\260\321\202\320\265 \320\272\320\276\320\274\320\277\320\265\320\275\321\201\320\260\321\206\320\270\320\270 2023 1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..49c248c0c115d43dded30a30ed718b95b0b28c39 GIT binary patch literal 31315 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 Le@ha_eee5UOpGHX literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\276 \320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270 \320\262 \320\277\320\276\321\200\321\217\320\264\320\272\320\265 \320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260 \320\270\320\267 \320\264\321\200\321\203\320\263\320\276\320\263\320\276 \320\224\320\236\320\236 2023 1.jpg" "b/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\276 \320\267\320\260\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270 \320\262 \320\277\320\276\321\200\321\217\320\264\320\272\320\265 \320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260 \320\270\320\267 \320\264\321\200\321\203\320\263\320\276\320\263\320\276 \320\224\320\236\320\236 2023 1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..f978b960fe6c5e764e9a9265dc4fb9f921405bce GIT binary patch literal 48080 zcmeFYX;f3$);78k1Qj7jFGymK7D7}yg^*weB4TVoL5LPAO~jN+Btl3Kq!+L`N(lu~ z=|qI61R@v`A%T=dAw3Zg(v?ahvbRFq1tEOfbME-={qB8#yyHFR=Y_!tV`OJ#&1TIx z*E63v|88Ce813`&@dC6KXaP5oUtoR^*ac|)n?FAm`8Su)(wct_EL)`Ylh#*lt!2Q1 zWm?+HwB|(s1^~1c{%dXE|N7Bdpslk|S8vhcCHlw%HAcV!Ep6=uI@${t>gXU($0P3p zI?EOsuiCOh*W}P?z10^@w_dyTaM7Bb&l}AScYuon|{K?7L z#dX_uw_UsUczN&j*>~jVG5>($CjvvyoIMv79uavtntCOMb~QHXdU8r?T6)IqJO8+Q zFZb8`d5?;UOG?Wgmp^$?&8ey7zO1Wn5{jBz#J|7!qpQ28w@>n}e?YEK{`KMGr;*Vy z=CRgZpEoXE<9HY}`}tDm67#iA@^#P;(f%pfe^0Q)|B+<>Td@CIt^r`F zwiaSM?PUM~&}cRQ4;CaW0sjA&|3d}%-E$9_5p5JzJoKrlU`+r_EgL7G@V2nHaacRE zdRBH6vSo2aF%l%nQ73k#`f_rTVdwjuBrGSzZVdu8M}yF;Tb z0i4mg3-ZsZ7`ftU2w~Kwt||t2F1L(a=rj*p7dOtVD0GAf33TF9_|E?+75xump0uIhOt=hC*D*mPpUReQjtMd62-UzfFcRr;|XNzjFPp z7$sLSL)o-$8KIfD6s8=_Rs=gt9tA%<8MDX>7NqlRFIFW4J)Z{>GZ<|%+zcF6UWuLu zTCDC0kpDq(GZV~3Ep^G2v6sG6hr;m?RzVTI!dj7M=2W*Z$<9&Crg>m7?o4T`f1*|? zoMNxv6#KL`WF16Ib*kL2{TQyBJw~Fhhsr(+$xrB8Ut;v}9%Jl>v_bK}Jdi%vq*(`J zo{W#n<1OSjAzR@n&+&0%<#AZ72*{$Z0fmA0=@Ad5u%jqseV0R7*L3BENJ*flp15AD zHp4W#NR7+D238~GIvxXGy$Ep?pBg8$6=ltn1C(HxTsnM0y?Kts$7nkI2}U&&c(Ljt z#Lt(rm%tKX;r8QGuv}qJX?7Vlfhn^#W29P4nmVXN?M6ya4fu0^(Jb%!2=ebd3{>yUFz}io zM;#=0G)c5F+v%Pr7E9+1H| z8WC_@s%iCMuk%~;=Yb5;VxBuBXk@r_X{<*4V@p#ZTiD2eyPc)!AvWCZ8lCRx)&}dn+&(JtI>t!Rt@bV_n-8NneoK0%=YeJ6 zEbtC(FZs2ZiDroj=tfL+WtkokN-fue{JUV7-`oT0_h<0M$7EN$73`}ZXwg~~lq6iR zVtuE>w7t8}bBLY9z`(Whz|PqN4=O27BJT0cAPW^L(|OV`JocsTmus^$x;Et8l1X_q z1izRfchhm)XZ$2#X}oDGlrawkcW4au4X>iM)4_wj#Xe6!`dR%K$bY!xsvI- z_lzWJQw__IL|$nWPT-ckZU__d7edEATHDQ|sA<@#hfD}C4=vd>9&^3CU3)cbSKDlFAOW$>kTA$ny)x2K1G^E^;P6k>G8 zHQPEI&eNGy1Yzc!yHMlQ$Fq}RmeG=$G%KL0=Vf$!-xOPWoWJe`$BmF$)7oxGKLXmO z|JB3W6H`oc_XR(4U7lCMW&1fD>fJM*dJ8cVgP{Mo7kom|fIR?bR?=*hw!$oTMb0%I zsfgw|W^R>}>P$?Y2aGkF2L@e|b&KhgIX>M0%oGP?Jqm;mfB8HX7@wVLc_*N6itH|1 z%nO?h-gR+y^SFS+{QS3UIRn>TOsi5h-eVecHygp&K*%C}ijYYF%Xq=^DDB|P-B5Pw zV_L2sbhfs^UWVM|?UHaPzT^vjeI7^A@74~qZ?MSV;ZZV%*rGTQ^4fWHav znca=bV43mA;IM&7(_}GBk-2{EhQ@^gBb?_UUjN>ENpqGmpO%67Cys$NB8(8*XlShbM8M>b>P>`JxB6Wzw=bS#}U;tK6D%; zCQsSKDGH0q>?JL6>=cz7s)_W1Y{e2`R)kAY{^L#ep3%3}^+mTE572U&T~w0~B5#Ik zR&(mJXN3c2zx=8t4_Q6;D-!<@-~TSOUn9zMZ6-^X2Zvi=%y9;?^cwa6Q=IDG!CS0o zPvo!ciXvT8V6#I&?0V`SWD5 z)L;s;6jmzqCKk%rDX~>Ks3ab$bVOh>4}@bZBN$d_ER-W0(i57;?(XZNz5Twknq<}v zRyWQAhP-tZC-=xEw#uVfOW^?FEgRAaPLHQYj*y8Yutrv<8zDn|5pwuLEVh^jEbvx+kNpc`2wv`mo|JKf<6 z9a|K1a$scOmxXO%n#J9-o5{5<=B|0(qLKg>eEQ1BN&dyh6#hsKlw?5h?ntc*ajVS${P5n>NXMFy95LcbMSLjGwiqoNLV9OSDAxIx!@LYu)Fj}HS9 zI;HA8?0vM$IQ-`XZHuGG0l2C*sbwAIfCn;5BhZ#`j)Ijkz!m#xH-Dpj6882_Y*uC=w$C}9BqD)X<47JC*7M8cAG%liQVfT}J<-*(estHl z0$lK;pm8RrK$P@)TrOR%c58Un%L`C6pkB`u=0MuSnwNc_={_YRfp@cWW8znWRje3! z7Wv4YUOGWxLpZ={ip?%iSm!(bqV-{5Qf-p23WTy7DrtYr`oV02$xQk#C2@JAQ3TV5 z?@GJuXO$}wr0_AYx8kp79aB>4Q57H4T|-LNEbpKj=b>}SrSC?q>=T0`?#0FniFOIQ zU6jYY`h67eXADD=>lY4R_#={PuE-YJ{4A?$`jD|}^Fl7wizxb+=sv$JtUn_L3} zl5q`Kziu|C;V0i!S04`W)4ECvVlFRDKs$o3R2J|W@D7ryZIdT8oA`o=2&KKfv#<1q z!1z09M1zIGvT+e+sp-+P7~^*%8poI51p&0Ch08?MOjJm}7zgOPleURjnt?+7}$qs97qRs>sir_3;1d z2w5o1J`|`*is6b72q{C@>`hp@-^DOz@pb-cnA?I`hO^S_n+KZKD4778 z9bnLAqFO&!5N%*5cgPHr8-yqiz;-frs??BYty`|lu^N*`fy5?~@o30a_?Uchh0kO1 zw>OYgyPTUb<>xL!FJaoa2rfSui@16*%&j2kco4W)O`f&Xv}^ECYPR|^8;)r{G%hu+ zp`>WmL%#)LM3d=^72wC`O49W_c47@BRciDXcrI1ZiqhK!SqP_WqX1JzY5a_$Tzp9vtSuo~I)-*d#XJS-rC!{CHOu zA16oM!0V1-P@B$w=*tq}%?T(vQ|a#R>Pk@W3efMxT}hdlk`1EF(eJ(K}TTU zpqG5`2{|(~-Y{oH-no3$!6gj6xqEm$x-*i(=SGZZu?HJ_d7h+eJvhwD7c13Wz&LO>iPcvt1|1R0vn$V?zZ}SyxLBSlz z{Fb7?QK4G`S&Jns)2S$ua3(C1<6*#IrhkL8)YP)$qaheLNjVRo0weqfzD5Y%g}6hd zcb%X175*eC5&$C%wC1f~3Em9;bOKJ2d6*pTaBiT;W184WChvABkn#aOAe3_(*C?t% zu`p0C2}>oj^x-Q~p`IAMY4gdE*kj2P<794I`N=&b>AWSBSTLFLEsC81RL zr2dGT`Q3~10+d(h>7JUbeX{|aUTXZ--c4Udv|qh~_du6Lq#8^kDko6QGK`)>$=QvQ z1J?3;4G+U-+SA$7e*tCSvh0&+9>^h8f4K#IZTa>(FhH~lshDHnq^jVdVOk+uh z3wLmCUL}=0tIvf16E%7{SbWY$UIO@ZBJtuMYsi|bj@5=`mOK#wlhio zX~IMvALt%T*#Va1W}IK!01;c}+?#(9KN_YnJ`NKNPWn(P2FAIyu^)faQu2+Fq_|ss z228mRdi!=W*3<1$W@TR)-LdD&l-BWAM&#lw-5ZF(|cfnfJvg~WB1-6j6OOpi)@yqCr zJt;SwF{!MjJbhW*H@ST4$l(z9h|ua>GSwxUYktq9s=!IL)i1odKWP6mw@o*TQcShR z{_$@gn}74v{Rcm;^#Q#Z-U!YE;@DR5@ER_3WQ-WKun3<8txQoDN7rd!FDIybkk zT+nt?XC6rT8Ai}3Jj;jxs_5tEflsNPhLrw0a+4ML#I)sF0XbPrEAgU-0oR~KODD8# z%W=1T)+XqwLgC#zlfsaY_>U+{xECt-vA)m$Szxr|O6#(^*3H3>4V#YvT66dD%kC~# z5it|~=P*z#-#N^|$R$W)Zm!sznY{K%L9^#3QG&MW47}Tv-H%^+I&CepX&mmmdQz6i zSak+X+_`nJUIt+C;LP;k1f?kv}tJIMX9-lUR3i zM8(y(Ac=z3uuX zHtF}337&wU8q>7y?CCJ&*JDY5)Qa!y_ScH6-{%3N6PB?R8~s;oUU|#&zt+vaEL`mv zNcVjI=W!*X)Mr}{901_!z+Y29tc2Ux^3 z3>=4dVSW=n&?6uk%jz$v#4+o#58x54AG#y?KuX);En5iu)3*jM|37?-_J-ghO(U z;G(*-Ln9Z&5j#sv}8dK&C&`Y<&LStpJ zGU=7=MI9p`xcJ!u=FjT*dEikl$V4<8lSP~1a0-X9ouo&kZifgCF_;f;?SEx+g2Ub zVm@bhOaSzK@GimS3l#V;+HoL2pM&6QDM>n;SG8`rvUIuUu>s!%TNPIPCkC!#E^<9{ z3aM^$phBSW{Sw5QJI~y{BKraWI}Bc$0lLUn5?n=s>pG{VV2pC}zqzwZ!d{Ur7*v9j8)s zwx4roOxm#ImCr9aR>&S!sD0rbg`2%!&jZU7JT4LB4;OErNPPKy)N@HaR?JgNjrm5m zQeKl1(T+!6mM^-*40n-}$XjLR2aj$ww(&Fy7htx!(tTmifHl8h5Tz8~_^OQ=SeCFh zdfjpDx2Syp@iQq$Fm+ging`_B5Q2K|wg)zLGVo_6;9M}l;XnsN4{l3aE;Gk)RwsIn z?R;$eo8doziXR4PLkzOm^87-?AkOX?H&bm@Nf*pi)ec%`7w%fMsz>XGcGkoo+F5wX zRSP7vMDA^0xn=I5NW02siE`7UbYnQhC5z+Ej-_r!mC5yG8c+ukf& zYpCxU_)oEZ#Xy%dMi<_^LCz#biCcEEFw1jSLV4KELsgp#7eZDe!^#(%Pfz@4H@-o1 z_GgzHf1LZp@X^1IGku#hrhS(+t+iIUC=5tJiN6UTBitxqJTFwI89Z z>0J+VBwLLfh(_CF=HD+KEF_ps8(l@KdA$Hjw}E9?zB8RXb)J6 zKW5L(v1HwUUK3}&(pYydKvCOgd27-pTTp6aTEIMz{}Vuh181_4=$-5VF>iYjo+JB8 zFx-nYjanbJ>(%LXC1@erUdj5g?H1ju$hPnNZi#_TT)O(!L(AhafH9jk{+GnCtT39i z!w8)PbG5OxNx@qWk&GUyI)*_OA zZ-yFiBYZRMgad@XE{$DGaKF6}&{pst?Ztp)eC&;zTag_lY`u7!Dc>qH{M40TqA_nN zLe6xIQctrOXEzVD-32zn?8k}T>W!0`pLA|ySu_=|SaAje@2}H)KJ`z7F5_x8AqxL? ztI&z0fANiV5Ppm0>73HdJ60xn>Z$GHy~8R0-0I)wteMa0_AjHB#4JO4O4*wSpS@iB zA!y~PGg<<$))_OiMqo(*edHv~`Nvvqh*JI6{L@yd#+HCR;PWF>wk>N2Cr_z>ogSP?{&@RYk$dY+izN0i>x1Om;d{{VuBkXoV1jF2_lM#D@KPc8(t;}SzxIk zEZAGlFCagDAI{a-KI>qHV=!Za+R1A?SA}Keg*D)07B2?$$0qVEz~P6VB4WDz;@6s6 zeNTxBI01QOXn|qE_GC=W7X;teQNZ^>i3p?1-^xv+2hZYY7DB{FG=^k`eFyF|0?j(3D`;L-r(OlXn_hUA5UGbI;&=T6Y4((9{ z)|5fo>7Bfd^8BD6Vt=kon)=0wy)be!En9gU zT=)-`34&0k2NIJmr2K|;ii-U@E{?t4MT!it`dF$pHTl{DB}QArLI@Mot=3i|wWV4c zDoepHgULvaLeUS!oxU6+C#DygaN*_(bs&7}Vi7x&`VI+zM62-c(#1Hmpx-qnhHncY za1u4gba>=uW91MmL^uovaF}9JZECAl| zu&)Wrm=UO@Y7cHl<(f`TrAYv6@iYhylU3b?!h-vv9zo5OeQXcpPU$>>ZXuaQ;w^z@ zh}lemH+-yt&~tce?!-E>oMhyB4Y#AH`LTKhy!f=-1GPWbf9|OaE(&`{q9w^s^0&U~ zbn@6r=wCnE0Jb<9cytABVf- zmDZJx3}n4rNXS9|glzp$&?t+e!_+Q;KR5^;!;XzJlZ`u`sJG4CEACKlS8yTX#EB;~ zX_Lw|re5d!twEv8!$L)V4vs>}WukHiwQuDPd4q32*MS-(2}85g{xT0_7h>TF1-8FY zO`LTtPbj>Y?F?A|a{T&8KW6 zkDH=dFi6LDPEvb2ruBLP8kt64_*lPkX+&Qvb+`dkNJO{S4v5o3;TXpRYTDu|zK z<|6HqO@S>%&=twSPMr06*5i@biQ&3Z^2!yiYEz6tGSLZUidfe8mFiVcShI97-4ebG z{*5~p@#HwXMn&%Bql1PP?Z_4??BX~={^KGR6HDKnPAmeIdl1_+o$W%QrlyFbTnS~4LE}o z5yN^tQ^ET_iSX`Syo)grRioA1q}Prb2U?kC$*mH0iao;;DLOv#J3qmGG98K9H%3P2 zXC8%isy!i87Tz4r6uBwGlZ3HRr3K|MsfkN4M>w*%Sm@!mmS4&+h+RWw}+gsob}LwE=-DD4kB=vJ1=A@m21hxD}Mpvz@`F@9YW zbRzVP*vUR4^Motwa3mS`cx>FLAD}*BGY0 zrxgY$x$EcW_T#OJU7%P*GNNY1oV@qdx4=~)NTTYKZs4`~;Mv?pYXq`FFJ?7az0G}m zk~S7T83z2_PLj+6vf`QHYfESy^rP1XRqO0z$8kiNAYo?d1R}x48c@>c&Q6i!6|@V7 zmQBNI>_uqJN$9G^MiRy!`6-Wfc(!|YGh;WnM;-dE4pwqK4|d+Wuzw))|qp?(gy#aP7k z=eo4)KIFmcG|x)Fu{367H|Bv6IUb8BHdlt+#J0@<{xDg&_4p4!@oSXFN_GhKMZFOr9 zVqyv=&22r4`G8g?y4PL~+sRArzRzPOsxMzg>H*b@(Og1xWTd}lbr+oy`WR*q7qy3> zGQQY$)x_odnST`f^i)lFx{)Vyq)Rq^j+!Pj2fis;X&m>~N&V4#_%)z65{nnpJwbj^ zIjuFYTkR~LAnb<-NbWz|ZZu+bcUqE8jj|Qy`rmWAE1L06qXs+f>I;3=>#XnYli><<)dNeBn++p&q9Jx^O>6QR&dc?60F@&B9#* zxe4m9M?+(H(^|=?nm*o^%JA=7*O#C6c#?4SdnS`C=oh}0e4 z2w2%Jlmf0dqAMs1;V`7v`08Q>?1JepWST{6(3pT<*or8lF}FRBp^$W)K-Tq^=V#-~ z-dxh^7!z>9n(VbhkkUOs#Hw(YZY zUzf8@?S4|U@8$7fLn;*Vwr@9=*za8S_eaK_mr+zjg-vuK%I0w=xB4RMCA&hDdApeJP_R;pmp`RGxc0myFT zS}>O}He#=R!EJo_o@J?d>$az@ri7mZ=?M$hLhB!r%ObaqSgpt_BA%r_jkpt@u)ro% zl?Ly6aD4oGJ!|3`^y&|gon6Vdru`PdTEw%h3Z^kzxPc+}pB^6>sJxdo>p%+W-|=L$ ze)xV&G1&MMRu}jfx>I+RGt->*q+Ko$Hth28TVn0XyCWL5$vrTaUzXdVvCQbS zZ6KMzs|m|!S07Y2=WSfH0&+^Xn?4e?f>2`3=16r)jm0%~h>;ya@J*G9IBg-;2+nLOFYZ@sJ?|-QKq!@TBAezI+~t%$HQE2um+qif z9HfcsJY;OzX(x>~juAs%H1U0o0Gm=UaNeE%#D)O8$PArt!Ng_ zR~YMVH%Z4W0ww8!vz6BSo^^31 zQ{C*pXR>SD#|Pu|J)DluRfT`*jcz4(=(~w0T)`v4ysElKv|LpSJSr~;5L&Ijs~{Qo z({g3vRGbGkl}D(8%UaO7oz%)-#tAQK{tZH<1L%r1NVKGdne%b zM3s(Vfb-P74(Bxv1A{d8=0F3*p121QGas*2wO+hTjbT0*O~9OGrSKg+2;qcGVZvr7 zQbIw3&NtBWx98S5+upc)S^^7tQ-xCVe(8y!_jD>;{$y}qDCj-0lr)Ob34Px4bIQ@% zzSeJ?1W9=pitlmvmg=W=PwQLvroSH;4mx0b2AJOWf3S7`XY^&m05RGH6bLDLw0yC~ zrT54VkeL)6yi3H`AURjt@T#`c$!7h~q;v4kDtr9EmrZf5RxD7LZN%W4+TS?>+xJ!jtxvy zkP@kIR8d2`ehc29$KYc=)%nJYo!prV55rtaAz9+rw9Cmvw0b*4Nmj>|&~k-*vtHhwayUj9Tlz{#)CQ#!uuN zX@GXu|HfYhE$j7M*)tD>Qd07mLP8E>A$(>nh<^@=<)1{%RHQp794~b1Rxc}4d-Wh3 ziM+1}dDW^1=Uq}+mU12m#=b3hyPT$auj+?^ug1&=%o?Usu04dqh#jxD{f$&8h0+Dn z@vb6UQ4GSCg@{OF(Je>F%0jOLCC!9%ym6}1g;hbjKw07&hs5i?LI++Kk4TkIEct%4 zlW#**9Ab|#4Wr5OFnNLh@W(&?KrqTAMcL=&vp97GBuHbdqa&Q#qlmkTlrJ$S~Wfp>pvRb&N9nh(7}*F79@%?sD1 zG!x#jJfX4#9!V};q}~fnrqUx6IoHuP@cKdmG?~t$Kv%w?7Kft=x#IE1W6#O>Z5=#s zHr&9Twz*=BGJQ|$k{s=t2RN1YHimU^DuOK&{Cfzp0%>)Ws@$Q$ASY*vZFDlSi^AY&CF#lIC#7(bco^M{3wT;w8x?x-sezY5-~DtIIsI|M z<=h{9j>&%E$-KT#myf;$MJ3jDfd4awt&!#|?>rhwJuFyi4myWwl408ZnHv<19Qs{<- z5>Xx_T|vpjn|9-lnOelw<`&V0g9aD#j+KRsNa|5pIJU_GieJl+}}p1GRbI6S34vU!i70Pw4aBY5hg{KH!IYiCSL*DW9)` zm-oQV5J6^s3o9aHlLclHQEi?ibUeoIl^f%3R2Z3D)_hJ2l`IHFT?;XW8sXH?V))KMXcK=!4=y5h=2PbMT+qHA z^&u)`tzb3BV~_VlyXRLIpB#dH#Y}6w?RW@kecKV?go4WDkg7+}7CE~C2$LoS51>*R z8zJU(++`UHL;LhPWNoKrb1UT9Z1HWJVGFGpulKKm?3$V8>L|I?pi+=YcPd=mhufhf znGL;# z`eRSly+7PP<|+Vh4*HrmEaVp%X;TI8dhX{Tg&!3c#2&+}n9i~GmI-v}1Y(+7?t~t6 z<(pzBOp>bviuUEO*Y9+%m(a<=ZQr7aX=v6!)|vc&#BKpX7ezda}b#6+8{b4HVV6F^^@-10Uzsd?daRv zH+{Ky@7&twZ`LQw^7pm=mHwX@;{gQ&%tka8&YyKv$0AOs?`QbEMX-#IQhR}VDJvm| zYN{N8dgg)iaC=iAH|1$rpL4#Ag(%>jReW*%udnLvNp|;?h0DVgwPC;fp#`F{nCCD9 zt<51=iE}(bC|xvVj};NB!#?|gcMjhpWZ~U154*8n3vv+Jaw?SLlWlJ+4`ETR7DsCI zAl0j4*em!_a8Q%RzBf8Nnv{;#sRsknowHUa;DVY6&!iJ=VIWq_LTP?N0LJgl(sT)7 zfqJ=&1<;ATga~4m|JPkr@92*3av9SI_HD5;kO)si$1{oD>Z>5T8DoXBhYrkieG~mc zCK*l7xnLHJ479vb3(p!(!)*>b`4t- zWzxdmI>(yI$0QnS1TyC;41U6-ke1->Vf>f|g{B1r z_AuplQ>%e#(?Kww@_m z(9mhpK<%>!1l-# zOSv)_>j%Z8BXd)P{#WwaWXN_0beG#~5V{Y32rA_{88|zoV0o6^3HTWJZ7;8u3mvE| zAqSdGrcK~>Rl!5&1C`={_0fAzYD+apS`}2gB$Xow2-1cmDuZK0d4=~YN33dZJx~Y1 z_vi8-M)38)+~mJN9=8^4Eg2p#usGf^z5S`P{Z5)Q+hTBx3EqXvDfFmvxa?RD;1Q~^ zijkw#b81fnEVPBH=YfI`00!(9EMk6|ROo4z6S7$9$qm{fhSMm^h#4^+ypV8?eS@(Y zc8`~D;Q1khJd;R<9#ond@5JBG{rM?3z(8rMe~{xFRSZ{=|2%+-W|@^0P*jaCtQ*Ke>M#u+<<}~93cV|;RwA^ z|KJE+^+e^U?!(@8#lBaSue<77_>@LwmQi!v?}tA6xeEWv*zlEcbsaU!V$!!DS&8?C2@s)qGD8w#4 z*+hVlP0nZ#vI*~j_J7kht@FSc_I0!iOe`ATN@F#mwY#Q?*6RIpkLaYQv{WJ512TMm zsc;d*6ca7gyWwRITyh`7DB<(S?hy=%cL}$ShAru~e(ldU>!v%)KS?O ze}F!#Pno|5ka5dQh%B3IqO2IA6X5jOJ@ja>sJ<{@7<9#f%^g zIA~^fg6r!b?7{9SfetOnUw~i;wnA6*YA%FI+cXi~em(b6q}!DY`j*G-syiP0u0Tn&D|&JhftRQLPT zzKXU$@lNn<`Xg9RWK~+kj+{xJ6bIw=Jys8N%bjkIZM6CHxfgn5_iENTfB$o$US->d z&*p`zK;BG;_PM!df^$J0CI=t>ff0Erl`cv0aX)X7dA0fbrX{hZZ}GH! z*zW2c&uy7G12M7{ZgTJ`2F;8ZI?|%O0}4wM$d`07&~W~7sO%jwRL~ID7_vQ6v&_R? zZqUNV^42M^24nttL$|s`V31F7yu1?|Q<(zI?F$(>`cL zZj>@>f!}(G7q6kA_hGzOkbZ>3tC#V+)=-e9lc0my-|d{WOUa&al@B=vz^t?2rMKUk zLl!_5DV3=rBnOzW1O#(o5xg4&eB?ot&1HLDZOW2dZLcQnQWS? zJRnWIMNV3-J`c~Gt$^EoA>9)BnP=S(`_50l;W@9rotK*W+1bWc-uvPDF!rV2xxVo| zV9tPEntI1s%9G*n*b5J%9*uRK0BC9qhyB_-L*qLS3|Oc#I!N9exFA$*H^)iy)y4e8A6)h$b5MzZ@WTC5rhvyj4I zfTEn6;?}1oPH_;pL2d}G2(e0>2NbU90{K$VtWuKk0mk#K5|z#TpIG}koQ_)``&QPA z+arIqeN9GG4AJMuwB2ham;E^%ay;A}P0`VGGdZPoPsdvy=PV6JW-|@cr|R1?DNZ!p z_PEM$jak<^*d_0tKw+To2YKA9P@qtwwbkQzbTvSxZz(tgzW-*c!bIb%?9pVA=b$t$h%htAMUHacjrmJrdJAF z_&lxeb#EYui4m@@Lt`M4%1HacT$SLQdri-mr-TUhfZoy0XyOvMT^!q<;ly4v9?MF0 zYS*R{YG7u(V$!l*VTZZiJ$i>0=k*LOkp&Ir&)Q`^SlL(dH?GZsl;aDi_Ts2AeL?EL zq$r<|MdBPAPM1@x1VVvH#4jTV&%EihTxzwa>K!fCPd^BZ78ry==J&UTjMWGKUjM3F z(fy&5>fuUC{1R-e>C&7+Eqpe|VV*PCr}V0>nR_%3M1;mw)h3*OS_0~&O?;6jHM_OH zo;aFD9aJdAl|H(bJZDR2v^9fN}w=d>;7qATu4|32`iZ%kEd z8GLvxQY+Iz&tw-%P!`t5U%96!|xUk zXgxmh^Z~}_KQhCi_4U&Y!CB%0gz4AMrU$^cYx&L{&d9`%HfX>VMjajuA{sVQWdtL& zuLPNCdm1QIB!iza9g3M5R)6|mDO?HO?d)*a-0VV>fY;l6Rr;_2CqQgLb3 zLm4uLJI;atJ?9rlJWQnzf|x zo3veub?xa>L(H9!Lk%QUFz#1I@;5%~(`-5!IOI9Q6G?GjrIiug1XJ zrvcKjl4Rlz*{3`&g;RaI9h^=Xu#D)-=Q7mTs!@RnLY|b7wCO}}?F|2}Y%)D$Ev!@o z{mrvil8oDwD9e)}EW(;b7Ot*=*8Mray@A_OH8kSZ{GmPhLt+=O zl#I;U2B{1wsjg@%=oEObrik&DuOAH^)8s(dV6a9i47T$lrN#C&R1J@^4Cp5wlnE=c zB8jGIpE}8zuJh5`shQRlb5`Fb>O-#nIJGzFU9%u7wH zqO+wBfw~%a9#C%lkgvdqm{uofNg~^QbsYHC#}a;n zvOV>Rq;}Y#`!Axwz_`YwF2}ng${~98UC#nmc63g^SR9LLYOoM7Iqd5WbS(G+VQLtU z#I`(yh)wm}?7@~?{9*_}40&-8kZTa6`|#;IGTszy{*;CDE*@J&aklXavWt(MJa$_w z9JmpfrniMMOVBhj40@?K#^gd*@Iyz>+oW~h)wWWOf5X!Or;yd4cS7_c&V<*bsE|-N z83+nQ#D!{v?qvTxQSB2~0b@nAQvGO;bKRa-qX%2-5E6~oT%q6$$#CT2$Iq&h}R~)sPCjw(qi~#pd@jyiSG{W$)j(1^@0OaN+L9? zdHF=JAh+;#0?HYIlg}|>TS^8Mqie85t)&=mM-7kq^DVk_5uREm{aDoF_b~Ag9HHbotnEDjRejm zFT3#@!X;=FQ!5;A2~$DtVR%B>7I%~n=_TS|7Z{u6(I-$3X-U(=pe*}Wn@W2Mo|$^ z8AUeRpLt$Lmh=fn9%QK?R<`|kU`uHSam04SKaxP#T~2x>)}9i$a+89tuKscPAq?@EOg0MLJ$w=gtULbC9bUk5P{n4UvyphAMp4jR&n{ zrR;}5A;(N3PEEpF?1pKbYc4RhDk*Hjrs~FC-jz|!5T;E(h*|=jqPjZHuQ?_(xk0X_W9BAQ8duM8JC%xXRWsGi|SYo9JqgPol;jj?@L{K3haTR6crCEHIr zMe#X_8uJL&D(vgD%Vp5v#@d_JKI{dFCapNg(|mO3LZd*a*MdH15&6~NX45ExrgB1# z(wu8No@b1hJXGp=v;=L3y&Ip5Q`R$ghtrkQI+EAY_YV)<2fS=_FpS_cHUk9^MvIUqc&c==*4E@9Ir^ zhA;f^-^*GeZ(ORRT&@UKXCs`J4qIQv5=HSRQ)?+-un9YjtRKA~aOr8-kHm`d40=`w zMZXmHh9Ns|Np~54%_loSy^Y3QHw5ZO+^?r!)D+ zv^+ig#x3Y8*$~bY1KrK?ULSlAc3k=h6&b%4BBWNp?u`632T-l?xt*YvbzkBOESW=X z$Ga-%F3_tIG~zSxY#Q=8+84t8{nQ7!-_&x%ey86uivPi#5jNmnUIW+cf@cYa2&L*;xUhaFP zpHu!}pEE0LoV>jeY0|k^plOP^nyw%X>xxc+V=DI_9F4wa(%%)!9NiFT=?&XHub7l= zXgCwadK9K!Sd#vhO;XQG7RQAOLT}{tbCm<0IcEn*_MICU1rnxpf75>Q9!--qq7pN$ zk$X7e}UlZ5ij>?7>*$vW_yT0z@LyU%z!ugrbjSUiGy8%3_A zY|vOj&gets8*JCLXl0zoX*l=w{R(Ic8p9+6o*R9gr}g{qXvUK;X|bx!EDZi(Q zc+E?IGKKi7WT(ks?{n2Z)FlepE~oU%)-U)p(bI)mZdHAFNeXGU(KgOV6;e{cYH=(K z3fEY~&m6Ap+1g7{5c}=DoW8@Kfw`CwTcj~WNG&qMVeC}joF^|)a6sA+_?<<%AOneWu7_NM%*%4^8^ViTKwoFh@nj01d$Er5?eG0KG7Is*j3~b7ZNx+ARhtfl7axYJlvi&T(6Z;#F}=cJ z)K|5f?9xScpkn7>^=-vsPCv5EU!R>n@+xva< zX>u_Y6X9bWj)8SZ(ZA7|itsi7K%fWCNzetIc?+ z_Zpqd#w_`wlSwWO@6K6+uP}f3!&#ozBr}1u81CL;J z8gB^Y1Ry*h(VHBx3an1@qJ!+E>LsS?kf5&t+(Cfhu%|drm>okun+o<5Y3V=TS*a5(vv87S%9aQD+APatKWN=V@ELHacqu}H~C7-l0 zXxx8;&hYI2T2=Xeght%hjez*%g?j%-T}k! zJsZgy^EA(Y9V@u^?fFMh=Pf;O`$};Hz+0`IgLO5@(arzhFo!(de{g@<03xE3iW7cd zLti|2fTh-)?$Y|Ne^BQ>#DeKfl-nRlg9L>UtFoGTMpiALRo#cCQ`nbbYJ!~>u+#5% z6Cir;vrL}3Y^jKgpHL6@WRJcM>G`N~q_6#H>yhc*-x2fXxi$2uM!*b#oQuo(8nAt? z!aOd@y@+kKG3iB>ISO4pZ#}I6S;+H{YNN8(Wqa&5IChS>+la7dL$WXOVjIPu4E>RMkGVf}vV9j&+OTLAv zn`7IV0gU)#v@&3lq|XX*$hm=&8Ed3e9Tx)RMl02{u(aRxL(cg!#)Ao6#~1ZIm9zgQ zuRsG-MR#K8$u@uvJAZw6ns&0g;nd1Z7e{T!TPE)`(tKl86(I*`aCV6^v&e90i;DuM6=(;n~IY z3f9^Q;o6JvUxJFtaI-uRQiq;*KL(fFE@?pMsaIxG?CO^cH|y(*)U~MdO{A*D#HnP8 z4VN55S)q>^qGsZ{2GfFZsAN*{K#Q2#ne!O}RwHy##gq(e~^ zf4%-yrR!cgh&PGI8rqRo%2?*QKM2=L9ZpbR{e1w_%|FK!Q&!LTaAqkhQTCDkiYu6P zSy=E1L{qhBdLF$>s|aZM2d9I1TrN(Y6%JFI{bH70zjWXfj|1Zbe`KrflDCKoQ<7bd zYAtjE5bHKoJ1TJNYt5qEv1vGRbPaJ$03aC`sR zM_sS3+RTqP4>)(JrluzKYa38dZi!#D#ck6`(fW(QsXGhK9913u_M4MWm)+XA%>Tb2 z1pI%pTH4Nj-Lo8n@T@x9#-j0|QBLVW>CnB5vNyvK{+E}k!r+)9Qcof1rGGsAY0;-4z5F;Rz(zeRMn(!J z)bpl$3qK$E^z<1n9%z8p=Kt)aBjPP{-}etLaypZ=3S}NJ)fk4E42XZZ-YdeRM{Vxg z%ry|v?4~qh0AX96%wJ}Odcl<*4G(;hSon7tCoc^p2oqes?u1%9zwK=g+8W>5k5G{WhGBQM%Q?EUOr3<|GXKVK}d#hyujx+;IWCWsD%jHx5#R@w0GZ*6|;< zCY-3L?R~^C-})@x+)kHncqD%{rJ0pbyL;vu%vBVL+LzyW;i6d%S66JWcF3$*7f^q! zXfI>y^XD&K+%wr>S6#)gIb$%~lC0HFWq7p2-S-2-O>Wd(8Q-4UuqR)~A_~?~tdL3Q+E8Rh zv%@;f6Q#-N>mYlW+!!8P_U8Nt!W!g^jLnP6HIa!-oYIANK1O>f0@vA%9RCOBUe{l3 z?HQY+2W;tH&-?8IXkGdbJ}amqJ)ln{Z(^)Lj||+4|J;Iw z8TM(d8yua=4JM3C>(h6f)E^p>4*juex_nw*U6Z`dxUqU~^YV+o)UQ&eoVHs#_4>w> z_PxPCw`29+<#N}i-&h2^L|Od^@f)t#|L!u&$bx{NH{rcOS$SW-J2zv0pknIc-a|b; zi+|t${!>Gd^GKL>hfv{+{t8}hM==o%z+AxzzXVSBTBYgln#hn>t=#qiVfTf_r^Z($oW^t^RXk@=8nVw96Yth($aP12? z%K!iC{$KY_d*D(CLlvF=DEgbw#6R|n|IDwx+U;_G|Ca6N+AJS!{@0BQhPZ|Q^45sU z$KTP|X*z}G5QvbaSfIpK-!K-wl1!Y?tVMj{uQDC5gWYz#jT26w7Fj(F`GO*AlmqnS zrwOa1Ou`$6$EloySt7D+EX%mFY{EZkt|ZY^tRYFGe!wSH zK4muD?Fw_NL)qf-35`RfpU6Lt4}VthQfB`q$Va_?MD_(*iuMrK{?WeH#3bg)%0B9I z)9Ko9c`f``=d^RIlC$pIAmhj%y=_L&Wwb~U7ZCLP1rj|qU-9Z<>3Aww(TfKoVocLWA+XhSoMM<{$aqxEx5R(s*Q~n1O9(HdcR@aK?sVrlry+|oc)BrUSz*)2-g4PnN@e-CP`8lnOQP5g9 zCZd}~5RCiD#tir7A#ew{`izpp@XE5nvJWv18Ikfymg$=dw1wi5;tv`_+~*E+^|qxt z8+z1BTfuHdP`gLJP+@uRv)l8fCm_zU9o|NHLHSN#4NFr%%&za!7jNX4E@729d#`t{gS-%*+kgeu+wTGR3D{Gy7SMwi%Oy`HnYw5_K80)? zK6V6o$WDd!!<<&2m%9AE>~Uv^X4_qDCD#-RSSsuVv2@>Rb|WMSAU%xjIOtB$tQxXK zAY|`w5wjmC*|1XukR$BCSMYAjV1PU8*%1l4ix%FWn{L!SoR`=*s_vB*pv=W%wS8Ay zLLC~0hS8h6C)(4z1d183By!$ZsT*N-8q*SsX#m`?Gvot+A2wQh7%?eQ%F=H5J3*EL z*kjt#w25lO>?E4nn>SjDg=WIgT+>!{5FTc?_-tfwPWNFxR%y_IlJbR+UyaaXR}Z?F zDgdoy5g`NQp`1J9c#r9bz9-%p-3_j9fUQM5rrpXhx1|z|J!6+0E47X-VI|asN`%Qb z{Q10;zZ|Lj$_&M749dQ4R;12S{fnO<{z>908BL=X1mdnyYeOaf;O;(Sa5cJTNFrjY z%rx@4&3<6;i$C89JI(kkJ=WNvzLGqH9PuYc2rFI9(#9+liz(%KpU=`Nf{5v6(TQ_h zU5oX)vgyfPLvM$~TDKQZK1TLBn*q1LJCP5;ys4UN% zr>uZ{!eMPM^rc*QhwX(d+SiIU(*<@Q`_Q&Dzm1R>rrvj+`qsN3z{x=8gX2^MV(woL zuJedFI^>v6{tCVKS?RGDEDI zr-NJlJ6ms(zjFJot|p;qQXNe%9j~(v>z$~{C-x-%$2m>^t9R-@0&TQD@uo$Ko)^C0 z6E7&!D;B>EK+T9L$AH)|D}`w_iki@kDe*bty3oWc!>9YIhpC1oNl=j8@c5O-zrCrh zTQSlw;JMzYvHY}a-$CMb^qOW3r{EkEhVtMn6{UrR9<0z17##Hhc;#&+2?qiqSf-WO zHN;9S?IwK*m^ERGeuQ?xCq@ZXHI3E4gV%8ENko>}^%(wA&IOO);_8JvIEybK8!N(= z?qI$p7JeeihV298EXC>pEabuXC?270w1R6}^xRcr$Ig^>Ntc7xyi--K8jf)ySz4fT@Dj9E&Egg4iEK1ht*H|r8lJyuA zxm7A9JU3=h{0uXLleiU=*=?y)F1spdPe#q)kH7v{HUV_8yJxNAj?egYo$l$Ga5nF7 za?X-Qef_v=_FRH&l=&S%295#k_r?|K5&On#4-oL z(Y!A}VmwIfh^ipjUJnSsPnD7_p<}RBk}ZEYEho-obWAMu6Vfw0Yx{WR2fvQA(&(Bm z>P|XRRz_C1M5%x&U%?!wEaT54`Ho^=BbO6vsva|Yzza|-m)&uy=o`4PSMRGfvHw6* zXNpoCckrNK({s2RSfG}&Xr<%(sJPf2K)kp@4`dZPFOmZ^ee*A{$z0J4B*c4P~0+mY@PEOSlz z4udTC4iI9WsHpC{bYF=qYk%6F&kFa*r$v6J1$f0Zl&i#BAU?Ck8+ha*m-=Z3{WGNIy}S+9lW;Tf4h)=ysVJIH7{)+-pJbrhl+_rM(nGB>53h_ z4fR4j$QqgMko3I(>pJkmkKuJi{SP%S742~sv|o`ypVEAm5==~_7-_abJJEC%&ye8} zgq|vgj&?P~g0-WK9E6J#OCc-NQSQSLI3)5XX}ZZIrU?gcb;n+%(yZS11QtV^~0TE~GNGYes6k~VaJ%erQqmacDOTcUO z9EvU-95+21WZGvVaHI){aAMEIzQT0@v>~6=L=j5_P8EHJJXZ$Le`4uwcQT zgW8L>7nc-tJi$d}`(f*c)t>z<#oj1jx`_ncAIL4ehS1vlqAB`NupMC?dIoV+J?+sd*ij#ELuv-NYF-xa?fD2p`-bl<7)wG{NImD40khZ4 zF9mYrL0@r|ym<1OboV3hz51xK5-}?oM4dp^Fsm8Zq_<^03t9zYv1cq8jz_Dd-;&cT zYLjQDFU_2+?M@t7dZH80MR(Uut;#c`Z)it6#p}*B%SmR?i9WklG+O0|=--#mER!Ho z)!DweNE3^#0rjMs08Izc{C)SupEuf5P&e$CLnDlW<{ub$wS^g)H93n${u5+E7oVCs zU}lxta7J#JaUH1Y)|mhOCth|EWI)UoI*<@AlAo@0P)GjHD4el4VGQe&7v#m&k<7*z9d)@8abqh`K& zft%tI;QEfJ2OU6Sz58eB%NQIg+?GtXUzNJF+&{#&rctdJ4ePg3#{P3Y8qjxB-+U$GeOC#opACWJ{MOv zDbBXrRV1r6t9Plp>!3C@B@++}!2_+o5%5|!Uz`I*8EdqYN8?tVFk`jK;wgM~Gi9(7 zv@t8*qg}GWdGgAo$1Z_zyNI|7^d6ohBIl0m3b;K_DXC6gVzZO5?!>8xY>(vYE9+>v zJKq0=bET<&2Gz!I?TfpxO9{)H=oIya%<)$DGrZo#T zB7V~r@cwgf;(&N&&C2^zDs?tmw73OwN9llPOc&zGD=_P&$JM{j zk}P~wGA*=CQ6eF&W6U>Y&O0!7?0~w+rO~w=SM0xg=1$?rdXNSM_ z;-cPWZDkG--7OQ*^%wpFMtv zF~j}e&@Gw#U*5dmvr@URZxQfWa@0c9M#YWyiUj#gi)zNe7g=q5bau2jwEo#r5o9e- z-}ib_8Iq`b0bM527}usS%|{toiWzLXi5tfJ`2*qW7l=(^mcvk7N7=2LoF*b_EyQf; zsd;AT86_);vYe?u8AL+e7mct>a3S-+Qd#=F5|!(I^&j0XZc0yz4#V8DpSe72F9Sp> z-vZHZlSZ!;zeG8^sm%FRFM8~n+Nx>%Qm z_cT`h7_kD2f&-_B%UQJz7b(qOjCZzunr#@RuYsh{^U$o*ThVY#(MS(4YA+eYG4F&? ztCwHHc1oFcj5N_M{O!w##~Te{gkkPqhjh$ypw&+q89p$;r(-Sn18ivf%3tX!>#`4X zAm!xsXKHU&OSHdtgTV5o*`1mjn~A_IqghkCXo|uBYHbFg=%iG8nK`r*9%xP1Z5aX) z1b!57P$;w!P6D5rtl22&ze4m*bzQS~2K_OAl1VlT;a>}m24-Pf<=7cd-IrIUDsKT9 z3ZB*M#tP-E|B#0tu(LulN<}JGf|OOQ|M2ofxVAOsUO_PId#;Dh=d1HUKM^yf-bH>M99KlONqo;`Sv=Fpq6y)%oo_@Ut}b~KbhRJyRec~ELH_Wc zny)}gq_)PGdXJ)5kJ#jLn(3*O>Xpxn!|Nu;cNJeib40?m0zJsB5AsqZUo9Mf4pfFa zF!9pzD^Nh?2Y-jhTJ6{#uu`iqJeb6E4yC9AVCL-#uV~f3D|C{uQ_QFe2TkOme{kxb z&>t614TWcE@Qv_qM&ad5BkUwxn_|^pY2T~(Fg0iGLAg!8}Byj1&j6#u>!{P;cLKI8;Jo2$b3!9pG==YY+X}r8y9cDT zICa#rp+JQ-MJrrp$ea1AkAATx>rl3+C0mda6?K{CA70CftPix^P~5jQZ*(*MS78_t z{pxJ);(q8N+6Z%$vX;pGEiyO-4VrJ2t;C{AA#VXy2f7OS&UhEgVvxkF3d!A+NnC4h zLu(c|p+0h%5yR4t+uR*a*h4pFwFHJ-kMwt?oRIRrc+Z!LSn@}C#;E<`dVl5!OBXUX zZI#`z30BM)%Kp}D2KN8? zgII(gkt}cYK;bAF3^If~6+Vel!af*y{i9Sj=Z1IL@it9l1`(daf{M`S$cjI-7Fcq; zG3j2zYB|@uC@nliMOw|EOFWDDP4$tkkbA-Th{;O>m&`9-m&U^fudZnP{g<})t1gW^ zKj<{{e*}Q>n}ASk8D_WiguE6yyu{V)3wOFFgn3F~(hNjY&EUtGTL&6;Me!J+zGpbT z-LHj;bdO^Lvx|{OaFINsXJ2{c_L>LhT#!wb8?+U~bPDWAOdQ?c4+0N1LSG>sDFOm^ zs88dg6 zKRDlhyQSDuzg|A6KYs)~<5QaEQS)bk`$e+lM&G>f(V7(EA6PiHQPyo9zNn-pnhLe~ zGe$|Eo-O?aJKoPUn())CYD9k%qo3loeq`;Z(n=N&;#z@@Rh|j>YL>_=Vp!?e)Uk}E z4}Aw?Oe?~=0f7~8I}S)#%lw7+m>VHG5RiKgI|hH6SB9{Im9)TE`B)28n_+RWu5YW? z0m!wOX3%D@=+6LCjE>Bx-B9Bvnm_8Ir!K}SXoXAME6nvkd9tDi4&m@*;%1YI276WC|uIkFc? zJUFCN9n%QcicL{c5o0AW$qX<0Me{Wl!EOP4w*9?=a8|*GJoBDlWMU|cEmEtwFb8FQ z+pA1C-`%h!nx)XSI7HHuT?oIY^{@z(d0^uUZX~wK)(b4dHOrB2$#!V>#l@rHTtog0 z>d!Ll=u8377|qj%UBj|?%;2Ol+e?VXB`rMmr|=iy4r-Eo9J3F%N(gY^Hs?4` zh32_w3ZByttN(L$NsCMu#D#_4`q-8*jUB_^`JB&)RdPAg!8MxJMdP`)6kEQ{>7n`4 zwa@GMxX&B{tJ#)viIYk+z*q=H30MqIN#0JhpaNtI>Tr(m5WI5RkZCfXlm-}om({Rt z8~vK12>B+)xY~)+!c7WV4oh=ZBqkOzH)V-3{pZ<9SxT#y{h>Gn@b~ijLamae(ko=U z4vR)v%l9ax2C)l=Sy8I?kzfEfZNg7`6*8r(5l$P~h1*uC*?S78uokvY<*h>q38mqk zw!a21d)xNN-~ACzf2dcpdi$bTI2fsA;VH@^p!XFZnY0iU9Y%Yysjb8mlB1-aVm?9H zz|Xx(HJixhB+ty{qUQ<$8Bg{eRd-kFC)hMda8XEyWv1&;Vp_MSg9Twu>&|5 zlyOvmD5OHZ%0&u}L01GlQl>{M>0%?6lA1JXfm&HjAy&5r2XL%u7vtKkA-*e&x`%rUvC+HZ4Leru+i9uQeOnq>^ z`Jb5)vxr`m0TV(T6so`{Q&xvGBLB*>q?<-OM}1leS}?Qb=ZKj8KL5to>}8YfPY+*v z;&DUklTSKDowB0VTBoqz!87( zDcF({@QEaLF6==qtL+R=aRFyw@dN5EFRTd6{5(1njQy#zQKJtrJ5kU8w zcM31#jnOobU>o99B2M?G>U}6x&@8rs8HRTuE5!%Mq7Vx2(vVT}7AGc0-smT)86vU) zv~UQ_2MK{&xsT)GH-f;WVNv#{Nv9J(47X@aFn56^!O*+{dM_EkTL*`RX6sN*7`r;uq9C+iA)*gTmpnY`!2NzPrTqbHa|&*;(*F&>H6&8ddxP_D$xFO_b`UBO5TKv+rT ze4)YkLW3DM*|N96S4lTy+_8vI{yo;uUkdr8D9Sojw+|OPko*XJvQRv;8qA!UzV5c( z@(;v>qjX+6+4<^s7R778Zt`&QU*GIq${o3p`QYr^b+`kdZh+$c!R2>?a}wJDg@efN z%eY-N=-(N&=g@;Iy|v(hyRWpLZDUlpZI0S>!#R9DJa*UcuZjlAXGwj#vUKaQKLf-zU%AkB^nCbZ z)n)>TrvYDE^##m6N})wYH#>FAw^_&eD&E)P!AXO~(F=-a7 zt>ktwccSV+8*h%<;*d%l?VnUZV?A-Z92KEefZzdV`6zrYv5M;F*`Vf6{|v@8 zDgtgQJL+$y?#QHLOecGHgGcd1_KmXgo6(xDY6h-a9$T+nh=gK>!|Gr}-KbcKZW~iN ziaq$~F{SL5#_>5a&*66(o`<}FaNEY8WFC?2n35k}Vc7$D>PSXNUpm|C!sH-5A3cWb zI5L(rZLjC-Uz2+C(nPsslVL{6`v=W#3`q`-F04<9r9KaHJ8a-OD$7LF9f7NA_8 z1hC06UPr;JO+Xd$z~tw-qcDXD{T3I)?S0$D3W*LQH9NSNOksFr%Mq-nxdOU!f>K|Ey)(7i*1>3MARee_}p79}(homJP==?st6yaQqEn7m zsrN4BL9vQ(XuFC9faSeaEJJWsNot0`7JW^{TZgut7+~%|bpyc&+~IVq*1Cb@84!Ht zKLUM?m=ws%EWR2(>t%fuo)}+X{(6~4$SR5ZMcY~;dnTI#Ik#+zuE2=F@jzyUc;-6B zwIDb&3EEo-RgjQz_87vnKON3b$wB*^Q&uKI_`*?VYhVk)hwWgaDQjx-}EYP)XKSU%$tPkZGc7Gqn8!R zHAFwL?m1@9+=YUpT0c4mysB%M1d5rkD z{puUit2R-@Win8&{#rJ1>dnML->69)@@EF>cUpQi3S=5|tkNlFXsh=~AxC6PWRjf~ zk8MS>VXcUFCQ<}yZe|-)|IFoZ`t{* zV_h1F_;GybY^v7h9l2m_zg;S+7T%NTfMjMNAWjslM9OL~g3cyD`L9uYH+d&?FiT?y zj<&jibjvg(=_@EAL4bp;j~T{#@)R4eh(XHc8>4x@i+ z53$1NgIVgwC?5e+01P25IsOh;->RWUV~aU~^(RIjK|+I)o=O3jedP)3q(Fg>{V_{H zP0w}L==1PQDrU)wdyEPtdAmT|6mv`1LL>W*z3zzRxfh!^%?)5iGb#qZD+<5Xszs>7 z7;Oi`5QiUe&EG;)1Vq#LD!Az~1I<>{T|BxL>_v0EFur-*s+qNtp?esiwxsI@^;XkY zw#z9i8AG2B!;a0)u7tKl2UPn32n;c*Rp0N{xI(+pf+uZoAZDqs@KJv!oulYY5X~AQ zRW`Arp;{3y1&jc%y~o_ut_Td7QD24|AF4ARp|L8Sh_VdY221akK(^gcK6==`ZabT^ zcpM|3X>>U}{ku-D5HGw;;gHvZ)tP{OyHs2WmXy{x$OP%{Og#;h>p}L2#aIg8!tq;2YQLXh z%bww?pU$ z8-9oRpq(P!1HcdDUg#AC;={}&^Qju`4+KN%h7SU*E)7wl!089H314u4k*iihtXj%@ zF(9m7`Kyv>0Ifi&Do|%CY|xoF9Wie`!&lClwo=Rhs2iLpVF5xm7l`};&7*@31R=bn z5HMXJMrbsh6_h5biv-qx$H(DLE4d}NuGUViTf7lA^gie58z>TuQX%=^c?84rfm8zK zgI0wSr**^Ozd<`3=Xs%rNpd5JW;RWbEo#s##}*PN&v+mz&YX(eOMeUw{(noS$>tG) z%?PJ;0~Vq+LHK$pkxcS>3Z0e;Oc-=IE8gCMC1+2SDp)H=g%Tn$BBpWXu3#M&fC$r= z2T<)+5EsMLWqeYzl4NFr^`JlG>e!PAwENJp{-|8b<~luDs$d;8e1QxKw|qhYlA}I> zsz72LMF)J^vUTA?G(it_RmqZu-ZA%}1&AK0!Bs^yWH=t_)@;Ong4-mn_!hhhZ-RM% z%HqSkFM4G1+pY$^DCG^rcs_L{Ursj|kNNhXHkgGD)DR$aFj*Ku-GpYf2-a11HH0E~ zu>Ib)Cnbfp0X5Huc+V+CCui^yZe($%rZ4rSmG*9#&ax+SAzKc<`}sgVsC<(i zqF}im8fybh#5X|454xh?MsU{59FoCkKsPk2R+pOOOKf5=s**|%yX4g{c&|RK5?k` zWN!mSIb#3RO9cRdK=+)R-O4N zf>>oby{qtzhs~eLQAc5a6!nfYCgfqn3xfgEp`yQX9~N$`tNT4^(EmFv`In%cY0&Is zqCulNXsp5~VWH+_XbB^8(GAg&kW4`a8>s-zINNQDkwR$~NohaJbe1EPm^c7>u}g0EX3C1)z5(-3W}pWhVb2XBU?q{Pk|sFV?Kp!1|8{jIj?eE zUotiFWDqkSnA_;`LnhFU3{%*GuQ2z1IzQdrUDMPP3Wq%ZUW0GoqZbk4nS=VAW@3%s zbQ{%mgpl?IY25`qi_ zG!Qi6ik^Qw9&`YvrZo5}h^9l>iNsmdF2~Eg$!RA2pesos1bS*OMuxn$jg_)c+mul` z2?#=Ah;RjV0pExJ#3*1cx5%u)|Bm42Usm zsXLLsQLqi1ez%yt3&d8N*rpmlMMsyT`+Wdd-w9|N+a9tm+J1(8CgB?-bc(L%Ty=Pb zggw1+cP5A-Wwo)=Kn?_0#>Wa6KF!w{EJfkMpJoF|5Jk=-PX2r=Zr3ACm(Z|*3XiFA z;C>&qL_sB}`;&9$22I!Ja~?{P_Bde^fL@s^&`u=)y+nWeiKBzXWaBPdK=S1*(S3U{ z_a`0ER!NZVQ!sG;_dXkYFRv2Z-?|(}G-tE3P%8+!Gvl8zD1ru~P6%+Kk5YOb~htKz1%;mMW5g z%)RK`Eh-Sn@)v2?ZbWz&j3W+hrs&MRa@k&itrAxC*x}hRxuZoY;xg#$Ql-ESa*)1* zWyw31p1gzk!sP4t!Lk;Lo@Og>ueEsn2w-RQn}##IiG|uUyRV_`agWEPa$=a~PwGZM z3xioRZGrn2EnB5TJ)>q>6zhxeAH2Pf>^3=ImHDdG)cMRoFm3QOVeN43B2B4rT-k}) z5!)IEaU7t2)U{@8`t+zKBmT(2&00E50FT6Zs0Sqf;C}gTOnnDMz4w{NGq*n|+5FS* zU;i;i+p~F%aJkEd5=(zn*q!x$DPQCIOti~a1RdYJXZgeL94#+)l>v{Qshpi){4j}+ zKo7rbas;u^(*v8|UG+f!^>0!C`Qy(Nx0k2l=-AGg760J6XkaGbHd32RbMrb*0lPQf z+GF-V-yeD4%hjK2|5W=&fb!JN!IO?#&RV}*{pQa?95tS>))%BSP(QSPW_Ga%Z!Z3; zR3X@IuwmKpXXf{xeK^y94!0R4$|YOCPhf41-@kYWf-e4i?T=dVi*i@@WvjqZsYOwE zFi4sNDi{X2g-QMg_qjb^$FUi|a_=jtfRxbmH!F<73Hus{f5_av;3RqgItT^88eN15G zzP2vCzxY=dlS|5P@4iO1Jt%blN()|+0SKCD$_9NsK!Dt}^Kj^NZDA2N5uz%+99llBi0Ou(B~IJ~`z2kkJ_xU1C#dtYP6&`2 zj})B-0oaKy6V=J*@ayMryBA`bTH$isSL8IEm#4)q(F{_nM){8*f5apQu2(DT`REs5 zdLTWYttu{BTS`-OnrgZPtE5}H-?N647FK5(pY^jsc$?a<(dkcg?hX6F`46*BHxBH! z!>wU{y;Q>r>BLPC$USqNfQznOJ5SWxHlRQ@b~7Dm+2!ATAQ~`rAm{J-G|G_p)%MZS za%NZ1>b~kmhdCSj48>&R*?({+pY;yWb%%f+ah$ga9hP^BW^PgRg<({KaAEZysJoI- z0qY*G>6#W$Ft97%sTKJVtLfyvQE5(1>XJD;vP~%&2a0Z!Qbm`2TW=^^ z#H&ELhfOQHMk44%gBP|>;uy8blq<49AX3vWdm4l~st2=t;kmrBGDd>PELwt3^MC(b zA=4cP+B7$017qL<7l6IQxsmNIR@W4r_hkC-0^Pm)_;KDnpHJ8I%v7fZEaG1r)f(gK zQo;xM^mQKK>}ew#puI{KF)ZdU$$)soQo$92s+{Cig+|N4sSos5(PDbyJo`c)n2Wdp zrHgL}cJx4}N`_c17o(Ic-SE(J1J#lHPs6f1m-*6?WDrC@Lia(j-Dm5G07y0RaUeC?X;RP#{PR z9TgF2L4uSdSm=qg2qE+Bc-CF_u6yR(bJkh+?<70BzU6t|vNi)8?R%1Tf^mVMPegnN zN9twHMmKe-#UWvxtPnegtvN@0TnIh}KEFsWQhznG8Ba3?n!eb9QS+5#G9jd*3$2>R zf!1}BY&TXcqwg4FJavJ;2!*5ttap(3-C;855Z0(SEkLmwU};iR)q4l+dkfK^onw4W z1wTlJ>Psvf1_r&d%FoA}mU&5QwUI@jMB2VeXfuN&9RXhccYSW#R7qJn$jLOR2eS1v zN3;d8P?5;u!~Z<&koxc~q*Tk+YU)52Lg~`e&-ruJARvuegg6uy>4PqwB1NZ~L`pH? znoBXdAHPO}ro^q$(@2EuhD6_jFq4Us+i7Ch@k%$gb+%aasSY2+JB5vv#sRU&juHCD zH;(rGJ}LRGa#d7lPmB=PQ;JibB5jDFy+Fii9BcD0sP6#i=L#hC`}g4$iBnZFyMBqY zIt>kfjgBHqm3uFCT5pFSN9aG1=10N&?j08cy5lIH4_7I)t9{E1O1R<@iQ|)K<#XJI zZA)Pwwgj4Wu(V^`uG!zREw%%lbTGji$mqA~k1!wcs?wJqF-n625R9v9 zlzf05Y2i%;J2EvDNvFBIUDZ%u*Mo|I{@5PJ-L5$GB(8*SM}PX@f<7raepvK`=MB1s zn%LhiS(*)FcuRJJLDOvxZ#_0M+yC|m)tTmUPUW@*bRA@~a0gZl1Y7bKw4ZWt^C&yY z^N>StEzR-s=dG_j64CacqdHIwEL|QfP^VLp*lDVnnU6XYGRb(gF7YF2+X<)i0-0;k zs*FOmd<-ZaAj>#m{^L4cRX0sYE{NqC75y{CLhWFy*U56|*Re`$0S)w3?g)1>Qc1We ze8T0DH%jH=hw3Qrh5l~i#8ttm8Ki>SG^r^g&sBl>_LGec9c8cBh1*9@FMEmgror5k z`GTMNUnui^{>(-_>(~x{{x6yNu1dF;ZT2*#gnW44k^bMLvi1$Hp=%aJP#jg03gygQk#jirl)cH}En zvVy4EQth5CsZ-8bFU@zlG&#ZN=pK9b1Iz3H>r)y(?!@Y0t>)yfNwe`SEaAw0WMK6^PZNk8})q#G!e?clJL$_g$ zEXt`3BQ`{@VP)ugqDZc_?qdAa4R{bMP+3b}3^zrd8jd4Z_=$a4Z5oYwS_e4@aeB7+eteaUR5feH!&`R;wBmBQ)1M9i_}r?nfBhU>=K>m%zN4e04`wruI7K zJ)-Kp;dvcDGTHecC^#FW+?hvA4VY@s-aSFS%=nl-A$EYFk3*gF>ATEiucN0KsRqhvM?`4eu)l!D*@l|ih6{;u952H zP*4D|ZJ7n?*mhI4m&vNaNQ;(gFg^uZUgTMoh6qf}F0Uy}A71uz@bZBg#tv}{b@Zg- z@GId~y1XD?k|Y#QLnO7RGE=dj8~X|HYm<_AA`Ph~V08Izb0_X4%!8|8z(jdw4bj)nx6T^wKRnAr1I^yyU0zJ? z7Xo?Sa95_j&AOM_qEuq+Aos@D_JCZp;J=*!FGmKE#DKANCp+2cR+9@A(KjKU7%Yty z(0=(gPUH6o$RG=HV7X%S{(=f4Ss>IPwjvtAX8ZCubdcm@yXV)Lw_XbZ7fCQFO<2{i z8wz>4VB)Q|p!NC^R7`VDYB^)>)0epL`tof8n(v+R`v&)jE{4bsUUpnIa=$hyST5^aNFZx05LhtkXtDSThk^;8BiEG!ijCjA#2 zwj)sZwa6O3CpAATJO0#~RNndYgy&bvk;{(Waf@D(uY?`bgs*`fE*WPXj2&1znf7a+ zZKq9pivgA3GxmCS8sAk{^%~X}19{0mA}kavlAiARTnE(v?-|~OUkL&(BqN+5@)v|p z23_s5={hG=t0p_wpfouo0%EkN6h?IOUsEXziA^a`*$?hWg?#dBz_!7OR`&W8(fHrq zDuN5J`V*)7WATCn?t{gzyQSM=&H!utVWS8v5uRyCKp51HrPhk23&=ex`3zB9{^t0$ z&oB|4k{;tO?F>a)^?H^qU-pfDRQwtyD$%#Raq^XIa1faD8wb9KW5UT*c1oD*_dFi{ znDpf@1kctR1TTPF`DaEla!TV}h!uI9*@U^6#BRvuyI7S5N&P2}0>N_i)TOv{iWS8 z*|NVl`&WvQ{405}|8zYCv2E{|`5z}4K)$@yYAIeDX|a0;osr96lCCNSi_|1uQ4D#$ z-vt7ke5>~IPC2I!3ok5oV)mkXAMkFPp%E4iT9lENV}+mRSrffKe={3`CjXTT zh_Tqp=fErZqT7KGz(K2u&4)F;Ru%6ng+ojW?z`1}!~uuf#bW~g^ru;@suE0tc-{0w z0Y4(aQ}-&w0So*n)nfnz=<{`BGs7y(NrxK95FA0W`S%H6XHU&d0glUD0dnHXyEJnj zQsO+1nhp?n)M!(yrIhWTOs&2MDqEO1ZmR|NE%r8d0fEwA!YiU5@ZUd($fZZ-y|J-s zp}5*uT?YB-ft$szlyA2N(%;Uh;{nq)zKBUl%C7jvXrD(3$Hl1QM&@PxR zZUKtfTtW2(F0sIM`T1F(k9(MRTaBy0gh*EfbV9~nSxG0Q@sL?+sMeL9Ig-5X_VHP_ ziK3G46z5OZ2>Ng_R^aLYXfo`!)s`JnR0HOjBSPnO!S|kjL#0D#kEX)n5m8+ z1f>)evrK~}n5a%Q@gFeJrJ3V47UGDtG!KIyl{pppk9uOtflFbA8TQc6ZmMh>i~?GL zftp%WQe3_PONxb+={nN1_K;Z`;JHxRn!hVM)c?d+XW zmRbt|CIvIr4m8pNd78vhX5?o3dAH(36Q?gloEn42Sa13k+^v>D|E?oU;KqaQKCJIy z|6whNpKSoD$K9C#Tz(A5S!GF0rAm*YDrgaRme3a&4Q)hOH^EN3s|aDVC!@PtGboOu z+3!U6Yyhdu$EzCqo8?-WpiVkKk~#cHqfT(YdBx#zs*E$HL2b#wV(VS0V*W-5oL41- zlX`3OC~LRPm!WIT+T&xWR6FKcv>4|lU1Y(!o#Dz_Z*A6PkQNS3#WynaTUb%0w$xHU z_*gT&1a+UGmB3CEjiI6u{yBY}i3AnHVR}RLM>9i~p>6X}jmNR2wZ%l6kuY6aUqZh5 zNA_=2f~-9&aZ~x-gc5m0^{(M1Kyi00zi-}M%g8Eu#&&`>3fHVz9)O$j?#2rRVNCoL zx_|Pg$64e#;z(k6HKgK*2%)(%0 zSgGe(p)w@~nS|N;xTSlfT73p==>KzmXCgSBqEq3|&eiE@GB;6fLFqx{^9Q7aw;0q}K1#owY zGZ%Lk(FC@dm>_eWcveR)l&Kk+`e5;#SJ|;Fz9%~&F2oXh7y!>dgnq&9D6@yGtn0Ug zT9uQ55%kYM`O>d(Wx3<>>H>3(JFbDt{v*Lm%_!LYfb*AL*zSZHxK=8_rdoetQ|hX} zu&FnEqJ{vQYC(6a?U0+Q-0KYeLiFpp08Wv1c99D>)be@JBRUFkD;IH2@6v7-@Tu~$ z<(>lN0-xSth4pnvO*$lg^E@l-T>Nvdqe?q0|8|Cj0JDPjfC>Hu9sa=m(H-V@hmOXI zW}&|0InX)QuBpxs`W1=nnBoX7Kk#~wpkni0CBs6|L-}W8d;fd*URPHcNn>es-bGMg zbjksnx0D3tZ>O!Fyofv977gw|JeU{P=Yg;Mf}Lnd`?nuPBzXDoW(=peCS0D1+L|vAi`Y#3(EHZhM($G*WMJc zi|XmYT)yFSdT3ikN97CCZPCyaw4cYF3q8q$KW1!8CRM9;*G!3uF0k$&nkWl-fAf-q z9;6Cbjo*JAsdV};Xi99^`^ZJ+e%-LCgS&2yB|VA;HvxcVUKN0#VN1f;k2Jd9Pj3@Y z$ zR?SvMqjv-Vb!q2QWZ(%*8`%{7TiD~weKk{kVq00pw~(zH7jhm&He7I>C6XbPKYf^m zYeB=|%1+h;)(bwRa|+md`lkT1jXD*=o)#7sJQg}LvcA1&AJNNx zw5oA`&s|KzXtWIg*uSTLP}V)uFsSdbcU36d-8RZL8fG?xMZ!jP!}8oK36}* zn6Z*+ld@=2MmOl(LT6s;>xkeS;bt-*gjj`bYecu=ZudPmvCmLT7Q-fz8@S{HkDv6G zxp#(&SHN-Mc7`4#=z9$|b+U>Sk3LFE6`50jFWi>B+o(w^W)MEa7oiCZ)$I`)9axH zw0YrO+0#seRQ@-DPi!|&V){lXe?iGB<}mBc<5g&7fbMAk!ney8bjcW_UrjART}4n7 zX&{{5w#8W?Ad}Q(XMHY%cKXKx}gaduoYYm#~?;(Pku}S4Os z0@sh2x_o(%rJe=>(E1|uYcs3_%z>ngrthuWLvzszanR04I&kAfG(=)NHIc6k;=cPp zZ9EGwlToiMRIwbH^FIz#Z36_=Mbl3Jf9d~0Xs(?5MQHl#ypX<5l8n}};D3<(VKhQ( z{=LPHfB*m3wp7Md5S#-JtSj^{NJE&pe5A{49q5ryYaet!=mMYSfAJg3qDmY9_X~F& zzwXfS>g=?*v!MKig{yqPUHzx&@tXt1VxbC9bk6D9zes??Zv#)TvP6_JdM?vN@?I1` zaQ1I7fdGJjFtLiUJ{$!YePTY^dXnqmHHzPK9J6WNqqYNr0ny154P-03-LH?UPVOpZ zHlLZ4Ot5-)yKehSk2m&RSJZ^ez)1iv1f0aNUwFJu`?g{nE6eIS%JeMtJ`Rc&FKq)s zEsgqA`RRs%?z`}c>3hiVA+|FeE{|F|N35=kay@YES~x;+ZerIEi0S!?R6Md6wkcAI z)J)8EIdJv%x8%!^GU5NSG%leMJ0=tvxQyTmR8@z9M%;>~HSyjYpiv1IpZFOJcwVsd z@l)<9EVfU{b5;k zgEp*-BR^ces@W4ZbUA;ZjneM)I_Jk%p_N;%Ut`AAv-Ad5Wx`Hh3AqH>a1Nq(*WB$3 zWjath8%5B1#2l;=>gs;nGfLdE^!ng*yVH&c<@22GQ!;n93T9=AS;x$)KesDJJDDqS zgv*xQ4ZBq1V!lrL-~%ygtP>7`4~xd<{`}dmjCh~=zCUbp%fs-+(!hNADt~WL^*{mt zW>Dg!aE0Ecm|Gt$zP+JI^DL3Pq}OXd*43u6=shI;GKvM(F0PbKh%(=bJUz`VH|X2B(Kt zT?y!LYSi88-rtq&zggxw4XG!d4SO|6BVVh~dk7Cab^dJ$<-#Yum|5XVj{FWulY-N) zN3{2_2n>oXNz|l-=6)8mVwj+}_wj#rL%%IQR{uD|1{L%b_wF3YJyiMgOZUT4C!Skq zvq-dxwx#$%S9jJr%{m$_5nSSS0WtFtMe0&fVGL2?;vQu&#wSKC%VrH6!u^o?<7LjW zI$CM1dwc6o&JJ41@fP%h(Bjk`pJ%h&1n;gWhb$k@Q49ziv>smBvj1lNy3QH^)MrFA z6TS?71!Zc}<;n+SGbP4%X1YX+JDg$lF`_I73Hr(2G!Vb8ae_1yq!*>^bOy|QUT<#P z-QG9DabN*nUUPy_uCFMV&)4`0=UfK>GFRI1-P?F>OoG{OHo=|93mA3O_HUN`dtb%7 z4ll4TQfI20b_ZC>*qLeDb4)D>T6;;!!}EppS^Mg(&PN|sOA~P`?!d<9?5ho+<{`WD zMF&i5Zbn?Z=tJFd>Qqp{6UHa~(>yNBWSytjjjuQ_kIx#A4Qpj&`rWHX(p<-F1JkX8 zG}Q#9SD!HhD~e|n&P}9-ip^4H zb0YJO>Kpg;C??Q|{Q(u>$D1d}$1RjSK)MGU=XNgdYvBvD6=Pp+@yy17hcw$wz>&(L zFdsgE-cmy!-F+#mUxvFLE6Gp}5Q4*z0uNuDn(@Z!zn5_9)9h8K6g+YhaD{w>xfCx^K{Ycw!LDbJSMKpGt428d=g>F)sBvt>64IJmA^M zgeVh79YGsVV3^09V)ocPnZ1kuPULq+b#@gh+bU(iTuQI9rCBK|yUE4bL-+Ghp#k}> zf-CuQoy|XY=m;LhD>ZMo5zFkr%9+W$4Jt8V&I}fJz=W#}!4hIavd)y3pP5Y)^O2z-E&{nriypb;Btfsi~4;BMmLBMpWR`uPRU)@se!tlp-sVI`ev3DbT z<8k^8AaHQrL3kYPUe`Fp*$0eL4P@~JzojBux^}2DQ>EtlEauwAm$HfdOo8kof1-*~ zW1=MysxzGT+tle3FXAH!q7Ti17Dw^4;pzMvuWHR1FX@RL*Ds)m9~Qzb>j%T_Jk8}< zL#U*gDmQo5V|D=D)x=t$L?e-Hwedh;t9!nVA-Q}e*QF7p`+Cl1gC0Z?$={k9hr;LT zzL43Nuzk$Vs+ul>nwbnUEMJx}G_i+qz?>>b)?lo~n}QStpWKr#(;@LcFx@1f8uPm( zWwTwZuLH}pKS;_!D-FF4?U;iy&Yp@4^m)*I1I~EH8EGXe+$zu4`bsu2rW(r!qK{(2 zVY05DC;W+&pt}UU#OlF-mOW(BMUW92iWuHKQez%>BLjsSmmWjKp>61gYd*pE41?-8 ziUAkHPq6=}4MDD9w3t5k(7{(KKHC_)^rJ6HvSPchdlo0w5FA|Vp~qJ?g)#4MY~-c9 ze2$Vj&-5&O_I4__$!w_`u>-RkHT$*4i6Nd!gNgg*)D(e8c&F0wG0zDQudz`PZ{nD> z+2#4!B*0% zz2oG^4D&U;k)_2zc=)6==OYk2sC4JF}46XELEI>q$Isx&uJpwe%gB= z`$_9_yI`5@V%xo$_l{m$kbuTnf+ic2^A4NZsBE_!4@5^Kz6(ZywHsxTUYuCpAU~!y zsPdrI@Ab5=QwXD38%xKl5?h*uQ$}oF=i7>)K(*A%xN+Hb%86=dwIX#rJJPJUqC6u! zw5Ysv(;8`H@LX@^%PWPf)X>dfK>YYG9?&agUh5a>HHf-^_Q{2r0Sj{IjO4_O z(YfiIYn4qI<9<1}+K*kSBBENfSg&mKVV@?~b~TV9n(LduKL3V3m;U1`Gv_O9(Y6%N z+V@8-JXEi9I&V?^YWj`Lyk|GyyRNE#6dXWQ#_U0Ru*^~K2sddI!G~Uyti})nR|D!(UvB1C(X8O79PUGh>zD^__}o;WJD#( z7vS8rHP^n`N!eCqsi%+F^@B=7<}Wd~pU%k0%s*2!)wTUt5N|nHrafS6tG!RIdd~Mr zRq`%KRflc$2cz~j_R4~0`}Ss~L6hT*>?uxS#SCS8^6vHv{gVIyh^eF)WR$ti&?Y9G z2HnUs+GrWvJAY`bPj4Umfb)51ON?oj{md29z9HDDX=>CpNDGYJ#G=jm!{B#`S#*W2h;7{Q|1Zf^VMgGabdZ}1Wmfeyyml+2!r~Nf~wlrgJBEKPL-88a%XIf zwXHbh@xquNv?GwYdZUX#<`w3KvX+>E94O0?hafJND4pk>5AH6R!K;#dmc;$)@9iaJ zm12uoQEg_@AIk!VL=x>3+f`HsrqYd-W$j`<@y-P$C|G6Q+|={0@11y9JdRYTWlJEb z&dK2(=fA$A+_F8x%&IHBMrOM|N7zbvc%pJ$Y&X9Q>(4#BJRHv7Snu9Y7uV6+Vuod4 z9%DnNDn@xv*EKb~9x^$)`3GhwB65|zu4{XfFn$5s3UXGw6@M;*-bl*DL*@ILBbu_1 z-8nV~#>+i&t{$*3<>d$)U-YK;$#dSXnH{OBVdiBgVtp!9{hNQUVqR%918qbNN}jOy zZl#+T7y5gu)siKDX!|%0pw0Jucf0cSNw%Skf^qXhr26?&UTP|qRFTc^*em9D>xZ0c zgONrW?422F3ycrRrPiT`{3ES#3)o8)l!=Y8_KhnWuj?!OwU^K~G|e}9r8bu;adQZA z`JP(W8uxFHcsG2v(!<7$`qsR+^2*ERwFrR~%{*vn*;)f~Sf~Tpnz|>KX>p*yLE8ukL&Gs$SjS_mB6-g`!dghn>Cl zUVE>#KA+FZ;`>DzV0ggW*Bj7Sq5=GZd;^O^fG42wU;O%akpJQk8XAjDfYCCIO&Z@c zHH?5IMjDz%8jB(T0{|LY|7~pGzkg{g(Ojyft+PybxgPQW*AQ5up{coKsiv0J(xu4L zNyy)UrAAuDYqoo6n;bc#v-Xndj_WrcEVJGFyxHt%H@I%+*~=-q%gxa%EiCQU+i%#o z$U7CB3CH?{`7fd zbZi{@_I-M0_6PjW+`o2d0Gj_}$^M&R|2MmkMbKEXbgAZ2oqz4pSQ3x?Xc{fmTC-i- z*yD)KnM)>XcU)g)y7%UT=gqpdJCA~9XD@dzH(%!{w}bvQ?frfPpjK}H?k`DR4*c(z|7i*E5%53rJ|U_l{rpuP)l_f)kbN)?VX#7$*04h`%fnPA-4Qi^w(Q>js|2p4>$~;`yV#!R!ZB+P^_d|_$%EYNN4<1H4 zTON9q_#~w97htHLKw%9g?kjjF4T2bX(___Y`(c{Z&8_Ms^sXa}bE{ObUIVAf1B>pHNz3`$ zNBL`BK_ltBQj{B4Jo+`cV0h*%GHPTDCe+35_eDHZAQdm8TL zGdRvA2Nxf4MSd?Jo|@cGtO%f(Av^f+nHUw7QPZLBdmxjHt%9YURwkrv|tWIP-+)};^un%h8GLJ zaoLiq-&@f;38}OL1*DX+?pS@l=7g;kSFVa1#F-(7c=f$!!LMbM%ELNUDvyO{GmP|M z9GoZ@7}0itf6+}KappAE-~+6XDt`a*oO;=clZ;tOh-4X0xFm!Xf?w6rqt8L<4f-FhNqud0kjhCQCr65yax zA4Tp?wQ*9Ay!}QjYdQS3tqyP7Ra<3ys-c^{J_@6cJBD97I;`16%sB%&-;{IABAxkm zwNTZgY5IT&NN`;hA`|Gg zUn$wkcZIH|GUOaBmkg(u1FcQ2MLM%%3xzo1{XzKl9ta}}B_3?-J`ZiO6MXq+ejkG@ zfg^**^PTB-{Wv%KmRiUlTiy{j?H=zBRyS6TU3Dd9&n)Pj0>x<@Czj!;r1)MmP;9lp zBZRZjQFs&aG%BNkJA7Rk2kzrri$~y4DBi!ToD1J(l#Lc^_BmOfI|f?cEtD^8ZVlVm zKdI6$86RHL&@(;6&KO9T5?+tR#mPBF)I>j^vuhEM-6y>$7Th1@Z>WW&*|m!Rikh

(ITL!#=*|5u~9sqQrL?ZP|=~7N)NUirR&y0-ml9dUDAi=!b=9J`F=gM3!aDB{@=N7*6SDIGLm;m2N!`^5XR1XQnNa} z!2T}@EAU%-RT~pQq1xC#~LPhpqVFvD6fKWEDfMxXjy zFxfIqe4W3B5ia?#2(<8_Tch_^)wBNHCB7CM0%4RyA!-%uJlENZS#bfjjgULo?t`Sl z-1so~P6cw&y5y)f${bcxlW@Kf4B6(vN1%7PV)B5pjc~p@mYrU2KD?tpE>W915Sz3? za}=XPqxIrQ%0+-Vto^*Vw(3Bqg3y%RnOAHLNpIjtWw5YG^5{-Ed04L-yT#Gr?4Od3 znYR|b?F9yv58(od#MO9=vV;B5)Q1+hdtdgp_)|EnNAy8PBC)MX1y|OO}X%@`+b&PI3`S zYreR0a&gvI$a0u==m+9~j3szO5}Cde3@a~#Q~yi~o1F;BBUq9rE0W^{CV~s3!H6b? zc5idoriG_`dm0wjP+~P`zTG&&g9#FvhOLCXdz*@PfmH%#F=}b_B4CVjQ+x&&fg3zs z8OLzEftV_I_I2`1cP+!h&w8LFk)p#4@B^lPS_IBvZ(wSDnEVYeOOg8{jm9WfMZ-u` zY2&Z&!)fT>14l&r2^aJeeN*LQ@bxlks{eqawT~z`uS(YFDpi!_-7Fciyzs!_dMOqA zHpxvGb&0A`QpIR?M54z+NOJ+>`h78dbL3oL5jcwk!&N~8VOx5*)(MQXc#Pi6B9NLu zOujh7Hi08V=y*$P8r>S^h$NWwDGO#sOtsUbU#MVU25WfGX&*2_+c>WW>$KQ7Q!*qZ zY68BOI@LM67j8l*wGGYkuO@7v?x zn7XL}(tiD*8r7N?T}}%=AvIWX zolry?q#LXM8i@6)q!@-peGlol#4sp+4qP)U|Dp@Jgh6J4R*E*w53VWmsix+8!DaGn zmNr$;vID;SPDSs?C%pKYT}cgAj5H^3g=1n2FcSn$mVS$lSI2%6D&UK(EaL1CaDnQg z*6o$EmcSu$opeWH4%t8>mnb+SAhAvc8d76EoyS(bhs=_G?l^b;GsXnvraEL6Dwi%rs$I1xwk+X## zugHU%eXD6FBv09zDjkJRH~r&7nu{ejZF=LDtHoB}Z0?z-FdvI1OBm_3WWw^`=$q82 z>gmE?Pk>v2D*Z?PBA|;ymB8_Pz>66)qj331V>i#X^wgMQ5%79e4>@Nl zto7S79794r>K%LC7aOzpYHAQ)z_PrTH3r}U1@GDm3v_jUA;RL# zeJc0WI{s1fOI6ELTSzD#Iv$(nlw{R}*N1$B*U(2G>-s{aAbofn)RqRBoC47zr)ND| zwx~SiZ&XL*jcciQ_557|n1}p{UZMNPY-}N?yU#SbXa^Q@@W!emP`-#|Nw#cn)i)SX zOr<(9v{n1TsT=sU6Ad~kxHF5uvM(;?t~!}257{4K6x4)`eQ&JaU9j(mW!at2w-uNb z9_6F>E#2G&mjgYr8sHm}b;^otG|6rbmhDQHb_ZLbB_^+$7cM8Q7z^%9c^X4=B3F+I zOlsK{)Wn107#<3p8#Af$I|sd0y82WGQy=x71pih$J!=FfhuKLo!SWAdGMf$=YEVzk z5Mt63q%9=vas19699ltH6-HHxf|IH%%YxTeZRM0l%>`x9w$4iEX%Ua2)OwJ9ZgR>Z zAe`IEe&lnZJ|I^+$>Qv@kky*anCJCP>~yKwMgCS8-BM>`1=%eES-fk?qP@etLiO@j z^$ie9^m@uTn!f{D5&W)9?l)x>ubIIKX#K5T8DEJE4iCmTXDo*78cBwTuYk$xMM^VoS(_zVsxo=zp9HJ-EMKM&%^~O8nL1vwk3THZ6jO> z9({WNGG~{;dZOTq`C$7Yuv|3HHu?Y;9_({snfYR6=I;yMv_#N~% z8}|W6_KgM-6Ny8tWvauVAWzXtUkA6J9Ed|BxeRs*^+L;!mcSsAPOY1R*H1j32joj( zArqG6%s1V(J=_x)5*PMPdG;i`V`d-2B*;@){-qJ}lrz&E1e;pCVSQUOhN`gt{xhSQBw_Dj}YGXLR#TDB;c~&SY2>nho zg81dKPSbJvy1tmw2AHkTHy~+H4-t&1Qc{AjUU1SV~(RcG-wJu3eamAh zM4QzBL`o-s{)8bNc}KnQ#0azqG_%Y*Q%&L+BMbY5vi&G`64hFAuMmP zS*Hgc4L#I8?{f(DfsVT6o^1~Apw%D!;6yn2PkWQ!kdvLU)hSzT>8!do~{y; z<+?t#623y}E`>=C$BPZ&YFzwdPEPD;R3wD{qBZYDF182To+l|gnf!JBR!Z|q1;;!Z zzZQzfzE}>kc<-z7*5&ViYD`=I2Xfl~VoLm<`}d#2 z>|u(03LR}Uo={z)9P<0E%J#(x)pjUI!Ax=dzT#--4qkyzD(=kvsDRM?m%sQjoNi0~ zjhmN>v0B{POTZNYSfaAXVZ_i#ZC4fndtK=J?y(;NdHBWlx=T`v&&j4VL-6zpZ7#(4 zY;}kcNnri7=R?)EyYR0EoR8`MaXjnm-m5z|0%#dC)%0&N2|c$%C9TD@*R2fSM5Scz z(*|xm)&Bb@SF^Z4Kz|WPvz7_w^l7IT0Z|$}zX)`0O-8Ft8L8WX=E(}Ru8#VUiSqMh z4Nc@xJ?zhz?SCxQ-nB*dc+(PAip>g*~NU@1Lpe$K=1J1Ibz>WSqc2OL6PBXu| z75{8%PNqmu%AsnHKR&RajW?N3Ufek&T%v0VNZ}*HdW*n)aT`jtpTrWVzKv=Sn-&4> z?Qam9|DK~GBb(Cwpe-6Oie3wpBdfjaa2zLl5!fKvKJTGQJnH?K@*78VKlFv@;^n{4 z(VEYX?^%LECVg}zvMJw|*%E5)+uJO3aFsN_O~SrytMitvO*T=R#v@U8)Co#O3K_I= zY7xLS00AJO`NrQ!wKJ#DKB)^q-lkfsu%c%>ufG{@-y(XxE?Gy$NL{9hY}g|3=eF(h zducQs3x_utuKo1;nJe65fEKdVYh)b{7bz!+NhyYpP9|sm^!Q5?GM(ClWk`h$#+tR%owM9T+b8>~`nGX2Y`U8`AbT#bVO% zE5Xl|~ca;N}evgng!!{*-psIzT-(qvEgh9@C=YC|y zHPU-SyQeWI`0}ta82oxW2G3b%96Dk7>(zlRO_s@78B#4(()=E(iIRnE zw>eU9hL%&=C*ZWoNRk14hZJVESO%q1oaQk`Br?N5-ayHieHQF5PojtTAVsHtI_FF& zDY{@+pX2-1LEtNG`~1FWzC)jSOO$Jbh<&3jh@n|aS^=jjc>IlUIK*m_kgiX&(A0zQ zcQ5`xoWLp!W_W*NrS{KsoZK??^#b_mnXY2jbVcXwJyvW3{C2okQT4f`oJwdTt@zv@ zTcs!D+c$QpJi!_z_Bw7)u?3VhUeZF}z}y3U8euwRcdnTDVQEtz^=M-D>drBA{+tc> zk!Rw0b4hMs<$o zyZU0>RJzyU6@xsAa-Lk7>pG%fd>PR$BjXHDo%qY?adp+FmuFTTJ{9~%nf5a4+NZlq zQ(TTmS+s1baXq~BDjx@Zl)awEwh{*UUj|R=?;ZJ4_4JU#mTV7o(N$aM?QcJ2eb}e< zSMjNk^5lPhyXgs>%tsu_*rB{XrkcNw-f2jDu-AS-cGo&#<1{r?p0bg9q7-W2v-M7$ z8rr+=^@-!fij{r&cegcJ-Wq4Dtg40M3OOrjE9$$;{i4qHhxgC|%-N1EiTbs_NPU%d z+?!kXWyBPPZ*-pi_Ey^hc;J$$-Y|4%wjN{1hjGZe<&n6{|nuZRwpyJ4!>F!z-K3`26o<`SED) zKlS`zX71aQp`FyKsHN!5rY}BfUd-r8`4xz!Z-(zZ96u5{CqOFe3E%$m6MxtDaNQV& zC&mN3+#2>kCqt{owKA0@NzpwP(GhS+g^K7rETHSHJscZvI8vM@h*z8m#Yux2M0m9Q9c* zTTs{5FcfU%w_8!idxiFF*GJtXUvhN*Ve)l*Gp^ffW6;fG$vc$ocmmh!?udfkquqnvFXegf7J(z^jY@{?7xVgebu}L;-yBA$lb`QgI9;k)2oYNa zX0V$Fa>NV6;Iesq@Mz{~39lZEQg7(94P8F`)h{VP#1CcW*x#XTmyfRD_3?-beNHKr z;@uNhbtSm*dCzp!UPYf~j|gLP&$OBgCg1Y?fOApq$hom`?@K6x#PfZ#)U0irFM#iW zzU!#%3Cmp0pHpvSTPRn$)hq&L7p@e&oXi>F0@0B_)6V(_cJO>FRE{sZH3dWRu4#hl z$#ITFx(DX{SBlCrDaz{U=k*NNfy3a_o7L^%Hv#vp{}F-`b(6nC{Z}9xjbD$zr^F}G zL3L`3SdD=_TjomVLREobb|5hqZ$Jy}p}VR~;cWR*K`%FS`P_&HG+!zJgPpEe-6a?SA6GyqQ??hFozf+HgYhv(9rEC3DH*xk3AA7a)enAJs-OjDWAm zrc&q9CRxIH&hpV76%M>xhJ<9}x3l_d3Dy(Da3#r@`dT!baF?stT)5yT1jk&p9%VnE z+Itrx0O5(>G!>ZTNR8pjl^Vi@B7q_ANOdGzpXd8fl>iSaSQ^xGMDS3W0;@@_mrGfK zNRFxMJU3gpKD(US@_}~1Kj0t)Fg>5$ooYri47fv$(X$f$3kuSt^&U-IAp!JbuN<9{ zy>%1h@R#`83MFVHz@enWW2EIg{}`o9FC&7Iqt=FR%l1E|oy4?ehdkzX8d1s3SHn;c zDf_9cyZVcL_WTu(9`nRj=0RXARtnpRf-%=)5o-x%v^7W#VhwxFZ&NvRbCWj9+R97D zB-a<%PMC~*{JKV{y6C>@Y>yMNAXJ9ZJzrE5j6qW=2O(D4%x3?f1K_LxLANeeCOumE zt7eEIUS+ady*{dVceg#vm9zB6_`AU%A!X?Ye|cwWeZ$394^Pt8L++0Ray=<(;wszR zp}ZGcJxSXwYqV;u32C_%4W6V{E4^w9{9;I*UR%0eIBg$YGwNW~loBjZkz8+3Bo#k(}wCh;lP7J}tM1xRa{G~^v$cDVs zq>3o?X^h3hA^;w62nd4GZz`=w601WseX*3x!?dHQOW@JX>`As^Q~|ryYC;cX7}j{E4V;0RR2XchFmg!qHTvFT4ozKd3Io1qd^rE6v&IJ zC1ic0GK2-zo$0up4@U(WiyJBX1FC-SJjI zG>Zxj%A7%&MTOz#=|#)oce|W6vvoSpI9HU7@6nwPLgtHeBIM{PF{W@tYk~GF8eWIy z1V=oeV%ox%)I&DU6=YWGu;s$T>5m5PM8*2&%EnDS13%ha*q8{*;+n_Q%ikQED{|Jq zd5g+JjEe(P+wi84zDSR79g83_6N!~>iAg(~w^J$m`f;{#RjNG$7z8)SvP=qTOF$B3 zzaxqa97E>dw-5XlO!c1kebtXJsE!auWt=oKm2RU8UqQD?4aP20{bWB8w6;3E#iY~+ z5{7>E1>0w@!vRm=;;-#q@avLOeidP(1gqF2(m_jpRh5()(uy(I5{F$eVHwWKoatDf z?8;h(tnRjaA;wT;qYGlDcr?$_LH&*~SR`8PzjOerRNsjMTt zSOIx=z#b?lJ4h6^vv-=pbdBSeDIBhdhPOh*?5}_$-4fwG1oD$!GP3?o1t;Ap6w@LA z_!t$M-^*p(2+nTbS|z7wqSE*d2>CS`gLeoX4KsNOXUm+g%~b7}-wOqnMM2tD1ax^; z_4G9-sn$f(Ds+ZGmLIk{W@HgoR7DgF zOenC|9jar>Zs}!TQ-#Xmh!pCn_ANWT*57~OwdLsMbvGL-ODY02uA6GCgr9@Yrr~^< zW*?-)8cb`hTLk{_d$yGA(E(^G+FM%oAm|z3y9=Pc6_(yg00^}WT}v1(gD`T2ys(Im zsm;SyEdrnJ02}`u$rvRP080#(;dg+etMl%&Cb!lCm~4!m4k?okSfh|%Pwm}-Qr&o+ zvTSBm7eL>vasW)A%}s#w&%_*>TWX#GYL>Oj{ZbE7ubOwZ2eudkG_frg(tsdXK)Mgnjb&tlsGl)ZM(dhdAuPwH#|Fz}iYSxhs z00Y+H&Ce0Q7b=aE{W@wBtbx+j!b06MzGLT%O)bD^c@Lk=LDG)5ptc6Uh7a=Ga(FqJ<9cSb5CE>6J0%?%s7d06ze}dXQ`w@gg zm&N?~K=KLAg_4v#;p^fw(i5@(f}E^!Xr{m?!vM)LErEPH_*LWdffPpV&$`P+2BjO@ zJ@@FS99U`0U5HHvy9v-qYW($Ib}$s-?dwn#OOiF9bMiA|5VlFDLfIB(J*tgdm%rqn z*2Sk507N*1fCT)}G8N%ptAuRTi~Ii;>Kw2hd8cryX5?yfB;jlqzSO$DNmt$7v~IJZ z>o4Wj`pB*eT6%Obh*f)Yp4)5($CmFv+pE{(^#7{7-L~I)|9yZK1P8b4A-lGMxCeJm z-b19PA}egKa$u)1rjM#I2$>Zw?^K^WtdqFv=37fYlhT{}v)5hrZdTrM(YV>&cPBP( z&7EI=X-d)6Mu_MCI_s>_{1)WMZ+v@$LqtqC9mn4N-#Q%mhT!zAw_9?;eAnHaR!rHx z+VWLYvwe%`mOrqKwgC>_$x7z~7E4!A-Gn8pXLKy%SO2iypeZ6mR-!a%cCcSH;_!^+ z>QzLAW;Io_#dXV%Vy&)=wUbuI;F}PtMPTp~jaWJ48AaYQXMdv_7lg^2d3kiazqBVd zTZDF==lu<+76C{w34vB}W){v*hA~oiNKw@@j3w}df|4577=J{pwiuQ8|6t;Do>0#T z>8s#h=RPe0*QYTCLu18u12a{Z)N8J#`gExc5J823dR??cU2*9g5_IQAbvzZUp#b@z zOc^R$?Z}+Hyzu*ZF;z}czX%Fa+GcdcD8gH zO}JX;XX8SU3r5dhfyoM6maPbgw%G)S%9C_XKuhr^;Pmi@7q`IiyRLhHMvi(|pikRa zMzbD>lMb55%{~g+NNEBjId1vxo{>W16sII{i@<|d> zOY<*5`osEl2a8Z6PZav>{KrBR}+G<(?SX?G&n+sa%Uks?6 z6p1Ki!idlz==k&cyGU>qm^%{9sfR{9`(t=629-~fW9I~uBVgr$eifm_sGx>;k-zrH!8$I8ncN6k&Hnrfy1=E=mzUjTJs7tXv`s@x{Om-3qS8Kr{l80! zUsXx$9&2|B7l9#+d|C2C(hZ$ih!OJaSpx186`!v9Cwv z#fh2(e>By1Q|+5v)^KwvC$hp*MV8Km)u*CdoD*W58@RHie20Zvz7A|dkzj=o%?P$u zSQBS2_f%he*v~tz#A;Eu(E>=zF}Vrxc_nq}s2laDhj9I#e!TWX*SMuudKyFiPqovU zS@*N=q{Lh6fe}^cJdI`th7a~|NrNQWoq>u(1DO2XmxIFn;Gt{~OH?W)t-=sVlyG7g37k7_q4pl#Cc$69w9u*gH&iSdvR5!hwy_7>=rS2CP zJ;g7l={YX~F9c}_@k(C@UVWhGTq2>)^@hSx=p4HNM`DKBq81E%gm~$6r*SZRNS}gu zY_{b@tAvt6+gLTGwyjN(h~K8mG~Z53hdkw5<`&p#Si%LujUd-Pfk_-k^Fs*Lvo*{D za^P2%QyB_zvmmu0cjWq`Mnpd#R1#K26-e7+TtvYfVJUNe!!s~EEBX?gGIdPsIJqL3 z2)WHR!{OkF(mn@o>NCHK-Wgm}e?z@dqT0zD;PBTWxk!I8x@O^5EQjZnC}+R{mZiaQ zb$1Zz@}&G9?9)fk(zp8cDLmhJhiR`bXHFZ~w9FfpZg3F!Pv>9X)EQXOE^9T}FL zRZ%;m)h0b1GwnBcdXTUUgxj0zC&90y)OwjtjssnrEWzBMJ9&`L+0;}~*)7|!skYDg z{n*%F4BU<)j&z%5-NmCkrDBgQ+~ONX2jQ)u;tF}_Y1p=H4wW@y&)Nfz%zLR&{bgO# z6?DDGo8#)$js1*>!jHt}VS}Ut!eEG^vXjK*U{0rciDyE#8N5}XRi>EP1o(>1btJz} zmIAnVIR~R!3s*o)AIPPJkP&7CvmS&-5tdiWUKj4G?T=-r{XB*l8g>HZf*zihd3^a$ulR{zA{PV&wsTdG|bN*xP{OQIO22=hdi%}36OzkHlONbed*@JVO35OQqH z8=15I5E4Bv#_F3Wh{AdDN1d=|@RS^bX-v<(5^-&zM9wmcnhWJc);l*0X^B1yCys?a5k;gI3xE2)X4Ww+)bK4Fg!LOB+8)}@M1>U!9Yx>V zJ)Pa5bD%etWdl1aLkGBpiPmUuW}D5*7{8-6Nr}Gmhjlh$CmrTZ#$3JnyW#7gGT<4= z&CjOyCTbTYD)pujt~Ww7jDlHD7V3r$3~*yEcltr7bX>p#+9AmFO7ym|hK@T6^|>=E zvDJbez)fmJBQF&2>~vDa3iEn75hbA=0KZhoN1%u_%9kx19`*s*#=7@n)yx>zU)znO zA32B0z=g_-TxWY*J4=E`=LTLsI{DFyoD^^R6VS19Hf5p6iA-7%HX63EmI8<5GYo0g za<>jWA%5$#0bFQ>%Hp|L++Lu4?^4-lphP@de?5jqP*A-J-1&&=Dy?d0^vREc<6o}I zY(l_71e13I#d4OAl^zB_#PnDqQ*GU6C1)o)5-sX;u`_-#d*4$DLTnkaLUkm4z72hg zCpDpI$kAe)*W*)FU(1w;VAP-MJA*NaEC?Ufd7|13m(M$@E;iJq%40fj&_b^~gxy;3 z+nRIQ zjT&d>JV8YTnOQ1SIKuRwlgETK&xuo2dy5VF7&R9icxxcbw?VyeNrZ!tPwLm{4zdu0 z%ZV|EVjID)&mRqc3_j)cbTD)oXA9*KFcm9Er)%`!+#XT`r7Z>S15Eix<6fcUcpdjA zoYxhb+YuTmZi$Tnq!{Ay{`L35PEw|3LWVwi9((<=f!|kMJ$3QxMLQs+Q%-34NSGv@ zhAA>PLVf509}J=T>`A*wp;h5A+yl?Y#yN!i(y^@bwwKhMHD}{PM8`BW+mOV32@frw z4Dp2ekvdwB8qn6TwX&2fp=3P8xswZhj}~apy8^VqPp^u(zdBKE%$HP+I0sPA?FSXA33yqW!TBenDh6Yy3Ow zt6!}{TGxIL6ug`_e3p8mKceAPV9WO7F2a{ffSqJtRXx;3->l!s}7PMTvtIWr(o&fSN-?N?zY6bNGHD`#*47%!@oInwLcD(ECMB`hS!8-PA&ph zwy-d7_t@-21kchM!K8lagpJ9-bf-T2WaUheW^3>lyoJ~avx0h8pR^aEzV30-_Xz<5 zEACUPrEj5fVPUSz;d=IwJn@l!o<${04oR7u_76IktT|Y%+AL3mdD&C?qb|>Kx5s+u z53|ZYcrE1IYITjWIW_Q=J(%fec(88e{HC`njxI}Wy8#?dZL(R)Eq1FUErkzAK3l!S zDqf}v6C8K8CXt<5Te)8@x1WDu_mTG_KA`#X)Ad>8!c5z^Yo!-}XEe0zbK*(V4VB~h z=P7Pvdsp+jVecf?9!}Jl$rF;V^(hX4yJmJNGD@Q!d*?rS_$hFYM#ls}M{NP89KRh5 zUcLRe-MTLIoY|e057t|)-Gsq^(bslQzl@D5ihUgWTiisV!`Z0=Ssjj(K}UKWvl{~? zvoRRI#68Op&@WrwnavAVAlcq3@dZ9aO5wVD`at;Kk;}o)Ds<<`-k+wegO2p%)jW=z zEwKJvK`Dbd$oO^6mUsFGyH%bgcg>CHO?_Uz&%mPG$NphgsP|XR956^_(la8G z>eDyC@k#-U=2J$kY|kgv+26pqTmspx$Z3h?q!X42qFIv5^UC2@;j+q3G)=E7JioPg zO>Ga|dXQSBV%%4G)^u?(`k^7z&4=rHDb-uIHn~sD{=Sf@wxRcn*(eHs4LqW_m`M;O znY6lkXJbN_ z20AZA4y?xP8e@P5I(1>J$Xx9RN6a5m_Y9juG0Y5Hl)`_5bR45I!&nxTFd}-5h?hH* z0+T`5xl^XjEFXgZTm*abOQQ>PGS7pb5M6F3M&*lWQq9svuJg3ym^8XEucz9P zoi^;;=j6tQ1BZ3Mh#OA3xo#5y4xH=Lp%*^I5zWZOTOsXg4Fp{nB4HS#1vCV^5h|5L zHS-BTsN>@ofo?|_0g#yOZR`cqF^$hs6aEsEgzWPi6i;f&L#=$eaJw&6jfdHA;Uoxq z4AT2Rwy_6^+4xoC4e1ZoKLMye`8;iqpI;`a7^NrTwF-*Uh@WPcY|Z<{{S z6ZE39g_w04UjE}`&y2o(0DP`YGCI7hkLH$S&WG&wc>&|6BqE-9r5qDV69bYI{4uOl9`aKMo?a z-?drmI$Xjb_qcPvmMhp+h{iu6<1i^W^8VPYdNst#2%6vfRp0pUlcRI?%%5UA)(-c2 zGl{=y)*;dtLp%j+WoM`0vGy$xN7qvpu*!3dH-m_eMD}foLVp;B8Ul0 zqeU$OT{C-hX2tE&x%F%vq&$P+-bLWSc=9&2InDeP!Y^Pl!kieERKff?gcB5H(zn1< zEyg6+J`_x1W>n*?s4nt{R78%-Bk1vL6%{zUlCdzYE+_pRiDQ#0pZKR9?(ZrqPK}8# zk2Yya|1+JY@A|n(_Ir9MaYgaRdTT>5{@1^9twRDE>w05{^dcd?Vs`G^iI|wv2Xns@ zw_K|BK5PpYRMw-PzfS9i2*5P5%?z#K|md`P1w1ugnupn1S51u{xRTxKl%Ur zRni!*L(jTa5Csi#LVhgK@LR`WAn%O+|PWr&}8&S#K9T?!*DDaV-Azm%O|iI zyenY7uwI}?(~>dtRVNyu{$vQ9!`~UQz6|U=23~y*5`~j;P7d9wi)Qz<6I8Ymz}u>m zuR-sclIZw)m*G`V;5~UOq*Z;Vlv<25C4w(?Y~>VqOZsaCQ4jVDzAft%7VSI?Z9xa2 z$S&=h6LX#ae6wcZPIc8xNmaA#d+D2!EtuLnf4e-%@2r-Ps5b69et13?t30=+-A_&k z%4WzOt2cvEQK2AhR-lJB9WVGocSR6?Z9NhEX-k6faD5wQaI-u~kb&ivf~Er`Fnd@y zPy8r7d1|z(dcyyS%AME6wMHH2o5J}-$PTZ-STmYKzS7Y!=_urrqtXSRe0!s^m?w?% zZIEF%D;7pF*Z-@mda($!kx{9x2AK+fCmuTd=~$Q*%&C0)c>EV?&E8(#QU0>-r}ko; zPZ?W3ioZr&dl*&4h?*L@&^db*lnULi4iCx8v$=$o64mZLE zRBi6PNVkeodNnf8|Mbwj#oSzrYGwC*u|RHkn^;$%apkczG8wZgl+k?D=?~fwkb_V< zo${h8L2FUK@ot_wq;~{vWuS$aTDC6zoz0rAI3IBp-{usVBA`tDa3|%& z3=*J1%PUD{k;ALIXHd+69v0v;?{Nx&$-9t;fUcUUq%u#mF!jzfdcMmKR^dCgI<pc zete6HpOp+WLT=vA{I0%y{;Uq#phK5}ho_99XDz>0Aep(QYCS?6Si^E~UKWu-(}DsN z>UtT{qrDty^~L5SFj``ke{bh&Gv&n2{LUF0SqJ>kB6D(Ne85A3tt?0xL@?Sacuuz=C$y$lUaELMdiO<0 zdnq+bN=nu=X26?23v^mBhSU{^ygT&sokz4l2qmlxB_D!^%0CW!$U{&VY9i89*d7{j zz{cG7EWG_(2{jLs8MYm=`7KW0(+7@2D4$kI;O%PaIe%uD0Fb~p5h{Zu=Gzp7Q|Oko zHMOsLaP|t6q1PD&Dz9erhif0-8g!YgQBXN5{98~x8As8kO6F%hyTXyIH=`s|>W~gb ztV{>-{G7XLeXux_AsZs-cF3*tI;}tY%Q==4VU9>+9X2B&=(<%1yG3%bqExl_g;@0y z-F%#Hp6$_(ErIUj7V$Po@+t_-X~a`$4v78H2+)iQ=;2{Op$yZq2xQQmA^mq1XXFA@ zBxBX5JZo|g7q*7{ls32J^X^ASniL!3Ca)^xHPi!E`>Td~{a^KamsCcZpO13A+Mppm zg>XAT+}yVTWb`BsijP6fz~mOf)yVluew%0S8z;1 zRK~qCQ@Sw2C-qp~_aG>Nns}_Qwlc&jhH)I2p&-U&U-$xG)k5-MvkQYL3+PtE?}T1WTRE!1DIM zx_JMnb5FZ9uJ_-`B_UdbIwY*|#VYuSyb37XApj{NcU- z<=#jMdEJ}Y{d<9{$B;B4hZYWhk~31A)yo)0qs2QQ{V5U2ESkO?%wx%lmXhbH%N72c zkrlw(`nuuE`XOl=3l z?>Tfd8XtQ*3=W+ca^HEB{|u-CnX|7Kip$0PH8d3Hou=R{Lk+%_d#6HrZ4Jm-8wWa;wBBp-fDrXeXwNONp6Ek|asFP0TLIWnyY0lg5mQ zA)&Hk$7VuE8j~1`VchL%%iYu{=F-kBdB1lV?`_8H^XjwKIp_CV>$}$Zt>5{rbJkhw z{MTB&&CL6CeO?}y+qA6`BH)A;u6QBY!CmUO`}KlH&B(m5=}}$cl)2vs&!&|8vq>ncUhst? zO;6ea_=_eL=b%Oj{s#LMV;y9BU)-bBrL)$UWrcibkXm7&P!0`0Jgbet)c8^lXVdG7H^lBwB9*bGD%w@!l@F&0`(v^d-yF| z(xfV`&j397X5m+YUVF*Z;_oCheg_pN+2S8O!X`fyBHnY}IRel4kb{Eg>$>P7Jcd4u z)mHw5Fi%3|Ot2-^5s}0}7bNY8zc1Oyrr;hqm!Qcbhe3l9*^QF$)!_pFvx^h$gj8Wl zzKE~a9upt(^I}~|SWHp4{Yc7e6 zZPBye9f<^$sw9a{h1B?%w4H7x=qY?4?p;QU0wtiHIN@od&a!OA6Rr5&Uw@E8hwtA} zU(Y9xzc1+ofmkp+HZGp%a-?_-&KD5Ggm#XJn>fO&Z4uN^WT|lMmw9o7VTb*ez-_Qg z@^_Mf0*~C405p_F1gj&?hMBgd-^O_R*U^q=2*n#{*M$A7GIjM|R6VYpIBU@oxOI?@ zRfG@m3}Jie3C1$2aI{6{Djr`;jq*W4a9!?ux`ZouuznS%ih4>aF0Cq+T+avf>!Fwc z{n`Sz_U4TP)+~bq4QfE^;xSm5CkPj}*`PH;f5|eMHpJ@A(oLPk$fa5mI^26PrviG@ zQD_Fmrt|h`IY}Ov4o3oV@Q0C+hOXN-B=wK)!WV6ykC|sVHNF@E(5N;(bPD}mdJ-B- zubebljpUXq_NNnTA(CRNZS#8QCS4nP_6*TGCwB^WziiD~|KV)|Hc_el#x9k1nC4g( z&VT1xLYkEH&#!$}(}emmpEWumK9XFHkj@N&SEeSmcQ$ZtTf6Vx^qjSqc@uq_`SM9eC%0laN^OgpubWsrsjiu*`6+ktE z*^(~Wk9p72hkaT}#>?0 zYEsDkt2{NjF@Ws3%#k2B`F0v5H~C*uGyZQ>vmkU9qlTYM2t5ZCk9Qdf(yV9g#6F$d z=-XOLsr0|K@#CGj79uQ`X5Rpfr_LF?=cYzudbA{FTKV$&0OI|-+*4>XEUD4F#{l9q`ZryQ|tN(jwmZ7ORirXplM6c==TRpk(7WC z@8S8SHE%5<3`ww!V$5RX`;t>f1?5SbijT(!sc z+To#jk2O?ECtVi_6XDkSk{2_&ZwV*7Og2GTt>Y>FCQrWAO?}~EO1jDjTNN!jSzb$b z86g2dK5$)AJT%bB%}UeCG9Di#7j7T?3?I)D4?*nC5zZ2;N?6*nq)b=88CO+&6712G zyANmL3OdK?#Y={s&rt6n%9kFarZ9iG=6cO9MEQRAVkF81 z_PCMT{WsO64bYQ#``A?J>7jXc)Da*%aOwP@!@e?-R^_=eUwrMGu>D1 zZPKZW(vAgIXv6Qzath?jm9PB0KDdSe-1b=T2Z2{W(^$DA-u0_;G>kn}e=@+fr0Szh z=j}z0TMopc=7L?)z$tv9 z%H#6@X$!;GpKgfHte50BsaU^Zt)V8q6?7PVs22|Ne5O^tU0^^SS?^zWcQeoqq~cJc zy1T_xt#-g<--=w0nI-u_g!Je)S!mjJaQbI=)D;4xh0Xqah9)&iG@fW}i8+$wmDC<9 zJi?OUR);q9rL?(i)PA&d<6l&8qocjC;X#D)7$LNe80J}379l~cpuRnqM6(q4TyLk_ z^fhm$UJvY3*ob@AObLz4N*+?X+whtr(d$Z|y%_jz2AL;4t&Om6Khei#Z&R%Vwag&O z`&?J(^L^2*h1iN&iVzMD(LyT1=xYYKXx(>+{{Sh~M0bd%B5AaSW~-_VZZ84=LZVFp zu`P#gocG#Y)u}HA)3fK`p!FMKn(5E0}%f;TVSGjF6#^F^Vh`O#tS(y^n1>xq__L(hk}8ONen_XH=Z z8(wA?+^N$>U1KV6Sand^Hk4{AO+js2dG%L-!i6Eyk_vq%L*ht_{}(k82Fkzx|6~8} z4~R+Sx$8QmK_QQcr5`Sn{9CW7#mWqYXa07MTGL|`7?xMcEi5e$*uGcq-LyfDpze7} z;`G@1yV8?d(f_vvrT%;NyvC7c!K;Tel+y0UZz{^}R@fF8WJX`9bfeWpVUB*Uk(g(- zOFggOFnVu%^>BaZtJLYpy1;8FY$i$ND?!BmHfgf59{DRsO2iuaO#%^>ayYU)@?TVS z^w^pau9jO*AR|*&?;o3jyC|rQck)4E9#fADijT)>e^h3bD+d2^Z>TDIiMT@zQi&aN?mG@K`>;6A>3rp|OYTfm z9I5G39Cq+1p7g((5hA(HNU&SDT!8MB8Axr8w;!`fPkFkEKr=0esqxq5$9CH z#%x|f`rm#0$L_?q}O%lh(XNjq7D9H7L5+{%|I_`0(y?-|i}n37e;uGZLR$Z#evbjHlK&?j)Xb+gdiU|vpE~~t zVwD1=BQ#QvPpYIAj=K%B2_d7zHwEZJ1Kg(AGfj2LO3lcZwt40$G}osXUxzoZqWL;A z0*LsATr$0T6m>0ryce<>tZfn`tLXPV&=5#=p`jiSzCu&Tw$`tr^i_ zpJj9H!txY_M{uRzZ_dNNkAc)KeSi_%L^`dP1fH1oTZ;nQJnSE9H`RMp_U!O{{T!#YREqltq z(wDnEZhcffI|WFnm;!%*hxD#Tv@lim=#DVDuE(Rd7Z9C_h{vt)krfJ6$AUM`4*2aU z5k`lJe-v&-jSSFt(KZXXB-KfO^VyFQZIU05U<{lxQ5&dzPY6jL{THPdZXaELa*P;O zR|nb#pB@O!tD83cb+kAKz?zEg9esGeZ`pdKHEnYpY@W*7bVVM8G+@^tCjuhJJB$wJ zkW@xyPP~LZ*A!7>&(>a2X#8D;v;N5F#INtSvfT0M#Y-bjYP7rKW-{Bm>!+4|?k=+8 zrQfZ~?^6h(BH_!eDM>ziVw#25XR@eP;pk-bl$!)FM zhTL4&a^bsoTYCm83S+9PYij%glDTZ&rcDR5tp6utjLR_X1QJ2W&}^sDH&IO}sVM{U zlP1g3JM&f*TH6}=*4W>Npy#B5%fhgB&%vJg-gmV8gN%!jCIs$5o@%*K^SyIJRT>rL zn0NzM@rb!$-Pnn2OLlE+u4nkEe;RjOsH@4tR18cNheniUUR%~N-J#lwk+m(|TQlz2 zzz}B3qKE-lr{^%9^UFA*RpuNl%rn_|TbgMDbU4tAqV6WeP|{4aS#8zSSL;0$Tg_9?j}VV~ z=vg#agj!N<&RjfWoA69c^?s79Vd+<^h}!*cD8lQqYcFbG$DEo9YUEdR20^>D4%R6U zzxT)Lk|v`7hdtfxdhIv0Za zGgsESbT49dKL6#vsBn+>0~nIdWSm_Z?_dvG8es_2Wf!x2DLSv@&a{{JC$!u)L z2oQgM1nW;E757{6bdsEhc|-u<(WBvED^A4YnLsUpjrht_1lwh@5&HO79D{m4j#aVfE!ix0ISAx#dY}2V@+uO*P1N=*~5oPyJE_^Y1sRONb^LPFhOF) zkBSuX+q9i))7TvRZkiJ`%PzcgDLTNT-M%M-pKi@sGp$??)p3gx!jN&<+Il7cl<_bS zN8*$5vmh8*Eylf{Xa&;B;mt-v);Jx+uobKOl@}uV=MldexgI5PTZ(PX3oMNh2cS<4 zf8}zAqcaFDjCDdJounLqw@zyKq!L8G5o#9FYO$D5qZB@DI|g)R(-dc5Y}b|6CsZS) zr58AHvT6w?RAM(ve`J)1#8!mWDYwBPH|bjuep_ByR#=%(VIQzrITpXaB`&h2{M~ep z$N(HniJ>%|`ex|kEI+;3T!>yyEeU{0$?PwhZSmIBa5=zi*i6jgD*ci0e^Ks;XBeA$ zzKvlLSa;WmN;y3c`4GBbAlzb?7PWqO!?NB4FsS(?H6@mI2=RdTxWdd%i@DVbL)exp z;i#HbT!H$gWN}&PicKKW59v^AWV#{eO3!}ihIQJ;j}Fn!T+O{4KKpd?YHXfKd9ll5 z>aEeUs4q6GcRu2=dg*86{uS6zGRwbZsUS-zsYa_t{Bzq8OBzl>SxX%hGc&$^txb=D zK0C!mgv3Lv_J)8$mc-RYzOU9|iT=iidAd-k^=6~aF}ZR@sodVV>{ThUnPjBckvJ!E zxdl>)rt=Jyvs6n8&q<6nVzjZ60t7MgaRY!B%r# zs;)QU`bCv5g~m(2(y(Gu7Jk=KaV-g>IKu31woe8{d|juQC{c!+Oa8%cG;Qm#_4N@h zE%kvL>-)B5x8#%w|DfJrIe|K38Z)K5-+AfbU;@7Qe}%b#;_}i{yr#0RpKszXPx%ywM6*D`jE@B|Sc3teDWpPWKW?hB%QXP)~Yss#_TUa{H`{@JtpT3z9aT!W+%O~uAIgUTzo8`*9Al{S=RlO_iJI0wfPz{Lx6#B|gH zVHm2aWDe|&XR)($qH$1SX*G`CKc0v+Y+gIVcy4%;ANdg{<)qSp1lW7S4x{>%i^yo@ zhXAVHp=VjX$nax7YSJ+czWZ;+c5xe+!@v7QZ>vtGL1Zol-@Ze*h|3k>)gB>>#l z5<2;#ZXldo$q&KZ!fGpUFh{vOsz}+**HP$+=Tb@4ul=U^#*vCJpl8a5iWDICT;Y-x zll29sLnR(T9y|;)n!62z=*28_e7%c648>;IMBvB4&373MKv7`?#2hI8Vnx|C|`XWGABP3K<{N3;^-@YoJZ7B zmO?)W`n$V}@Z5UQu!~`!u!c0dmNYvG*B}Xb0OYiS=OvD?6Ekk(%@LQ*y1cLHn}8gR zOPhbqR2(IPmZj~wQS&?I{|1_kW)6PWeq;hRlm&saGoCJB)e_p=&vzdLN{T)rN``U^ zV&OS#U9kV`002Xqm(^9C3wttU^k|R&_*BE~I;lrfy@~VS=!aJ_Oru+?`kx1|d8W#h z=imj=!t775Ts)CVazeg|u`6jV;PX!@Fpyb>gujOBB2pBZj4(t+SfRbkEr)oC$2zJx zxbxCJkAP!HgZkT~-js=nhtAY4)++a>OXWVz!$E_OE^A%ILV;{ke+ZYNAQvlN(|4SE z3WU@6=~my_A(Ab5XJ1Jf>lKDe&y={yI11Ce773|j>C-Sb2tiqfll}|c>mq7D4{nB! z+^rJQ?1$O4?8vu6sxG2jg+V&Fa=Lp>s0?u~cp9zdAtf11@z(-@YZ7T1AEnkb%{8K1)#XKR+WJglq&=-XrBpK}(+Y8lI157IL^B@B`pcEdX z9FdCu^p9XB0&H9b0MJm@xjmlBY3LluDnij7lrUODxui70YQ-6dFQYHzTGIDZSqBkk z5$CplJnIJCzC1ND#!~eZ-20_ToRwx!e>G4IagmO`z%?6F$+E%$TD&@kDTObVNZhfl z_^pFD>$#O=?TAY#hn!KR)}W-3gPc@)e2Fc7O?L=45MKPPn%*C1x`yih8BF9IA*0oy zblAa5Tkz!#**5ZTmvt zDvta(0?O*ovRVObFt;U3SYS0oRQ~B-(AlxroDCO$YfCTpv-u!ABS`#fguCx&E^L)` z;h`ZN#b^z;rkGH3WiGW#51Vxm4_O?L*vpVxCN@Ha3DAFkHy`5G(L(*?HQ|v}O zpc%18`j_b5_l>Q2BxVdq)w(5T$}$WyZ1`)Y=mtsNb%WnoyU9&)eFs!ze@)DmR!lMK zZJ1wTp3tnGCAo}z&)EL$0K%q7 zn+pe>g@fN_UvfBAXc(}pH=wcq0DjBTBLamaM2lQ*fDF%HyQ)ImLzLKoi$z^=5$Tn0 zrGgBan+ko+1tQvZOs*>I)?Vn4_}VRgKXJHOd#1rED@uR1!~5P0K<_mu*CLeDnSRA1 z^Fq|u9iU0RVG_HV5XMO!vqG9+6KMw?19x|4Fl8JG))3E5VlkJ(uPJXsr$fGh ztq((8rD(+0KaeZ!IVK#LI0H3t+WESzX1QXUk5bI+_R*85$?sU9x%5v0*Pupj2jVfk z$j?y5_^hL(H>qE7c9^zRv~4~MJyoc+#01eymeAY{!l#1|aJOiE1p+6#EPyy1JXt-Y z@OntTx=Ue?1V5QH@?oOWwo>$tsJvA;E0~>UkEIlb04vcVLN#NC;&%90Q*jwul4b|XEW6G0LHZDj;)1;KbMBU zA>y9q1eL`MnAl}vio}aB8BuKwR!k{QKZDp>Xbi;643H;tEyBR2C)CQ$26VD%=C_VK zY$ETsk-yBlfEP{Y^Zf(6^Hqf7K&Q+!|0rELTL5b#96RMj}digKY$)?#2vac zk7q+Pb8}`lGa9Q;ooR0|22e7^T7IXDzmgXtO{Hu72v~29i}@|u=2CuY^V)C*S9>Hw zVi|M-Y{PukEhU=SvO7SbMxHaE`kaA&H$OJSi?K>7_75Gy5Ar<4!Ts|VXzdTkJ&~#z zfUGj50d5k*c9J@%c-PD&aEa)&JM^Bo(oAlI`~dO*N3(oH@5gRXZl~$xyy-Tw>HadI z&1cfCL4#h%#eQmIi$~SjX`Iy2;}qmxI+@fKH-781s;TVSkCTSxJfhH(d(k`)u_%7! zcq?D!U)04cb>(1=Q|s6!KCdaieQevvzo<|*B5TE#IDR`zv$?84pWjMOokyp&)-I`@ z(Q{e4FOu(%H}@29Md)iUmiU5W2orJ=e=ZdR!=;|?&VXY?%4#4cTtBO6o&_v2;!S;j zh+eWl(UZdIhO!S2#>|>_>M3?Kq@Oez?!7Swj3YAWqwU^-`@lfzb?z3TLMKVJKpTp3 zi%>H$OOz0sR9i_X5W!YB)C z=&GnhdZKr(0AuDMluCVC2N*`@x*3ygCNGD=?6YilX2;qBBl(W1)KHz6vu%|DgUB}&`HE(WodIMWVbL1(f++*Q{Ig>C5RK^2$3oqgvAXF9nsft2QDuCtORBK{Ba;XR^=qf4x7(ODrz0uh0ft;ow4{scZ zFa*l(R~{jSgVH4BTkPsuiY|S?#BA^q%@9s}P0BFpDlM9dt0mN&neV;z{UU&5V3SE} zd4#Iw4Dn|eh)>yv?sh8o`xo`I8@^WMlLEaM#JsD)>qQo=_{A&*wz@(C>Cdz*UO#9?n~WBDKfj=mr~**KalISLdrfY<$O>D z$S589p#4IY5;aPTMXreWYSi=-aBeznf2qRc`7jx*@z9u-JCCu z?aU(PACc>1KAYKyy-a^asN&{>xM%23$Kp3b%@0c7{DRst1mMTxYk7MYa~?=M-gCr{VQZ`*-ki3hzc#~E z_7W=0E~BPMMfa8I6!_pJ8WGMGGh12O-BSHQh1;X>akPV$C7j=tb2Sk6VwlTUe@FF} zC?VDBGR>vu&3lvsEQ4kns-46o*})u8xLcKm9{LF7WS@ikwTf2}TgGcAW_=){a&_Z{ zMli2a4gn$O%4u5MJb8D8Rn|FKT`e?Ro`SQ<*wbmUZ79LowF?@D{l={ffSOgq2hs*rNi z47M#TdN>B~#e}ssk2Qmzf;{x7 z!ZiZc5;GI5IXCD=wT(z;iNXXnObkXc;F2>)OnlfQ+RxQU`qt9=+tFdoT1cYQ6*f!) zGzIKiBx$QZ&J+QA`OfB`F5bp4&fA?uu>h&czx<(kF7>f>b$ zi%C#d>d~B<5kg6)bS{mLZZ@aN0MwS>#aUsV{QV!i4q_nhF0_G|Oyw>r?g$J{QU@~N z*t-teU^vW?xOjGQ?ycx}i?bu#>ma*!dN?fuXi<*bR@p~bP2Wq+l^(e-;V0wukZUCh zGl06I>1lty4|@>d@-&+Ww~lcQx(g~XWFUv+ z-&8hrDetZFGWzM`9|&y%j^+e*p*lRCLN}cmUp4QM$X~U2=<7U7dkU+?{k&8h)5utX zG|{}um4ar|ehx3FDo}yqX0;eJ^d=K7#0O5a*Mwb0l%pgV+~}4M{XSH&jJwl!;^L0CN76BPm1m`lX$5%TQlkXhv-C*C9ZBkrk z^t)%{qu9D{#e23V9&pqE2txMtUvjR-#@=&{SamgL@B^>De)HS6TN2IhKWc2ea6cmA z?&;bEvwdo-HGeHh79JpM1PU43u^pJ+)CO!@hKno=+Dw)D!YOH``Ib0Y6_mm%$7;HZ z#@}D>Dzp%M4{(uyVCH5>r^!y}?E|^TWW51jJ91I ziNP;ws#&g?d%08XC(9n&bkzFm3d% z*4d9GJr+*q1^=02m}?YSw8|&vmp3Xe2InpI_v}AeZ)ILRWNGy@QkpV77J5fTsCkRF zN75LE12s`&y^gDwmzZxG`nW`6|1sRGqv;93_wn826%(0+S#2$!ftY;DKk>t*;c@gL z9l6_^YZp)+dWct>(zc)CU?at8PnuXlUyDtRQf^4%u_pwzMDeN$ht1!P4M%+a5_#Cm zWkY|O=<>bdqc37kq41|bwPwBYHDis!QJm@!A!2DL2!jeoI7t-JLABv5pDbJf1-xyN zl9B@*`)n9D12@37Mdr-%^bX*Si4h{HmS3lQ{H=;s_LhC{dywFmgJX`ZGFerP#9tRTnG&J+ zl!D;Wsw9cFeec=9ud`1L2wUed0mrn`;}8AyIW2PHWy3Ak@+MrYh4t6B2h0HHLllAW z&F`>xNmQ7Zk{4E7Gwym>25^|wBj#BrlU(ZfuH5~^y_{gT8Hx@a75~6S)D`?^=Za9VYX5j7i}pbg8K4wt6J_N0#M{6+qeI`zbX>AD_lGe`@?a=mTu@jls$3V{ zt1)fRtOjwL7H-y#l3&GO;tB0`SHfJcJbc&s*u(L=ZQkjeJI>dv>s^g{O<$rW&qLT7 zMeu2*J+rlNZF<+j$*pX`ZQ#Ut7Yo3cCH3+hR|k>g9bFvj)u0?&vSoLmHJKv6?+MgL z*4HSuBc!O(8KH4+J1F#rHg9hj!tp#ydO;lx?N*B1Tkv`DtYMg9GmCfM$F@mlpO`r| z@HIv&;}9l|6KOrVqAJjD$EtG{a`KlS#$#@hNx%eqB@a4mgy=CvG>vCr(5{_1^VWSGJ_jEG6Ao~g212lhF zr&Ml5%@SwUT&pD45irdL(+qVU`dpRWk7S;a66ew7?j_;h;#n5W*QT@^jE*>u z)eVcIq+46=>9CK}fdHJXfc`r(?**5{1b#)|EwuRh)Ug?fU6NJlu7kjnYHi?7Xs+WY z9=XUc-5Ib7v^vet*443&5782|vAVQFOUzpN+-j;_XWZNuX%It%)_PCHbrfRYRrqDx z+%}~aY0Z?qRjwHG(e70J!E@qrI6{_IJ{4&4ckXf4*_VUG)iw8KMGw(_1I?=y%SNPw zJW?@jCvvdT`Kjw8q|p@yLckmil39g?yDh&6$@dtEh<@e#scgdQ#Yipt;@D@GZ}Tg- z7&q4L+0S=W%b>Y7P*Nz=CD(&q6Mq>Jz}4PvymAQ$bXlq%CVyNbB)`dzH~BKv5MTXr z;Ngp*m=)r|&$zI)0>QmU+ZXoiNjMKmN2+)&YI(a;Yx8CR|C0Ja#glswe;k@b#ew_S zKxx#l+omfi?0huPAL~8(pzQv*2lr@%->16@_S=pG0th)l07N}WekEok6Lfg{HE-c~ zgeOR5?_r3-tZme$oPmm*#B8G1;FntD62~TBc{^n(x1uLfFmit252wq;U44gChR-6V zt+9nb$vI-;CT&-Ygl+Rz_6gYL?Tu0o31)>^ZDw284sJyR<`nnZrSrF5dnbOjy*IFT z_P5_WPoj1J;?<>HNX|CiR`GAeaQ+8Z>GG1k=to(dzXXhOOFtBDb*|N_Y8o!FVYi1T zPLxu?7~=C|79(4P+z(Ax+#nyv4YriwktU7&?@tUm;C5;Ha+ zq!tsMei}h+yuXExC8ZW_hH`K5+$BJ%2clkfEvG(@C$}h#8)^jKE9F{^tJM`(Y~AdUNykEHG&JPT|YGSi{!Oy*Dr+S~0dS?Mv2 zzUS*wFcGAVt1?euRbjIH{qm=p&*HZN~V=eU;OS=xE zf|{^c4@~hJjQ>ZX!>;EEan9YqW>E0U^tS*YKj!%7*v7%R=z=(6){4nJZtN-l`(?T3 z9#7@*?uC63=CBw+MUy$Pbv|Wea-}=gt-f&Iroq`Yx@x&%X1ky8p9$oeD2#O)stwc_ z5|UO-uCXlwQ~~apRGj6{up`3bA~h!pH9B z(=R+#4l*$9=+Y5r30+MR6A8e@i|6@hHQE06#ljnvVZzT9#?Rw(_H%Tn8eY0x-Sy=5 zrUN=B6*lmLlLYZYB`$Hr8*M|8+2^-Ab?D3W|GCmN?Dgsc@iq`%w(wXl%0fat(*N0F zJpPW4`WvOWks0=a}er;hZK8C14ezPb`n3nr$%{R!$q%)-27|kf|rMFfh^?3gGZ<@ zJa@5n)Y+G{`JnYHr7ZIo3fVPb^tFS{MrYpz>^}OXeh+KC!U2x|9<}_vWye*Yx}5Xt zN;VI{7L?46v+8g0>|40fyS_H(-WFgJwJ0%;MoA@6o}1oJqNkV z^RzOy%RQj(6xtrKykH-D%q=$2eJ!_R%`4+ix!XUWLOP*#@l*TMkxgLvgmTYuIwjRl zoW+*Q91l~=wDiiHB%W~%)R#sI`!IW&{~x*XBm37xtod|+)_{5k*l;&_KZyym4B*AR zOFXB|pv)N3HwhSGY=87ejGRK^uV%|$R)XM*NMwYO4J%h2n)Bj)<3y@?rj=h#PtZyE z??`dzpOA5g1*+~)O($P#9=n>F)jB01#@oB04XH;W?6G=OpTNEtwp~Z_de|&|sivH4 zv}0k>Fts)wcly>F|A82H%t`rA)x)(jAMu|*3r}i;BMRlmr9}9FdiBk*>+2k{)%ce(I9pJE6PVal zyH}Aqfs{Qi2ZI|M$Rc{2?=#aP#TbI#^8zfYq};yQT$s0U)9X!!aYcQ$dMl zgJ0%ih&=@7^y7W(=qAJCs5!oPKk@+RCE0ag5u(BosLU^+eo^j)K6Bui)@F0W8ODhD zX$q`}u^}v?1Svnwg(*o@kyhW$8|w1C`%JTs4so~<`+)>;q?P(8&kvM_$fA2+7(bo*&<9SxuQ|d8CM(^I2@EvOs01S zOySCnP23qI_(aoVr!aB`7#8wFNJ07*lt+3a5||Hi&gXNGq0Ov|PhcI_a&ziKB~u=U?O z)nFZWHMtZOR{@WAv;ZbSvav+9*AqyOyueHCAqROvyfaF(o1v#76~(5aQ4>l%2D9Xz zim4KmW!iq(Grrz9bXjSA2MbGzf9R{g3{(7HPZKeJaeq`FuJznkZ1N{#I2Iiqp8`5J z+<9fmYuuV~@pc31^-=X|DL?Jz4bbY|-=SJq-UV`%%Z_htBvhH&;z|@cQ)#x$MX_y8 z*CZ|rqi}3pSTDFS@j-QZn+ma;w5C-mVx+D+cfuv38LM+F@y%PF&Y84Racg$(UTzH} z#7KH5EF8rBcK4oUh7ucm;%Mtzp2lTWT4~CV&g0?h`Y1aA~;7Hn{sX z-fWsfE)v=_r_LJQ=3RMm?5_EP2>px#Huv_O-gt?&M<5DXBFj+E;rb*iaK7TCy&dE0 zXBx_~;gZ(8-c0s)TnYd?n^iypSu&JzAGCD}(J$>aZ(7b?Xo9sS^UPDhq#K@fxx%4d zCxWfbjHrF^GxYXOv+?h$(`1r9vf##L9v{T3&s+`@UfAgy*5@R}G5gwbZ11LD_Z6qh zY5(l%RJ*eMaQCOR1i1Ej!^R7LfuDj}A-xeR#E~I^xO!zgxq$HfE+BwBl|5MGt z{PoIz6t7lqJX3$;k85W>y!XkH&V=x5HUo3{>EhUEamgay*N|rWQpi^w|G|1ooNrS)Xp?jqJDxt7kT-Oe}zw zrH3}TL%Fq9;1B?Vq*jifXlr1k@Z5^2POY}~nzGV*Cf?$QFm2ASF%cequt8C*xCiH! z?Ts)he5c*7T(1HhmsQ=dw6xOcy1Yrv4=gpMAy}2U$T=WCaCPjbVVX}d4G-leIjk1v ze+=(F@_ZGr5=e8J0hdNK0#>xFuq`i7<+_KS26ZgpLP>hOQ+ zkN@))x&OPk8GsUnWoc1+!2(ACITnI=tW=tz*BxjEWhm3c?$^bf)Gsu1DMx1}FWouf z91uO7SuAW4v+ZAl9W;2fL6FOMI_gh47-U;;MWaZ6G)(X__BSnvuUr|#4#N`|>q%4z zZZ);ht10m(yon+d5~S3EQw6y}2<}}zNzkE%LBgLLymN9`Iy8Ox!KuKVL!fK3hcxgs z2A8^<%5sMsD zF+siC4e}?fpbzXq$X#O^{SLOfDZ@eQQ>bU>6UF}ep=icR^+@G(9+^ z)#wcSbA7zX0~J8sE*IC@gD%%xbiA?iaNb>jU$YZUPF-l z5aGBtC+b1_p5H!hL^q&$EIkpyN9(~`;jqfLc^A{@g_eEzy`lZA)reb5Tshlgiz{P648+u*&rQ>4%;`-0pwN(3(m7?!Aq`R8O`6F)=O zeFYFUpmLze2wDvnf;+TKDrU_3Jq73o%(u8^t6>{TN{&Bz*04ySJHjpJ3TPhq8jW1( zN3x6x8v`MRDsn?ka%|~A2~K|+paS}0B7XUx`uQW!1DWlSVAJrne29`l2= z!JQ=>h0SLT&slLqy{XNc2(_O%4+AId?D!jaAt2EAqwN;Zydbn2Tz_Lz0KpyhzFQ(} z&KHjxhMKGq&~Q&tcAewTClqV7+Jwr=kTTjCq#tI;gMips8mp^$1JWY_+lqWlz-5iP zh=FZNTC*mzWl=EeDyn?bLulu#TvEh}IB2X+H#7}4d&_yO#ye`|(cu_DmK#d$BBM1T zW%#|c3qa?FasrHJ`|O$-S@_a#;P^}T7J4_J+v6={ccGjjSm2E`;j`l7uWe0t6LXk> zn-G^0YE362Vh8}imk4cRhS?nr9fhcuwkYh$ETNug^+t3icKHf(6grKrwI#a`2qBIn zr~-r0Wok)qyBM`mlmz2ie@?VdB-AzZp$MTK2^ZFY-?DMj5#Ovd`l?Mw4t)X>Jagma z{a>iBR4dk^(BM-s8*ts|n`)xp!Kbb=U#YcA>Oc8JORo>*3iQ$cOVz-Y4DiX}$LhhK zt$cknn6O5%Zuv%0q7L`YK~d5l)+jb`TvhW*0pV7%>&h0p4vvN@cgWsWhueSm{;%JI zH>DiZNKjvTs9d&B2w+aSHNRZuui>pbf!gxBc4#4L%i@o3Rs~@zU4_wqGCDN|Z9&)PuL|W`WR8v%b z{l<LfChn9Fd)Q)$-wW)6umk+>eJc4W*1W zgN=K1|1+sWr@p>35;!|w4C+5^uosnwItbRQ>Un)SSe6&hFMAAZdfHsgQ7D_I_dHNK zt`F5f#V#2E5M1YOP)|{A;DdkuJ)N)?cn70~?o+^P>;HP^HGqZe)IHd$W=!6g)T((0 zbmPIy+U_O&*dDEWv0y=-SZff}#RcDK{t%Vj@=*N;kj(UXF^z&8di$sT8TwZ0t_Ke? z_0Jrsbv=I+rE(7p%QzBBN+5kdO9!Y(@f(QrFUsn%O3#nAd}KQ~&6K*8s)=maqV-nG zqHfH?gNuF3uwX9Mp;+KsQRnWPgONs^yY~_c+kcAmKAX9F`Ls4*yMf;gVU&iQ8gc(mPa}{2>U%x@kF~6B`uIOPY_4y{@5dIvwm7dOf+5!35P1l^#!iis zemyw&NVgt<@vnYe|9ZRwT1GZxx9A(xFyk7wQg7W87&)Gq4Mk9A&vDQ`ecCo zc$vNx-cGUU-P0#M0EuAHn(wsp{1c*_tn!=beYH=?=kZf5K)Uw-YQ35NS8}8L|A7}L zA)$nXWVfsg&^f+pvAyPp_0z?^Ki56UQ3_iwF8}M`zD>Sa4VO_#KNfVff5S5v2i65=|ly7zDs4 zDusDN0X!ks8}B3*9Hn}72yv;Ig;ol2I3?xob!vqAtNIu6eXKX%cxk+*F|S$Fm(c$y zX)V0P(i6HPbzIcNFX9`Otj6Ovg%?a~=L z`w0FmL&?P^N&d@P@(P=OHbcuZUs-(@KYbUF0OX&Nlq*A|1^Zq59V{g?Xb`qEFfzur zK>+}sB`4{+1dI16%;V)Jg|v09_mtyD2fnY5AtlE#GHB)!552GvA6!KMvT~x`h+Fl* z+D>T&qmvTsDLMdNa2iOK8}E0&2VxgJXsj`UEXTh`lG+=}Ga^3?*^pK%yg?jH(L@?N zmT|x4KlBYR)b1}w{C_xew1sf2RPH94u04gf2pdf@Kmh`ZeA}l4uJ5&3)&$)N+y8E1a?)QB9 zPgmBO&6s1(ImSEQ_dxJ{)T||^A3loa*dtm1^ggebA1IR>D|?s)AE9Wan~l&bu@~96 zAT@>t%@(e87k6~m{rZ3xR1;DxBx%#ROc`W-a#4Ant+M-KGf?936K;JnBXmr91vYux znBPX7TwRXVz{j!V#jT)~`)An}0510{-}Dk;HTo+&*hH{c%5`j=4sDwU$S1seSB0sL z+kG0gi;r$ws7c7qBvXWBWfx&lp6uh|59ixgrzghWeK+hoj5h4=q$y#>h*|&~5AHZ<5K+O!U}7U1PVmim(=;q!+`}@xuY6CkvMdLki(+gpC`I<1GL{22Mt;1F|`&Jfub3w>Xl zPhWcc33XyAS>O_f_28tIbZr5vx#1FTrD(-G!91IH7`;Y}3t_K3hWa;>6iO?GR=W4p z9T8AcYVceaz=gbX#@oHJJlL1xnZBf<9cIvl%QJ2=7 zD1S~59Yhvlf+HXLQh$+72b_ctSXyDx(caU3jRY(Z711KIH`jFMaeXa2!;~5PlgxMo zJ0FCezlUxDJYRnPw_J-S*-CHeW+)rK;%JLWrBGwmPMt!y$zRgr9Dcj9xj-*@qyycw zuUfE#<%@FgN_EC+wL+lcrHh^fd_m*PEpMm3mg1Vfg9SlKS(^J)Hs~f>_NAbg0|p z#2(hZ`aI{}uRAtIr#i367P|CSD%+gOdNcn?-hL~P^aVFdyb{fZxe~U_FgL{&Jt&(@ zEnYWshaT^axIeo~&Et9u(;u9ViSX~Ub9fLG)qTAm+{6ayBo@Ey!YBe#>?deD$hb>v-GHctMB3`}CwI)SB$`k-D$`g?H*!yT z_Y^3;%7v-xXN*T)x( zOG?ZawGXEZbie5v-p;SCjx$f$aOJ?N4N|e@WB)uC{|i;thQIwkX#*dh^A!*7z^`h4 z)_T7@CdDU0aj^6!Tt5CrNa@^Sp6xTo_oA*9oKW0s+R4G=$L;Mtc++Ulhe|~HgI8+x zG!f=m=2@1S-}Z5)nZ5ix1(2_6O3uO;JJN~YN(z=)^6=XtCW&&EAEyETjsFe*G-1mh zZ)}8Volr2F;QwbIUDZ#zO!7Y?A>)EKdF2^s>v_q~^x)cX)tV_CJOrLZMl z`czl^)!MUf{SP8w8qwQIDY%Laz0Scw%$P$ zl#EwXd_$S<3Z$oac)(l}3dcw6AquV|%&qaYM8w_SdNAYNo9O+JF`ICF)DyIY_7v_& zLvCa=AnsvVkoc-Us?`yI=xXl;rx;=BGI!&p}ViZOh98WgzJjI%$x875Xhc z-=8mg_Op;fFl#+$100KIPsq%TQQdNT2>dTA540*xj|rwJG`_kl)h47hTDbjFEG8KF zVh{m(8?tAL>fd@E{H1xO35%#e?D21!vkDAOM?0AERxDsI?yzng>S@Wh^4CSuzSt{N z@$|lYArs}!CbsgFsjqYg_q}0nw!;n_4c~NGZo58aS#{g1bkKk0XWEa!$c}=)$SJdo z>q2u#o09o#JFox@69f0B%eS3op)Rs+Y;5QLe`g#jD_eM~1S53)qHA|$!wTBgt4H6O zyRD{Xwg21+FsFwQ_u8`s)b(!$7P#MEY2gzs@<|@K92c#O^kU7mPqJKw7`~F#6*e|& zF~o4}DYLhm;BN_osfCbKA$5UR}JZzNI%95q;plxQhaS4VfgI|`CYmy!u zj5tv(g&w^obX_W^d3al{vepiVk}&-8v7Bnaqvg71@HO@Pi9govO>0zN*T**gIrn0z zkP?gRx-FMjYFHDQe8jx%yxs>!fHjg^dO2%ClYi;hA1|_uQjHBmpkp)_HCZIvux^|{jt4DdojLvP0_Ark3eGu z{!^1XQrWj|iC6Wnd&HQkHE-xWVB&{xc9L8luU|MIwQJtR(j}R@|Ig<#`>B&{)tkG# zMF*E|m>7AaE1hASe);mmv#KXYPPplsB}ETTDmt|i$a(Dn(6$ddGcecHxjfwu)N)7I zwT$a_!HT&Ck+JzQ);I5^o>mrYI#ah*_fBhlVcUH#>XYDYMAh*=tIml`{$T3U@OyKY zDwW;4TZL}j7SXAyxLv@PY}r~u)5qd1X;#8*@-IH((7ml))d5YL&nf!LY>YL1&)zYu z0Ss#P!(gV!z}IZBTCrMMyyDf&n`y7z_k zbllU0@&DA8A#boObLi#p#UlPw)5N+{+9CAd+vua%cW>ln{O_7WymAS-RY3>9nu*p+ z^c`NGgtmLrqB;Ja=&suI+f?AF-kkqHcos{FwBe8ZPa|JSsRzN;N zNpj0?_HSj0`u0ob4hn}qy$7$9e>$zqFVoB(WaXUI+YD80&4M(?mO*QPXK1y^yeNI) z21;r5H+rUl9BrJ_xiS#|{o`X2cO3$!}#p$a#)Nl%2r~v55U7#wS2&Yp! zLOz&$z@aW?wYCc@ob(?;P0uAx{1Z;JkDwaz9E|5hN-I?wdu9`ewfZ_6g{X``GOB|Y z_Wx`5rSd45e@KkLADD@m(9YkeSac-ca(ePj=-?_y@=~m5A6+%%MTh7RaGF~zh2o8` zMs3RnHQJ(}FoFhp{UI-)o7&M5Ws-NYfLz14RO-mN2MW z{QP|b^M`xQ+w(kEy;xm8bg!y+I&8_s4Fbhmf4|%Q?H2sM{o^-9;R5Jw>hN0R({%(t zl3g~EZq*VAdR<3?ZQW~;@8s%S|AaZB4t12zyX21mP}Z20R(N0SeKc|p+@JDmCI@I< zeI^gQxycXo@2^4u~Xi1w=wYoTq?OQ`|7V|T?)3$%syw^vEGRW-VsGgc8Jxh#mH{MH z=36_rBHGT*x?MLJfXpU* zrKITD!Tp!YX73;;Ss4V~Cce-5E<5$oqsJx>LgA0W1#?qKaNPlbFB}xQC030QY`aA< zw*zyNn%&gMKb^lnj@P0?v=im=tu|E;keNvma_6=OOG>}nuljBH&lMSzRj_oz_0fx_)l<*F8COcz z!lFU--7$%>fHz{4I%67aVrP8^Js;Mw3^iyTUYTUyla>wPi~hT;a27*r9kU#d3ey23 z?cLh7`kUWOaW~$-yZIFt!WhPGkX970=uiYA-&tcCGE$7Hu&EQH(!{`tGiT=rzk^6; zHq}F%NC5${kz|P{ltDL;6gq5r~Sn%e59dRxA`~u5~c9z9s5)WNfO!e6&(uTp!OP!he&6f zC%S5{08}CTdbl;132I;1Oza63`fUnh)ER0IYP{tA6BuKsz(GT-5;iM#mPmA8EN_0- zAu_Cy=#Wq6+iF@jb__(_(22p_0Rgyd>d{fXb)DNKq3_XsBPWztb4+Xf7!a<+sZo#4 zAttd=OpAQm0!Xz;{Q+eKVBAveHp^qVHIg8E$#^4( zu@ibg@LkZMsKQ>?iQV<4yf{oEp5E4R#zC(z7s7()qo_IdJKVJ13#2S8A z2>?Of&2ZV0(lFRpn%?C9fL@qG#Vt%VnRqa$Ae!A5HsYY`fDfFs#{dn>B+`m8>6@dT zJvGZOGlZl6QRl!o3Ke_epiRWKtyfqT zLIZ=$vw(|e9dk7hLCOON0@S*v;oJJyRiJ2%Q+LSg3#h~+x9qqce9Hl6r=!^bQe40e#uN?_3@Iy)_C4AaQ4cTwx|Cv0l=u) z;!=#_|7VKp4&5|1<&6U$fjsL=KMWD6!BR;~$hRToqq! zGgOJrg${se&||La#2sn{(;#gqnTCI8x=W_PNg5cE;RvQ=oSPK|Nv7@ZERN>MKkfv^ z6oZw~_1`D6ym$FLv*PbofaGHeSwm(luHvgCZVjxkVa|-o05Cusu&)?` zpg%CM6}aRu$e{`A*>gcATqdTt^dBbq_tPh_$jjK|Fe&FoY0sWy!#POu1EYVPImrZp z9ebAqdklvbGd{aQrr;?xjgI6nmGgMSy62gufx(gy(*eJK_usuh{XdrLe`(#5{=G%~ zU0Yfi{B@mMNZFbexZn z$NVAPE4zI{va%1+z$3Q;fpY?POP&hjb5-mrkr8?{3J_sn#;gJ4HwqI={HXm7!WIa? zDmx6q?prfacP7+mcme!`l63ZJ+6~63uiG`h9^F zi&*~1NvTn;|pmy)2 z$O4A88yGYV>tdA@9tro2z1(}HGtL2|rWnmdsE0&j4ftR2ayD4Ne+C0<+Q>-wqYdEX zpyQVToaUkx=jrn|D#Y@rv>P#Q5+lARR#OrJZ4qm5zi!dy5ASi1e3xPuOE1uZu+5Bw z_+k!7=@e$lqLDW>48#ugP5R$6Ky&29YEp8b5EOEF4z_n)ndP1FOL@ST0`=x!4Ou|F z+3-ddO`G5Cyu+FJz8+-lK>HuJ(=1@jc4;Hfej^2`yQBNY?n_NNAQYg)WxgIVlCsGNa(IQ+t{NJ7dJH}wezmgJq5E)kdgVjG5!h6U1f$hzbsb1 zQIntok8j_<+R-L*_x@EXu@F`&7O0pAky<{niKrv;P4z(4`O1eH@#P>@*AVM#gQiTauudz8>SG^0+j<|Nw~*^|D?tWu2-TlDlYW=ZV2Duk3oGmcqbE5IcU zL=+bDsB}nCykV(`Ad7l8>&YX(^U9TP4A2`!$}-rN$dSjLbnQVBb!X4~86XKl$I}jX zoi2UnY?@x#2V_cOB1g8{S!RthZ60-Lx$HRDQkkzA(rCvLxJ{1(Zhb3wrd;5{d!M(j z;Ymu{?moK>*?$Ie+mN+W1=l@xS`F_g*7wLPNa)kF+^-2`19&Yai%%1fxQ zb=5xHZ!-NG!HgsgMe1!_DkaEJiMwG^dN}F*EdK*b$u1P`W29)2(#*frt%;h?wVPM> zs!Gr+E!quM%hZzfY?!sk_#ye~he?1hYX&7w*DaKNP0Potl{a8hP{2U24)$)0pl^Ey z(CdCX2rueZ-lWcY^&3B2*_6K00p^W(a62-64dQg89btMUcxUC%7(@Q+G?6o)JDVJA z=Xo~tZh#ei4cw8CBr;SJ>q1}gD&jui3iJVOS`6&MVU>F%)@>4Wq|&#b(<7$x)G}ZA zVRB62SZ-!h%r446-b13z+dF_WJKG4-HCCKDrK`YM zuNbyATyi#ta0z(D!-=FsHspR#;Sn5}G{3I)vD8#)~R;i>+O-!}TYK?Xf=g1`oWQP@%- z>Gy^gr*UY`87nhOtft}D|B{Ep09RYc4*}=+=1N$$+X3u@a*;`A_QtKcvXmcZe+v4F z$*=*(V$k!#?I?K!bJ?K{>{i=w`_C4i!=3H^Z%x>Lwn;^JMO-fqn0Nnv>PqqZz^L$B z8X$~d)2*nz>4blvrtx%eVT#=T=QDr$r8`8NGT7`4)&6fM1MF6zn>MKNXiKOp(-G}L zA`|VFjg%?B&)>!M-GUS~+yRsl1IuEww!6+(3Y5>yv^jT|aG$g+f5xtjTW)yeX3U#{ z*z>r=9}qe7y<@A_+lEBZn#Fze4&RN)>S2Ir9rVF+7+M7F$=tUcmrO0Z(-nGlR(H>J ztQaD>miUk(BBORxUDr{LCOjaYEpCzaX)@f1A$u*|2cgheMvE#s+nJprv$u@ z-RQ9BLw~7mGsRS|S}Jbv&&yo7t1OVNmcw~O3q*rWYSoj!mJ7nWXx8hm;FG=gyGDCZ zWB}7f{hHF&n{=9i;A|k}r%nsf6UY;sc&2?8jnOA<4!t7dMQ4!|Vv;9#FkaE2IH89} zTi{vG$H@9S!MDf0FSW7?hQ@~tp2Z(!$L~bclfK?7HUDN}lnQ8tV|EL@ckFu^*tphh zpnv|zRgSRbinxbZK8bqP$?jx zBf5VU0v3?qrx%|}&+!I0^PYW_@Omq!r8{&es3tS9qCWH(qMMiphzQ<(ow;xe_2Z6@ zuvScJ4V9K%`jfS{TeL%HZ2)IHyGwFhR&-Txex-dwF7L?63Vr1#OP~hlWbj_sbGo+k ze=M=e{)FG;kxQvrn@rPqDj~OFab}D^KW0z6d;bdD3a5d6dFP8!UQ=XW^@3oyPtegK zRF)EU#5V-bdcr=;5o)(3g!jl~479b71it57EvqcL>7@#2cC%7;3 z&HyPl(8Qc+3QJLRK;XiX zMg0Yiv30uvtGY@DcY(R8v+h^^G>Mzd)ao_p`Sb`#t|b*uSZUqX(w(!Zx@OEQHNOAu zSlhkvS!GV?pN}s~U+7~5HN21JFm-zEeih&)W){ykHsX4*;=htsO%gTedVzGE9y{+_ zVAJ5LuT`BXmZ zHayv@pFL!+D{vd|pQpeP#l>T66ToF9hk6`+TPm`Myb}m=31uTYaEE%Q?ff4E*x=%4 zDi#5Dxw59d8u5K5U?~L*Yvm67WY8Z@Sw3bHk=^f+%VsGzV((ESTYyM1{l@o(i=y2( z(L(3cLw#YM;chAueOi6_dgc7rz6G0^@BeA3pu3S0vGJMy3{i6S?U8WTeb7+(5W5UIF8w_Ud_ro--z2C`*OH+JuPNl z#MQuoYyAn8yow3-%7*$%<|0SEhFNKu5PE!|@4@^dxy@n_jqWKc>;+iD1fp_D_=Zy2 zp_6Ji{YOZO13br*!o2qurdk7zk+RuW@06ukXx?c+Tx*`MMV3uH@d#TO*xyiUEJhYN%K{GbZNL0WN~8$#I8r`R#KF-4m#p4dLPOS{uvFi@X_G4 zuj4;i+*NT=+UOW64=C7u%}|mM&WNh7X1 z3!I6YCSA{0mWFb1C0-&sxSn0Oz7%MLfWk@c)%Hl0Kd!o{H1M_C0Xo@zo9(-xsKcKJ zd#$z;67Dm*YT%Koh_H}b3NeUvxvl>0-F$!*qfm&yr!;B96dIvof zSZ7`Ag_)1mRq!-V4G{DUl|Gm07QX>;ydO}{sUGnPP(U_c91|IHx8V}acw`nw^=nZZ zVBe8_Mvi$n&R*X+H>n%C7g3rQ8zF`y_;O(Nd`&NL@cXOm1^D&dA;5lkKj1sz8h_fr zrPJKlro*Yre1}cDQ`cO+&9JR2@t5wo!GMyAB|>Z8YNz0msnRux0|UeBj`9=D(^qZ0 zV6XMx;dRDdq0!KzJRO1}z}VQa*H9Ep0Wy-zRAh0_jt7>y77mc-DaFIXgX8CTfn7dB zj)CTax2NhdG-kA{?|2H+3x1dW!q^RBzjW%1=>VmrCh1b0_xcC0TkG;Rgvixf^SDz) zyd7l2;_hC0a%$zn zbP<(As;}&=^SDQi6Mu2Y4RC1bfKqX!XQ0vFw(* z3iLOMyB$O7L3=x@%D6lhj(&PAFvUpbo3Xq4Q?%X874!bYZE zG+sVPPYN;O@T6qw;ZF(0R00oZc-7|d6fIN2GI8sF$KYEs-(mM43ymE~lBJ%&UN=FI zgZ*O}{tamj_n@{%&M8BcCOq*?a%g=L;!s5K5NgLg3Eq(QYfs`VbTOD`X zb$^cv&$vceT>#Bd5=f6{lYr{x5#p*7NYOKaORBQB&?wn%>&+oghm&M}!*Y6OH49f+ zmRhEEyV@hF=pKLCk=uY1g7QmH1uYPm$`xPwnr|^1-oC@OiPPMOHwJ*bCUaUKkR3}U zD%F`SI^BiaS~C?vsw=&cs3kICtVWASYQ8{zl<2=?!2KRP4{DE_=WS^2zEah1O&-#S zy2q;GxH{h42iI(K6uaX#qsi9J8=)(^weYm+cHu4%)=@VJGpAPy@$rmP zK+%h(hr0aIMKGrYJpw9zx^7&;%KopW8e@9aT_W=BfPquju}QQ;YWby9-B}CIDaxn* z;4sqiK`5%Ic2U8XD$O5lW607r^;_Uq0kvGCBsw$EY}4%ats96q`GDNTDc0I3aFItUx^a9rXqtVy%fwmHi=@whuK$I3Ca)zYiD>FHWzcT43(yQPo;ge{OIDHZ*AE~f0j4y~J?4OV$v|9;uMivl;{)OsA@`#?3{>My| zt$pSx^yh_k<%0AU`&G2P$aN*Rsc%S3L|SZkS?u-DXC6V*=&=29dB%O8ZWpRgy5b;HBY^bVf-Z|TcFo;U0#U^Z^Nm9s8StbRdZ%hqR)9=v^j zSPjywQE!d$=YHRpBfzQ9R-!p&REBqXRc}~K^lrps3V9GPP?UFG>oxiA_&|0(()X!b z-1gF<;C|E&QW}z3lEPloeY1E5pB;1N!&0a@+rGtC_ zMX;DbIN8UR!aSGB%o9dcIc&G{(;vAKXRj)9LH>{yZ=DrfhRet%K(J_l+=|) z0*w^RF;pgxtlvL#a$t~c6?-%m|8aAzr$g}KHT#tSaGeI@L}t7eQPv*bbXn|q2ouK; zpuwCI7ZQy&Mnaa^&;evq>q%#TJEx&+IRgb?BYAn&FEr3$k3ZXNue%upgq#7`a8Eiw z5EVwDAjlbC7E2O|0x)d?kF>^vME{P|>8B?yl+t8g>b|P=j%{He?8Hy=X9{&mxrd5*@t4AU4emtN)8{h z1?RK2AGA8}sVb|l8bH(vr>q+5(_0I7G*OcEfc&~Qb=Eweyb~dTxgNJEy>TbbXS{|f znd#=w@2+iUDkh~jT*y<7RsQuqwd+HV&}zXBw>LJ7#INRz)pxkf7>rlb#yfGM2JLq<=cG*bbiPu2QuGOu675Cuw%uD| z5ljm%CG5f+$XQOF_K0hU60Z^ z8M<&ZBLIWtHfUyHmO%6G8cMYRyH1e#YD?d4c0Ann@QpATL=sU}GzF426cUiM371IP zu+pKQ&>Z0wCww`tWgfb$0W2AA)GLf^TXtHn@LYUGfgULJ1eVgeRbs5CWA_b_M~r0B zuGzA!%3js0Yr^%+fZq%^`WPjibs+} z>Pv*#&4W8w>P<=oM)UoRuCL^NJGvZcIHew-{4D-tf6yb9!29~5o8*n_dkJ1v)6F(M;G@i2+8g%ADwYP#usv=iGu=>%w-F@J`;`mEXoui)s zFGp?d0BWYs1TpSkMMTp?i&AxO*fE3V5m@+c?8+dT$U9KQ{@wNNi@V;-o*b^u_`C&o z@Lw)L|GxV0Tibj-oS9tbIl_~6;lH*Ve|g4u9IUmrjKG;RuL;DGl_U)P@sgrXPllaeQ zZnr(xmt=w1K;Q2WO&|Sf@ho*=AK)yN;t7Z?newRA0=H&QzJQp>QWbBforKl7fA-Yj z0go>km+Fy&UjeY{JuPZigM7j5$1>qA4bx{{s?EWxng{FB++u`7HlLUL-$H~IxS=_7 zAff}Ag$E8YQU<0@<^>gd}IZP0hEX!a# znkoq?4Vx@eoKVXZ#|s}!n`roc`sR=1GglxA?_S(OnQjBvRz*Pz ziV$u-99v*in6~;vH$8waqBS6QU*lVTdtCiX%N@(&+g?E=ICGe``E8i@G?uHSl6gBY zQoLn(=~8O}#t($HS<^y4zNykU&;{*5ix2eLZAEN&EuF6yf1~}@U5Ue@-@p61;v!Y9Dst*`8pjtw_{TSI)NSx9oiC6y;wf;K)=&cM07jG91 zJI+tT#axPPQZIW0dBBLvN+wvqy%E04mmU&>mi%_Y!`I4u=|kW`3eKfuEnIx1wp*fj zWoO-1VaIz9P9NQfIlL|&&`g~c5oPuVTAo4k_Cs^Cmsn5AM628mz?8HK7Eat5PePVP zlV}wFYjuG!H0fEA|42b zutLY=>9RVHksSsOm!uQA87CUhpN`ZG%La!E?)D}nRb(cq>1}20TY3Tldans?mmMCbN;ILNqLX+0Qg$lRj@6mHFUlMiD2OPzR?PvL~HH|vMkIT(vzQ>Cd zqKj!i0bU&ndq+OGg^hdkI26y zkZBA@UaDByWZy5^q>_%y*)e}dx%N56fDW+2@ImijvU5!}`r_V%O+==Uhohz*vSCdp zA+5%at#q{>f~B~_cPksNs~VtOm;&S#cTK=ov<19`hx8`?M?0iA} zN`ZfyV%eoAZC99l7@p6(CkjUj;F$(KQ4Z}NnN6WlU=nv257M0;U;_v*qGDTzwH__q zF}91ohn8_KqaT8zco*hgADJyHZ8TfEl-V$HQ*DcD;R}$+;%cSeVWkpeKcGfFl8CUG zkRjc~H%+8#Aq~wt{MzW4UJ)h`CLef$P%c%Fu;|Lx;gyxhr%K_bMN+C7fmoxr74W=7 zuWP+`3ggD7OtAoECg3E#283;G(0fY_YL$FOY?OkJ^Wq75mq*lWd^m7z-XrUik@8kw z-9BFP)`yjMX)bkebxZysH;~J_(_S1hDCxs0^~mTY zws}xlWXU93c8O`H`|v_!WK6Jtm&#C}YZw7Vb{gqXO|SWq_JOB8qUeW&EBx1lg@aw@ z(fNLEXlS57+uN!uJbmrwDe39&{};eSBy#}ojh6B|;u=)HHpJPi0?@v~;s9Spf_Y+9 z75gdEFFH`~Ug(|ioa&n3jK>ehYqTe#SVq_b9qT_mH@$X#LecyEiT${C7HVYF z%1X=aNT#oA6XKIen(Pg<6;){U;t@3Z7U&cT`vqfu0HUVjJ z6y$1-^w^z;QxCrV%33*oIl!uhm_R9^;lnBS1Gb^e7_BoZ_<1jMK}hE5&|iFKam&)^ zrtwYcD;Z6@u5#rCtV_)Gy&-jH=z1c*jCOv=W1+Tn<$2>h=>;@G;(P~RoOADJy}04z zuXm}}+3!lp=COK{0O`%BumGCb57HfvA~Ds|>YBWdHaen7xv`{c) zuoofDD-O66j_YaS%Oi65vuRqmmav+tUeRvk)Ms8}H#K{_@(voRifs`0kSZP1#j4cQ z5sL+mk2Hs+D#9S9I}!FhK|szg{j+v1tLv)7@||ooY9^=u`>E1p`I(7^$S4=5jJu?6 z(|RGAQb?5|sZs}o9`O9tk)@#NSb{<)W8^lgGNK;t;redXTZQhrLkb{1Hp(Cde5!p* zSV22f-EBfJp{ny8r9laRjMtHy_$5)B*nGgXukzCsoJI^`97qB@V6SYBqw)Iv5Cx520JswvabaF2l0nyF0nZlXizwF1#k=%4DGj^*Pu>T&cn z4Jl#`+S<1S1#t&&RnPndr1!g9YWP=#m?+Y`PdftgJmG-#g-YSr=-m^fMr$j(In;Nz zCDk30hN!On(;kbzR;QNHHwCem)giMfb@G6gkfcEGAj$iq9k)=tATv&|^gG>9aD%lFyN zfu$yQA^>rN4JoPfFBB2cjPE*nK(1r)pjC6QM~hcWQU<|9WQFXxG2qCtPP{|7RxqY# z{6sfsJ`*c|>vXXP}+9IrWFkZ-*w z+5s(%WA&GJeg@Z>|1Qq?zy3Qkdj4CaTLMF=+4e5JqI&8F6ejg}zexoPKmL9A+PN)z zOw3=Cf9VO2AyB?%dlj+#7^l021{^jY$Dip0iOVO4zqlZj`H^j}Hz!gC?2f%Uapgn% zS!}G`rUD1MykwrajoO8q0gv~-r_SZ8JNFz&VCMNN>EqAs$JlG;e#qKg81$JttMhm~ z=d+{X>4Q!mT|7N?b)8Ox9oO`9+GwvIw?X>bxxb3R7bV5uAn>Eppv3^C;Kn?9CqobL ze!2lniu&81FD@e``|My9}wqsEwoB1!x6KvmX6)P!hVhMhvV5^$+=HBFar1 zw;P77kJbO%t`MiO2<+)yEiwVf^u_eI1KA*|bxpXV#eLJ-`)>1nP6wwB>tRkA+mifV; zsb_%V#;o$4sD0dEQ1Jx;Jaw^ zXk;ts$!PF{C!^rX`=$@4p=4Hi#@_Hm=!*hbFUf#veHsD;4lVQUOnpfi|EoBq6gmCL zqxuYR_G+`>1W3#bjG=-uZ^8FlLmxKY2SI||`}be* zj~pi3L*UOA0GCqi7{Cb!UR|JDftXY9X^jNX^(|IA(rasvlS$|EumAD&)Vd7k^|6XL z@Z2EJvru9o&-)`LUh+UJ>E+8F{gWqcx@1(H^wX9%6(~q(9`Fo6^Ke{3^8kw7eD*J^ z{Q*h7LGoQo1HZjn9jS1?0sQv<{c=gkIe?=VF{l*26%0D*$JcIFDs?4$nbso~X8>H4P z-6RlVnC`$V_y}Vy0K-Y*1eX<#t-y!}p3B_NvK{d+D3FtoWq?{Yz?K2RQ%N8|0oXF+ z|9@_TyzyVtl(?x|G6Cz15B$yo>vG-E;Q^CBjl4#tPaR9sE#cfWhuRqfD}_R*CiZq3 z$>4d-c8U4z0n{jm-c-IlDvQ0Vzx;WD9H7GZ*B<5kwFb`rwFX4V1rUgafQ4)S(-|i~ z(4oKLzSHalW?ZbADR@6WV~hoi^~KRu_ayJ%%c>ZB=qTFv)YdZxtO1*q_A5Mr%7os4 zzcR3?MGToP;VIF)@@#X6t~SFyqhwV}iU6916 zPL|#}Wk>e$O#UqjkOSsIl5um(OgE5~d?0h}*a!%&Uf1*v^mMc7KXP0{uOQZOZLFp` zXvJK+2JkXlR8QCgIWyr-xy{?;!~+FV|Bv6Fu9HSah1W(i>00lHY5r(gcpyWNsqD@3 y`T&kvwE6z*FX)}%(YP7;@Wd2>X6X;;?B+w8ZeJFU_ZGL?<9l@fgIoQ_`~LwE>;#Sg literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\276\320\261 \320\276\321\202\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270 1.jpg" "b/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265 \320\276\320\261 \320\276\321\202\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\270 1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..8f1e92aa09de7c931a97cfb44067d0582210d4e0 GIT binary patch literal 20463 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 Z(NOzY?1eF7pOweZU)TR5O!xfI{{t(1&w2m= literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\264\320\265\320\275\320\265\320\266\320\275\321\213\321\205_\321\201\321\200\320\265\320\264\321\201\321\202\320\262_\320\270\320\267\320\273\320\270\321\210\320\275\320\265_\321\203\320\277\320\273\320\260\321\207\320\265\320\275\320\275\321\213\321\205_\320\224\320\241.jpg" "b/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\262\320\276\320\267\320\262\321\200\320\260\321\202_\320\264\320\265\320\275\320\265\320\266\320\275\321\213\321\205_\321\201\321\200\320\265\320\264\321\201\321\202\320\262_\320\270\320\267\320\273\320\270\321\210\320\275\320\265_\321\203\320\277\320\273\320\260\321\207\320\265\320\275\320\275\321\213\321\205_\320\224\320\241.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..9bc3c3f2570dd69f5a5634a8068e06c7fde85575 GIT binary patch literal 42228 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 tVSU(RLjhJ!z3&-M_FK82uqC+0O>w^EFm=|5cc z4~T#8yz%qmRW-+!ZAZ}^=Pjq2z}BY(uXKP4h{QU6I6#Ra^@&e#+(XK{XpFZy0a@L>E=A??<`yOX~;>t!cjmnJcis-;niD+dE-kFUQHam zUR0P&yafF7E`$K&Mv9cT45^m=b><(5NiuUug7>b7$$oe5U`Vg47P8rmgh2Yz;3^>* zw^qCm0qd-3Esie=cm*D zMFnVwKyTP3m2bE34SrohT0lWWdQO@F3F@@HqHz)mAjDJ zkTKnYdJ+WiSnVGV<;=?wWtZr&^r4wh4HKj#1M&|YLA>m9MN0AfLQ->T*I0nCm~H?X zDlyd*r^CG|yk!#@t177Jcb>ky7n|Xoh|K_Uc0O;YT2AD%b0zhm74QwkhXU;?ZD+&> zA-ll4c4C$rJyJsy7EUnI0yiY_sN?2Vo_0 zcbFRffJE!%u7L)5M_|kS(Dac0Z`vMk8>Ydlw1mS4Wo-<^?m`cj4QvJHMjbK(QZW8Z zp4L~Bjq`pv48BMg{AXcRu3Go_-G5Q!3Gc`G z;BRf>(inwT)xm>g_c1@+x5=#GOs#=#rTQG$oy;pING6Zfi3*?+0#ea%I)iRONNmMq ziGc;c4e9~yJ@? zhj%_kyt{^?jy|M;o~s>DyEByEOWK8aWA*NQWik>3VU>I&Di#_zpviOvKQf=mpqt^g zs-h{?B&fMkP6uRwGKW4~Ksiah4e`M+jzR%l4R?_2VAJlMZI=`gP!~&K`F3_0`ctNM zi3(D6@eJrk*~3-9E*cynr`3Tg)~9ZO#&aJM2=~+nE;$`Krv0;@nsOhB?8caW zvvHws?JFhrey;uYJ-e;j8~=x^M`<)LL?0-56T3Y}9QpsEbf^w(h&-8W`H9eIR9IS>z@h2XTbjm=+^>jFc^HScMVefG z_2e13rWn3>tPYS}h)PS^jiQ~QQZ!k-#9UBRNFv0G^wc2;qdcAt?Ph0?7E;~07)_o# z6IuVb0o*>g>1YHt96d+k=a~1upBvnYvWtktQ^$eG+(U% z)5Oc+B}fXqSmtYx;acE$FBbBKdjupD4M$z8$;3IrGo*nwH>rq0TJ$Z)gTRn9-+vCL zwztGiRRa%quH6bG^8wP+PFv4K==VRJjs`fB<|eoU$vmGR#T)_UVBRzzo&ODMaTpN` zn2;wHaYYwuU6{jctySe+*ntJj|BF&S0pU*0l-4U4zDmh$n&8@w$8&lqa-)4}TMVOg z+gq2LDVaxeFRaoR5sV12^pRFsY{$$af}`C%=nnBQ)`Ave+&LP)VP5AqVa=qoHUsgZXm1F|pP1S~wZkYoya zsk(}V(XJfmL&t67v8MGY)0TcPIV;HlwiHHfQ^*N-+T#zvi13anF8*r`u>wH9y}BOJN{?M<^GR9^+tBntGC}B9UtF%ubY1Qmy%?! z)J@?z`_CV2_xkU!{6CWM|KlGQT#2}U%lFrjU#$zSjHI+i*UZ6Dqc4u@#@`SnK6Dlb zuD;|j@Hy#J(v1Hf_xmrLm$Q1VTbcW9N@>L|`gENV5(?W^WzAY8lb1y%+UdWUZB75- zbFh=pJDXXJqzxQ|DyQcGi)#($9-sYt_2< zk*-LrdH<1;$Q9(O zqN&JQ0oxvRoT8Eu_>w$Jo^cAs4mlwfgz=UDZIi?TZ!0>R@?ey;RK2YqN05^YKoa5ltRz z#xcRMd(xAr4}t}yjg`;5_&paRQeR@$uKHuhFCxSH{{^JheJ$#w16y7v^(@}HiC|uV zq&jvc!?`VQXd^82ao9N;Tg(qSt`tpOOLWX#%{XwOyb3h`8td-u_&W9HDwJLB|DUEr z{jWs$tOCnC$+e^ILO748+mQk&NGcXe5NA>sCX>+2?j~njS{JflU1|3eUxk~%y8*%d z%KJCv8izkshY_NbXh~53^JyZ%iW<->Z)$;dT!TY|<7*ni_|PDW-#N#BFR> z+4?u?{j8)xT0nflb#aMiTqU2QL~ zshOb)REHxC>Gugj?C?>M41^w-IE+D?mlSK8ApQkmDXHL1zlhfd91kOE5cK6kdm8id zkvEMRek4=asrI1pxgNf} zze7G_IdLZPk1|u3l_xJ-??^JE@H^m-cn9%IDDve~wLPSFQ~nb~x(u3`=}>Ie>}|{LGR$?f zEfKD6Z*k-&VT9hAf>#w3uLH=@`;jw-9rA_G;N~Yf3SI+x8Z`D7Z9|%5^abkugJ6%h z35Q~V8-6pbmu~WHF*QoY8VYM?8PhB%AGRY)-UtxmuznaD#Hq`R4(-BTWHqEtmqH-MtM{6=f-RM7 zO%_n6gmcJ-+Lx@wI9ottaOFvPnE;G&A4g7C1yCa5Xr3V0kMXRljYO~tZY|s@x2vi_ zm|YRT0f%QBCyeEznm*WAqX(z*?MDpflMl`P?P0EfUmDGtC!(^_3LEr`bc(%JPa~%Jx|| zb|T6QX;r?~JZdAVe6_+BI-fog(~bAkR1gvf48n?kQSs^YU7DNV;)dCR`EjO{g^orx zVR4rCkZNTeT-7m?NixQpYem{M@Ed|L?)XFM?q2XNO1jc+X01zkg2S#ViQ1?|$Xl>tm zq%V&ARC{;mlh+p{77%p=Y1xm$etM?uDJAaL2~$eMTAxI`m*zSRrG3q_on;Mw?P6Ke zoGG7G-83B3eUWCV-VVDKLt!#z2ML4Z3&NW5cHliESRoNk0Z2I=O5}@28sZI8PiogS z)N$IfW>;O$pzVvGjqsWS@^~kR!;B6)TL65&A*45<3)+%Ysq8!t;zdaVYpS#sRB3Xd zIc2D(qAdVQ+y&o%NQY;-zBjsAm!r|(2xsswX?Xre}kYISZSh|wY zjv2vzhjWL<5uhNZ-Kch)W{+&upRP<%ZKqhu!?I`?fUvuvj*`7{3e^;=H^KW!$ZoY; zEmAC-6By>s&>SUdx2893#P})-?*LTD@_hDy-l@N?sKBmx<JE!ngsKdmtL=R253JZL{5pS3~@U}K0*JmfE*xy;q0 z0N3|48H$wdse&E5#w~lPG36ieR!B+N`u?U3YkJ!P)-~TgFGn|RtqPLaoX6JKKZg%{ zdzR91Ey2o)m~%S+h|$xhRk1+0_b=*5gNlf3psa*5T=uqU2?7!eyotqOkJp=^>a-$YG1U&O7GeyyQ${q`Dj6C>I~59zs;*;bTCl zYYonVB}r}QYQ){&J5hWVbsp?DqhuwFctHaZ$m%L;2$HYzqaKCz)#iypNu6gFJj$0W zCLFi*kq;I?e2_NPm*uLqMvhXj?RK6pcIty_BT2nS>@gV?#OGq3A-T0KOeMae_Hg9K zvQ4nvZJ7iem61XR#wRIQ8+*}ulo@3h2*O!l0o!mlB}VYNh@(JEpRcu|*avGayYoiO zxi5It*fod zX&f_nsmnl!;K2rK9=GkQRIi2LBHJ*CA8q&1uPZ6f_VH?2+2iV_AYon#4 zaqSxnw3{$YRu&*PeVf`WJU3ILpwwIsmfoi_XYZsdd*hYf%t9PM;%)D%vM5sa-p0zZ zb7K~6lkCn~jnbU`pS86AC-7cMU)I5X_tAQcm*wG$*$!{-y7tgt_B=-5Z99|u&B!sj z==HIF4;KI@1MFpc(CpY*_r`jBa(|yQE=*SXD)jY+nk4Gh3Zi#{XFCSFT`C$Ctowrn zves+&u9X|c_0a?ptJOPQ@qN1PoJ~CS@&)HwE|1i{T(kIIL(0<!8)E zNgR=8C1(n}7C8hMINR=<`I!ZM|Ge&#t2OuN$Kw7z^jlOLug#{?%QigzX=3F>;z`sbOOG~gw5IfX-n{eD>P3%Q4r@Uivf}f-#Cy%T z*c0JvG`y*|tDd%*i4sp9J?}hyFRwqcdg921;dVo^9&K#Wb5ivEPs`A*r~e+M2{9|C zPkfD7Vlk}#hfbape33od*n=a*j-6f*NM1Quzl*amBMgXGoRt3nrcaUPDgoBly8Vm# z))}{ej`$PEn1-8xY&6AG@_fT%!K!sY{%{dKEyxrk(PdJ-(A$;kCx5|Ocoamqot%;% zKqVq>%CDO`?KSs!#}3>)DCF~|0^y>af5+Ibc)1CyUT)xdF?7v?PhSrgUvYYPhIcJXpsmxK*m0~lY&Y7cy zi8ElpmWqD$`tudVN~k92o)dAVVMzcJ0|o_a~1VpR9_G64-AqCBwzoc z=8w4RIFB#Yv<-J~zTb&M6<_WwZJ+_LLF`%Y4(oS+*b=07LO<07pIKM5c=t&qggf_z zn6ftb>_#1QCV}j62EeCy$HHU2d@#7G74WQ9op$qIGrHy4_iOet=o9{Ow1{$fmw4H| zs{tMje{xJvCf{%Sk{^qe*EQFocjOqJU@F%kJ*NHymZAHN3VMg%eJ>N6<4<$^R~9{X zEV9Y;3D6xqi~{lV;;`wjpz`UWT1A(m)!+e7T<%?1PXV8{0idD4r|sXKo7EGjGNm5B zxvuo}&7z$q;7088XxsL#!)*K7;ynWa&hq1d*GEtb^E>FA2SsjPfQr5*aB=eHZp*0v zxM)N4M*hp4@5#vewJ*%-KQFQ0y17f>wtdy2LkkY!Y*eYvpT&em`qT}Vy1c1?<(N8R zm(%(FSkA4J$1da&$UVRPl{Y?7`@S_R>F$Ld%Khf-3rie>T7NN+Kv^^ifMkKQM7!!= zR2N06w^@klT(vE%>x;qnDe_e)<*odi zk@k@<2d}XN23zCb>{^7I~)V{qtj7lESZ|7x>TOhG) zsx>6xGnag18L0PRn5#i__-)K#e1M-OAT9SuqDLW@i|46ZV{TKUs*wtT*L*J-nSc6r z=8!ZfLuU_Wct)DV0qRA%feYS}vbjgb?x+osX*m$PU1{yo#LQOfK2kfiHN3&wg7R)q z!frJX1gi!SOLk2F48UJi*wt zQSAp;bD%TWvWE^g>h#K*Wqv43lyLdp?JGBS zUF93B-M8J;`SkYX38p_P3Qz}r+G}p&cW^Hl!?s@ct4O&AWO|9TSAeGN(3%1|J=vrs zZAVl)->J81%GD8)#-9j=-+cAuZgDJI{EzA&gsqp6Qp`H^HuNjM%of)0_@lSar;s?4 z-VQlMf}xKM{^i3N7l@srA-WQWU_c7aT1i9GUh)=lt<=$gh4Tas01|krHzZ=H4?cX% zqn1?Vgs8&y3`onm2qvGdbw5P%e19Bq;5`hm)jsBMPT%`e2h%ATidA|d>p(@b%oFr% zuwdd)iky9=$hz>mNK_#}gmbJ3oCDfzAWn#65`gW}+wj=d>8s_Fv&!@Y_;7sqhk zuj8N2rG{-ij#@dxpFteSQ!WszgJ42iN!_Hmp7YEMOtNy z%T#}bjY^VPa`QvZY_O|O?S4?mR$hP^x!hG$)7A^cK5bz2;5|Uv+!ideMA>4)#7#~Q zzRbD!+4%$Y-;!C?GHPsJBhy$NuDMCmr*7|UBPiIm)S%vE0MQ}zri>a{0yFS(k8FS< zeSUUVGq0({*H^nb@$j@<)&I^;?v9GY8l;fE!pJQ$^x1_iQ^`h_$CkKnZp&E7yiAZ@r9(uv zu^RUb+0NF!n^h9amt;mSfTD{b{|I<4hqf%9 zX5CxcSl}jWX2aV(K5|zbMtt@(n1sg#%71IyCtsZ66trSZ{g;%;2X{ExoAWa4!s9`v z`9YHjj5zrm7AARS*hXr68-A<;C?vr{?uK}Y5!K^}g3?C6KluygI>B-Xxzyifqw$J< zF0L(q3kDbMDHX75q4H=L38)w?KpYk93=lH* zbZA|ntf~U47i`auHmis2Sk-FWp!)^YWYCH!YEZn~YIWKC7XZ;1|Iun~|0zMoUDQ+h z5z7IxA?D5`3EVNcYug6|iyHx>5gQTIVlVpSh>_mbUpn{Y}%5KEyPo(W&RDqbBoqGHM z=x1y%x>dy|$0t>){dog5*tSIHeXiy53q3nsQ%ZYY^!lPG*lseiPJe2XDiGu!M_{7D zvYoyF=>_KK3$vyqEFy zNP5MqdqW5-ps&d$k&`L#nmReVq3MQ~vY@c?{%}-$s^^()H7NYANW5wt?Ila^ByGh6 zYYBHD_fnZdOE3$2Y2ocF316lR~^h(1|Ob(wYPVuLVA6la7;o8La6yLdAZ3&-gi;>gvb$YQ#UjB_a2xsI$8np!l~H4_=%;It8*&TY z!vxM37m%eMqJ-=Sa!AsdwcV*Z;r$=#w*OsfemOXsn6AI$?QD;rEGXD=H}CD^isnP( z@}P9@{>T^oW9zQ3C^?sBai}QpZo$1D?0(vR2t_*zG6N`-oJr#77piTcxlYMKLOeRt zTPzS|7^(KCom-IMdulW5Faas^S^{lh|7YCxdxzC4kPmQ)g3l@XO5Ft=t1YMcH$c%1 z?%oZCK~DJvg#DL#bwQV2dJh9?HZ&2bE})y7FIg~ybE^U**2hd)A{`|`L_3S4q1xgc z+&);hleUc0B2K2b*4%&Nj@XOe1BhnpCI80F_`gvZv~#pR3=|?NjKEB#g79rO;&l(P z7AquO=o}upQ8YsIgY}rHH6K|^L8JPETyl{YD;oJq9B@ZG4!OF_vJJuCF9X~(#@6D! zPp=;8k%v5d*EQ#9NM5DSLMpTd8{}VA2Wdm}rL@)b4kF<=7$~(3F;VRv0o73~n7YMk zczqKX9zq};@G|+!mq)vSaTL=RfZN|a-P<=th%vz(ywmM6n^pVxwmw5%5_v1Nxfk6C zx?*{fCRX9UsFTk_q>fW>Reov@#7m0N)e5;*z+k<#W|FsHO8cXPQgs-#{fGb(22I~C zP^g0-m*)Jtq>o&kH>YY{%e8}+XCsNueqFVGcDj&{Qle>~Claz)&>j(kpyxrpG>$?h zRRP*gnx3YK9?vSY!z1aBk%3N(v3djh5Q5#-)Q7jAuIW{umcAF`jw=ATX3bl1u-#ht zc2#!UY8lb+lQ;}mo%YWJH=t~^_CQy4ihOatyPKKC17Xo+mL+X1?Tk?I4rpf?HJQ8NBEgTHVg#?3It|77u4I2K2ym<6*h4Ks>Fa=)r zp_y-NM%n5&G+*@@QAUGWA!Qw#a<DBuv9L{lsk zP6(YblrRX5#ox(Ap_2-S3Pr8=>km6&$BW#>pcT|ZuB61aThmz82@$VaBdI>=ZUSpj zt_N|ke^pP-M1@~H?5FK7-G$=AvD5x=v5YsJ4xyzOCe2j6g#<<=NPxr$36nAM)wXb0 z6j&y&Ou;W++QiOt0}vZ8{#cNV&G;7V*ip7>0OxyJHuoHwDWC>AW>XK!NjmY?_c&&h z-wjuxE5MU4#G7eu(R9>tn!D=rRY-m)L~Lhgje7%x))==g%W4~dc$>O%CA{YdbxoO8(aADD0oSrKaa-?B{)^J(ZUlyU-?z_aXZRBHh<6iV zWljU?z@G;7Cj%&NqUg$2u^2?U7oFAUbPOm9E}*c5+9jY6e#pI) zZSwBZG;AZC$pzYrBcLEv(k0oNO<1YMzoBlDGtDN-)&=$KMdKl{+Wdp^x|`L;0lU5z zW9GB_iYe`y$$1M#)hFx6x2uN|LoyQ8X5j6ur@bPqF$Qm8D&wUe7}9ENT=_8%bHiLDE${TA@P9uHk=wrs6R}bP@BjSCM#B&Y4S1gat%g49e z*u&xSJO{l{7;A*AHE4j+R8brNg~MEAHF>p@ZP`M42HnVmw?Lf;0C_xs3h8V?Pj9V8 zN;?S)w4RBt?y7ggp1B}JA$Jo@so1m7Znqu0qt85X1R@opvT@f<^k)=8vJTqtq*))P``UDxRM(RNpb_^o$NhZ{=dc;r~ zPV-V*Lq(hiAMrmRm5I`sWe8tE5P)f8i=p4YQ=K;7yO!8ecteU%ck2wQH-mTQZlFw( zg=u(v^C3tZAMuh1;2v4e0(&=sU&6@*<3|h;3^r=Tr|B& zMl?dqBA|62^1cNx>%OZFgx}HDURw+66{ov09>!aG`PqO>e9;39i%neuRSC7Gh>XFC&b~l6l5{~9b_poTK-LAg8cY<0+&%7u#Cx{FCtQLQ**ByQTvM3lh#45ZU=E4+ zBH;Oi>3K(>*X+~f6xu&Yolo_hR1u&_v8&DT4&o-{t)Lmv`a&p%GOrHN@C9k=^lDf) zlp$qi<2MqzSlO&*uRJgZm#WWDCIpFcqRrk~Dw*KRr64?WlT90TryUn}-jSFmClQ4s zmU)=%rCJj|^bnT8_2}oWqv(T-+9cU2ecQlKK+cn?_E1FGi9_>7j6z3u!J+xbA5SRf zf44|YRbKtHY=p$O{VS9sF6w(%le=h4u=T_*=x!d9)jTupR!j9_MI)>vZ*OLtw|K%lzDmEJ>!G<%klyDl;vEBB z*+q6hn~fcgjYNX(P;>(|cW6J*x`C@USTTvQqv^QSrTKlp-e+khBhM49#49w77$K=S|7#=+w`0y^rBl)4X7Um@v9{x5yJs@Z*uCI zn~lyom*$|pV216#FIM1X<4sKhucn9=3|eGrhK-Q*lnGp36P@^L#YeCvTCBu3U$Ftzl_Gr7eO`D)mIi{mkl#5vgU`tX}X;32B z?G~_;g#NbE!s(u~c~$he;)#e~8%lKZEED7plkUngsEDVWG}9OHisO zlbLoF5SU{pDr~`YIv|xQ7uq;)0q+=ngb@MlD3(tX+G$uMR`rt*x+{^fx+GaG=bGe+ z)5La5N3FHJEFcFLUrynK!NOvO0%8cU#>0m{?Hfa4gr0XWY_a(CP_{VIv;)5wCg-;OgkSZk1e@pV&R&Xyv@7vH zmL7)Py&`;@`s*6Xpar6-I`DR3kQmiIbu7%9LRgFOcrfytCj}E6&JiqbbkObGNm(NR zP)uN0a#u4u>nX*%h*^MY;$&nR>=o5A0AR3&h#J9mH5)xT^ujBTQb9a9cuUjG+l zyADI1w7PApjJGUqgZBuRQ~qgW+q=dS2RTW*I^{27<1$xYJL5<;2QRT&3P?&52 z6ihS)|M z-LD^nbZ93s%d@2oM>`MT-2-DPwEYAV?Gnld899@zUOzXFXqVl8YD}U2eBsK1{ zdzR$N27($eZRs#=z4-AFZ+Gt$we?!g-cR6C9<5(c1q3sW-~m5>Fv;UMUgBEN`swxb zEP5<)6o|WWxoeQg05D`E`{=!?CLo0v#YQ0xdHT1_xZiyK4K!T>)1qQW=4qmL?MQ)%F?&-eiK_ zD4Kc;^W?>av6|m_$3%vSBSb#NVgm035vKP+`MX<6yGJBK3xw%E4`aK$2{&9IlRtYdJgg z@f^Sy-H%uU#%b);zAol9x`Sp#ax?9RCg=$Wk3y&}n!7WLUf*ziL=8L+P40n{e&w1s ze_>D28(f>hU}v&jEp~KGLu7!_kzbBSWng~eEdvn@gKG?vr}b5bKy`!D6+~Y|bSi2OwMS3*Qu7Ey(8EPL{rn8bf*0K~37Q{&`lG)2Cgzf#b)yUWV4EgS&W;^TV zLG>2ce;*tM=E*;f|B^_Gy{tRSQXWC95>@VMJ%Ek;fq!_QEuc#6)%W?Ei&tnrFp}%a zLQ6eM=3iGnm>6uP=^#<%l*INj3}bgaH#5lOW5l|vZ;WoeZNfBunwy(Dn?apa?b5!I z0F)+gBt{v6h(KY9)PXTTu*#p|syy{sVBfY@d%==iP_Hfs0kg`%S*k~kj89?5kxbQY z_lAcek(lm=1nx?cxTMob?0DFAPm(|JR_(94_U)|tnQ5mA+6b`6Kfte2??tSD4Jdle z^_dP9+Pwf+OPD{yl6KL>HG_j>BowUZ*>eaBxMI+UU|#OG=NKVtMO&<6)@QPIO+w2l zW?~BYxD0d*5yx#1q~Awsc5KfVjexP-no7cnR|G-PxG@*`2Lf`Gj!B|LbbLLSePQ(! z$(O#0={%h%_TFuoMjg559rWq$d@$Zg<=A$}sAX)_3ilTZDb_BT01rY6TTY#aBjw^Q z^s+JS3jhiL2gP)@z24(03ETvD8zciGJvNyhOrqwY*BmvjCH*->Q76;ZSiWW<*y>@LaFXM z?HUlCINn1Ts+|b{^LL87Nq9fbZnLIpcBX)2N?nvF(^Nihwj!0Wu<2xb33!yYVM49NTNiK?^it@ZMOp)d0iKN&CE-)=2qiQ4Y5%EYtm(U< zQ53CC`-0W*xm4v!MM3%a& z8_D9O9-em{CeVQNtYp3YC{hsPIzdUr_SKh&>V%At}}}-Z^(Uq3%QX`Pi(Z zx1?)6uTa~G627>fgtu=DT+28n!`(WXih4{qCDL$CcY-asZ-<|CK&%!#7mfZ(*UjkFhun#am(_?v~i3+dj z)pE>A+90V3J#7ZLbzm9@oi14A7R_x?YeBfSj=-!YcNAcT6=6{KC9^J;xyLkGpd{H+ z6DH07&91M~zY26=Xp3y9J| zLcrUt=d}X4`c4kmFU$hv(%CLN2H~wbIji2i4%jSf16I|r! zA5Nk`_1ew@tIYRGSbm<9%4TZ)Ny$w za|HoHTcr8)uF~%S0mq9iTyRhpfg(eMn0Y?{4j~ znI*LTaa^Bz3Gmm@Y=KD@=Q^*fdl3F(Ycn(&cL!4=S*$j4n?d=Z0d z2)VbkovV$pt9HEH=5_xg`eDGafiaH~l4seeqPLG9M~odev3kGZJ#fm}T?Q}WRvKM*em@ZT`(QJ^#F3gf z0!*gX`q>k2Vh1yaZbz5Je!>`^QoCKaGjYz&0Eiiq(HSGyg0^_sriY_rAQGspjY@z~ z=@J!z_R0-dg!!r?R3hH7e()q6bZ+vs3z1v*fDLEIjbOa~6NuDK%wp;3Wu2zX&Fz~s zjS@khl1@22aB&~1O=?>2{*~-rBs#lZ|2?@=gsdsZ&SZmQ4kwoLx^lRysUDgf`~nh) zfQX%==*2-5NTT9{z{pL0A`{TCigVPl=AWNEs;1b;B>CSG3Dyya^=FrDE-~HFHc&K& ze$K_+Yv7b0z5ooOF^ky`7l0v4a*dfHMFQTze7uLIMQx=zPZJSL8ZnE*Kh;xLfM|sU z3JTb%x0Vd`KA9$F-vvTWnK?|(#+fOe+jLtWwxn64$99lRvEQ76UU}`U4?gN=93Z!x z(osdy`dEg%gxmJYJDR$-O>!)TnhHi2JJVjU(7^3Tl7(FXDa%XN(nd+1XQHM84B-T- z9DkT856jUyP!A?;8wk8e-CjePA#!?go01+;QaeUy8C*x$=<^+&uwbxy>Dobz1=oRU z4VaNXYx@WdqFf1R8+!?PXtfELVDT0pa3-Z+#sFtW-04D=a?9D&1K@jDOx{Y|R=Ka? zPN+C1C4QP}DJ*jGyJ7saBFH8c9;$BPXi+lVE@=m)>4`k zm5PL@R;rCO1+>j$K!J>TL;;H?Y+7GNxMaPRXoyTkfr2kEt@8}2@iIwHiGHpJ**XFE z&MjE*4}X{LfD0>R64TMi=Ks~+m3}pq<=do0gMy&Ub3iCX=1~+wq97vB8k9kSf}p5? z0a6M`kW@k|qbMLMC={TAC<1~>7!8CW5NVo%LIDXv5>jfZL2|LgD;eq?eYM_tAM9TJ z2lS_`b@L(T=A3)(@9h2CdoNGwZtGEjP|F5TRTeI$j;cO9kJA8Cd|PRnfD7xCBvdvw z5DmK758k##p_|X$tp?F=)lmhHx)!o#?>yTSo`d%;s-xCt|~@pAz^(mTG;en zFW{-xf}U%%GR5*4RfnPiGbF>yJK;A{$1jYKVzo>SXh8trZ-@zoN(H0Y3jKbF7y^7y z-`imPQya)cjyuT94$dDq_d3tj*7HMH$B~bX*cD<0$jb}{M?JyyNJn`Q;2-&L>_XB2 zjeho~68LXVvZdHanS=Z)=mZNVOqce4DxL-5ap;0%b}ny%E3;|JrJ8|i$<-d->zYo} ze;2uR(takOxU6`Z7z@0seWpJ~)gZS=9B z_iFAH)At(%?6M1N(=p6#<4S2DZ9YM^qxRIWsDkhVd=r;Rais~@ zPUhizMGxw|zA!$L@0wJDM7<4;jpVpZ-tFq~%~c1Ces?=r!~@FB4@Kq#t@iteczl2~y)5%{gZlF;4AnjP0U4asRF9Q)Uad3*z?JEviPLBgejhn|%{Z`_C^T2Pl4jB8pQ)i&70%Fn~v`R}hN5 zY(XV${erFlE%t)&%MJkbaR;WW_cGanQi4Vkn`o~OgPy4k-D_dOa`yx!9KJ$B}S8^b^H?o}CrBL!!fe_yUBgk!t72r}!c8=`*dBs!YV^MM0^UEj_>m z9`6jWt^Q1PpzLV<>OR;6cL~_WZ`fZ{6jd}WFq%sJ396kJurm#VundW(y&lM0FX#Y5 zVPBN!f2#Ri_xEsl89ZWt{~q zT>x!{&m|Z#?Nz8fY#nw&Rc6@YB}$qQ|MwF1cU0?8DwjbX^#-Wz04)=G9*5JR>=3Hw z1%%7IA4xz*fd5ZF!imGuU2he7h?P{qYni6Huql@&9B-o;(T?Y<7k-H28{kd>pTtUc zc@6Fu9s#Fv4SYcU_#rg2^`6uNMvHv1U2z(UF@wSjSS>P|b1o+%8K2Ru20w;2iH=CF z>G0Px4HwnPIBpq*sz2W2+U-Ogu4=QZ21=@TSk0-A)`W~ya3^8v;Gp3`U<5abE9N7@ zxpUhjZrLDX<@wXYlUOH^>t@_kun@z53Br8!^?bPg$b`#cmiuUSGG7fw4Q&3z32Aja z)T3}B{_tDg-E;3&Unp3Dp>kVNNG-Y}aTBcdPTnq)%jdzgYzw?d6IE%QnnM=$DUgzw^RnFyFui|1qBj2)=5U!sC+n6L zNa_L#v}G1NA;8Tn3aB{}f~YMAt3{xK*E{|7fJYL?T{lw}Ui*$<+-*fMmtRAJ#3=TO z#T@saO3LM3B3n;%z5^(HgQ0vM$;YnQflRE@mjXT_abjlPW1<0pZl*~N0ZiNh?jBt> zd#11fOFc*GM;*c<;DH7ru4PLPKL;=<7=MTnFqx1@MUh{7fpm6~o=iznTiys4ine4> zHbQ>VeJlul-Uj15UuWC0a|AWu7O6X7i*Y^E3|tt1&Ty-|mf|6`qVi}uK-I<1bf@(I zj)cHui~XUi0*_DPbRfh`7wK};3p?={R6StE-440+j`$0zvSrQ>ch{56IXF#-eq}?LQG2jXl^PIh__w<5`1aEY*SlLSETiOWgr9jARZY<*gy-oB_}MMEHHxvS)hvCfvMf-33DD!Eo)gJU z-@!ofxC&%#I@ideV12jzldWydQy3H!-J`G|WTAB$TpB$;C^kBaaBInfDSU5B z`WlUa6JM3$$rZHYvv>}HzGWd=KwD2a4%zn*(28G+iJ;O+?WtchkZl05M2oN`nrqLq z2faC_>r*)tQWLvC7I#8W?kh7Cfa2>c)u^+3Jf$K6vs;wkWia^)jUwC4 zdFX^2@^#)_CRT@?;$>g19XZn$)_7+-iuC{5C%*Y>e_ccd1~fA#;_aCup4uJF&l>IG z?GvUeLgvSpblWl&45K3?9#x^ki&CN>Ri3g_|aX?-GiuKoN! zc!oQVNUAnILtF8bt6%I+o$lNlW5Yq(fnzV5u06~7lq7SWs!YFmxBVt}(Ec)%QxX$r zany*maoj>x%&~}lbbn`X@Gb;6F|M7Fn(Zoe9FUAg20hLUf3XV67o`J}HPg;@`U-Q# zUWzmp_}3U^IhHKV?TJ#x316@uEy^{GX&@uWo@=j2b3vX2=xdHR|FrhcniSWmN^6zW z7Un@HM|37Fz&ADN-0z`S^LoGiBeR_HmvI(I&e6<+gSm*A!Y_(}tmJnVU*fo5Cuj3! z_rU{Dw}Tn8?c(I>88j#P&>`h$&);;5>WV|s^eZxyzuufNGdq@QKpZyrKD{>j%UECS zybollXNMr;Yr5HSTH6gpHYQ-^LwA{i-SLcq%l_kUfN79n*hcKnzm0(tfaE=YS~S-N*yCuG)X(vO(W6lVr=y3t#ILM%Z;O(ZcOerEN=LH#OTBq^s<8%&0pE< z{wG3VLMR}}mVgQB*9po=F)g8Gmwo8$Pe`nx9D`@|HcZcW$0a_Fh6^tG?N*BYWq0x3 zHNK%QQ_muf{53(BZE&g|UtYQ0k#Q9aH0gr&EUT6Aa2jh)KQGz835CF%$h_jT@BUka z7r3?e@++nVZ!NnG-n}svt0W||CGCps=xs`!tzAc!_!=sk?GkKX&gzF?Bl`xorTps! zNE7FQ1?Wt1nJU`}7GTT&F2El>W+y(F9fu1Vx4IoJ)gav%GSyJ-&#lhefGhzk;lSwh zy2*K!`&j*V!ye3E@hWZLVOd&Tq8n;{teE0Meqn7@QEYCGY`IpqDFY1(gZ^djg0#dy z;X~Gzn|7irql4(nBORopWpls9lXAruk6%m+a=ITojLNOKc;XWh#Q(WD}`@h=>1|J`Q!-|zlPWdBb;5Pwep55u%IIsgCw literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\236\321\202\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265 \320\270\320\267 \320\224\320\236\320\243 \320\262 \320\224\320\236\320\243_\320\262 \320\277\320\276\321\200\321\217\320\264\320\272\320\265 \320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260 1.jpg" "b/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\236\321\202\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265 \320\270\320\267 \320\224\320\236\320\243 \320\262 \320\224\320\236\320\243_\320\262 \320\277\320\276\321\200\321\217\320\264\320\272\320\265 \320\277\320\265\321\200\320\265\320\262\320\276\320\264\320\260 1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..19e1133f2c0c6bdaa07b9bb08a30d8fd203a8b67 GIT binary patch literal 35032 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 P{}7b_XEZeG-=Y5oF&an| literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\241\320\276\320\263\320\273\320\260\321\201\320\270\320\265 \320\277\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265 \320\264\320\260\320\275\320\275\321\213\320\265 1.jpg" "b/backend/data/preview/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\241\320\276\320\263\320\273\320\260\321\201\320\270\320\265 \320\277\320\265\321\200\321\201\320\276\320\275\320\260\320\273\321\214\320\275\321\213\320\265 \320\264\320\260\320\275\320\275\321\213\320\265 1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..ce7f7b514804b4f4c562a448a577860ced74636d GIT binary patch literal 108141 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

F24op&rTG{4Qj@I18zZHQBF2^GMW3y^1 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 U!sI>^iI4yWTPfUwEB|i-0F*Ixc>n+a literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272 \320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\203\320\261\321\213\321\202\320\272\320\276\320\262, \320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205 \320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206 \321\200\320\265\320\270\314\206\321\201\320\260 2.jpg" "b/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272 \320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\203\320\261\321\213\321\202\320\272\320\276\320\262, \320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205 \320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206 \321\200\320\265\320\270\314\206\321\201\320\260 2.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..8a26db67cd035d8cac1e5d6e0fb491f097c1452c GIT binary patch literal 61037 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 literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272 \320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\275\320\260 \320\262\320\276\320\267\320\262\321\200\320\260\321\202 \320\270\320\273\320\270 \320\276\320\261\320\274\320\265\320\275 \321\202\320\276\320\262\320\260\321\200\320\260 \320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276 \320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260.jpg" "b/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272 \320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\275\320\260 \320\262\320\276\320\267\320\262\321\200\320\260\321\202 \320\270\320\273\320\270 \320\276\320\261\320\274\320\265\320\275 \321\202\320\276\320\262\320\260\321\200\320\260 \320\275\320\260\320\264\320\273\320\265\320\266\320\260\321\211\320\265\320\263\320\276 \320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..033a78947284ff40f8609f6721a992e58a11555f GIT binary patch literal 80644 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 literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\202\321\203\321\200\320\276\320\277\320\265\321\200\320\260\321\202\320\276\321\200\320\276\320\274 \321\203\320\261\321\213\321\202\320\272\320\276\320\262 \320\262 \321\201\320\262\321\217\320\267\320\270 \321\201 \320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206 \321\200\320\265\320\270\314\206\321\201\320\260 2.jpg" "b/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\202\321\203\321\200\320\276\320\277\320\265\321\200\320\260\321\202\320\276\321\200\320\276\320\274 \321\203\320\261\321\213\321\202\320\272\320\276\320\262 \320\262 \321\201\320\262\321\217\320\267\320\270 \321\201 \320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206 \321\200\320\265\320\270\314\206\321\201\320\260 2.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..9f5145f43509c3f8e12535eb46a9a57cceed598c GIT binary patch literal 59851 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 DANf${ literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\203\321\211\320\265\321\200\320\261\320\260 \321\201\320\260\320\273\320\276\320\275\320\276\320\274 \320\272\321\200\320\260\321\201\320\276\321\202\321\213 2.jpg" "b/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\203\321\211\320\265\321\200\320\261\320\260 \321\201\320\260\320\273\320\276\320\275\320\276\320\274 \320\272\321\200\320\260\321\201\320\276\321\202\321\213 2.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..06e6a80d4f0c4c9eb6cafeae70e70db2549cca43 GIT binary patch literal 72794 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̃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 R>)rb*ZQcL>hu*(${~xJ?1$F=c literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\275\320\260\321\200\321\203\321\210\320\265\320\275\320\270\320\270 \321\201\321\200\320\276\320\272\320\276\320\262 \320\276\320\272\320\260\320\267\320\260\320\275\320\270\321\217 \321\203\321\201\320\273\321\203\320\263 (\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217 \321\200\320\260\320\261\320\276\321\202) 2.jpg" "b/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\275\320\260\321\200\321\203\321\210\320\265\320\275\320\270\320\270 \321\201\321\200\320\276\320\272\320\276\320\262 \320\276\320\272\320\260\320\267\320\260\320\275\320\270\321\217 \321\203\321\201\320\273\321\203\320\263 (\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217 \321\200\320\260\320\261\320\276\321\202) 2.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..3b8c5abcb3335abe5c2e8571fe35fa6982284a2a GIT binary patch literal 66898 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Π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

!fZ_wd@6%xo^IjIT#Ohd-o|Pc4*^4R3sXw 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

oS*{AX?fakhzp zzK%)E4|WG~PSk2tN>!I^ar$?EzufFkDbBZ5;&t$tM336;5Yl9k_iLAOA1@vAToH`j z@fMW4EsNuY5&u-1G6nxhurCVzc{`+tWBYeXx>z!_tjJt2K-G$92|o4pZRXsY44Ak{ zviU?w&)A~@_la!x``dfY$flh!LypG{f{<7Un;BwDp+<}#ECcD9!xP1+MVENux#fJY zGFUWPf9>Z=)2P!UBW2{?Pfu?6zAl_*vM@dvozyIuAKd~Gj}%YWx>BI@PD_o)y<6`F z@U}>vODbAZyLIF6lc@qjP1nD8)Ma56Ht!#FObX5qqg7mqjZjlh6;JS<=+R`&98f(DbBT8S4x4U+Eu!Hi^ODgcnGy9xn_yIL@*M zFc5(CrduC$1Eh`%^ZzAtuTYRHjFES>EBZRkrVI& zv!3e`_0ZIWp<*+s?O?Ud#hwIhI>-eh}6R>l0WgoWCaZwZ#t=9qpZFuJ{DE*<>T6M2HmO%@d0@ z+wDl@gLrd*NQM8Hg|?~2-*hh+d&sAwUYQ-cDZO6NJ{uq|AWdfV^z`)dNL@WW?K%EP z9*V@2%4lD;v&@Lp%RHm~ghXk&)D7hDzU~L@)Ff(h%XO=b`nA1aLj)iBa{OSH|JlVC z9|?yp$}QV+mL}6>!6YAYM;H)e+O}ya49r4pLd0Sw2BFdqt5w8gEJh`Xc6m$W->+{x z%uzpGR#44mTZT4&8$TCf=&oG;=wqdncE+zZ*8L`{3Iap2O`{C6u~K)vY@tN~8O%*l zznvdY$r^WaBRWACp>IsDX^SF4*WJC<+=B^$45*mX+slq4`fUz{Qr_pfs(cAVr^dhj zcUd}BsCm+guK~#CB$++Tu z%e3*+YuRPvHUSNZ=cGtoG+-y*8}lJ5F&DX+3O{EZ(BzjA!?Jr+LP$f zdF5rdLI!&8OjWaYLTBH{=+OFW3Ox-$GP)%x9E=71l(HTQF^EMxgZd_mwh+K~Q6w}c zTJ!qiiN+uoVqTFBtSIJ1Y4rwj7X~e_KVQ4?tgLm(KEOIJ zMp8Y~C{sel%RC^HhNl?)IPG-dpXS8kAW3?}<^f`s^beq3UUMVi@b~)9Rqs+ytOOT3 zYSd`z;pSwa%RmgAs5uC`b9oj1{>q}cLw4;_qkn$%@#uU_Bzoip*)Mtga#OO8(nLDb zLgElDPy)yWt^fpnMzK)R8SNDIYtWDdLs?4uNUaA%$Z4+Pyw}lwIQ}#EwTo1&d`3tI zBj?QrFDH%*Kn^Xgb;6_LIi|6oc_jPm?e+av&T6)wIOcTs*i~PR=Q96F%rHz+A`#AW zy1<)AElL918Hs|B9EeuUe}--?1+qv@YP#i-2Bt}7fKQHKBP2VdA*XsvLBKwfP=%n- zeZT9Z2W}yCxjm~FSClqVQVnW;g$0ym=oMFQg`{j3ptFj2mmML!51AM1^Nzpv@HT6F z%Z^Yu#1TCBuJgV0i}WZ_FZp!Plu@fi!8O=O4WLRLaRlx-&o{#Z_}Nhk*-5fhIid<1 z)k!w!&#||49u7AoSxbmpzBY}nG?HXlub6K77epuyEY8LAo$jm1Fsw0 zVi6>94txTS7RQpV*6s>2@2svSxeDNe(N+_ka&i~~IH`0(exBP->(7YUSf z`9)?$BK$mavb-3aiZ2d?v@>zvI_hJ!hX9|wP4cIaz!=~%ydjOBQdR7>ENKD!|9DeB G$NmRCzUgNG literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\275\320\265\320\264\320\276\321\201\321\202\320\260\321\202\320\272\320\260\321\205 \320\276\320\272\320\260\320\267\320\260\320\275\320\275\321\213\321\205 \321\203\321\201\320\273\321\203\320\263 (\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205 \321\200\320\260\320\261\320\276\321\202) 2.jpg" "b/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\275\320\265\320\264\320\276\321\201\321\202\320\260\321\202\320\272\320\260\321\205 \320\276\320\272\320\260\320\267\320\260\320\275\320\275\321\213\321\205 \321\203\321\201\320\273\321\203\320\263 (\320\262\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205 \321\200\320\260\320\261\320\276\321\202) 2.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..c9f39ae0af7659772d6e589f2caa5342356d9db3 GIT binary patch literal 66701 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∋ewQ?L#(xTxQi`Os$wOGd~+}5Xv2iq71 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 literal 0 HcmV?d00001 diff --git a/backend/data/template_field_types.json b/backend/data/template_field_types.json index 6dc2844..c2583aa 100644 --- a/backend/data/template_field_types.json +++ b/backend/data/template_field_types.json @@ -2,62 +2,62 @@ { "type": "fio", "name": "Фамилия Имя Отчество", - "mask": "/^[\w-]+ (?:[\w-]+ )?[\w-]+$/" + "mask": "/^[\w-]+ (?:[\w-]+ )?[\w-]+$/" }, { "type": "phone", "name": "Номер телефона", - "mask": "/^\+?\d(?: ?\(\d+\) ?)?[\d -]+$/" + "mask": "/^\+?\d(?: ?\(\d+\) ?)?[\d -]+$/" }, { "type": "email", "name": "Адрес email", - "mask": "/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/" + "mask": "/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/" }, { "type": "date", "name": "Дата", - "mask": "/^(?:3[01]|[12][0-9]|0?[1-9]).(?:1[0-2]|0?[1-9]).(?:19|20)\d\d$/" + "mask": "/^(?:3[01]|[12][0-9]|0?[1-9]).(?:1[0-2]|0?[1-9]).(?:19|20)\d\d$/" }, { "type": "time", "name": "Время", - "mask": "/^(?:[01]?[0-9]|2[0-3]):(?:[0-5][0-9])$/" + "mask": "/^(?:[01]?[0-9]|2[0-3]):(?:[0-5][0-9])$/" }, { "type": "currency", "name": "Сумма", - "mask": "/^[\+-]?\d+(?:\.|,)?\d?\d?\D*$/" + "mask": "/^[\+-]?\d+(?:\.|,)?\d?\d?\D*$/" }, { "type": "str", "name": "Строка", - "mask": "/^.*$/" + "mask": "/^.*$/" }, { "type": "int", "name": "Целочисленный", - "mask": "/^\d*$/" + "mask": "/^\d*$/" }, { "type": "float", - "name": "Вещественный" - "mask": "/^\d+(?:\.|,)?\d*$/" + "name": "Вещественный", + "mask": "/^\d+(?:\.|,)?\d*$/" }, { "type": "bool", "name": "Логический", - "mask": "/^true|false|да|нет|yes|no|истина|ложь$/i" + "mask": "/^true|false|да|нет|yes|no|истина|ложь$/i" }, { "type": "str20", "name": "Строка(до 20 символов)", - "mask": "/^.{20}$/" + "mask": "/^.{20}$/" }, { "type": "str40", - "name": "Строка(до 40 символов)" - "mask": "/^.{40}$/" + "name": "Строка(до 40 символов)", + "mask": "/^.{40}$/" }, { "type": "ddd_ddd", @@ -73,4 +73,4 @@ "type": "list_fio", "name": "Список ФИО" } -] +] \ No newline at end of file From 7e139057937d96d45126f0b78ab032d2cac84e8a Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Mon, 27 Nov 2023 20:39:48 +0400 Subject: [PATCH 39/80] Update settings.py --- backend/backend/settings.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 3a7d9b0..96b73a3 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -162,11 +162,11 @@ } EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" -EMAIL_HOST = "smtp.rambler.ru" +EMAIL_HOST = "smtp.gmail.com" EMAIL_PORT = 465 EMAIL_USE_SSL = True -EMAIL_HOST_USER = "draftnikox@rambler.ru" -EMAIL_HOST_PASSWORD = "456852Zx" +EMAIL_HOST_USER = "nikox12lamba@gmail.com" +EMAIL_HOST_PASSWORD = "fkzzqiydypuxrfvw" SWAGGER_SETTINGS = { "SECURITY_DEFINITIONS": { From 9b99c00d0ac80d99b6a5201dc585869bb047531b Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Mon, 27 Nov 2023 20:49:10 +0400 Subject: [PATCH 40/80] Update settings.py --- backend/backend/settings.py | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 96b73a3..8c7490b 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -158,7 +158,6 @@ }, "ACTIVATION_URL": "#activation/{uid}/{token}", 'SEND_ACTIVATION_EMAIL': True, - 'ACTIVATION_URL': 'auth/verify/{uid}/{token}/', } EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" From 0ed4461c7e494fcf481f69e06eb0788c29744861 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Mon, 27 Nov 2023 21:02:53 +0400 Subject: [PATCH 41/80] Update settings.py --- backend/backend/settings.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 8c7490b..001cbfb 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -144,7 +144,7 @@ DJOSER = { "LOGIN_FIELD": "email", - "USER_ACTIVATION": "optional", + #"USER_ACTIVATION": "optional", "PERMISSIONS": { "user_list": ["rest_framework.permissions.AllowAny"], "user": ["djoser.permissions.CurrentUserOrAdminOrReadOnly"], @@ -156,8 +156,8 @@ "user": "api.v1.serializers.CustomUserSerializer", "current_user": "api.v1.serializers.CustomUserSerializer", }, - "ACTIVATION_URL": "#activation/{uid}/{token}", - 'SEND_ACTIVATION_EMAIL': True, + #"ACTIVATION_URL": "#activation/{uid}/{token}", + #'SEND_ACTIVATION_EMAIL': True, } EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" From cee724dd32373df3aed82b6f70c48ebc560d2d88 Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Tue, 5 Dec 2023 20:20:54 +0300 Subject: [PATCH 42/80] fix templates --- ...20\265\320\275\320\270\321\217-0001 1.jpg" | Bin 0 -> 95851 bytes ...70\314\206-\321\201\320\260\320\264 2.jpg" | Bin 0 -> 36450 bytes ...265\320\275\320\267\320\270\321\217 1.jpg" | Bin 0 -> 66622 bytes ...1\202\320\277\321\203\321\201\320\272.jpg" | Bin 0 -> 39990 bytes ...\320\277\321\203\321\201\320\272_tpl.docx" | Bin 19290 -> 19224 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 "backend/data/preview/\320\224\320\276\320\263\320\276\320\262\320\276\321\200-\320\275\320\260\320\270\314\206\320\274\320\260-\320\266\320\270\320\273\320\276\320\263\320\276-\320\277\320\276\320\274\320\265\321\211\320\265\320\275\320\270\321\217-0001 1.jpg" create mode 100644 "backend/data/preview/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265-\320\262-\320\224\320\265\321\202\321\201\320\272\320\270\320\270\314\206-\321\201\320\260\320\264 2.jpg" create mode 100644 "backend/data/preview/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 1.jpg" create mode 100644 "backend/data/preview/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\320\277\321\203\321\201\320\272.jpg" diff --git "a/backend/data/preview/\320\224\320\276\320\263\320\276\320\262\320\276\321\200-\320\275\320\260\320\270\314\206\320\274\320\260-\320\266\320\270\320\273\320\276\320\263\320\276-\320\277\320\276\320\274\320\265\321\211\320\265\320\275\320\270\321\217-0001 1.jpg" "b/backend/data/preview/\320\224\320\276\320\263\320\276\320\262\320\276\321\200-\320\275\320\260\320\270\314\206\320\274\320\260-\320\266\320\270\320\273\320\276\320\263\320\276-\320\277\320\276\320\274\320\265\321\211\320\265\320\275\320\270\321\217-0001 1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..4a2cce50c54d3ab0e2df79b74ddff9d18adafabb GIT binary patch literal 95851 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 z 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%0DqpauY9ygqlxuSSsga}J1VvYjP>c2wvwlGWf-Y7f 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ΝcOPuQz-1!RzL_(*Nft zO}O}P6D|9mM@>3)rv_;;rgQ1c-U`zn&Zi_m;LgA{iVBRe^^82tr$ryY+Zs2ULl^5{ zdo|ch@m!c&h0r25)5u112~Nh)5q$7(6w3Ywc|97J_~IwT=6^Pg6*MhWL{1J{g&90q zg9`>v<|dH+{(LX26adaHP?sE$kj_$9f|s*isEaR23+aG2$aC>wwG3cD_JUE1Z+{U` zX2~1wXQ*EaTOLFH^;urocWR0NDGTj_ zIoL0FZ$;7)Ao}6qj<36{I3TKjRMz4Cx)dWs4pq*yl4lE5LPxPcaUhU*C|lC^_k0i1 zEtOV~!@_LE>BM%YV|RyS`_oYr4{1d)tO_7oS2FY8mv?oV_s#M(>rm(X|Zfo~UE9 zSJGWo`Jk|wx)v7nVB9;`8PByti>5pS9?)jun#PU3(8vDJ(FKAVC}#!Xi$&!xwTviZ z#AVbtuL7C=8|bY8I?9aRxf1-gTBE1*VN}rcewdhZEiygOUd)C<(?shhS>t*|i=>!e zW(a5QKzPt?{VY9u92*0LXTgqIoS2v6Aa6dDpq-a91N6#q? zHhJ7Du`OJQlQWaeXHf=+x$#mW(yv3gXmLG1*Reciua7^goQhX9zRlO7b7^QHI;WL( zs|^Pig3{|=8gi^@fC}!+p&pZi=m{j}TpB$u!*A2JUz7vOXozlT731nb$U6P{TCD*xk3G!&GXpwYV2^^;36_{L) z2rAOYE{tq}C0UE0sfjPC^nX>_n%R2odU2HG;?j8T6{wbUdEL|R%>P{0(2(t5IZ3n!;v4%L z*&DOnX}sq_vjFUHzB~M1W*ch1H3n*ET<1&km@377=&gE+D2|HI_Ys>Vy?au37Hd~J zb`wAW_oaugsiY(!@sXaCE~4Tk*Rw0)Yi7(`xg55-M7eE56s>YG^((mZ*!nq; z59Qv(?|~GO6EaXmIyHfyff|)Hcr&FM!S*Ps#C73&yZ{}Of4&ys?j09~rl~8Rw1$>) z>X=TlrqHlH2iBKnWpo2N-V{K}A>gHp9t*cvK4a`yKAlUn#&3Z4?1kuk3l<3ajS>T| z%z&+eVaIg*U$ig04~(_B!@#L#$MP{!(L1jUR8?w2H!yJz({DsT zJ^DB)!O<8hHKvrsmAbSHH}NKP8g^%td#BP3NqvamLPo+g1tMKZ+>n^+meJFq@4y0I z3Y)Hb5q5~%_0c=4_S&*rpJEh4Jno=Os(s*g6CToJSHWCh_)Yg)a8@DK7?PN}Mz&aT z_2A>Qx^vS(fG}{4zJ8X4k$P{IeJB>8`?Wt`JFA%!*~dnFhj4;M7coKLY%MRs;owW3mt2Z&~mek-Wrjkkx{f7 z@Az9h%MDTrG~U_pYg}@G7Z`4-=Frt4+uw9NJMyeA!afZ>h66;H4_9NAK7W_J#d`$s z%E+5#m1a{JrqzG0;Pp<@zqbQNmF${oq^0k==zGF02C0v|;u_Btaqlf$0t-`aKAy-2 z^elXc&ZQaItRt?8quNMUwA?n0!6<)^V*Y|%9C@qKvjqfw9;Dxx1a_1Jor+`n8uFR7 zI7oLwh+?I^b4{aZ*!e8%ke3EbF)=RYN$2&d$IFfL*b9b)Dg|ETG5;0){d$Y{3nq-z z(|Pb0Z6Hzi*B@pT$MWc!m;`T@TmF%51;}foC+OWkD0Bbb(|-ZguVdT`lO=f&tzuXK zP)8$X@kix)k#iM?z6m}6K&*G7%&si)pu;3iRo{IU=o;UF2tr2d7O@$s7^rJhdc3)9 zv||l3P)=|_(jsmg(?v!F5%VHUE5KztLXK$@lek=h_l4$8!r3=roSrUcUkt^afvLdWs?a12HunTA*nFf~73BeG|Fd^HpT4%Pib6ZbkxHzAkd!$)4Eg-DBg z2|ge`0rA8?P+q6NW@qDQ(9vBBp3JCA@$e)?THNQ%n|G;=iVD#L2EB{&II;W?@B&JF z^{TO|;cpjAo2FiW{0eG*T*dCTsMyY{q~sqSKLv+3Bno#FlYX=~uMrsSFAix^#7EGM zuSM&?s{oCPGVX&#-y3Oa0oG_Y(#CLa9s|}qEY>tmFk^E%HUqG!0K5hfLnn4ENWOAO zJZ<0r?|V9)R2KXoj{lIsmUK9S;;C=UmkRq-*`O+?iwB^_z58+Q*Gr$k2^nd$n%exskj-IliOhw)%zT-*9$MvRLm9YB3h0?WLY}}?JqHy^_ zv}-6RZT=_{rxib&^q4&8m)3s1N9izJ-*n^4sHt49i}+=tVl( z4lm{4aoSyNtiq4=6#?9usn-!54x>8Snpu-mn=~np-UJRUcOwVKJ1vG51<$Rzm0v(K z4zXECw?tBOI}3F~9O`bMax>i!I^Vb%VGH`zSgy%@`N6i)oh)kxTbrP~Q!~jZ23r0# z@tBZ~LHH8o){L+*|AFKla{3E$?EOuyjWG2BnC?-CGC{&i zkTJ}}gXupXk5+q67<7ei4A3V^f7t)K5cD(s)9ttdl8($hk0=M zXW@~7?I(0zL8^T)Cm;Vc>_E5Mrxi8Krns#I(CLId#~NgQ1Ek2?h{XbTqD-A#1G#s$ zfLDdvQxF#^^%(b0^9mDFzd}->_#k8(UHi0&y_#{pQ$c9d3T$JFmU0Wvz_q0=P(gmY zfKfRev6fa$NgxJ|FugPh9{ZrdyXNnC^FW5RTpAI@3)}<%`wLUV)K$ZYOh>i%intZZ_PJY!b!sfZsz_fYyGwrZzseQo`IrNIIr^|Q>n(kvm`9T9(?y3^BB%F$YiJWww zNxdDceC*v_N0W%02@c>Ez-Bbj)-qhQj>fI*242QaplI&zELyDU;%`jK#iNJ?iFE*V zBKd2EIwg~G2q{bDGX&kuuMCmW2+by_y(Po=wPq74fugrO0>s1DAA<$Gx!*3%6Z?oQ z4v(wj8j*E!V3~ZXK~IV#smz zjA^~MRA^8C$#luj{Lidv6A(3ASlB63zX<~xG(K?i$k=X?B1lS+wo&St0nkOj0p+ki z^W$cUgy<~e9uP_y+sWGcx=1bwOxrhZ+7tOYxmCo`K>u-fCbpV!U)R;hc(~NNyCp9j za~6CuRS=HTft>`=ysBQ>+8LGYH41x8JW%NuY3Rr~=V|Z=LBjM{8S$GE;+bZ-dfbnp zgHEZszxK;d1OEGp*xkM_7~?(RMc55wgw{(|WxX;J)`JNmpp8_Epn*A`vs~$)2CV5m zF!6TVehru(cX6m=VohG}yxPscGeDY+sXsu}@Ks94__r9&LVOaEGpR+az z{h`1gS{>#u zPYWMKkyqcndknXn$Kl z%i-CXwo#d(JX` zuue(|8d(r%Ws4|}V5#5az)26F{#R2^Kktga%yuhETyXw}$5U-uW&>{N;>1?F8}(O8 zubMF_24|M|zN*1%AwOwV$M#tk@d?b$=)fRe>Zc>#et9l7-W=)<M8n5F8#ezp zI&_9e{?Xcu{9isTys!S(G5%(RK3{EeHd|VyE7+*Z-Z;ABVQ|5YvQr0j`Rl(7ao%B_bNjPL z)z**9%*^+qAAI)Te`qI6<})bbN1Z;+H*5JGW~Y9fk#D+%wp`m~b!(TO`80U%y{f97 zqnVjj0ix?~Y5cg4pHKj;rTj;;DOXjqyYH8=)dLQ*hT}5t`ttj)-s#`HicCy=`!@P+ bTJFocvE`|lpVO}||GPxw|E)v&*TjDUz`ca~ literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265-\320\262-\320\224\320\265\321\202\321\201\320\272\320\270\320\270\314\206-\321\201\320\260\320\264 2.jpg" "b/backend/data/preview/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265-\320\262-\320\224\320\265\321\202\321\201\320\272\320\270\320\270\314\206-\321\201\320\260\320\264 2.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..e6b3d7cd2f2d429ef68e8ae859f186e045474835 GIT binary patch literal 36450 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 DklEs; literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 1.jpg" "b/backend/data/preview/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..3526627147ed8faac194cf93419d210c915045d0 GIT binary patch literal 66622 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 literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\320\277\321\203\321\201\320\272.jpg" "b/backend/data/preview/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\320\277\321\203\321\201\320\272.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..b5dad30a3b03c9a1545a39d47028574fe673f883 GIT binary patch literal 39990 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 T0F#JC9+N~%5C$$s00000?AaOB delta 6874 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 From 3576d385e8403738fe2bfdd915be9adc6dc810e6 Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Tue, 5 Dec 2023 21:33:39 +0300 Subject: [PATCH 43/80] sentry logging added --- backend/api/v1/utils.py | 9 +++++--- backend/api/v1/views.py | 30 +++++++++++++++++++++++-- backend/backend/settings.py | 44 +++++++++++++++++++++++++++++++++++-- 3 files changed, 76 insertions(+), 7 deletions(-) diff --git a/backend/api/v1/utils.py b/backend/api/v1/utils.py index 3c7fd63..beeb1cf 100644 --- a/backend/api/v1/utils.py +++ b/backend/api/v1/utils.py @@ -2,6 +2,7 @@ import datetime import io +import logging import pathlib import subprocess import tempfile @@ -11,6 +12,8 @@ from documents.models import Document, DocumentTemplate, TemplateField +logger = logging.getLogger(__name__) + class Util: @staticmethod @@ -91,8 +94,9 @@ def date_iso_to_ddmmyyyy(value: str): try: date = datetime.date.fromisoformat(value) return date.strftime("%d.%m.%Y") - except Exception as e: - print(e) # TODO logging + except Exception: + # print(e) # TODO logging + logger.debug("Invalid date:", exc_info=True) return value @@ -104,4 +108,3 @@ def custom_fieldtypes_validation( field = data["field"] if field.type.type == "date": data["value"] = date_iso_to_ddmmyyyy(data["value"]) - print("DATE CONVERTED TO ", data["value"]) diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index d801f5a..18dd368 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -1,5 +1,7 @@ """Вьюсеты v1 API.""" +from datetime import datetime import io +import logging import os from pathlib import Path @@ -17,15 +19,15 @@ ) from rest_framework.decorators import action from rest_framework.exceptions import PermissionDenied -from rest_framework.permissions import AllowAny, IsAuthenticated, IsAdminUser +from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated from rest_framework.response import Response from rest_framework.views import APIView from .permissions import IsAdminOrReadOnly, IsOwner, IsOwnerOrAdminOrReadOnly from .serializers import ( CategorySerializer, - DocumentFieldWriteSerializer, DocumentFieldSerializer, + DocumentFieldWriteSerializer, DocumentReadSerializerExtended, DocumentReadSerializerMinified, DocumentWriteSerializer, @@ -50,6 +52,8 @@ Template, ) +logger = logging.getLogger(__name__) + User = get_user_model() @@ -233,8 +237,14 @@ def history_documents(self, request): ) def download_document(self, request, pk=None): """Скачивание готового документа.""" + logger.debug(f"Start docx generation for document_id {pk}") + start_time = datetime.utcnow() document = get_object_or_404(Document, id=pk) buffer = v1utils.fill_docx_template_for_document(document) + docx_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for document_id {pk} is {docx_time-start_time}" + ) response = send_file(buffer, f"{document.template.name}.docx") return response @@ -246,7 +256,13 @@ def download_document(self, request, pk=None): def download_pdf(self, request, pk=None): """Генерация и выдача на скачивание pdf-файла.""" document = get_object_or_404(Document, pk=pk) + logger.debug(f"Start docx generation for document_id {pk}") + start_time = datetime.utcnow() buffer = v1utils.create_document_pdf_for_export(document) + pdf_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for document_id {pk} is {pdf_time-start_time}" + ) response = send_file(buffer, f"{document.template.name}.pdf") return response @@ -342,6 +358,8 @@ class AnonymousDownloadPreviewAPIView(views.APIView): permission_classes = (AllowAny,) def post(self, request, template_id): + logger.debug(f"Start preview generation for template {template_id}") + start_time = datetime.utcnow() template = get_object_or_404(Template, id=template_id) document_fields = request.data.get("document_fields") serializer = DocumentFieldWriteSerializer( @@ -362,9 +380,17 @@ def post(self, request, template_id): doc = DocumentTemplate(template.template) buffer = doc.get_partial(context, context_default) filename = f"{template.name}_preview.docx" + docx_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for template {template_id} is {docx_time-start_time}" + ) if request.query_params.get("pdf"): buffer = v1utils.convert_file_to_pdf(buffer) filename = f"{template.name}_preview.pdf" + pdf_time = datetime.utcnow() - docx_time + logger.debug( + f"Time of pdf generation for template {template_id} is {pdf_time-docx_time}" + ) response = send_file(buffer, filename) return response diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 001cbfb..5650ee2 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -2,6 +2,7 @@ import os from pathlib import Path +import sentry_sdk from dotenv import load_dotenv load_dotenv() @@ -144,7 +145,7 @@ DJOSER = { "LOGIN_FIELD": "email", - #"USER_ACTIVATION": "optional", + # "USER_ACTIVATION": "optional", "PERMISSIONS": { "user_list": ["rest_framework.permissions.AllowAny"], "user": ["djoser.permissions.CurrentUserOrAdminOrReadOnly"], @@ -156,7 +157,7 @@ "user": "api.v1.serializers.CustomUserSerializer", "current_user": "api.v1.serializers.CustomUserSerializer", }, - #"ACTIVATION_URL": "#activation/{uid}/{token}", + # "ACTIVATION_URL": "#activation/{uid}/{token}", #'SEND_ACTIVATION_EMAIL': True, } @@ -173,3 +174,42 @@ }, "BASE_PATH": "https://documents-template.site/api/", } + +LOGGING = { + "version": 1, + "disable_existing_loggers": False, + "formatters": { + "console": {"format": "%(name)-12s %(levelname)-8s %(message)s"}, + "file": { + "format": "%(asctime)s %(name)-12s %(levelname)-8s %(message)s" + }, + }, + "handlers": { + "console": {"class": "logging.StreamHandler", "formatter": "console"}, + "file": { + "level": "DEBUG", + "class": "logging.FileHandler", + "formatter": "file", + "filename": "debug.log", + }, + }, + "loggers": { + "": { + "level": "DEBUG", + "handlers": ["console", "file"], + "propagate": True, + }, + "django.request": {"level": "DEBUG", "handlers": ["console", "file"]}, + }, +} + +sentry_sdk.init( + dsn="https://be8f804283b7a2e423209e00692792f0@o4506344044298240.ingest.sentry.io/4506344234156032", + # Set traces_sample_rate to 1.0 to capture 100% + # of transactions for performance monitoring. + traces_sample_rate=1.0, + # Set profiles_sample_rate to 1.0 to profile 100% + # of sampled transactions. + # We recommend adjusting this value in production. + profiles_sample_rate=1.0, +) From 447a0bd479ef878172590f5026ec382d7589f5dd Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Tue, 5 Dec 2023 21:40:06 +0300 Subject: [PATCH 44/80] fix requirements.txt --- requirements.txt | 78 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..8dc4377 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,78 @@ +asgiref==3.7.2 +aspose-words==23.10.0 +atomicwrites==1.4.1 +attrs==23.1.0 +Babel==2.13.0 +black==23.9.1 +certifi==2023.7.22 +cffi==1.16.0 +cfgv==3.4.0 +charset-normalizer==2.0.12 +click==8.1.7 +colorama==0.4.6 +coreapi==2.3.3 +coreschema==0.0.4 +cryptography==41.0.4 +DAWG-Python==0.7.2 +defusedxml==0.8.0rc2 +distlib==0.3.7 +Django==3.2 +django-colorfield==0.9.0 +django-cors-headers==4.1.0 +django-filter==22.1 +django-templated-mail==1.1.1 +djangorestframework==3.12.4 +djangorestframework-simplejwt==4.8.0 +djoser==2.1.0 +docopt==0.6.2 +docxcompose==1.4.0 +docxtpl==0.16.7 +drf-yasg==1.21.7 +filelock==3.12.4 +gunicorn==20.1.0 +identify==2.5.30 +idna==3.4 +inflection==0.5.1 +iniconfig==2.0.0 +isort==5.12.0 +itypes==1.2.0 +Jinja2==3.1.2 +lxml==4.9.3 +MarkupSafe==2.1.3 +mypy-extensions==1.0.0 +nodeenv==1.8.0 +num2words==0.5.12 +oauthlib==3.2.2 +packaging==23.2 +pathspec==0.11.2 +Pillow==9.0.0 +platformdirs==3.11.0 +pluggy==0.13.1 +psycopg2-binary==2.9.3 +py==1.11.0 +pycparser==2.21 +PyJWT==2.1.0 +pymorphy2==0.9.1 +pymorphy2-dicts-ru==2.4.417127.4579844 +pytest==6.2.4 +pytest-django==4.4.0 +pytest-pythonpath==0.7.3 +python-docx==0.8.11 +python-dotenv==0.19.0 +python3-openid==3.2.0 +pytz==2023.3.post1 +PyYAML==6.0.1 +requests==2.26.0 +requests-oauthlib==1.3.1 +sentry-sdk==1.38.0 +six==1.16.0 +social-auth-app-django==4.0.0 +social-auth-core==4.4.2 +sqlparse==0.4.4 +toml==0.10.2 +tomli==2.0.1 +typing_extensions==4.8.0 +uritemplate==4.1.1 +urllib3==1.26.17 +virtualenv==20.24.5 +webcolors==1.11.1 From 72cb9ff7b0b036e1e7b813591e167e5b7e5e3c8f Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Tue, 5 Dec 2023 21:49:26 +0300 Subject: [PATCH 45/80] fix requirements --- backend/requirements.txt | 10 ++++++ requirements.txt | 78 ---------------------------------------- 2 files changed, 10 insertions(+), 78 deletions(-) delete mode 100644 requirements.txt diff --git a/backend/requirements.txt b/backend/requirements.txt index ccc2dd1..8dc4377 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,10 +1,12 @@ asgiref==3.7.2 +aspose-words==23.10.0 atomicwrites==1.4.1 attrs==23.1.0 Babel==2.13.0 black==23.9.1 certifi==2023.7.22 cffi==1.16.0 +cfgv==3.4.0 charset-normalizer==2.0.12 click==8.1.7 colorama==0.4.6 @@ -13,6 +15,7 @@ coreschema==0.0.4 cryptography==41.0.4 DAWG-Python==0.7.2 defusedxml==0.8.0rc2 +distlib==0.3.7 Django==3.2 django-colorfield==0.9.0 django-cors-headers==4.1.0 @@ -25,8 +28,11 @@ docopt==0.6.2 docxcompose==1.4.0 docxtpl==0.16.7 drf-yasg==1.21.7 +filelock==3.12.4 gunicorn==20.1.0 +identify==2.5.30 idna==3.4 +inflection==0.5.1 iniconfig==2.0.0 isort==5.12.0 itypes==1.2.0 @@ -34,6 +40,7 @@ Jinja2==3.1.2 lxml==4.9.3 MarkupSafe==2.1.3 mypy-extensions==1.0.0 +nodeenv==1.8.0 num2words==0.5.12 oauthlib==3.2.2 packaging==23.2 @@ -54,8 +61,10 @@ python-docx==0.8.11 python-dotenv==0.19.0 python3-openid==3.2.0 pytz==2023.3.post1 +PyYAML==6.0.1 requests==2.26.0 requests-oauthlib==1.3.1 +sentry-sdk==1.38.0 six==1.16.0 social-auth-app-django==4.0.0 social-auth-core==4.4.2 @@ -65,4 +74,5 @@ tomli==2.0.1 typing_extensions==4.8.0 uritemplate==4.1.1 urllib3==1.26.17 +virtualenv==20.24.5 webcolors==1.11.1 diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 8dc4377..0000000 --- a/requirements.txt +++ /dev/null @@ -1,78 +0,0 @@ -asgiref==3.7.2 -aspose-words==23.10.0 -atomicwrites==1.4.1 -attrs==23.1.0 -Babel==2.13.0 -black==23.9.1 -certifi==2023.7.22 -cffi==1.16.0 -cfgv==3.4.0 -charset-normalizer==2.0.12 -click==8.1.7 -colorama==0.4.6 -coreapi==2.3.3 -coreschema==0.0.4 -cryptography==41.0.4 -DAWG-Python==0.7.2 -defusedxml==0.8.0rc2 -distlib==0.3.7 -Django==3.2 -django-colorfield==0.9.0 -django-cors-headers==4.1.0 -django-filter==22.1 -django-templated-mail==1.1.1 -djangorestframework==3.12.4 -djangorestframework-simplejwt==4.8.0 -djoser==2.1.0 -docopt==0.6.2 -docxcompose==1.4.0 -docxtpl==0.16.7 -drf-yasg==1.21.7 -filelock==3.12.4 -gunicorn==20.1.0 -identify==2.5.30 -idna==3.4 -inflection==0.5.1 -iniconfig==2.0.0 -isort==5.12.0 -itypes==1.2.0 -Jinja2==3.1.2 -lxml==4.9.3 -MarkupSafe==2.1.3 -mypy-extensions==1.0.0 -nodeenv==1.8.0 -num2words==0.5.12 -oauthlib==3.2.2 -packaging==23.2 -pathspec==0.11.2 -Pillow==9.0.0 -platformdirs==3.11.0 -pluggy==0.13.1 -psycopg2-binary==2.9.3 -py==1.11.0 -pycparser==2.21 -PyJWT==2.1.0 -pymorphy2==0.9.1 -pymorphy2-dicts-ru==2.4.417127.4579844 -pytest==6.2.4 -pytest-django==4.4.0 -pytest-pythonpath==0.7.3 -python-docx==0.8.11 -python-dotenv==0.19.0 -python3-openid==3.2.0 -pytz==2023.3.post1 -PyYAML==6.0.1 -requests==2.26.0 -requests-oauthlib==1.3.1 -sentry-sdk==1.38.0 -six==1.16.0 -social-auth-app-django==4.0.0 -social-auth-core==4.4.2 -sqlparse==0.4.4 -toml==0.10.2 -tomli==2.0.1 -typing_extensions==4.8.0 -uritemplate==4.1.1 -urllib3==1.26.17 -virtualenv==20.24.5 -webcolors==1.11.1 From c8b739cf0997b7d1dab5be3ca0687acb4cacd533 Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Tue, 5 Dec 2023 22:10:28 +0300 Subject: [PATCH 46/80] fix pdf time error --- backend/api/v1/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 18dd368..57eab01 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -387,7 +387,7 @@ def post(self, request, template_id): if request.query_params.get("pdf"): buffer = v1utils.convert_file_to_pdf(buffer) filename = f"{template.name}_preview.pdf" - pdf_time = datetime.utcnow() - docx_time + pdf_time = datetime.utcnow() logger.debug( f"Time of pdf generation for template {template_id} is {pdf_time-docx_time}" ) From 2cf307609438ef2fc8063b0390b91ced613371f8 Mon Sep 17 00:00:00 2001 From: Alexander Timchenko Date: Wed, 13 Dec 2023 10:08:38 +0300 Subject: [PATCH 47/80] fix: templates and updated field at documents --- backend/api/v1/serializers.py | 5 ++++- backend/data/template_field_types.json | 18 +++++++++--------- ...5\321\202\321\201\320\260\320\264_tpl.json" | 10 +++++++--- ...2\320\277\321\203\321\201\320\272_tpl.json" | 2 +- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/backend/api/v1/serializers.py b/backend/api/v1/serializers.py index 4874d24..c917814 100644 --- a/backend/api/v1/serializers.py +++ b/backend/api/v1/serializers.py @@ -1,6 +1,7 @@ """Сериализаторы для API.""" import base64 from django.contrib.auth import get_user_model +from django.utils import timezone from django.core.files.base import ContentFile from django.db import transaction from djoser.serializers import UserSerializer @@ -443,7 +444,9 @@ def create(self, validated_data): def update(self, instance, validated_data): """Обновление документа и полей документа""" document_fields = validated_data.pop("document_fields", None) - Document.objects.filter(id=instance.id).update(**validated_data) + Document.objects.filter(id=instance.id).update( + **validated_data, updated=timezone.now() + ) document = Document.objects.get(id=instance.id) if document_fields is not None: custom_fieldtypes_validation(document_fields) diff --git a/backend/data/template_field_types.json b/backend/data/template_field_types.json index c2583aa..0166fa9 100644 --- a/backend/data/template_field_types.json +++ b/backend/data/template_field_types.json @@ -2,22 +2,22 @@ { "type": "fio", "name": "Фамилия Имя Отчество", - "mask": "/^[\w-]+ (?:[\w-]+ )?[\w-]+$/" + "mask": "/^[\\w-]+ (?:[\\w-]+ )?[\\w-]+$/" }, { "type": "phone", "name": "Номер телефона", - "mask": "/^\+?\d(?: ?\(\d+\) ?)?[\d -]+$/" + "mask": "/^\\+?\\d(?: ?\\(\\d+\\) ?)?[\\d -]+$/" }, { "type": "email", "name": "Адрес email", - "mask": "/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/" + "mask": "/^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/" }, { "type": "date", "name": "Дата", - "mask": "/^(?:3[01]|[12][0-9]|0?[1-9]).(?:1[0-2]|0?[1-9]).(?:19|20)\d\d$/" + "mask": "/^(?:3[01]|[12][0-9]|0?[1-9]).(?:1[0-2]|0?[1-9]).(?:19|20)\\d\\d$/" }, { "type": "time", @@ -27,7 +27,7 @@ { "type": "currency", "name": "Сумма", - "mask": "/^[\+-]?\d+(?:\.|,)?\d?\d?\D*$/" + "mask": "/^[\\+-]?\\d+(?:\\.|,)?\\d?\\d?\\D*$/" }, { "type": "str", @@ -37,12 +37,12 @@ { "type": "int", "name": "Целочисленный", - "mask": "/^\d*$/" + "mask": "/^\\d*$/" }, { "type": "float", "name": "Вещественный", - "mask": "/^\d+(?:\.|,)?\d*$/" + "mask": "/^\\d+(?:\\.|,)?\\d*$/" }, { "type": "bool", @@ -62,12 +62,12 @@ { "type": "ddd_ddd", "name": "Код вида 123-456", - "mask": "/^\d{3}-\d{3}$/" + "mask": "/^\\d{3}-\\d{3}$/" }, { "type": "d10", "name": "Код из 10 цифр", - "mask": "/^\d{10}$/" + "mask": "/^\\d{10}$/" }, { "type": "list_fio", diff --git "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.json" "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.json" index 1405985..82af097 100644 --- "a/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.json" +++ "b/backend/data/\320\264\320\265\321\202\321\201\320\272\320\270\320\271_\321\201\320\260\320\264/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\264\320\265\321\202\321\201\320\260\320\264_tpl.json" @@ -57,7 +57,7 @@ "tag": "Дата1", "name": "Дата начала отпуска", "hint": "дд.мм.гггг", - "group": null, + "group": 5, "type": "date", "length": 40 }, @@ -65,7 +65,7 @@ "tag": "Дата2", "name": "Дата окончания отпуска", "hint": "дд.мм.гггг", - "group": null, + "group": 5, "type": "date", "length": 40 }, @@ -73,7 +73,7 @@ "tag": "Дата3", "name": "Дата подачи заявления", "hint": "дд.мм.гггг", - "group": null, + "group": 5, "type": "date", "length": 40 } @@ -94,6 +94,10 @@ { "id": 4, "name": "Ребенок" + }, + { + "id": 5, + "name": "Даты" } ] } diff --git "a/backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\320\277\321\203\321\201\320\272_tpl.json" "b/backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\320\277\321\203\321\201\320\272_tpl.json" index 121758b..024a099 100644 --- "a/backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\320\277\321\203\321\201\320\272_tpl.json" +++ "b/backend/data/\320\267\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265_\320\275\320\260_\320\276\321\202\320\277\321\203\321\201\320\272_tpl.json" @@ -70,7 +70,7 @@ }, { "tag": "дата", - "name": "Дата завявления", + "name": "Дата заявления", "hint": "ДД.ММ.ГГГГ (10.02.2023)", "group": 3, "type": "date", From 980aac49f9378a30798df41c39812b8a53508f93 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Sun, 24 Dec 2023 13:50:59 +0300 Subject: [PATCH 48/80] password --- .github/workflows/main.yml | 5 +- ...5\320\270\314\206\321\201\320\260 2.jpg" | Bin 61037 -> 0 bytes ...5\320\270\314\206\321\201\320\260 2.jpg" | Bin 59851 -> 0 bytes ...201\320\273\321\203\320\263\320\270 2.jpg" | Bin 78731 -> 0 bytes ...\320\270\314\206\321\201\320\260_tpl.docx" | Bin 18476 -> 0 bytes ...\320\270\314\206\321\201\320\260_tpl.json" | 258 ------------------ 6 files changed, 2 insertions(+), 261 deletions(-) delete mode 100644 "backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272 \320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\203\320\261\321\213\321\202\320\272\320\276\320\262, \320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205 \320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206 \321\200\320\265\320\270\314\206\321\201\320\260 2.jpg" delete mode 100644 "backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\202\321\203\321\200\320\276\320\277\320\265\321\200\320\260\321\202\320\276\321\200\320\276\320\274 \321\203\320\261\321\213\321\202\320\272\320\276\320\262 \320\262 \321\201\320\262\321\217\320\267\320\270 \321\201 \320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206 \321\200\320\265\320\270\314\206\321\201\320\260 2.jpg" delete mode 100644 "backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\272 \320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\270\314\206 \320\276\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\320\270 \320\276 \320\275\320\265\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274 \320\276\320\272\320\260\320\267\320\260\320\275\320\270\320\270 \320\277\320\273\320\260\321\202\320\275\320\276\320\270\314\206 \320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\270\314\206 \321\203\321\201\320\273\321\203\320\263\320\270 2.jpg" delete mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.docx" delete mode 100644 "backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.json" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 394cb88..9eae09b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -95,7 +95,7 @@ jobs: with: host: ${{ secrets.HOST }} username: ${{ secrets.USER }} - passphrase: ${{ secrets.SSH_PASSPHRASE }} + password: ${{ secrets.PASSWORD}} source: "docker-compose.production.yml" target: "documents_templates" - name: Executing remote ssh commands to deploy @@ -103,8 +103,7 @@ jobs: with: host: ${{ secrets.HOST }} username: ${{ secrets.USER }} - key: ${{ secrets.SSH_KEY }} - passphrase: ${{ secrets.SSH_PASSPHRASE }} + password: ${{ secrets.PASSWORD }} script: | cd documents_templates sudo docker compose -f docker-compose.production.yml pull diff --git "a/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272 \320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\203\320\261\321\213\321\202\320\272\320\276\320\262, \320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205 \320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206 \321\200\320\265\320\270\314\206\321\201\320\260 2.jpg" "b/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\230\321\201\321\205\320\276\320\264\320\275\320\270\320\272 \320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\203\320\261\321\213\321\202\320\272\320\276\320\262, \320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205 \320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206 \321\200\320\265\320\270\314\206\321\201\320\260 2.jpg" deleted file mode 100644 index 8a26db67cd035d8cac1e5d6e0fb491f097c1452c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61037 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 diff --git "a/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\202\321\203\321\200\320\276\320\277\320\265\321\200\320\260\321\202\320\276\321\200\320\276\320\274 \321\203\320\261\321\213\321\202\320\272\320\276\320\262 \320\262 \321\201\320\262\321\217\320\267\320\270 \321\201 \320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206 \321\200\320\265\320\270\314\206\321\201\320\260 2.jpg" "b/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\276 \320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270 \321\202\321\203\321\200\320\276\320\277\320\265\321\200\320\260\321\202\320\276\321\200\320\276\320\274 \321\203\320\261\321\213\321\202\320\272\320\276\320\262 \320\262 \321\201\320\262\321\217\320\267\320\270 \321\201 \320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206 \321\200\320\265\320\270\314\206\321\201\320\260 2.jpg" deleted file mode 100644 index 9f5145f43509c3f8e12535eb46a9a57cceed598c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59851 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 DANf${ diff --git "a/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\272 \320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\270\314\206 \320\276\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\320\270 \320\276 \320\275\320\265\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274 \320\276\320\272\320\260\320\267\320\260\320\275\320\270\320\270 \320\277\320\273\320\260\321\202\320\275\320\276\320\270\314\206 \320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\270\314\206 \321\203\321\201\320\273\321\203\320\263\320\270 2.jpg" "b/backend/data/preview/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\237\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217 \320\272 \320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\270\314\206 \320\276\321\200\320\263\320\260\320\275\320\270\320\267\320\260\321\206\320\270\320\270 \320\276 \320\275\320\265\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\265\320\275\320\275\320\276\320\274 \320\276\320\272\320\260\320\267\320\260\320\275\320\270\320\270 \320\277\320\273\320\260\321\202\320\275\320\276\320\270\314\206 \320\274\320\265\320\264\320\270\321\206\320\270\320\275\321\201\320\272\320\276\320\270\314\206 \321\203\321\201\320\273\321\203\320\263\320\270 2.jpg" deleted file mode 100644 index df7cc0fce0ea2913ad4df363c7b911b8a43387b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78731 zcmeFZX;f2L*De}FL_rABDhN?g(L#(RASH%Gr396N*t~*(kWxfCF=Z*Tg^;KSp%L?1 zmQcbgv7r&^R6316K`!YZ<}IlIoe_uMh=72*e7~q5m>u>xKhm=U5bA@1^;)#(p3iL>%ZK$%;M;2!wnZLcV55qXu0G57j0I@df|<(XTHC&!pPcY z^%~nvo1M07{ld+Cm&aGTJ-xp^;NyGn(Bb3%I1w0hGB_mSY~;D9=$P0`mlLieLRXVg zZ>FVlGcvP&xclS1+`OOe=RbZ@R9sT}wCvf-n%cVhhF7l}+eKnYN9Vua{M^?+FgPTA zKP*$K)W7}y$Jod53FObuvvZnx@YllM>(V3W|IaP^9}D|Gtqb1-y(LSR>Mu3?dtG`< z67j$KtCkw9|8kl6zN3bxFIsHad40L%{yUFew5@P-JqBBy`M%f4dZU|i6Y}@c{`<=Q zpDpah|EHDx&xQRT>yi;x>g(Z$r@x9oBVgDT!owxkj0per@n2i;Us3S??jq>_Ti}Q$ zfCxBGLR-OFqn>7-=tcJ-T^*jhYt+?kF$%dI;L@edp+&$?O!XSLTriz13ST?qMl!Oa z8vs8EbxW?c!?y5xNsfgm|M!K_)o$fu*YxY)#9MB3`;WV@P4LH|MZ(MNpAwAYg54Jh z#?X_t`8?WigVdJQkh?(7o=q_hDmc`fJN)T#*o8gTy{LClS5#HBjVw2t6T$gTZ{Wz% zONXBy*!FJY*>sP4;vHQVx1JnmTK@3*#=@)1mu}qAx$)&LbGN8(i}aOrLr$BYFoH%J zMK|>~J0WCA;{$0YJ)5zLZNSi5Y^ObbBbZy^z*3%e2J0774Y6tu9|oD&J+7vS`{HZq!();~!csI6cJ{3sV4H>u3bZsd0x|eqDCV1e46^YQLB2-;AK5I@8g|MW z(oiSW+w=OJ?!xy(HBr=U4AdvUg9K%DCfl)>YR*~)BDCwFhIU&U3H_GbjJ+16>k0(! zs6SFY)m8%TigpQ&S9(TWo2IxwMR)d6-Ov+*lt`t{LcH)2^%^)eLb9T?d3~`HIx^K zZ051@=QE3%2b!6x$<#;S%E4|8FjNxTIbh@1^nG~psP0bP_$N-3b4#4UX1Y?F$nFz- zd0iMolaY_Y@5&W&*-Mc+r{Tsd(-54aUk?e)D}qYf|3o7)!0XwkthEVl@Kpae_C@lC z^WDYQt_t}0{>A7TtJ$k#!i^D+Y+B?Ve{al=p*g23t(t275^+*Z;j7}_WUs|K7YT4T zZB4Ti{3m%8%V5BLxqGz*^scW{A}|*sh9fiX1;LI|sw2ogiB#RY^c4K4pNW*BX5N}w zDedfxG3yJMC#k+sxCB)3VS2R**0D%fT~W)(;H=`d3wi8~uq(P_NMHw=Bq0NwrSWL6 zQp@2M?&)D~03Gu1e%9_X!0*@ra=Y5Y*EKZsT&PQ1NAg3@ED~<`um@@86`c65&LYxw z|HM;ZOzX|s3GTqj;?Z@WSnaj5%LnXxhz-zcW;)A-X>2d}fN*L?<-B~3mRe{6d{wlY zw56>5_?NSbPXTW+|Gf~-VY&7s@T|s@9vV7F;`#Yk#vz@Cip@Qs8=a^ z+V5H6x<_Pp=g>+I1u<3e{8b;@2>qrG=5c2i2@b$feSnuiNqH2L#K{Vw-AvlVO+80Y zu=Me__tCw&94Z{XvPkFMB%#zHi7#H@x&`+iu8gxy%i}{ad>ry zE;Jv|y2_#JpPGZ=rcU+>m~(U6adD%Y>j#KEDZ+L%7l=H=Q@`K4f~Lq2Hk@d<#rA|m z?HnuGxo$lM^jSo!E4&Y*Ai0BKwvp#s3wjp`2Fqca=@f;W%XaMl9q2PpJEfw2aJfj} z28aklyw#yDu^7a4{t1%3@vO|+`p7rx8G+r%I;P8DZvo{RA6>q{0PG2eJNRX&EtrS% z)I=WJ7V7N8HX)?;nJnrun8&N*tO2DOmK053!tX@K2Qd4+`Gb`WH&J*i6{QUTqP?I}sU_w# z(%U%KNNbwy5suQMoxCQNV{)#Cy%D-3nGbh?J4HOw+ow?bsH(s1J7eCekDl)uqL@V; zdgBfrc#wKv(jXE{Ck_iWp&-IzimTxBs0J`eLN`UvfTnmgKRe`9-snb;{EkZ4BMhcx zyYX&tm_tRqbty+aK->@{=$aeH4%%4cq-@AC-!$aH^3h9Hm7=Spnit6YG#yD)*R{+~ ziJWe-H=y6>o}zJ)inkG+*q1KMI7Fx+z++Rdl}(ktZ*)I>sv2QrtNytA6q=EINm@1G z=~9)-a&OrnKZ@LH7@A+VMz~U_$d=d9Z!QudHwrgPTXdXM~4s(^*LU|7a&5T1YX+1kaI`j zm;Kf3F>zu;rUxNT^BV5GO)BTD^S#!TTCS zB$o{XLsgJw=#Emy{HBlMTrrH&`s@5%kM_*%)tfDC?FJk9)9$cTqlM|yhpOc4x6fHy z;O=RwGBlXi8g7N~Z*Lr`C7R$#;ko<<=Un;w+8j@{!iW1Lj=G*^-t0)szO19pg!a_t zkoNoK1a=*xIwGc}rLt=rpMn3l5>6tsrPSR>cbdR#0<#4N%3_m(I)s@>EOi+OdKO)1 z&FxsIPOlrOv^h4AK(hB$#${(G`yVFie+*$isp@dwm0~~l)8#OaBRAmK@5ZGMN!w%j z4Z`d?+Hjs?th0Iv@M|NDgl~hfycpzoE4E`Wp&+!IOR{nPo`9J{1?{rLOo1`9-EJnMkfwW# zSwm6BdZ=H7`Y9R9pb<@yu4-;(_{>Rc3zXOC86oo4s}enUKuq4t_sF#h|xZ}is=B+B|?YGZ|Om`2=n$L zAqt}I{+KVl#-yxQPBVSMUHJRX<4yD>4A$PBDwQ_*qreNXE;#FgT5P^wNx!_1^^MQ zpkN&y)ZYl!#|pM0+nZt@?<+;u=`t~j3>Y2)p~_u7lrJ~kE=I^=2Xn-R`xy4Qn-~)< z`?ZmrQCFE9)L3|Q6CtJh5&jHcPOS4HLFOH%d%z0PZihI^bI*h(!t?Z7qozaHy13Du z&v_D(k?6U)GAv~J4`JiL<$n^l z!(*s*a>rOZsfL!-9IW*m|Fg7{Kiscz*Of9WP&-v+;<3hBIC1)s_G@&FE}!D6U@i?E z1>x36o|v2-P6m(4p@z;Q+j4h#u#I|9*G)HqV+FgCnJcg1C$>lc8m_Cs+}It3Tad)G+G=pX<-*)W1>b_@-0!Y+ zODZD)Hz#UUAn5r_w792A3i;790?z#RT;!CD7WkaBE=P{CWmIt#n# zeywSpdt0tQ)D70~g2z-ePQw>P_1%7Of_VDR$v&P77I z=Rjll>sY;6Mq4%5>YF(wRNNElbMTau5lFSk?hu+$yq`fPZk$Zvs>)-Fgb>7lC+>E@ z^GxOAA=WBb?$b|UsB^B+m+6{6hTFl+)aE@g%u8jAuCf@mJv^u>+p^3sdy$~1qJEXF zn4j8>G_>-UHyb7^g(IXklBxTfS}#t=f@nf$iqh5OVU8w8SCa5{Ss2~7H@q{9VLC2f z;x=P+z%F>)Mp^@@ysqt7a`#F_lQZ>)8f zCt0#5L$G#Nnf463i*L<|=9>a%F}7<6U0+&~rkXYk0lUjkS7>vpmip(siYSU_Pt5qG z9&7H8Am}#fe&Sqc3Dp#Uc_c`A?jAfNaxmy+8^0|9Q7TiOY9=!&7)VP%XE-ok}teS;G#~?Aobzrz0EuFyT#S!G5Isu2@E_Y zSHhLKdCZ67)Gb55Bi8rgQp)25rtnBg(=n-A_SU^rZ}?Lg4nAIjd*lqa85>Ana|AXN z6W2g@#dtcQ#KAoE=IgL;+akf@0)?R@+dw^&0vjQm@L{@d(zbXk!$uOm`GvIERC7y4O=|18A%ZFtuKwpd)+}@KEv6gv;C*ve?g>@ZRQ&Dq4EuXsPlo z@f65rD!Q#%j(HLXGsKjaSn`o(F=t|KtlJr;AKX91^68Dft=E8%F{1>n5nV0Mb|8U4 z?QZZ+En&PQaXC@(Y|(L~R8&2z?ewq!-J0q_I}v9YX2l{F90Fyk53$TF_6B5go=19} zKh>CK5^Zbxr1%uIPE`=Ly=`uJEA<5qlj*~D9YRa?M(pPh`qYe)lghWEF6~s%bCRTO zd~5Ve;9GpvGe{gc;0W_OILkQgErYBGMP=Zg2T`I%DVN-Qpg7K0GkfhURe<~Kzh!V*e8nEj)+H&FzPM2gZ)(>>x7~@EsO>L>7~>aBhLwoWwVt zGYL|b+*jFOVAw)j#k`o5am-igZ~Bjyb$zUaXQ#%~yZwc=(q>x1vujCCSuBRuiuDB& zB*Lq?JK{U_8kTopCOxxnnM#_d+H#V!0wt-cji9)b$gToK3MmL&RoaJ)1q{x*5dVSP z8{#Q+cvcc6rBtTPXI8n%iL$Qk*Qc4`wU_p?@jRc77Zoc?`hst*;NV6v@N9PC0~pxl?%$$WRnlF!xzv4#cv?J zF_IN^HK)yGyMnKj=WwSY6(lRx;r^*Qq0zg%MZ%KiO^EHD92?~sk8}zX{@MQ!r#9Z5 zv>bJU-9pCF>%vSs)B*j?Hp;Daj!cjA3U`-Q8-W!_#8!y36!y0*>{? z)U_~!i-MoDp#l3nWw?8|@?r7nA{YIEEZLg)EhlW^A z%5E;lfw~fC#Z)RtlG{*>9|E$9dxLVk0`x2QPn17w5YMa_PjYyjlA@w<%d0%2->Ur` zjJr*8PDleh^F~(h-@DtGJVMh@1`@*j_V?p}Xpu1dY>^P!dj>f#>&S^jq{@V$@*=v9`phe$8qr7C9( zp{6ihF`E!AumsuP)$@tX^m5i&kWh-RKZvPvp|!7wQ%uKx7JoM`aC*hDj$H^!8?rb5 zW5EZpE-n3dJ)k%_K7Pxx^h&Ki`>o92-HXU7tcS7GEwq~$>si99mc`1gP{YzwACm;! z5>S0|Xtw2y@muzq%Wr*s`zVI$2SNXM(QX+C@{a-3GzFjZFV zs~o;elf`LRLyr-bz>?ekeGF|4wl?-l@R(^Y8&4cH%obHgsSf3Z=5+*yjAma|9-Qs} z9$Q~GINOx7F5LTR2<4%DP&+xtVFeg0ff}`KpGQScSzaIwPogxlX7>v3_;?j*DY_qK z<(3A+?}YJ@SD&7&?Cq~}u@l>djq;zy+J@IDE0gyl%kHLJEuI)k+<7hO?SC8-X!uUJ z8q+_8dV^H>lG-V?nZZ;rvq}2$&LIcOA$N`mEr+tH0+?RnwcXs!FdSLk-p0-Y8MG>qcw6Irb6@xhuME0C zTY{d4R}FNhvaUV?=jJ8Ub%lOjRIkt@{RuqdIET%H=PAAqW0T%xJ`FPt^Uo&`-w>B@ z+Log33gP=W6=Ui}g7!c|HgyMU9}cD?wVU6w`|@YnR~#eip-YiY3C9XOD`hz=X{j=% zB->@Debf=8`qtco(Bp{vOioo*!k(rSlkM@QcOD0SY}K!m(iEARLMpGTnrD76~VT(6fhKk71N+o0Y z2Xr?~Po=J6c{U=}b;VFzd!fYuB@!_XvaPC7@vYEyC#>Qq%rxY`>jPUGE7h-vk@q`{%q4Hhd% zS1XL~eiIW1QP;8C@=K@Yamrxx4=iFuoVD$*{5l-!XM8*Bzsoa zz|>`4rjVF0vkFJ_E(-Z=VQr;!`T_EVY=LRYItbSaEhu!4&Tb+~gQYiS5{!9EP69v0 zZvwaexs3?-)`i-Zq;6CrHR}K{@4{aXW*ykuc_Qz=SHR{jc zJ`ThR1t9Gy*5|OHL5H_@N?U~1K_5v~%ufpy#vf?P^m2zh__LU^0K@FzxEu!kJFm^VeoS z1Sy5QjXkX0xN@NTL9mYfbLn9?ET?mtd{sr)Y%sre8&WAC0yGPXS7@%RF>&2J4Y#wGkJ+k!>b{eZ47JLL`cR^r&%U6;*X#fkz4 z;6zC-&O#V(PUaZ_-@tzMPWgn~g1uI9wW1+w#_i<8Ue;;lYWD}x9|*~$siXLw^I+lB z0j+OoCtVK>=ZC>ca0n48Z=gE|C@U_-Fds^g2F=YrPPAP%Lm$e)*2P`~e#-9a3H}?Q z#5S7AaZ%Ebo(Z|d6%%)%AJj(&O3&!2av3-;O^RNa;h}yH+3!PkWmiHnsiv!;PMEEU zsUP?a*0SHr>!Pl4Vjr;MAUuC0Rp$IMx^jqORA|y$ZQj=zm_iP`D-H=SRSI$DI}9aw9@n}_Tkn&}+V0w?YwyK`9H>H@~dg&9pR-c6`J z92Ti9J;O7V1=FE;S8Phrx5+qvnQs|)JZ6Zx5z!yFPHfl}l0rD7;(!fb%SzjY8GrXH zd$dPKA?DYJR3f*4M!Py+qFV>%cNMztANXB|SG9By)0+lTEy&maz^ zDJrslwA{4r?WI;*{w<2#SG9=8?KycSK|f2!7b|^ z8Ee`H=6Dv+hEC1*FgcsiPO?}e#H?=iSMZ2&A)MRQRC_2}B(UzM>`tkKv=a7OB>cWo zZWX%_@H*mgn?u^8@aRUDp%;+!#4V{InL7b|R z+NHs%khCwgaX_eHgCJG;w6iEbQIZmiNmYrW98-1h(9pbSl-vMUELh^D?$a^ilFn!1 zhok`1RaZibrkSHYEwG`4Xa136oWNX;ZinSrbAE4~G*`guLLB$|A0&OH^o_lw|8R}qOueC zH?d9NNhuf_Inm!X#PV0X4HXw!zPu|cv=n0R34i{rQSTKh9`oTeOd?pv;o_9KSpo@X zN^26Qt|Qr@{k-8Y>2P`IIY z%B3O-`DLLq9p|Bk7-j@k8C-)I{f_Up`H)}@1Lqw3DLdUsAe2!PaK9LOz_twkD6rzT zv%k{S38P8Z`PLKo~qV0?%AyZ)drKc*9OI*wn#;yObW;s6_?32`Eo1Nw*7~g|EP0 z_G7p3{AceGT-($`64@r^pk8V(J8``&GmYiConH>sjzXbwZ_0m|_w!S&gXK=P3x zfg{kNr#;6TY=RIdSuAjrq8>#7da6+`{9G$p&}(o)y9)Fl0CyD(0_z{3Ny$hJNu2hD z*-WEozpF4)Wy7PL{rg1L&N=(ZS3p18@iVAP@`AzrBKAA{^oyvj165NOaB(opmYsU0 zu|tS6Stb)#6l=MnZtw*YwLFej?imr^{-eWEI4b)*)#-rN*!QB=Ti7Pd>{ND(NS5qA z{>y4HGgD|W%QSoy1)&WEGuDp~Iz$`7Ad^j-1He zJ*mOg_R*d@f+tT|7XjxPI35O1O!80nP}WB!K7o!)Z0VV%uk;pD{!`2jBvTxx?ZfZB zd=C48FY$%2$QLLO^3oT&Pv9G+|yI$#@oBcn=K9=)jF zQ|RM_Y}tz##Q7AwG=!U33J0aFd;SW^bGK+*n3<`C#O=)@c6!okx)PU!$!m*vZ5|kfw6svFPG{uJkiLwg}LIU7-6lZuFQoe zW|}r+)`bc!plzT5R~`T8J$|IV?{aA6rB3!1&$Bl3`8O47Y~=6>{_qpJuI4h{%YVT% zkM1s+aIicgT=Q^X?hR^V*pbZ73MYb~5*9I6MKknBF9;h<=w1u1bo7hAgGS>WXx5B< z3gh>ctl*2x(_0K{@VwggwJ^f?khvow-QWBJhXkCIIa$#d38`DmV5T|vr2<7EB@ zOqCq7y|Qw1KXPR+_5S}}w@rg2h0Ed6+Z0z7&k!p8x@NH1L+wwU@k4y_vG}J$F64@c z{tMLJ#E4Cmvx)nEHilg0jFW$2PDv`uhktF`RN2&_=dH{WF_yCIK(a!fMl*3+&2on4 zmGj(M`3m4HvTjI9`#q0KaeX{eT$uB4{N+SmqV&ah$bnnmjW3+I`+;J6R{UUcot~_(8m^ zZAtc%26ob$k!mjM_~YU17C-;~ACm7D`CWE&@Ne$9|Ngn*ZRj($q6yY^$n6ryvhAH} zLy2%H>$DUzfczBoLN(DiM!t->{nH$YTVJ@N0VE^Y`>1X>c`%OZBSGyu!Mu3hI=@uZ z#5ekATO0Jx81{NtQ(Y7+`F1ZQS;ByQs)rW|61f?A6!AR*@{kK8>q)*1)sn^N{bLtr zxx3D>J&A{lMZ9WDui6ZiEIYnHFGACujLt>5;N7Co@)YMBXCpKUf~RvI;jB^5J@L z&M8~*yIjoR+H!8qo#gUdnte@czQ^qPMn~Etv#oj)QaS9+7(N^c|KiEKMcp>O%V8Ok z*lr)%DhrY|>s5}2+rTz$JQ+#FoAy=;Q+wV6UTa9Rr}TOPElX~l@K>{Ug6ec7Bs>DY zyN@GTQ;90{qzn0iyBYE2-(BPT>O;EQ6gzlK*>D|mM;QoH#7t+boa^S=5^<2cS}1yt zI=ji_;!37!H}c_k{!P?CSx}4=Uz1if+eNwO%;jFkLHjN1E1#pyC*U{bzvyY|{^MAq z|4SDdt6O^*B;u4Q3CH=jsCL0%{zUI(rsc;FtHJqJo+Z|syAW8QD()p_&8EWrZFxH; z=U+li^q$JgwF55V!1~7@9uANdFPaLwjuX&jAR!XR5LDg2Xo`OcjoGHdAicp?NJ6^jNjnRzpFZhd9atgd0c4WCL9sA3J85{n;7}h^D`8^ zOK<>5Mpm)PRbFJ(?RyH2mDhZ0wJr7wE|ZwVvo5Nd{2hZ4(slHJva2Om2b_aC_`_pL zns{dAB*TL3%<@FIsls!1cz1-i=QC_8VB6m*APsKk#0xV=Ep?C2=?YQWLv&B?zUkq^)=6OmOq|Jib{~o!3SJbDVEWQ`FHBjwYoBsk)C$9)wFut2u2n z3)NtCI#oX=q$Jgli(l3}bq;^p?$Xm(8KbQwj^1DWiMlM9WhG_rkT6v#o;0q*)4c|Hp2~?Ee}M}Fu9(qQC0!OL_Vk^q zBTw53ji#x_>`qyIu5cx0I0Cfomss9-d|bdo1UI_y(n+hr&~3LO2Zuac<#uUX^wb;UesmG3hhDxu4Wp?s3&pVa+D^$Y;qXm7(-coUQ2${ z|Cg?ia{BKE2sw+ZE}7KrcyCq-V~-GTO_r{S;-U@pc51~-a&$d=C7>z%8`@Lw}`Q9$etT!86owpu4K=^)iDPHqQX@b?yVY-N{54@Gq)XOD}DdhI>rSMR; zlC(0WIwiqndh%p6mGrWIwtQD}OJQXiZ z%He)=?}uOJQwVaB0qJilB7Rw{R{c>9+zR8xd8T_k+zmPAX()Wf(ZNUC37of+{ND;U39cV0XPWbGk#PvLT1p1=_*RT@rB;&1bgfzvpr znqVicVBH%9M`qC}uL;VUWf;XagfAPKDnd%`s5u7jp?r?XRq3vJ91t`|DL*id;~q9^ z-*Vs>K$u}Wa@tNPLBcckd)ZpNL+0|D4{)@r(B0sHs`{2^H#Z@>sar1uh?J#Mlget@ zKcTOnQTj6Ph>{q=9uTIAc4;WAEx}@EMvnDX9ohKt|lJRnJ`soC9cZ$QGU17S1=o+mX==VXaB-OVl21>gWeNm$| zUwb%aYvMC7q;1dN{*Yx~QCweRg=Z#~Nh$P`zGyw3>$TuayoYM2+-6Fs$}T6TIxGi| z)a13{C((oH@id=QC2cx2Ub`7I#_#`gOgZ-x!xUm0KNYw_PsAZ-Lz?r6*S;R|dlDPI zvHo@cX~M$0G0f;*(Fopm>}GG^w0TDWk4v0~EE>437V6VPIke7W-N{uF1zC1jtGOVM zx^?EFs zIjr?%A#u68Y!lv=6t$9!AaBgL3+AYH73k^|#Ov}^6z^i_@x10MxVwD?RlZ{Y+YHTX zTHzo`x9xbiE#BmD4#I+_DsVyC`Xx#PnaZ4qV|nz!I{QRPV`O2$69{@AdnLc-T2jz7 z8IQPx0!@7XI%%D7xIi4#7%80+YWK1SoP4G1b)5D!YMsRa-M<88?6-1j$|VKvG1>pQ z)wWp3ZBB4P-AcI>m&h}P>jo-a<`^r%?XbW}`iU1ee$&5Gi=Ws)Ok?i#lF5a{smZHe z^)Ix?S!Z>5vo&OiTm6j%eDO|G_siMRF9Eiu2z(cXzc`~K+_<;2ch>Lfw*KQc7CwI? zY~)VmxfVZMMi=qGcGEP(LQTgj%ndxgYjVpm}#;HwyQF z{-W5Vq8+GL=1It0)SAa$JK(~WGRYZpDFHvnZ+i5yesJS+LL0bPQ#gft zk(PU8*3Rh3Kx7@s{#RW(ZimLLHM9#P3rxgb)kAiVKduy{7KcKoSq!DWUnlP4(A-a~ z9B=eZC-hca{=n=o`!)KzYsuc6wy=l20xwXli9lwiK2!so{J6<-*Lp#XpOsa0NL*`T z(jSkCSjS;b2DXlMrhk@X7V}*gu58)hm@A5-578vyI|rIqDQ7Yo8#1V0KyjkR!7))m z{QmiXM%*X`({P7Ed<7Z>b6cs-AQ=993M8w#?ODfl>6fS1G@rOs1U30(D`%!#6bu{I zQE;LxPIe-lZ`Dy=juU5k2=OL*Q9)ZdA-f=a9GB;LR$z`)y|({QG{25?2#UarcqJd@ z&xKRYT0cAkEfO**N7dw!4KyOa1wY%nfjzT9)O9>1SWmZHtVV(+q) z41JoI4~G~t46qKqkubj63VYjdgyjZmlq3r<`E`#QGiTITh)C*F70H$7NY=wVBRm0f zDF>>dtPbg6|HI3hot{jNuBv(7s13@Y#3`OykA}7ybIfRp8c*hR+%Jl|RBC=<)Kt}! z$8w02I7Hqyt;(dNq!fQ_Yy%{%Lo}n_T{7ii0(ZxuzhRWEd?w_n-vwrGr;x&p^3&fy+f#Y=At(9`l$>&t^`vj zJx}qMBveKO>HalKPRB9ed4Ut;vqD&=&CpJBWXId(HBr1{%SV(?LryKU@J*P!!@S5!ZPhP+*gPAr}eP{b&mvw zAi2}#n2#n&F76&qRgSgFGijE!+7^R&^O^ndWb`7zZh9N)s0z*2K5gDt2JI1Vb-#Tt z?kN;FiO-z6L8X|npMt@~zsBB%IwNCv?y-uY+5s08VhC&xV#Q*k?wU)e|7`hxFelHQjCZinX9t?ahMt4|#2 zqKKy}sCU&od}OK6;I1YW7K&TqT4kL)R+!UumJ_E83Yb(Zd!Sg)R55IT-GQ3azu&{1 zDf4a(*~~+n#4kYT-u{G2npk$Gt^C6Q<&Vf-!xL&caAr3tdD#on))q(29&lgH$V^&m zyQ~y|<^1qdJ}(;j}+%1Wiw%F^Okj_EnXAgdZG` zsw&`H4MTfE`@iia@3n(nF=LXFl(R6?#x(wjC*w|u4MG%uAc?UZ$b|>Wh%%^$wF6vz zf(_CvIA2_0gW!zlQuC=jx2kQM_R>X zQuWkdaHysTuAb^leu|pw9#gkr-L#b$5vmCR-O7~B919uN&oM(uu(Z`-oe}hb!)-z)D*4h- ztSf{w?d6f_&L@IKqV)mQhbVjq<0#Bk+hn0%DwhpWwkqO@;RrE`T?#tB{6MNS%*3uNOR-r2z?qcTM!$ehlNinI7x0-dDM;~$*nn4_` zUjWRXwtzboE_EGwF4Fe$%*U|rtxD=PT;g&{rLF_H-J)H1XD9VE`GoUp*Jmf=_b$o1 z%~3Q{^>GU<=T?YK4kwDUdgMLJW{?)IBQXYNX;xveew7SNQb+^#a3e-qSznHOAw)8V z3Vi&eUp;p7+kTY4O5GOXl3Q60T8DqW+_L8wVNPzxX*<(w2Y(I$mrkoV*RZed9z+s5 znX)ELAVSY%c~y_Zg+$$;Mb8WuNAX0321YW2n|R&kQfU(r^d9OO=tI!KRJyb-*?vz) zKAHQ|sW$|}VlrxF*gm6Ok4c1e=B!Oa_}mlT#Tt8Uo>X>Hj*^JcSCZ0e^<)qYGuBgbY*0h+1ksSLH~!v`PBms-0+(=? zF)a_lXF_k^Ep5PUw?veHFu0VkCs0TCVW!c9!&;t5PTE#IM>3zZ<>8$Ceu{k+JsvUo zd~k?DDhJo}f57M5tc7hj9iFC^a}5<98FeWU_yxA0Ma?Yr8s#EH(WrCZTo_Sv1ILX{ z>^DifT1w?8rMLM~+%t$PqPl{}t5p!Mb#!%sSb8PU^C!4?^hFfnv=8yPG5b%VBhro9 zd~V0|fiv8xrWR{m<7}*jR%~;umtonwM;R^H`j_Vn8j(2dq9hGVC8PHDF9=qPUxdXP ztJ)CLcbbVkU%%|R>=oxXP#HgWaw>OLf1G!n0|&O)sDq}T3SWHBGH>dk_!&w_GP$y_ zQoV(`zOyPOdL=FF@OY+m3( zIu2Lgn&p{DmP@O)pPvH>Ya(}!_k^Ary>^w6jaO%!FvZCpvYNk&{Z6`#cFz9{{@Vm( z;dhWck?XJEho9;11(O=tKo!L$stSq_;XakQJ#;`Mr|5!}oLrRG>`k7@4{C zPhj3p@3T=BJ~GJ58Wkx%=ti50>_f1TZyJ&9X{Y0!PGp+CNG`edU85AWR=0-ZZchor zdXl6^iC-%>VsB)R25?4wbiI)`Grf--_sbEblQO zDm$7=Vx+RF8cJ!X6x|aUmw0KpAx(=z__m;g8JUe{k-*m^_SL2wrl&8+d7K!I{>L41 zQBm-zk4I4}z=Um72D~iy_(0mqkO|M5)Qv9@v`op@e;E@p!`(E*I!?RQ?5pw%qqQBm zMjQ?Kzcb4djQ~%(lcfh*)ZNR`Bj7&#q}{<4WGhT8#P~ddM@~WugrGKrTV~9)cmgI8+-!9PQky850;YB zYe`0Ucj_DkGuvo27+=x7!l|8PYQINq$yhs!k7JA{oo_tVc#ofrrx?=6$%%Selz`_` z`?~+K&d0>XJvnk9+}QtgmAm(MeX-ATeEg-iKJQq@#bfrYaQJRVzEsRK2h|GS z_UU9X-v+bqgzu{O83|;=kDn)nX4o3v)4P787_05S9Wn70JFK~T=oSCatG+ttg6z=B z&B1P6KjunuS_qe9jH!Lv^&jhHX}JYjPnJ{ti$PqCAg-OXCczowH7Db!WO!MD@&l=j zx?yNrm1C|HpDK1KfxO!TlkDF;GU}2*L)uoZ1uOGth!EU1G)K%G@hH69X!R}PNN(z)_IABbxA;u6aaWBe`uj>}&);Sp6AR0qo82g(pXW1#A&bFF#%>bvFsS{-SL+)6Ttywg0|cUY;Gi zcMIf*tr*doqn<(-tHzUbld|f56+SlvI2906Of2@}sO<5^Ub+2FB|eAoO?}88k1i!V z>kzJN{!-=7Y#&{6>%&VZR1|V=D6PmiY*&oS`z3xv;1o4QE`c~9@B{wT6WEJFR?!Un z;ju7yR-oToRT~!CS_A%^QT8lNF?!T;VEtBd`sIq41=4#LtJ4H~Gu@Azb1&dT z5v^tn-GU>8N_-fG6Gb%x;h0rFscm$%cB?>3)0p0d-39l4>nxiHEYqwv-R5pQO~WV` z#v1;q-;UbgZaoC7QPO0ks)p$kS4+k*CmhPU5EUJ1O4_nmfjL~^U2a4osD2L8HH0c$7%X!}*TG(E$Y$0h*1J?-U^c5!8buxb? zdwCzpXNcGCLh|_=JFZSh*%`g@<-in5d<h$xG$YBrh8>;K-xi?eiT}lTc@aTH66=XQR zzSGMJv#)>kj9lpwc~d{14mR_q?0*9{hGsP3Ah>)O6skLeY%6cKJn^dzwgQjJz$FIA zi;9S;2n%m3i4mGLA65EWbU1kQU!JXhiO_FV79-(x2A_n9iJTpVr7^S@rBjuUSUzQkIgYj^o-eZlAqE*hIwy2)h@VNS<5wvdu)3UwZMJ>Vvs>Q4V|;@BI+ zXTD7nZZ;V3y2MG8;?dpDq9W)K%uJori)(fKi9-E%uv_IA4eUK6miDe>gar*yy6Lm zlw5wy(sgSkW2nW925*1H(oxdiyrT)fy^sj|X5${JP!SWJ-;1^PQ1p={s-I^%1grXL zUqo-KsHItk#pIt_7`(NkBB*aX>AHn5W$& zH0NxL^J8ZAf9;F=)&G8Xzq()YV&=>_=en-%_w)Tcz^#nyNl&XgQaEM>j=iJ@+kaXo zH1g#`FIcmca))3=Z<|~V=8GINvq4ToU{5k+?ODF}AXu4=B_Ogt}{B-Ui-x z&*ok=)jPj8G(_kHM--N?+!GpxrgtP&##FeK^7r2fvC|h+#|7uQC(az$Y9MLW-Qh*0 zxkX(-RzgigzEwSG4!OeV8)q5Emayv~CVnhh6{2~Zd=Gfmpih>Z^SzlDKJE$;F52Pl zC)Aleo&Wb!=BjkX07Z;xj&Kp&)7rtNAAGD^bK;xRq2(0=)6xV=YdFAKSv|HIan{#+ zW+JyDE?UAuIXzb5^;4rb+&c+0IwU=OtgN$u~qzvy2!&wt{$tjU*a|n z(-jtQbxk=rCHhLdVh;Ls8Fz10XLi+->0IlaTNd}9$fmE^6FS>kem2Sz(=QX=%7meR z)F~a3HPNVd9VvAxw*#+o3pvY!arp@eDN4Etx_VJT$mW#9y8UOzBm)+l=|GcfQUW($ zs95t~G<2ur=<(SfSNxH?jG>7tHo?E^O=0zHKOB4rPM3kUT-m2K17Hq@dY}ePJA*(O z^X#=BXy&5}L3V%iI^fT}hQ;^gyfvY*#;04`0{!7XvbM)K56%90$H)Mb&wjkiytxAl zuXx|7Gg?aDNOGEGwh?g}$h^a=Hm-!WbFd?&PJ3o3Y3B8^nSI*phTyN!0yfFf`$b2^ zC1(!eH{bsI?vh6beq2%hkAc>zN@F{U^{qhz&gkyz*UBhS0f2c*g{nVzM`B)-1-^jU zg;){^aq6W(txexw4sz+Kz`cBlFmh&Z{?AU5b8XHm$lu+);o&_4U$!x=m-mtu>#_KMbQz4Kc%Uum1)KuxZpq)H*H9wjq>U#TBcC|gG-l}pHVsAgCoU5Rt${S@#@ zTyk{C{PXY9__D)>{ghUXsqQW{O_`q7Td_}9inF9N^+fKJbevJLEJ@&)Eo9Yw1ec&C zf!)!7QWrjQg?oZK{ESp#JUokaN>AJNKqe^Om+IqlQQE!ooAqd>#zL2`y_BR3>$j%$ z$yQQ>5>${SKA#%ol0$Pu(?ab;xkQDg68`T@@|lkpLiW&OJOpm1)Lnb}*B`qK-)kLs zG*)}*(xK~yb@lol)=PTMHEKdNsO}a8W;zcgQNUV3-2yOnkL=wgK?sr0&fW+PkrY^U z@pJ)p@{{d0dF}VnHUnFYtL`U>zZkn;2G)4&yvI82af#kz zMtWYB*<3d67Of=bdp13yuzO1%+kStlWJ#8ncvc#a8{NLXhF9HDN^5ZV>+w&AyKJa# z%bWFmIAgR3kpJ_+S}^3=p=4za0^BX=fNeI(RJ`_u*32>jC(uN?=m)bd5a(F- z(~;0XqHKNSKL!n>yAvav#ea7ABt1H8IN$L9g+ya4H`ZFa=uKRZ63rws)yvBPFcukb zRcUM_SaS>snPn^U>FZEN&&^`irg=B=nIUSJ{5!N%3JE%Ypqs{m4pZ;+0YL?V5bkE6 zhSPu9G~z{H^HC&dx2R5W=rRtG6Hu1`kt`ccRB~_7OSM^ zEcM@MW}0fh=p50TqRSEJ8GvCp$+J77m7u==0^Jpi6pkrfdXERL3f_Y zTn;``Z$IZNcdz}SVg>lBe$3a!n$}%clmSR1CpxNex>#yc@~oU<^fpP2Zd1<%BrDa@ zxWC82nf>zk5HE&siv?fAXX@=cpCju0K8nk~h;}aZ>X3d96+lpV*FJ&ma^kD=!?<;^ z?N$`0V4@kcjY6cqa!XHgTDZgH(>b!oxfMvxrM}f*+inbpySA*^4+8} zvxl~`aACLpOYkea66tUMfJ~0WKGFZ4I$3`C5hhQQ%3ylb?`~KxI|BQScCxa^u)(pU z)*jEON|L*UBn$(30L2=}}wjrez4;})uE#%HpkqDj%9{H5Wwv5@b+2$!IZ!hZ_ zv4Jr2G)h+z^Pr|VN#13+wim+)#S~ui!rRC04M&rel3Bqs>NYf5)o&Y<>cM~Gba;g3 z2IgJ|0PZ;~$K-lCcneCPb^6U8_nCo7h_N=XQo1R_?}&x~Zl*tNfNuDY0lC3e^Ar)~ z(@fCe?ow|NZ`?z96o@;Z4Zk8Q;;l4!Xb=o_;UFX)pmQ+e)UZ2k7s*G)_Y1p-7CDFt zz8jn`bBN=Q^V=sIZc+nounn$L!P$TN3W?rqE99ZOYIAXGK9(}OF41r(y-PERA>_!+ zh{xbr2uP+bk6=BJXq87chji(&n8V9vZRW1|K(wH3M2Ceq>&#yyz$$}EuySTAeSrbb zbAu$A172Rrv*UVDjO5JQiG(cPi)2B(nY>m6{A`p{Sz1T|a60O#(ZmU}BQRqQqu@#R zYVN?-SxWLc>h=*2a)TF8+Fn-&plReQivBepl9z~gz1DEvKzuO`Y8vJ|#Fzr#i}m^E z0P6iqG?0GD)}X;%#(GmPI9gMU2Eb{WLfCqd&$QH90fpcu1UIZo?xo*;5i3o;4P-%0 zaR9j-Y@nWH3Q{Aq`y$u3!I4!8rpJYnV@)k(7Yyb);=u#XLYvaT%Go*$sL6yCA7tuccA;X^3Cdt7GWkvm7$rYR=E6pgv@ z%Kh_Z>E4G&B(htLz?cG{rE zh-tqnVv(6-Mjv}Gku&BtA!eG(;_F;5v=0cQuW8SNS>|=7Vvf|?N;7YNj$}V+)o&b% z#|G6r@Cph_%+ES=BjLtn@^|;be>a>n1CAKK6*Qt{0wYZ>>Vx%{x6Qi}Z9Xtnfa6tD ztLS5IkOkFHE(~94N?WMlt9wEVI6aJPw?<1B#QIOGu$VzvkkzA%)EWj7tYGD8jUH>y z!7`@SL5ayOUASLd^@y^36mcwihT=nBjF6p%0k>ba?(GDjIxS(mlstAzQ~RUEnF0QWtrD&U|{Z zz^DK2eBhk1(j{ww!eOmJ6MFZtFw`T;_+5#*lgfyILj%+#dX&N;`g~I%$<0IP-BNmf zejqYjV3h%EeBQBMG}c;_<5Z}Y7Y)zgTIsZwDRY?1GC33+-H-yTi>C{LYv98oJ^{I`>TPZC!RmImz?AUes8kC z8u!&4hZmY{OQ+^MVDCUqyJP{>$m4`G#FxKLl%OP%md40-T#$F3>Ziq`pM<9^r0~JQBTx~%q>U9J&h8%2yV$L=cUc93P zR!Wg*lTg}|T}vnVW#3ZN5iC*KO!(+0>)oEO(~|>A|5k2X@OA#rivL0!V3e5Dh>`?0 zJVP4HFTLzFuc@^eEuFN^cWUby#UDeh@h z%Kp^{bWQZ{ZpeGlJXv#p*JF4?YOQ8BcMm{@Go9cOAGUVukJ^Cc4N}33S=8Dp#e~oi z=X~j&ZTDV(C0}*$p4SS)4}kbE3NsaVX&cIvwnFA=)W^diToy`kkDx~m&wtQ{B-O-( zRO}pa)8an=URM`%MN#g12C*Kw>3o%Oc$i}zd9XdbU{rW;V+g*PHLHtR(gtgz(HIw) z(_2nb`o?IZD&IxKy!^N{S*0j_)D)~`KaG_X z4`hVF z);V;2-Y@y6#El)V`e{>hMD&T#s;k2buD%a4tb)N*epO5>*Lm2Bo-ea#o*;D74!{8d z51Z*$uG?Td2V+4!iWV=OrTW0fny$Dh-%aaxA>%WpK(BqYEzj?WF#g%J>iBK--1lUI zo>6)nYpm{Y6Jk+SPfbNn)V!sflmv4TzrUuKRPR+Sw=O@L4w1fZc=B-=_sHqRaI?-f zaMX)bwwxWfe}2LvxN~oM*{RN-3`{r#X{P4ppqm@VoTv&Br0?T@`rrI79%^jJX4 z?uOuOUlt1|e*NA})n2&RJ8AKfvi;un!2S&=ZS-eC-CNOq;~+V&fVGC^G;wi^Vx}Zy zQZJ`G?N-^BnUO7K#CG+Ir?pt*9Bnl+r%JK|ZU z&UM_7d8P?b=YVG)BQ?G~)f68*XNgvYNwD@xo$-l*yL4%2cBg`9`Qc{q(8qSi+UPjL z$Z<`tu80llaG>9$#-4?6fFmL(`>E6KK`AXq}~{t0tO(}g7=XW#@8pj%(uDr?f>(^L0?};Y9_y0 z3l|+j|5rRp8mE^uRjZkmksl^^7cMkMoRx)-UT;X8 zvkSBTRdT+wy`|;3w^jJzLc^)jD8j;(^TUTwFef0guX|gqt)`6SJ!b+ zpWUxeVdd-0ke`MK#$UZ;q9?=&k4!K>lkf0$7z93}No6lrGpaw>y>D7RrCl@BOx_?; z9iSd~_7U39VINyNb4GjMW$TE3OA9Ln*Z5;Noo`+}5%!VmVX_rxKUBjE7OyJLH_J1a zK$7Q(%X=s*$Ts7sN|TB1RqO&fjn}M=sQBNm7B2otZw*|e?mwK7Om358eX7G~fHh(z zrB-0~*Md$~5`U$NQgm?i`r|yo#oHVF&{py46Q~v!tuRTTp78??qfO zQ~JIdInphql~kd9hvAXPy%Ox+r<0R$17UAxLR~Va7(JyuS$!g0iQ;LLg#42%@N(io zUnrjr(Hy9oUZFQ?DXnLt#roaoGc}*PVqkvpB}w-~JceHi1|lAtNG8B2ExVlbkYcY8 z-O-*`@z#G#E*bE*$*&BGt!=Di$N9K3pJx0}N}RjD>`Y1}+)A2*H1|-KXE8*p1&q-& z(ZZ_^lZ)HXK15A^O8vSGabpSkFeY)QKa!)_6BOx8H+Od{+~M<`#G@fl(HVPf<e4;_w-zeyy4A3w0Qqpl8%`@b!v{&7H99 zc06qddRuaFIg)MiyzD4?BmIg>cfmKK;Ih2#HF?9k|D|q5h+i6E=6aSL%=f7;f<<1A zIwp4Fdu;%4#a2s{0a;S1K$OgabIm+fPyW`P8%D5_c{4lK7W+7eN}f#qs)E)AkjT4B zKNYtgbY#nA1w3Q!Hd5=PE$|723{WurzFKsd9T({c0H^t&sPN(W_+Y}I7s>qO;>j1C zrAy)=)z^qe_QI-Cisjj1p^vq&%xQG~eVaiyjGuD@z4+Hie~x~m7K=`RQ3B5r5K$?0 z$AD>J#~u~Sf`r>WkVIY~i?xd`NSq)XdNJZWGDoIveL~4R_!9AIF6Kv=PDKnp8WE2! zgc*Ks`1?m-u1J_=J&e=i2a@`wd*$ML4b)wOULNbULBn29PNZE^2W-qpq;wE)PuVDc z)51zJCPr+dUxQTlh@U=7Fa6D)zJ~JX=70Sax=V8gyT|ns(9xHR?^Tk(u)CSjZQ==p zTerc}q(LJ*MKtOa??twn4ytl~`tZ_kOZ@s$Zt3K9SU$3Qf7?sk)&bh^X5zRHS$c3! ziAJU?B%VZCT6i4WuBgXauO`I33Nc;Q+psb_SSw@oW=Nu=0aC8c`*n0NW?uyc>3IXx z(jhmVHZ(`tBMuWa%m%;v3%{>BZV*lz=e<~X_{tk<7Ip8>suiYiE#4IY%E-|$ZD{LA zV#GFL_Fik=HayhWpd?^oqxfr&ahD3)9*+flBk{?qKbvt=3^ljTF4lSHs)lf0z~|Tn zj;JZ3E5{?C-uBgXDT;B2o9}!30y;)#o0n(G>Rcm^Ed~$I&NVt`eVbM{PKsB?o>{XB zFxxo+vl4_6F-YA5*Q!K(dd{R10^QLDsNNVKfkO&Ae3d~VA#g~hHZ}oP^;EbH&nDI_ z*X0A=6G^$My8m|4MCg8L-wEVg&_h|!>Y590GZLg8z)5-wn#-vk#K-b(rQU<5GPPF_ zW1;i7l745CCuBtRMIvOku<6RV*zxn{hP1wNw*5sSiQkVaBn4decZZS?Z@$g&A(#i~vB?Tv&Lpn*z`}QlFgt^K z~>dQP2=;cfYES^dz>lraXb1emO0Eck$wdrXH+2(*D9=;{TC#{@>vX zFh=Us&Dx0D3XE^XV3|b+N;=YNL$z0Vh&pS5XIriA{!fRWGL2_RAq#wtF_fTn zJnp5orTir0<7~Lx4zZn7)Lkmdk8b7ov`;5rcnIB#+z(I9J@7}BLJhQh4WTpK{m70%;3XW$GN<_V=vP;WA~_6U z(TtC{NM-J#VXDDWXP}Q{hIX;dJktQMVxzPY)6zMJC$ZB|* zzb@9cVjD~^;Ki`4hIt!>j!YRBkl%A6CC{lY6CgPIzG@$#E4Y%LLh&$=X+I99wf6|x6MR@JHGQ})$ zrQVFXVVHX$?)y-x1wzPUH)HH4wEH<_q6#rLPBPwX{UQ zT%)~;tZb>++R8fdTx?PF=pxH3_U7Mcf%c%`w`6qdCx(lVH`b^8K|d(19K}atR_MDN z*T9;x8*uw%x<@$it=T1{f}?OqIGu&ta!_2_%4CV`xaEy+u3eh<+ZI;mX7}|+@1~Q6 zYQXnCB|~>)X8{=Ne}EevC2Gg?rbj8UbQ>Im`gWB>+H&Dklqi@qdkF{hu$ho`q61#> zsoXf9GlN+}fsW%LFP<@=C+mx%KygP&2C)ulX%9G;yk>OY836`LOh3BAHlIfVY>Zt9 zvsYF~b7&sMIcYbd%dmZKDqcWjNJR`zr!Svw)sYN;7O^lLCn_ndNJNrb?}fLb7;;Uu zyWp0F+PKJd&tY|bq8Z)lL;{JFL^pkITulXpvD+8XD1~UwEM@tij2bD{5}s0;`1BTB z7UBeqxxg*{_ASb|plhamK>?n?%p|%Qv0GW!$1-|Lxk_F^As>dhIX}+)oll%=Ae!H;A>8_Y{EZS~Xr$HIPvz_}k>(Uyw!9r| z`QqB@4>WJM(x-XS61bv4)|45cI7AbxWP_*rZJ6{!Bn0apxZk51R;rljwhK%-^A2Qd zr6BhZb0O=Fw12gG%$sx!(6Yy3cT|4_q}0zym}WgppWP1Usx z(aX&RxZ$G+ImavFs$X0L6f~gq`^F#uJjjp{{chUtOS}y3b}9|&=kx5f39yS`!dNw# zufUt4u4jfShqci1+AvzLPxP(CU$==DZf%ACDk)Qy^;^BA{1k@Sgyv0}r3W0!6x2mk zO+SR{LnX7al)6a0C}fxFt%9iuLbf7%t3_F>Mn%Fv0c>0C z6H%A`T&^YhSso(f*=b`ldn31?Tjjq{jcPtDg=CTw8&=E++Ufr?{IsSmjFZdB`3shc zg;7sHr){?tnqPJrCNCW52&<=L9_Iorj`_6SB$M9-NI$l8dBr{Ld35fXHU+YU1f}mQ zkw8t#zayzN3%pya78z=LO&r3=pk9XG%Y-|rQCHIINz(8N2+epJjTmzh0dY2)4v(nb>GW|dD_3TH3)0;8`lYR?9S8>xYQ%tTh>%q1%`(n zVK2bP-PL}jtDX{fL_eZ@G2X*kt2ggP`jyFZCMw>VINUCPRx1humE>&g0mMv6&hzN7 zQsleJ%;U`B*%OB-i%U)K&_@~jJRx)|{uUKz5P;c17(6w%NtN!5$pG0Ie)2iz_t5I; zmz0*zXF*`eS&B;2B<={RnJGdG2^KMbqf;W{Ior*pcB4g$ z1{e^f``6Tzfm&r9+WWaTnZB-LM_PP+#M>C}eYUONijKjFr506>rLkf-Y%qNtkCacz3C!L)409`SnOiL|SU=^jEm%zqY3%kTer5VF5W?{?H00rzoNg=ls;r4b#MXJ^&u zC8eUd^rxuP*NErjS3KCdqODOII9gASW;67A2f*eC8B>mQx8N;5U28TE<~O|yjcIST zE3SP!7EUJx?KQXr0Acw(FuC-|;jW>K_wrg8x!72h$1NMZc?Ue9Z-ZSG(*qp=Dxw*6 zukNwl_TwZLnabYH$q&QZ0viE9^V)kF809}r3VTqEKzFg;x=L~aa4+39lIZ$9hJ^)h z)#_z|+z+Gqc@S)y<6wH4TcT+MQ(S_A(Cf<1;hGa10+q&SHH=p*cGvN8%e=@rD||ij z^bnxl><)fFQWrg;^1FO42Lkb+IsU6Ic(V{-VU26DbPs9Rm`T?*!f zW!m$wI-7daBT`QUIxq>>9@vF8!KFaOq`C6f&tJ+umM&D3C|-GP!Px66c=D2Vd>4M) zNQs#v$0BT@kGNJP%LQ62Tj6;B$}#lp_>t#rMVg8Z^gM|D2@(2qPUUo*&^=Yi452&i zI{*xFEVBwd5-T|RX$*jKW_+_#oLg!UZ+K+7eJC8_;BTSTx4FZ1n-aQ{uL6dYOASj9LK z@wJh%jE!yy;lCjsl6a;kXtGeoRwRkh0~w=_%xwj!H(8bAzynO=GTWU1d;n2RUYd-AGSV0Io+<%t2>V z1yOQQuHK2l(wip3Gm5P2+!{(q?~M<5V>;Pme1%AJyG$ejCi8y=R`6$+F?@(w>3?dJ9fkB2k)R;KJ8QlZB$dI61B7sRGIa+hz^Q0}K;-rqZTr zcY7y8U`|&49_mrp@s-~3CHToX*u5!LJvARwOY%M2wzY5!{@2vSgOBQh74K`|XkZ97 zSAy6ACssa`J^3YiIbI3Eo7T3&0R`k{d=Au-svpC7lo2G?a62Yqi`SFv9v@MBw?xdr z9st(d5fsyZ48rx|frX&p)10!IPcejsdN13}(Z}r4T?N$&zj4LUB{a z;m{AM#bwX57j!SiHA5UE=zh;)fi|EvCDIC+2Rrj+c<2KhtKR~b|Mx}QqT3TIhE{eV=wP|BoCrGpx& zv;n;d*J)7i5FYvNcVL@GTh}3`hSa@Dd3Iup@l1a=lfira1P zY`A_UMLOoxS{l&iACi`Ie5^Dvpzyn^IY!&+dcJsZ+Rl6BQv?0CysPwoT@W^avJ^ul zD)9xWE&y9SK-YdYpuIjo2F!%(SB{WC;-_rjjV?qkbPnu z5i@q;DJnYnYB&QMDB{6q)Tpa*HZSTmxnLJ8U0PJJ0NGjf9$xICuc7_Mvt{H1;Pxai zh$ow)bv;Acb7FwkxCoXUYVUCEwU=OCK6eueB*yE8a63pmdrU9HSX%u+HJ!vXnW264 zv(Ypr8*1TcH`pshz0BJ@jJw_e_>?O8h0r?fkrosvvcW=$=H-Tdow~YC4uQYd0CJmJ zlgdLR0@fPJl)!HKHR_j+1S_Yy)rGb`(R>h}aIP64-0})s2F2er&JY0sa|aEV&V%Mi ziDn{@5}MU1+qm2M=ueNxiPAL9YZQQAJwEjk?^IR+ceNJMRpVT!2hhFBI^D@nCmOx_ z%47`v=7Cw6FgVCdlxx!s=!p4coyU~#Ph+;jOc7vvxP<6hJa9IVagp1Iw~O)3(O^le z?0zzVnw@NZDaN`e)MG`!SI^Jrc$0Xzo3v{%5uXPT!hXhh@6b$3P@`-tjPk`Fs?gD9 zzaKt+X#q5GDYaV#3hGw5$ktl`8aid8~PwQ z`HI3fW#OJ;C(Tx*f>6SP&`Ds}wvQM6?03)QvOC{nZqcLI8)@(8YZHmL@oVRjWQDj* z;71eCU81=HxJVeX1p0uo{`C}F0%~k?A7Lwj5n(=W#WwVT!j0I=GRH^zvaS2!Rz<78 z!B*t+-zB&E#bu3`K1h3Ckd!>kOv^XxDI&coI5$?gzzqHyQZL?8yM|@_DL|-xyU1VC zH`Gyg-uLX!rhSQmx@#4L$Y%Qh-jbbb(-!SXw+so?l`7GA1b-3P@qW2G7#O-dj!bG@fPSQ*}>Zf^jkjqRQKP}20lXVwqS062H`YK zOl&mf;>%tqd=IF#SbIVGjVRM@co`@o}d%o!&(ij$CetID)Y26 z1G5d<^U;;0A7=K(=+{Yrgc`=&^74@OfxBNtAuHXV*7~c+>tZS#z^}TkAA*|VW%+8o z!C1t{3M*X&cOwng$I5zwsprv#8q`-&T&r3$|0b+Ed4N*r3RztI z5V@tTWn{qUE=4pGjKEAqDiGLfWr^^57e9jNHWz!{w7$3pMA4@3|;OmxyiGfZMfe2ghMdaUPY7OVL|9$<#UXTd0tja zS4D64Zr`5SRk2mF?OBnFPo zy55nZD36q!Pfz0yX?KrO!3${tDP-CWOuZ>a=`kLB0`*gZ_Uz&iNQZLOMRi54&eRmN z>+UTScpn?#kO0hVgY{Fga!V>q+g|D4!FWE{@dGjvF$R>t@X-z;I}W#U2pg?{?pClw1Jz`HRaz4lXNeY%0;jb@lEDB3~T&Tl=s0|Rj?w)51^Z)>I+E!?60+y%wF!6;ob3#>JHy$6nBEPeSuMc*yb05^h0o& z<|(+cTvYQ}6A$#o+^^ufAbATcFHY_3AYvgPpsOB5Ttsa(X~2?|Hc-j{y+hv9`j3$Y z{_);Dt+dUk{pDDd?wBve7;PUHhMfH{y;i?_NOs6T!@JGnEY6jvbWy6+_mCn!cMFQY z;VqJ_*FtFeLkdaG=y7FPQPxsyRkgyt7fSPxo=JCf&r_^$+5Ab&P#5mTzfu+XV^+%&TBP}oF11x)dOdPLjoLp(l3xeS_d%G@ z)yFoau)6TgEfGWZ*m8t`cr`h_GX9=m07Kbp?&kFG~uHHjlwQUklIAkw$r@I!^Kj*I&Oj09we zv+7X3LdI|e#h;I^9P1^=TX)N=%X;jh0cf>hTpNb0^x@q z!7elH&tI!K|M~eEX*FZtpGN=V=3@79iGGQnTm27eJ_+9xp9zcokqV=F9lIr^4r(Zt-CQCicS%HFWK1q@e#ey`Ci?KAjLa+xB2iUtaumq)AyFs8gZB;Pe zeg?>$E!7+5g^lXHsYhXaZW0DVb%T>7Q?23sjh7|;nGOcwbWDVRO147>h(;79Rjsy&S0Zg&B9L zhf?-cH&SLmWHU<|rBn+%Zs`w_byFytkmN%3t{wIG-o8a(EsJ+p{mL0_H?x{Ki)}*1N&~J;>|&$ zfkbuz5kBMKA!L~WYQqyxl^lY!~}ZLQk|;MWI-TFnICZ& zGKd6W3!!fwp+Eg;q*hM@j!wd8` z7r7o;^&=dV%>fH%?X><&^vwYbci>tBn$4umCHjm_lsXmsz;MYK>&u=B6I z%OOo9bki*p%^W<9=KC};2px3LwzPh(B@)u>U=XT3Q!(E2Yf_Z1#N*C;#JQ}B(j-hJ zW^@FlJ(OJ~n#9r9QLSsy=$@sTTS*(t6%Bzx@6dBC7l_~N``&;S8mYaaYryRR9%;S# z$X9*JkURPf)Dz^f;u)2w5DUriIYcx4HsCKqF6h{_d=x4mnl-D@qrg1l>q!Wd!I@pe zCQZo=rPGf2CF5-FuDBm4{X~g&f3JSPXu)1{_%(VfeR&Vnq78kj*o8GmEC`I$6=;*d zDo|;1eYe-e2JHiPcTv7qd|J=V#rEbiJ@t`q0pW8L0AmqxRu=(k`l&8H`NkIG!T*d1c_I1c*7Jw1Zdnmy^q0|c0UJt3=6b5gbbkBIv4a74N&%kt2WJ$!(wRysZkKE1e=piIhB23sm=>{*} znpHPoebePTy&4kEgH?5R0kQz}{e7k9vq5@>{Y4vb#m<(2>gPX(8GQd7AfCWxe!O8L z<+e!qMqK;24;~`i-Ip9n5D@ZHUyS1H$9v#Hu=!fW6fZ?*eEPKTwwXf1Qn!^5hnr(O zI801!VPcJVe#X$IQuC#WHe@-4_N&yQT)BWm7it4*!O1pAj{%eb>%e3Xhn5#A{XlHO zJq1PnT5Vcq;1im|hR!C~{e@Czbo^D@&|mElKP(0xr+%?C@?-e_3><9v7(nI+fi$_z zPzE>wk^(0HO=M2*Oi2^yS7d_vS*SLQ4RtSH#>e5-z-(a(_4rQV9_g_KhLkixdc*hzPmVv>!V6`gzu%u(^{ zoEzkCz|*jS-Pt!PKhieCjSY`yq`HzkU=ujEjj-~AWN~s|GJ<0y*)qO+G174TvB7&_ zNYOwu!dC3alk`Mx8IkdmOT7x~J&D

!fZ_wd@6%xo^IjIT#Ohd-o|Pc4*^4R3sXw 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

oS*{AX?fakhzp zzK%)E4|WG~PSk2tN>!I^ar$?EzufFkDbBZ5;&t$tM336;5Yl9k_iLAOA1@vAToH`j z@fMW4EsNuY5&u-1G6nxhurCVzc{`+tWBYeXx>z!_tjJt2K-G$92|o4pZRXsY44Ak{ zviU?w&)A~@_la!x``dfY$flh!LypG{f{<7Un;BwDp+<}#ECcD9!xP1+MVENux#fJY zGFUWPf9>Z=)2P!UBW2{?Pfu?6zAl_*vM@dvozyIuAKd~Gj}%YWx>BI@PD_o)y<6`F z@U}>vODbAZyLIF6lc@qjP1nD8)Ma56Ht!#FObX5qqg7mqjZjlh6;JS<=+R`&98f(DbBT8S4x4U+Eu!Hi^ODgcnGy9xn_yIL@*M zFc5(CrduC$1Eh`%^ZzAtuTYRHjFES>EBZRkrVI& zv!3e`_0ZIWp<*+s?O?Ud#hwIhI>-eh}6R>l0WgoWCaZwZ#t=9qpZFuJ{DE*<>T6M2HmO%@d0@ z+wDl@gLrd*NQM8Hg|?~2-*hh+d&sAwUYQ-cDZO6NJ{uq|AWdfV^z`)dNL@WW?K%EP z9*V@2%4lD;v&@Lp%RHm~ghXk&)D7hDzU~L@)Ff(h%XO=b`nA1aLj)iBa{OSH|JlVC z9|?yp$}QV+mL}6>!6YAYM;H)e+O}ya49r4pLd0Sw2BFdqt5w8gEJh`Xc6m$W->+{x z%uzpGR#44mTZT4&8$TCf=&oG;=wqdncE+zZ*8L`{3Iap2O`{C6u~K)vY@tN~8O%*l zznvdY$r^WaBRWACp>IsDX^SF4*WJC<+=B^$45*mX+slq4`fUz{Qr_pfs(cAVr^dhj zcUd}BsCm+guK~#CB$++Tu z%e3*+YuRPvHUSNZ=cGtoG+-y*8}lJ5F&DX+3O{EZ(BzjA!?Jr+LP$f zdF5rdLI!&8OjWaYLTBH{=+OFW3Ox-$GP)%x9E=71l(HTQF^EMxgZd_mwh+K~Q6w}c zTJ!qiiN+uoVqTFBtSIJ1Y4rwj7X~e_KVQ4?tgLm(KEOIJ zMp8Y~C{sel%RC^HhNl?)IPG-dpXS8kAW3?}<^f`s^beq3UUMVi@b~)9Rqs+ytOOT3 zYSd`z;pSwa%RmgAs5uC`b9oj1{>q}cLw4;_qkn$%@#uU_Bzoip*)Mtga#OO8(nLDb zLgElDPy)yWt^fpnMzK)R8SNDIYtWDdLs?4uNUaA%$Z4+Pyw}lwIQ}#EwTo1&d`3tI zBj?QrFDH%*Kn^Xgb;6_LIi|6oc_jPm?e+av&T6)wIOcTs*i~PR=Q96F%rHz+A`#AW zy1<)AElL918Hs|B9EeuUe}--?1+qv@YP#i-2Bt}7fKQHKBP2VdA*XsvLBKwfP=%n- zeZT9Z2W}yCxjm~FSClqVQVnW;g$0ym=oMFQg`{j3ptFj2mmML!51AM1^Nzpv@HT6F z%Z^Yu#1TCBuJgV0i}WZ_FZp!Plu@fi!8O=O4WLRLaRlx-&o{#Z_}Nhk*-5fhIid<1 z)k!w!&#||49u7AoSxbmpzBY}nG?HXlub6K77epuyEY8LAo$jm1Fsw0 zVi6>94txTS7RQpV*6s>2@2svSxeDNe(N+_ka&i~~IH`0(exBP->(7YUSf z`9)?$BK$mavb-3aiZ2d?v@>zvI_hJ!hX9|wP4cIaz!=~%ydjOBQdR7>ENKD!|9DeB G$NmRCzUgNG diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.docx" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.docx" deleted file mode 100644 index bf34b7c7faa6a01d99c2ebe80f6a5928ac4a41d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18476 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 W`t+gk007*_U($!s1PK53-~Rz%82fwx diff --git "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.json" "b/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.json" deleted file mode 100644 index ecc7995..0000000 --- "a/backend/data/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\320\270/\320\277\321\200\320\265\321\202\320\265\320\275\320\267\320\270\321\217_\320\276_\320\262\320\276\320\267\320\274\320\265\321\211\320\265\320\275\320\270\320\270_\321\203\320\261\321\213\321\202\320\272\320\276\320\262_\320\277\321\200\320\270\321\207\320\270\320\275\320\265\320\275\320\275\321\213\321\205_\320\267\320\260\320\264\320\265\321\200\320\266\320\272\320\276\320\270\314\206_\321\200\320\265\320\270\314\206\321\201\320\260_tpl.json" +++ /dev/null @@ -1,258 +0,0 @@ -{ - "template": "претензия_о_возмещении_убытков_причиненных_задержкой_рейса_tpl.docx", - "name": "Претензия о возмещении убытков, причиненных задержкой рейса", - "deleted": "False", - "description": "Данный шаблон поможет вам запросить компенсацию за убытки, возникшие из-за задержки рейса, и защитить свои интересы в путешествиях.", - "fields": [ - { - "tag": "АдресатОрганизация", - "name": "Наименование организации", - "hint": "АО \"Авиакомпания \"Сибирь\"", - "group": 1, - "type": "str40", - "length": 40 - }, - { - "tag": "АдресатАдрес", - "name": "Почтовый адрес", - "hint": "633104, Новосибирская обл., г. Обь, проспект Мозжерина, д. 10 офис 201", - "group": 1, - "type": "str", - "length": 80 - }, - { - "tag": "ОтправительФИОродПадеж", - "name": "ФИО (в родительном падеже)", - "hint": "Иванова Алексея Дмитриевича", - "group": 2, - "type": "fio", - "length": 40 - }, - { - "tag": "ОтправительФИО", - "name": "ФИО (в именительном падеже)", - "hint": "Иванов Алексей Дмитриевич", - "group": 2, - "type": "fio", - "length": 40 - }, - { - "tag": "ОтправительАдрес", - "name": "Почтовый адрес", - "hint": "450045, Респ. Башкортостан, г. Уфа, ул. Ленина, 36, кв. 60", - "group": 2, - "type": "str", - "length": 80 - }, - { - "tag": "ОтправительТелефон", - "name": "Номер телефона", - "hint": "+79175678356", - "group": 2, - "type": "phone", - "length": 12 - }, - { - "tag": "ОтправительEmail", - "name": "Электронная почта", - "hint": "shablonizator@mail.ru", - "group": 2, - "type": "email", - "length": 40 - }, - { - "tag": "БилетыДата", - "name": "Дата заключения договора (приобретения авиабилетов)", - "hint": "ДД.ММ.ГГГГ (11.10.2023)", - "group": 3, - "type": "date", - "length": 40 - }, - { - "tag": "ЗаказчикФИО", - "name": "ФИО заказчика (в именительном падеже)", - "hint": "Иванов Алексей Дмитриевич", - "group": 3, - "type": "str40", - "length": 40 - }, - { - "tag": "НомерРейса", - "name": "Номер рейса (буквы и цифры)", - "hint": "S7 1122", - "group": 3, - "type": "str20", - "length": 20 - }, - { - "tag": "АдресОтправление", - "name": "Населенный пункт и регион отправления (в родительном падеже)", - "hint": "г. Уфы Республики Башкортостан", - "group": 3, - "type": "str", - "length": 80 - }, - { - "tag": "АдресПрибытие", - "name": "Населенный пункт и регион прибытия (в родительном падеже)", - "hint": "г. Домодедово Московской области", - "group": 3, - "type": "str", - "length": 80 - }, - { - "tag": "БилетСтоимость", - "name": "Стоимость приобретенных авиабилетов", - "hint": "16 789.00", - "group": 4, - "type": "currency", - "length": 40 - }, - { - "tag": "БилетНомер", - "name": "Номер маршрутной квитанции", - "hint": "3789995", - "group": 4, - "type": "int", - "length": 40 - }, - { - "tag": "БилетДата", - "name": "Дата приобретения авиабилета", - "hint": "ДД.ММ.ГГГГ (11.10.2023)", - "group": 4, - "type": "date", - "length": 40 - }, - { - "tag": "ВремяВылета", - "name": "Время вылета рейса в авиабилете", - "hint": "03 часов 45 минут", - "group": 4, - "type": "time", - "length": 40 - }, - { - "tag": "ДатаВылета", - "name": "Дата вылета рейса", - "hint": "ДД.ММ.ГГГГ (11.10.2023)", - "group": 4, - "type": "date", - "length": 40 - }, - { - "tag": "ФактическийВремя", - "name": "Фактическое время вылета рейса", - "hint": "03:45 (для 3 часа 45 минут)", - "group": 5, - "type": "time", - "length": 40 - }, - { - "tag": "ФактическийДата", - "name": "Фактическая дата вылета рейса", - "hint": "ДД.ММ.ГГГГ (11.10.2023)", - "group": 5, - "type": "date", - "length": 40 - }, - { - "tag": "ЗаказчикФИОродПадеж", - "name": "Время задержки рейса", - "hint": "3 часа", - "group": 5, - "type": "time", - "length": 40 - }, - { - "tag": "РейсЗадержка", - "name": "Время задержки рейса", - "hint": "3 часа", - "group": 5, - "type": "time", - "length": 40 - }, - { - "tag": "СуммаВыплаты", - "name": "Сумма штрафа, подлежащая уплате", - "hint": "3,25 руб", - "group": 5, - "type": "currency", - "length": 40 - }, - { - "tag": "СледРейс", - "name": "Номер рейса, на который произошло опоздание", - "hint": "S7 1122", - "group": 3, - "type": "str20", - "length": 20 - }, - { - "tag": "СледАвиа", - "name": "Наименование организации, на рейс которой произошло опоздание", - "hint": "АО \"Авиакомпания \"Аеро\"", - "group": 1, - "type": "str40", - "length": 40 - }, - { - "tag": "СледНомер", - "name": "Номер маршрутной квитанции", - "hint": "3,25 руб", - "group": 5, - "type": "currency", - "length": 40 - }, - { - "tag": "СледСумма", - "name": "Стоимость неиспользованных авиабилетов", - "hint": "3,25 руб", - "group": 5, - "type": "currency", - "length": 40 - }, - { - "tag": "СледДата", - "name": "Дата приобретения авиабилета", - "hint": "3,25 руб", - "group": 5, - "type": "currency", - "length": 40 - }, - { - "tag": "Документы", - "name": "Документы, прикладываемые к претензии", - "hint": "Прикрепите имеющиеся документы", - "group": 5, - "type": "str", - "length": 40 - } - ], - "groups": [ - { - "id": 1, - "name": "Адресат" - }, - { - "id": 2, - "name": "Отправитель" - }, - { - "id": 3, - "name": "Данные о рейсе" - }, - { - "id": 4, - "name": "Авиабилеты" - }, - { - "id": 5, - "name": "Изменения в рейсе" - }, - { - "id": 6, - "name": "Данные следующего рейса" - } - ] -} \ No newline at end of file From 2422a07b2e413786ea684fc302a3c4b0900242c6 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Sun, 24 Dec 2023 15:33:30 +0300 Subject: [PATCH 49/80] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D0=BB=D1=83=D1=88?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit убрал некоторые заглушки по permission --- backend/api/v1/views.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 57eab01..3e164be 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -40,7 +40,6 @@ TemplateWriteSerializer, ) -# from api.v1.utils import Util from api.v1 import utils as v1utils from core.constants import Messages from core.template_render import DocumentTemplate @@ -150,7 +149,8 @@ class TemplateFieldViewSet(viewsets.ModelViewSet): serializer_class = TemplateFieldSerializer http_method_names = ("get",) - permission_classes = (AllowAny,) + permission_classes = (IsAdminOrReadOnly,) + # permission_classes = (AllowAny,) # Заглушка pagination_class = None def get_queryset(self): @@ -165,8 +165,8 @@ class DocumentViewSet(viewsets.ModelViewSet): queryset = Document.objects.all() serializer_class = DocumentReadSerializerMinified http_method_names = ("get", "post", "patch", "delete") - # permission_classes = (IsAuthenticated,) - permission_classes = (AllowAny,) + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка filter_backends = ( filters.SearchFilter, filters.OrderingFilter, @@ -200,8 +200,8 @@ def perform_create(self, serializer): @action( detail=False, permission_classes=[ - # IsAuthenticated, - AllowAny, + IsAuthenticated, + # AllowAny, # Заглушка ], url_path=r"draft", ) @@ -232,7 +232,9 @@ def history_documents(self, request): @action( detail=True, - permission_classes=[IsAuthenticated], + permission_classes=[ + IsAuthenticated + ], url_path=r"download_document", ) def download_document(self, request, pk=None): @@ -250,7 +252,9 @@ def download_document(self, request, pk=None): @action( detail=True, - permission_classes=[IsAuthenticated], + permission_classes=[ + IsAuthenticated + ], url_path="download_pdf", ) def download_pdf(self, request, pk=None): @@ -274,7 +278,7 @@ class DocumentFieldViewSet(viewsets.ModelViewSet): serializer_class = DocumentFieldSerializer http_method_names = ("get",) permission_classes = (IsAuthenticated,) - # permission_classes = (AllowAny,) + # permission_classes = (AllowAny,) # Заглушка pagination_class = None def get_queryset(self): @@ -290,6 +294,7 @@ def get_queryset(self): class FavTemplateAPIview(APIView): permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка def post(self, request, **kwargs): data = { @@ -323,6 +328,7 @@ def delete(self, request, **kwargs): class FavDocumentAPIview(APIView): permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка def post(self, request, **kwargs): data = { @@ -396,7 +402,8 @@ def post(self, request, template_id): class CheckTemplateConsistencyAPIView(views.APIView): - permission_classes = (AllowAny,) # isAdmin + permission_classes = (IsAdminUser,) + # permission_classes = (AllowAny,) # Заглушка def get(self, request, template_id): template = get_object_or_404(Template, id=template_id) @@ -416,6 +423,7 @@ class UploadTemplateFileAPIView(generics.UpdateAPIView): lookup_field = "id" lookup_url_kwarg = "template_id" permission_classes = (IsAdminUser,) + # permission_classes = (AllowAny,) # Заглушка http_method_names = ["patch", "put"] From 9c2213ef83534b46cf45c2c4b481c6da8b9b86a9 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Sun, 24 Dec 2023 16:07:35 +0300 Subject: [PATCH 50/80] fix aspone --- ...\320\265\320\275\320\270\321\217-0001 1.jpg" | Bin 0 -> 95851 bytes ...\270\320\271-\321\201\320\260\320\264 2.jpg" | Bin 0 -> 36450 bytes backend/requirements.txt | 1 - 3 files changed, 1 deletion(-) create mode 100644 "backend/data/preview/\320\224\320\276\320\263\320\276\320\262\320\276\321\200-\320\275\320\260\320\271\320\274\320\260-\320\266\320\270\320\273\320\276\320\263\320\276-\320\277\320\276\320\274\320\265\321\211\320\265\320\275\320\270\321\217-0001 1.jpg" create mode 100644 "backend/data/preview/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265-\320\262-\320\224\320\265\321\202\321\201\320\272\320\270\320\271-\321\201\320\260\320\264 2.jpg" diff --git "a/backend/data/preview/\320\224\320\276\320\263\320\276\320\262\320\276\321\200-\320\275\320\260\320\271\320\274\320\260-\320\266\320\270\320\273\320\276\320\263\320\276-\320\277\320\276\320\274\320\265\321\211\320\265\320\275\320\270\321\217-0001 1.jpg" "b/backend/data/preview/\320\224\320\276\320\263\320\276\320\262\320\276\321\200-\320\275\320\260\320\271\320\274\320\260-\320\266\320\270\320\273\320\276\320\263\320\276-\320\277\320\276\320\274\320\265\321\211\320\265\320\275\320\270\321\217-0001 1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..4a2cce50c54d3ab0e2df79b74ddff9d18adafabb GIT binary patch literal 95851 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 z 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%0DqpauY9ygqlxuSSsga}J1VvYjP>c2wvwlGWf-Y7f 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ΝcOPuQz-1!RzL_(*Nft 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 bTJFocvE`|lpVO}||GPxw|E)v&*TjDUz`ca~ literal 0 HcmV?d00001 diff --git "a/backend/data/preview/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265-\320\262-\320\224\320\265\321\202\321\201\320\272\320\270\320\271-\321\201\320\260\320\264 2.jpg" "b/backend/data/preview/\320\227\320\260\321\217\320\262\320\273\320\265\320\275\320\270\320\265-\320\262-\320\224\320\265\321\202\321\201\320\272\320\270\320\271-\321\201\320\260\320\264 2.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..e6b3d7cd2f2d429ef68e8ae859f186e045474835 GIT binary patch literal 36450 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 DklEs; literal 0 HcmV?d00001 diff --git a/backend/requirements.txt b/backend/requirements.txt index 8dc4377..deb5e85 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,5 +1,4 @@ asgiref==3.7.2 -aspose-words==23.10.0 atomicwrites==1.4.1 attrs==23.1.0 Babel==2.13.0 From a0dc3476e6f7e7f09856cfb5359e2a4f944bb226 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Tue, 2 Jan 2024 17:12:04 +0400 Subject: [PATCH 51/80] =?UTF-8?q?=D0=B9=D1=86=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/backend/settings.py | 26 ++++----- backend/documents/models.py | 22 ------- backend/documents/views.py | 3 - backend/requirements.txt | 4 +- docker-compose.yml | 1 + ...21\203\320\272\321\206\320\270\321\217.md" | 57 ------------------- 6 files changed, 16 insertions(+), 97 deletions(-) delete mode 100644 backend/documents/views.py delete mode 100644 "\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217.md" diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 5650ee2..28a3e86 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -2,7 +2,7 @@ import os from pathlib import Path -import sentry_sdk +# import sentry_sdk from dotenv import load_dotenv load_dotenv() @@ -118,8 +118,8 @@ STATIC_ROOT = BASE_DIR / "collected_static" STATICFILES_DIRS = ((BASE_DIR / "static/"),) -# INITIAL_DATA_DIR = BASE_DIR / "data/" # for local run -INITIAL_DATA_DIR = BASE_DIR / "static/data/" +INITIAL_DATA_DIR = BASE_DIR / "data/" # for local run +# INITIAL_DATA_DIR = BASE_DIR / "static/data/" MEDIA_URL = "/media/" MEDIA_ROOT = "/app/media" @@ -203,13 +203,13 @@ }, } -sentry_sdk.init( - dsn="https://be8f804283b7a2e423209e00692792f0@o4506344044298240.ingest.sentry.io/4506344234156032", - # Set traces_sample_rate to 1.0 to capture 100% - # of transactions for performance monitoring. - traces_sample_rate=1.0, - # Set profiles_sample_rate to 1.0 to profile 100% - # of sampled transactions. - # We recommend adjusting this value in production. - profiles_sample_rate=1.0, -) +# sentry_sdk.init( +# dsn="https://be8f804283b7a2e423209e00692792f0@o4506344044298240.ingest.sentry.io/4506344234156032", +# # Set traces_sample_rate to 1.0 to capture 100% +# # of transactions for performance monitoring. +# traces_sample_rate=1.0, +# # Set profiles_sample_rate to 1.0 to profile 100% +# # of sampled transactions. +# # We recommend adjusting this value in production. +# profiles_sample_rate=1.0, +# ) diff --git a/backend/documents/models.py b/backend/documents/models.py index fdb67ba..be2f0df 100644 --- a/backend/documents/models.py +++ b/backend/documents/models.py @@ -288,7 +288,6 @@ class DocumentField(models.Model): related_name="document_fields", ) value = models.CharField(max_length=255, verbose_name="Содержимое поля") - # description = models.CharField(verbose_name="Описание поля", blank=True) document = models.ForeignKey( Document, on_delete=models.CASCADE, @@ -305,27 +304,6 @@ def __str__(self): """Отображение - шаблон поле.""" return f"{self.field.template} {self.field}" - # class FieldToDocument(models.Model): - # """Связь полей и документов.""" - - # document = models.ForeignKey( - # Document, - # on_delete=models.CASCADE, - # related_name="document_of_field", - # ) - # fields = models.ForeignKey( - # DocumentField, - # on_delete=models.CASCADE, - # related_name="fields_of_document", - # ) - - # class Meta: - # verbose_name = "Связь между полем и документом" - # verbose_name_plural = "Связи между полями и документами" - - # def __str__(self): - # return f"{self.document} {self.fields}" - class FavTemplate(models.Model): """Избранные шаблоны.""" diff --git a/backend/documents/views.py b/backend/documents/views.py deleted file mode 100644 index 91ea44a..0000000 --- a/backend/documents/views.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. diff --git a/backend/requirements.txt b/backend/requirements.txt index deb5e85..2c82a4d 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -44,10 +44,10 @@ num2words==0.5.12 oauthlib==3.2.2 packaging==23.2 pathspec==0.11.2 -Pillow==9.0.0 +# Pillow==9.0.0 platformdirs==3.11.0 pluggy==0.13.1 -psycopg2-binary==2.9.3 +psycopg2-binary==2.9.9 py==1.11.0 pycparser==2.21 PyJWT==2.1.0 diff --git a/docker-compose.yml b/docker-compose.yml index 65a682d..e36e88f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,6 +23,7 @@ services: - db frontend: + platform: linux/x86_64 image: documents23/document-template-engine_frontend:latest env_file: .env command: cp -r /app/build/. /static/ diff --git "a/\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217.md" "b/\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217.md" deleted file mode 100644 index db43139..0000000 --- "a/\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217.md" +++ /dev/null @@ -1,57 +0,0 @@ -# Запуск бека на локальной машине - -## Устанавливаем Python -Для работы бека нужен Python 3.9, для этого можно скачать с офф сайта или же через Microsoft Store(рекомендуется) - -## Создаем виртуальное окружение -Через Bash заходим в папку с Backend(Там где находиться requirements.txt и manage.py) и прописываем команду - -### Cоздать и активировать виртуальное окружение: -#### Создание виртуального окружения -``` - python3.9 -m venv venv -``` - -#### Активация виртаульного окружения -##### Если у вас Linux/macOS -``` - source venv/bin/activate -``` - -##### Если у вас windows -``` - source venv/scripts/activate - -``` - -### Установить зависимости из файла requirements.txt: -Скачиваем и устанавливаем все зависимости -``` - python -m pip install --upgrade pip - pip install -r requirements.txt -``` - -### Выполнить миграции: -``` - cd backend - python manage.py makemigrations - python manage.py migrate -``` - -### Запустить проект: -``` - cd backend - python manage.py runserver -``` - -### Создать суперпользователя: -``` - cd backend - python manage.py createsuperuser -``` - -### Добавить темлейтов в базу: -``` - cd backend - python manage.py init_templates -``` \ No newline at end of file From 2688d87c1790d38db116dd3f6b739096b20139f6 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Wed, 3 Jan 2024 01:02:42 +0400 Subject: [PATCH 52/80] add object --- backend/api/v1/urls.py | 5 +- backend/backend/settings.py | 2 +- backend/base_objects/__init__.py | 0 backend/base_objects/admin.py | 23 ++++ backend/base_objects/apps.py | 6 + .../base_objects/migrations/0001_initial.py | 46 +++++++ .../migrations/0002_auto_20240102_2044.py | 92 +++++++++++++ .../migrations/0003_auto_20240102_2045.py | 33 +++++ .../migrations/0004_auto_20240102_2047.py | 26 ++++ backend/base_objects/migrations/__init__.py | 0 backend/base_objects/models.py | 122 ++++++++++++++++++ backend/base_objects/tests.py | 3 + backend/documents/admin.py | 2 +- .../0033_templatefieldgroup_type_object.py | 20 +++ backend/documents/models.py | 10 ++ 15 files changed, 385 insertions(+), 5 deletions(-) create mode 100644 backend/base_objects/__init__.py create mode 100644 backend/base_objects/admin.py create mode 100644 backend/base_objects/apps.py create mode 100644 backend/base_objects/migrations/0001_initial.py create mode 100644 backend/base_objects/migrations/0002_auto_20240102_2044.py create mode 100644 backend/base_objects/migrations/0003_auto_20240102_2045.py create mode 100644 backend/base_objects/migrations/0004_auto_20240102_2047.py create mode 100644 backend/base_objects/migrations/__init__.py create mode 100644 backend/base_objects/models.py create mode 100644 backend/base_objects/tests.py create mode 100644 backend/documents/migrations/0033_templatefieldgroup_type_object.py diff --git a/backend/api/v1/urls.py b/backend/api/v1/urls.py index 65698cc..a379545 100644 --- a/backend/api/v1/urls.py +++ b/backend/api/v1/urls.py @@ -8,8 +8,8 @@ FavTemplateAPIview, FavDocumentAPIview, UploadTemplateFileAPIView, - # RegisterView, -) + ) + from django.urls import include, path, re_path from rest_framework.routers import DefaultRouter @@ -64,7 +64,6 @@ UploadTemplateFileAPIView.as_view(), name="upload_template", ), - # path("users/", RegisterView.as_view(), name="register"), path("", include(router_v1.urls)), path("", include("djoser.urls")), path("auth/", include("djoser.urls.authtoken")), diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 28a3e86..d0630b4 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -31,7 +31,7 @@ "api", "users", "documents", - "colorfield", # wtf ? + "base_objects", "core", ] diff --git a/backend/base_objects/__init__.py b/backend/base_objects/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/base_objects/admin.py b/backend/base_objects/admin.py new file mode 100644 index 0000000..7637e2e --- /dev/null +++ b/backend/base_objects/admin.py @@ -0,0 +1,23 @@ +"""Настройки админки для приложения "Документы".""" +from django.contrib import admin + +from base_objects import models + +@admin.register(models.BaseObject) +class ObjectAdmin(admin.ModelAdmin): + list_display = ("id", "name") + + +@admin.register(models.BaseObjectField) +class ObjectFieldAdmin(admin.ModelAdmin): + list_display = ("id", "name") + +@admin.register(models.Object) +class ObjectAdmin(admin.ModelAdmin): + list_display = ("id", "name") + + +@admin.register(models.ObjectField) +class ObjectFieldAdmin(admin.ModelAdmin): + list_display = ("id", "value") + diff --git a/backend/base_objects/apps.py b/backend/base_objects/apps.py new file mode 100644 index 0000000..96185d1 --- /dev/null +++ b/backend/base_objects/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class BaseObjectsConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'base_objects' diff --git a/backend/base_objects/migrations/0001_initial.py b/backend/base_objects/migrations/0001_initial.py new file mode 100644 index 0000000..6da2fd4 --- /dev/null +++ b/backend/base_objects/migrations/0001_initial.py @@ -0,0 +1,46 @@ +# Generated by Django 3.2 on 2024-01-02 13:52 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Object', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='Наименование обьекта')), + ('updated', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')), + ('deleted', models.BooleanField(verbose_name='Удален')), + ('description', models.TextField(verbose_name='Описание обьета')), + ], + options={ + 'verbose_name': 'Обьект', + 'verbose_name_plural': 'Обьекты', + 'ordering': ('name',), + 'default_related_name': 'objects', + }, + ), + migrations.CreateModel( + name='ObjectField', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='Наименование поля')), + ('default', models.CharField(blank=True, max_length=255, null=True, verbose_name='Значение по умолчанию')), + ('object', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fields', to='base_objects.object', verbose_name='Обьект')), + ], + options={ + 'verbose_name': 'Поле обьекта', + 'verbose_name_plural': 'Поля обьекта', + 'ordering': ('object', 'name'), + 'default_related_name': 'fields', + }, + ), + ] diff --git a/backend/base_objects/migrations/0002_auto_20240102_2044.py b/backend/base_objects/migrations/0002_auto_20240102_2044.py new file mode 100644 index 0000000..784bfbe --- /dev/null +++ b/backend/base_objects/migrations/0002_auto_20240102_2044.py @@ -0,0 +1,92 @@ +# Generated by Django 3.2 on 2024-01-02 20:44 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('base_objects', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='BaseObject', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='Наименование шаблона обьекта')), + ('updated', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')), + ('deleted', models.BooleanField(verbose_name='Удален')), + ('description', models.TextField(verbose_name='Описание базового обьекта')), + ], + options={ + 'verbose_name': 'Шаблон Обьект', + 'verbose_name_plural': 'Шаблон Обьекты', + 'ordering': ('name',), + 'default_related_name': 'Base_objects', + }, + ), + migrations.AlterModelOptions( + name='object', + options={}, + ), + migrations.AlterModelOptions( + name='objectfield', + options={'verbose_name': 'Поле обьекта', 'verbose_name_plural': 'Поля обьекта'}, + ), + migrations.RemoveField( + model_name='object', + name='deleted', + ), + migrations.RemoveField( + model_name='object', + name='description', + ), + migrations.RemoveField( + model_name='object', + name='updated', + ), + migrations.RemoveField( + model_name='objectfield', + name='default', + ), + migrations.RemoveField( + model_name='objectfield', + name='name', + ), + migrations.AddField( + model_name='objectfield', + name='value', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Содержимое поля'), + ), + migrations.AlterField( + model_name='objectfield', + name='object', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='base_objects.object', verbose_name='Обьект'), + ), + migrations.CreateModel( + name='BaseObjectField', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='Наименование базового поля обьекта')), + ('default', models.CharField(blank=True, max_length=255, null=True, verbose_name='Значение по умолчанию')), + ('base_object', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='base_fields', to='base_objects.baseobject', verbose_name='поля базового Обьект')), + ], + options={ + 'verbose_name': 'Поле базового обьекта', + 'verbose_name_plural': 'Поля базового обьекта', + 'default_related_name': 'base_fields', + }, + ), + migrations.AddField( + model_name='object', + name='base_object', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='base_objects.baseobject', verbose_name='Обьект'), + ), + migrations.AddField( + model_name='objectfield', + name='base_field', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='object_fields', to='base_objects.baseobjectfield', verbose_name='Поле'), + ), + ] diff --git a/backend/base_objects/migrations/0003_auto_20240102_2045.py b/backend/base_objects/migrations/0003_auto_20240102_2045.py new file mode 100644 index 0000000..4ff5308 --- /dev/null +++ b/backend/base_objects/migrations/0003_auto_20240102_2045.py @@ -0,0 +1,33 @@ +# Generated by Django 3.2 on 2024-01-02 20:45 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('base_objects', '0002_auto_20240102_2044'), + ] + + operations = [ + migrations.AlterModelOptions( + name='object', + options={'default_related_name': 'objects', 'verbose_name': 'Обьект', 'verbose_name_plural': 'Обьекты'}, + ), + migrations.AddField( + model_name='object', + name='created', + field=models.DateTimeField(auto_now=True, verbose_name='Дата создания'), + ), + migrations.AddField( + model_name='object', + name='updated', + field=models.DateTimeField(auto_now=True, verbose_name='Дата изменения'), + ), + migrations.AlterField( + model_name='object', + name='base_object', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='objects', to='base_objects.baseobject', verbose_name='Обьект'), + ), + ] diff --git a/backend/base_objects/migrations/0004_auto_20240102_2047.py b/backend/base_objects/migrations/0004_auto_20240102_2047.py new file mode 100644 index 0000000..741bdcb --- /dev/null +++ b/backend/base_objects/migrations/0004_auto_20240102_2047.py @@ -0,0 +1,26 @@ +# Generated by Django 3.2 on 2024-01-02 20:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('base_objects', '0003_auto_20240102_2045'), + ] + + operations = [ + migrations.AlterModelOptions( + name='baseobject', + options={'default_related_name': 'Base_objects', 'ordering': ('name',), 'verbose_name': 'базовый Обьекта', 'verbose_name_plural': 'базовые Обьекты'}, + ), + migrations.RemoveField( + model_name='baseobjectfield', + name='default', + ), + migrations.AlterField( + model_name='baseobject', + name='name', + field=models.CharField(max_length=255, verbose_name='Наименование базового обьекта'), + ), + ] diff --git a/backend/base_objects/migrations/__init__.py b/backend/base_objects/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/base_objects/models.py b/backend/base_objects/models.py new file mode 100644 index 0000000..29737a1 --- /dev/null +++ b/backend/base_objects/models.py @@ -0,0 +1,122 @@ +"""Модели обьектов.""" +from django.db import models +from django.contrib.auth import get_user_model + +User = get_user_model() + + +class BaseObject(models.Model): + """Шаблон обьекта.""" + + name = models.CharField( + max_length=255, + verbose_name="Наименование базового обьекта" + ) + updated = models.DateTimeField( + verbose_name="Дата изменения", + auto_now=True + ) + deleted = models.BooleanField(verbose_name="Удален") + description = models.TextField(verbose_name="Описание базового обьекта") + + class Meta: + verbose_name = "базовый Обьекта" + verbose_name_plural = "базовые Обьекты" + default_related_name = "Base_objects" + ordering = ("name",) + + def __str__(self): + """Отображение - название.""" + return self.name + + +class BaseObjectField(models.Model): + """Поля шаблон обьектов""" + + base_object = models.ForeignKey( + BaseObject, + on_delete=models.CASCADE, + verbose_name="поля базового Обьект", + ) + name = models.CharField( + max_length=255, + verbose_name="Наименование базового поля обьекта") + + class Meta: + verbose_name = "Поле базового обьекта" + verbose_name_plural = "Поля базового обьекта" + default_related_name = "base_fields" + + def __str__(self): + """Отображение - название поля (базового обьекта).""" + return f"{self.name} ({self.base_object})" + + +class Object(models.Model): + """Обьект.""" + + # owner = models.ForeignKey( + # User, + # on_delete=models.CASCADE, + # verbose_name="Автор документа", + # null=True, + # blank=True, + # ) + base_object = models.ForeignKey( + BaseObject, + on_delete=models.PROTECT, + verbose_name="Юр или физ лицо", + null=True, + blank=True, + ) + name = models.CharField( + max_length=255, verbose_name="Наименование обьекта" + ) + created = models.DateTimeField( + auto_now=True, + verbose_name="Дата создания" + ) + updated = models.DateTimeField( + auto_now=True, + verbose_name="Дата изменения" + ) + + class Meta: + verbose_name = "Обьект" + verbose_name_plural = "Обьекты" + default_related_name = "objects" + + def __str__(self): + """Отображение - название.""" + return self.name + + +class ObjectField(models.Model): + """Поля обьекта""" + + object = models.ForeignKey( + Object, + on_delete=models.CASCADE, + verbose_name="Обьект", + ) + base_field = models.ForeignKey( + BaseObjectField, + on_delete=models.SET_NULL, + blank=True, + null=True, + verbose_name="Поле", + related_name="object_fields", + ) + value = models.CharField( + max_length=255, + verbose_name="Содержимое поля", + blank=True, + null=True,) + + class Meta: + verbose_name = "Поле обьекта" + verbose_name_plural = "Поля обьекта" + + def __str__(self): + """Отображение - название поля (шаблон).""" + return f"{self.value}" diff --git a/backend/base_objects/tests.py b/backend/base_objects/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/backend/base_objects/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/documents/admin.py b/backend/documents/admin.py index c207c13..fcecb56 100644 --- a/backend/documents/admin.py +++ b/backend/documents/admin.py @@ -67,7 +67,7 @@ def get_form(self, request, instance=None, **kwargs): @admin.register(models.TemplateFieldGroup) class TemplateFieldGroupAdmin(admin.ModelAdmin): - list_display = ("id", "name", "template") + list_display = ("id", "name", "template", "type_object") readonly_fields = ("id",) search_fields = ("name", "template") diff --git a/backend/documents/migrations/0033_templatefieldgroup_type_object.py b/backend/documents/migrations/0033_templatefieldgroup_type_object.py new file mode 100644 index 0000000..37bd798 --- /dev/null +++ b/backend/documents/migrations/0033_templatefieldgroup_type_object.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2 on 2024-01-02 20:57 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('base_objects', '0004_auto_20240102_2047'), + ('documents', '0032_templatefield_default'), + ] + + operations = [ + migrations.AddField( + model_name='templatefieldgroup', + name='type_object', + field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='base_objects.baseobject', verbose_name='Обьект'), + ), + ] diff --git a/backend/documents/models.py b/backend/documents/models.py index be2f0df..c2750dc 100644 --- a/backend/documents/models.py +++ b/backend/documents/models.py @@ -7,6 +7,7 @@ from core.constants import Messages from core.template_render import DocumentTemplate +from base_objects.models import BaseObject User = get_user_model() @@ -140,6 +141,15 @@ class TemplateFieldGroup(models.Model): verbose_name="Наименование группы полей", ) + type_object = models.ForeignKey( + BaseObject, + on_delete=models.SET_NULL, + verbose_name="Обьект", + null=True, + blank=True, + default=None + ) + class Meta: verbose_name = "Группа полей" verbose_name_plural = "Группы полей" From 236a6a7465f9a4ade67197e2703ad93ee81c0b4b Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Wed, 3 Jan 2024 16:48:12 +0400 Subject: [PATCH 53/80] view set --- backend/api/v1/draft.docx | Bin 74461 -> 0 bytes backend/api/v1/urls.py | 21 ++++++++++++++++++ backend/api/v1/views.py | 12 ++++++++++ .../0005_alter_object_base_object.py | 19 ++++++++++++++++ backend/documents/admin.py | 1 + .../0034_templatefield_base_object_field.py | 20 +++++++++++++++++ backend/documents/models.py | 9 +++++++- 7 files changed, 81 insertions(+), 1 deletion(-) delete mode 100644 backend/api/v1/draft.docx create mode 100644 backend/base_objects/migrations/0005_alter_object_base_object.py create mode 100644 backend/documents/migrations/0034_templatefield_base_object_field.py diff --git a/backend/api/v1/draft.docx b/backend/api/v1/draft.docx deleted file mode 100644 index 92bb398a9dd420ffdbb343b17b00859cd7bde965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74461 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 z z1MJCst^_CuUt4Oh-1(!&Q|_tx^j+@K_5`qc-~K4+okCCy+Kf3`Lh#b8Bm=yhYM)r{ z2yn*(1)_wDI~fR6V7|*Iu8*EKX@#-cLPEvCvOuKT+ZI zeB<^N+7D#(UNln>2I4e3Ej0nF0*;TFB?AWz^Z`Tw{+F*KF2SEfUOR4FOn#ln)9TaH zJXDr3Tr`s^=dV1?nDkf4Na)9~YDoSe``JM)`GZ|On&P_3Eu^wrY{Z#~uJX4LVWRs_-Q-ws8Q!heD%g?xO-FcM14*9$cLSlm$B%gQ zl%4}}0`2dfQbSvZpIgZP?Q)7njXqQm6%wiJ-*$e?rh3W44O2A3PW-gdxLN^J`U#OS;~723Te6)jWX`;iL!!q zgF&^|j@_~aFdMPt`RPo~*)jWZis6!1-%@o+po3u8aFN(jjnBW3xe?x5?a&H{gYEWK z=MSCXhYMIgN5xme=Rhi2iz4G87$)LtgD1wVTGP#pmspRX1q^ zIzGFqmKGJuAinzA6#T|-<=%x_*LXGH3l@M3@)+{7Y)#rsces&!sLOVk*=add*4Aby6Hl*f5})N8luNYI#V#@0 z&rP)(^F`fVgnD2#an~5g?{0phK6aiy^*ezUv<{gVJu3|{RK0Fwn~J3!-ae({nJka%5z9{Qpnj zgMgxS0nl2i6{G;uE<=j6Cb*l~-VN#%dAP3Li%KXc}(7zu3uaW=B z|Gz$aL19XMLSX8>2jl6{0ICo>Ca;!g&?;}Ib!jGfOxFHY;!y(H5g8!Kj?-vKZJMm|}qu(UdYX7$rKeHeG*@-{HJ%5u(z5I*B z--AE@g#Q_)^&3uh^B4S&pshbC{4+f1Hy#4Q>J|dx&tRoL(SL@F{KjJg_NJfD;CBGY zpWr`jPrtzkD3HIv|FA^;iU0G!`5Ui-@fZI0@$*mcp9hlPUEcqK>x$N`A|18Ozz AZ2$lO diff --git a/backend/api/v1/urls.py b/backend/api/v1/urls.py index a379545..ec13eee 100644 --- a/backend/api/v1/urls.py +++ b/backend/api/v1/urls.py @@ -42,6 +42,27 @@ viewset=DocumentViewSet, ) +router_v1.register( + prefix="base_objects", + basename="base_objects", + viewset=BaseObjectViewSet, +) +router_v1.register( + prefix="base_object_fields", + basename="base_object_fields", + viewset=BaseObjectFieldViewSet, +) +router_v1.register( + prefix="objects", + basename="objects", + viewset=ObjectViewSet, +) +router_v1.register( + prefix="object_fields", + basename="object_fields", + viewset=ObjectFieldViewSet, +) + urlpatterns = [ path( "templates//favorite/", FavTemplateAPIview.as_view() diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 31c0e82..cf58adc 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -55,6 +55,11 @@ FavTemplate, Template, ) +from base_objects.models import (BaseObject, + BaseObjectField, + Object, + ObjectField + ) logger = logging.getLogger(__name__) @@ -482,3 +487,10 @@ def get(self, request, uidb64, token): user.is_active = True user.save() login(request, user) + + +class BaseObjectFieldViewSet(viewsets.ModelViewSet): + queryset = BaseObject.objects.all() + http_method_names = ("get",) + permission_classes = (IsAdminOrReadOnly,) # AllowAny + pagination_class = None \ No newline at end of file diff --git a/backend/base_objects/migrations/0005_alter_object_base_object.py b/backend/base_objects/migrations/0005_alter_object_base_object.py new file mode 100644 index 0000000..856ced4 --- /dev/null +++ b/backend/base_objects/migrations/0005_alter_object_base_object.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2 on 2024-01-03 11:04 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('base_objects', '0004_auto_20240102_2047'), + ] + + operations = [ + migrations.AlterField( + model_name='object', + name='base_object', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='objects', to='base_objects.baseobject', verbose_name='Юр или физ лицо'), + ), + ] diff --git a/backend/documents/admin.py b/backend/documents/admin.py index fcecb56..0313e74 100644 --- a/backend/documents/admin.py +++ b/backend/documents/admin.py @@ -101,6 +101,7 @@ class TemplateFieldAdmin(admin.ModelAdmin): "group", "type", "length", + "base_object_field", ) list_filter = ("template",) readonly_fields = ("id",) diff --git a/backend/documents/migrations/0034_templatefield_base_object_field.py b/backend/documents/migrations/0034_templatefield_base_object_field.py new file mode 100644 index 0000000..b292cb4 --- /dev/null +++ b/backend/documents/migrations/0034_templatefield_base_object_field.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2 on 2024-01-03 11:04 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('base_objects', '0005_alter_object_base_object'), + ('documents', '0033_templatefieldgroup_type_object'), + ] + + operations = [ + migrations.AddField( + model_name='templatefield', + name='base_object_field', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='base_objects.baseobjectfield', verbose_name='Поле базового обьекта'), + ), + ] diff --git a/backend/documents/models.py b/backend/documents/models.py index c2750dc..8875583 100644 --- a/backend/documents/models.py +++ b/backend/documents/models.py @@ -7,7 +7,7 @@ from core.constants import Messages from core.template_render import DocumentTemplate -from base_objects.models import BaseObject +from base_objects.models import BaseObject, BaseObjectField User = get_user_model() @@ -189,6 +189,13 @@ class TemplateField(models.Model): on_delete=models.CASCADE, verbose_name="Шаблон", ) + base_object_field = models.ForeignKey( + BaseObjectField, + on_delete=models.SET_NULL, + verbose_name="Поле базового обьекта", + null=True, + blank=True, + ) tag = models.CharField(max_length=255, verbose_name="Тэг поля") name = models.CharField(max_length=255, verbose_name="Наименование поля") hint = models.CharField( From 09118eedaa5801cdef98b9eda80272182a56707e Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Wed, 3 Jan 2024 21:25:47 +0400 Subject: [PATCH 54/80] kek --- backend/api/v1/documents/__init__.py | 0 backend/api/v1/documents/serializers.py | 190 +++++++ backend/api/v1/documents/views.py | 175 ++++++ backend/api/v1/favorites/__init__.py | 0 backend/api/v1/{ => favorites}/serializers.py | 0 backend/api/v1/{ => favorites}/views.py | 0 backend/api/v1/objects/__init__.py | 0 backend/api/v1/objects/serializers.py | 512 ++++++++++++++++++ backend/api/v1/objects/views.py | 496 +++++++++++++++++ backend/api/v1/templates/__init__.py | 0 backend/api/v1/templates/serializers.py | 512 ++++++++++++++++++ backend/api/v1/templates/views.py | 496 +++++++++++++++++ backend/api/v1/urls.py | 31 +- backend/api/v1/users/__init__.py | 0 backend/api/v1/users/serializers.py | 512 ++++++++++++++++++ backend/api/v1/users/views.py | 496 +++++++++++++++++ 16 files changed, 3413 insertions(+), 7 deletions(-) create mode 100644 backend/api/v1/documents/__init__.py create mode 100644 backend/api/v1/documents/serializers.py create mode 100644 backend/api/v1/documents/views.py create mode 100644 backend/api/v1/favorites/__init__.py rename backend/api/v1/{ => favorites}/serializers.py (100%) rename backend/api/v1/{ => favorites}/views.py (100%) create mode 100644 backend/api/v1/objects/__init__.py create mode 100644 backend/api/v1/objects/serializers.py create mode 100644 backend/api/v1/objects/views.py create mode 100644 backend/api/v1/templates/__init__.py create mode 100644 backend/api/v1/templates/serializers.py create mode 100644 backend/api/v1/templates/views.py create mode 100644 backend/api/v1/users/__init__.py create mode 100644 backend/api/v1/users/serializers.py create mode 100644 backend/api/v1/users/views.py diff --git a/backend/api/v1/documents/__init__.py b/backend/api/v1/documents/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v1/documents/serializers.py b/backend/api/v1/documents/serializers.py new file mode 100644 index 0000000..e2398e8 --- /dev/null +++ b/backend/api/v1/documents/serializers.py @@ -0,0 +1,190 @@ +"""Сериализаторы для API.""" +import base64 +from django.contrib.auth import get_user_model +from django.utils import timezone +from django.core.files.base import ContentFile +from django.db import transaction +from rest_framework import serializers + +from api.v1.utils import custom_fieldtypes_validation +from api.v1.templates.serializers import (TemplateGroupSerializer, + TemplateSerializerMinified, + TemplateFieldSerializerMinified) +from core.constants import Messages +from documents.models import ( + Document, + DocumentField,) + +User = get_user_model() + + +class Base64ImageField(serializers.ImageField): + def to_internal_value(self, data): + if isinstance(data, str) and data.startswith("data:image"): + format, imgstr = data.split(";base64,") + ext = format.split("/")[-1] + + data = ContentFile(base64.b64decode(imgstr), name="temp." + ext) + + return super().to_internal_value(data) + + +class DocumentFieldSerializer(serializers.ModelSerializer): + """Сериализатор поля документов.""" + + description = serializers.CharField(required=False, max_length=200) + + class Meta: + model = DocumentField + exclude = ("document",) + + +class DocumentFieldWriteSerializer(serializers.ModelSerializer): + """Сериализатор для полей документа или превью шаблона.""" + + # description = serializers.CharField(required=False, max_length=200) + + class Meta: + model = DocumentField + fields = ("field", "value") + + def validate_field(self, template_field): + template_fields = self.context.get("template_fields", set()) + if template_field not in template_fields: + raise serializers.ValidationError( + Messages.WRONG_TEMPLATE_FIELD.format(template_field.id) + ) + return template_field + + +class DocumentReadSerializerMinified(serializers.ModelSerializer): + """Сериализатор документов сокращенный (без информации о полях)""" + + is_favorited = serializers.SerializerMethodField() + + class Meta: + model = Document + fields = ( + "id", + "created", + "updated", + "completed", + "description", + "template", + "owner", + "is_favorited", + ) + + def get_is_favorited(self, document: Document) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavDocument.objects.filter( + user=user, document=document + ).exists() + + +class DocumentReadSerializerExtended(serializers.ModelSerializer): + """Сериализатор документов расширенный (с информацией полей шаблона).""" + + grouped_fields = TemplateGroupSerializer( + read_only=True, + many=True, + source="template.field_groups", + allow_empty=True, + ) + ungrouped_fields = serializers.SerializerMethodField() + is_favorited = serializers.SerializerMethodField() + template = TemplateSerializerMinified(read_only=True) + + class Meta: + model = Document + fields = ( + "id", + "created", + "updated", + "completed", + "description", + "template", + "owner", + "is_favorited", + "grouped_fields", + "ungrouped_fields", + ) + + def get_is_favorited(self, document: Document) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavDocument.objects.filter( + user=user, document=document + ).exists() + + def get_ungrouped_fields(self, instance): + solo_fields = instance.template.fields.filter(group=None).order_by( + "id" + ) + return TemplateFieldSerializerMinified(solo_fields, many=True).data + + def to_representation(self, instance): + response = super().to_representation(instance) + response["grouped_fields"].sort(key=lambda x: x["id"]) + # add field values + field_vals = {} + for document_field in instance.document_fields.all(): + field_vals[document_field.field.id] = document_field.value + for group in response["grouped_fields"]: + for field in group["fields"]: + id = field.get("id") + if id in field_vals: + field["value"] = field_vals[id] + for field in response["ungrouped_fields"]: + id = field.get("id") + if id in field_vals: + field["value"] = field_vals[id] + return response + + +class DocumentWriteSerializer(serializers.ModelSerializer): + """Сериализатор документов.""" + + document_fields = DocumentFieldSerializer(many=True) + + class Meta: + model = Document + fields = ( + "id", + "created", + "completed", + "description", + "template", + "document_fields", + ) + + @transaction.atomic + def create(self, validated_data): + """Создание документа и полей документа""" + document_fields = validated_data.pop("document_fields", None) + document = Document.objects.create(**validated_data) + custom_fieldtypes_validation(document_fields) + document.create_document_fields(document_fields) + return document + + @transaction.atomic + def update(self, instance, validated_data): + """Обновление документа и полей документа""" + document_fields = validated_data.pop("document_fields", None) + Document.objects.filter(id=instance.id).update( + **validated_data, updated=timezone.now() + ) + document = Document.objects.get(id=instance.id) + if document_fields is not None: + custom_fieldtypes_validation(document_fields) + document.document_fields.all().delete() + document.create_document_fields(document_fields) + return document + + def to_representation(self, instance): + return DocumentReadSerializerMinified( + instance, context={"request": self.context.get("request")} + ).data diff --git a/backend/api/v1/documents/views.py b/backend/api/v1/documents/views.py new file mode 100644 index 0000000..3bc5013 --- /dev/null +++ b/backend/api/v1/documents/views.py @@ -0,0 +1,175 @@ +"""Вьюсеты v1 API.""" +from datetime import datetime +import logging + +from django.contrib.auth import get_user_model +from django.http import FileResponse +from django.shortcuts import get_object_or_404 +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework import ( + filters, + status, + viewsets, +) +from rest_framework.decorators import action +from rest_framework.exceptions import PermissionDenied +from rest_framework.permissions import IsAuthenticated +from rest_framework.response import Response + +from .serializers import ( + DocumentFieldSerializer, + DocumentReadSerializerExtended, + DocumentReadSerializerMinified, + DocumentWriteSerializer, + +) + +from api.v1 import utils as v1utils +from documents.models import Document + +logger = logging.getLogger(__name__) + +User = get_user_model() + + +def send_file(filestream, filename: str, as_attachment: bool = True): + """Функция подготовки открытого двоичного файла к отправке.""" + response = FileResponse( + streaming_content=filestream, + as_attachment=as_attachment, + filename=filename, + ) + return response + + +class DocumentViewSet(viewsets.ModelViewSet): + """Документ.""" + + queryset = Document.objects.all() + serializer_class = DocumentReadSerializerMinified + http_method_names = ("get", "post", "patch", "delete") + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + filter_backends = ( + filters.SearchFilter, + filters.OrderingFilter, + DjangoFilterBackend, + ) + pagination_class = None + filterset_fields = ("owner",) + search_fields = ("owner",) + + def get_queryset(self): + """Выдаем только список документов текущего пользователя.""" + # ЗАглушка + if self.request.user.is_authenticated: + return self.request.user.documents + else: + user = User.objects.get(id=1) + return Document.objects.filter(owner=user) + return Document.objects.none() + + def get_serializer_class(self): + """Выбор сериализатора.""" + if self.action == "retrieve": + return DocumentReadSerializerExtended + elif self.action == "list": + return DocumentReadSerializerMinified + return DocumentWriteSerializer + + def perform_create(self, serializer): + serializer.save(owner=self.request.user) + + @action( + detail=False, + permission_classes=[ + IsAuthenticated, + # AllowAny, # Заглушка + ], + url_path=r"draft", + ) + def draft_documents(self, request): + """Возвращает список незаконченных документов/черновиков""" + user = self.request.user + queryset = Document.objects.filter(completed=False, owner=user) + serializer = DocumentReadSerializerMinified( + queryset, many=True, context={"request": request} + ) + return Response(serializer.data, status=status.HTTP_200_OK) + + @action( + detail=False, + permission_classes=[ + IsAuthenticated, + ], + url_path=r"history", + ) + def history_documents(self, request): + """Возвращает список законченных документов/история""" + user = self.request.user + queryset = Document.objects.filter(completed=True, owner=user) + serializer = DocumentReadSerializerMinified( + queryset, many=True, context={"request": request} + ) + return Response(serializer.data, status=status.HTTP_200_OK) + + @action( + detail=True, + permission_classes=[ + IsAuthenticated + ], + url_path=r"download_document", + ) + def download_document(self, request, pk=None): + """Скачивание готового документа.""" + logger.debug(f"Start docx generation for document_id {pk}") + start_time = datetime.utcnow() + document = get_object_or_404(Document, id=pk) + buffer = v1utils.fill_docx_template_for_document(document) + docx_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for document_id {pk} is {docx_time-start_time}" + ) + response = send_file(buffer, f"{document.template.name}.docx") + return response + + @action( + detail=True, + permission_classes=[ + IsAuthenticated + ], + url_path="download_pdf", + ) + def download_pdf(self, request, pk=None): + """Генерация и выдача на скачивание pdf-файла.""" + document = get_object_or_404(Document, pk=pk) + logger.debug(f"Start docx generation for document_id {pk}") + start_time = datetime.utcnow() + buffer = v1utils.create_document_pdf_for_export(document) + pdf_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for document_id {pk} is {pdf_time-start_time}" + ) + response = send_file(buffer, f"{document.template.name}.pdf") + return response + + +class DocumentFieldViewSet(viewsets.ModelViewSet): + """Поле шаблона.""" + + queryset = Document.objects.all() + serializer_class = DocumentFieldSerializer + http_method_names = ("get",) + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + pagination_class = None + + def get_queryset(self): + document_id = self.kwargs.get("document_id") + document = get_object_or_404(Document, id=document_id) + if ( + not self.request.user.is_staff + and document.owner != self.request.user + ): + raise PermissionDenied() + return document.document_fields.all() diff --git a/backend/api/v1/favorites/__init__.py b/backend/api/v1/favorites/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v1/serializers.py b/backend/api/v1/favorites/serializers.py similarity index 100% rename from backend/api/v1/serializers.py rename to backend/api/v1/favorites/serializers.py diff --git a/backend/api/v1/views.py b/backend/api/v1/favorites/views.py similarity index 100% rename from backend/api/v1/views.py rename to backend/api/v1/favorites/views.py diff --git a/backend/api/v1/objects/__init__.py b/backend/api/v1/objects/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v1/objects/serializers.py b/backend/api/v1/objects/serializers.py new file mode 100644 index 0000000..c917814 --- /dev/null +++ b/backend/api/v1/objects/serializers.py @@ -0,0 +1,512 @@ +"""Сериализаторы для API.""" +import base64 +from django.contrib.auth import get_user_model +from django.utils import timezone +from django.core.files.base import ContentFile +from django.db import transaction +from djoser.serializers import UserSerializer +from rest_framework import serializers + +from .utils import custom_fieldtypes_validation, get_non_unique_items +from core.constants import Messages +from documents.models import ( + Category, + Document, + DocumentField, + FavDocument, + FavTemplate, + Template, + TemplateField, + TemplateFieldGroup, + TemplateFieldType, +) + +User = get_user_model() + + +class Base64ImageField(serializers.ImageField): + def to_internal_value(self, data): + if isinstance(data, str) and data.startswith("data:image"): + format, imgstr = data.split(";base64,") + ext = format.split("/")[-1] + + data = ContentFile(base64.b64decode(imgstr), name="temp." + ext) + + return super().to_internal_value(data) + + +class TemplateFieldSerializer(serializers.ModelSerializer): + """Сериализатор поля шаблона.""" + + group_id = serializers.PrimaryKeyRelatedField( + source="group", read_only=True + ) + group_name = serializers.StringRelatedField( + source="group.name", read_only=True + ) + type = serializers.SlugRelatedField(slug_field="type", read_only=True) + mask = serializers.CharField(source="type.mask", read_only=True) + + class Meta: + model = TemplateField + fields = ( + "id", + "tag", + "name", + "hint", + "group_id", + "group_name", + "type", + "mask", + "length", + ) + + +class TemplateFieldWriteSerializer(serializers.ModelSerializer): + """Сериализатор поля шаблона для записи/обновления""" + + type = serializers.SlugRelatedField( + queryset=TemplateFieldType.objects.all(), slug_field="type" + ) + group = serializers.IntegerField(required=False, default=None) + default = serializers.CharField( + trim_whitespace=False, max_length=255, required=False + ) + + class Meta: + model = TemplateField + fields = ("tag", "name", "hint", "group", "type", "length", "default") + + +class TemplateFieldSerializerMinified(serializers.ModelSerializer): + """Сериализатор поля шаблона сокращенный (без полей группы)""" + + type = serializers.SlugRelatedField(slug_field="type", read_only=True) + mask = serializers.CharField(source="type.mask", read_only=True) + + class Meta: + model = TemplateField + fields = ( + "id", + "tag", + "name", + "hint", + "type", + "mask", + "length", + "default", + ) + + +class TemplateGroupSerializerMinified(serializers.ModelSerializer): + """Сериализатор группы полей шаблона без вложенных полей""" + + class Meta: + model = TemplateFieldGroup + fields = ("id", "name") + + +class TemplateGroupSerializer(serializers.ModelSerializer): + """Сериализатор группы полей шаблона""" + + fields = TemplateFieldSerializerMinified( + read_only=True, + many=True, + # source="fields", + allow_empty=True, + ) + + class Meta: + model = TemplateField + fields = ( + "id", + "name", + "fields", + ) + + def to_representation(self, instance): + response = super().to_representation(instance) + response["fields"].sort(key=lambda x: x["id"]) + return response + + +class TemplateGroupWriteSerializer(serializers.ModelSerializer): + """Сериализатор группы полей шаблона для записи/обновления""" + + id = serializers.IntegerField() + + class Meta: + model = TemplateFieldGroup + fields = ( + "id", + "name", + ) + + +class TemplateSerializerMinified(serializers.ModelSerializer): + """Сериализатор шаблонов сокращенный.""" + + is_favorited = serializers.SerializerMethodField() + image = Base64ImageField(required=True, allow_null=True) + + class Meta: + model = Template + exclude = ("template",) + read_only_fields = ( + "name", + "category", + "owner", + "image", + "modified", + "deleted", + "description", + "is_favorited", + ) + + def get_is_favorited(self, template: Template) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavTemplate.objects.filter( + user=user, template=template + ).exists() + + +class TemplateSerializerPlain(TemplateSerializerMinified): + """Сериализатор шаблона (без вложенности полей в группы).""" + + fields = TemplateFieldSerializer( + read_only=True, + many=True, + # source="fields", + allow_empty=True, + ) + + groups = TemplateGroupSerializerMinified( + source="field_groups", + read_only=True, + many=True, + allow_empty=True, + ) + + class Meta(TemplateSerializerMinified.Meta): + model = Template + exclude = ("template",) + # fields = "__all__" + read_only_fields = ("is_favorited", "groups") + + +class TemplateSerializer(TemplateSerializerMinified): + """Сериализатор шаблона (поля сгруппированы внутри grouped_fields).""" + + grouped_fields = TemplateGroupSerializer( + read_only=True, + many=True, + source="field_groups", + allow_empty=True, + ) + ungrouped_fields = serializers.SerializerMethodField() + + class Meta(TemplateSerializerMinified.Meta): + model = Template + exclude = ("template",) + read_only_fields = ( + "is_favorited", + "grouped_fields", + "ungrouped_fields", + ) + + def get_ungrouped_fields(self, instance): + solo_fields = instance.fields.filter(group=None).order_by("id") + return TemplateFieldSerializerMinified(solo_fields, many=True).data + + def to_representation(self, instance): + response = super().to_representation(instance) + response["grouped_fields"].sort(key=lambda x: x["id"]) + return response + + +class TemplateWriteSerializer(serializers.ModelSerializer): + """Сериализатор шаблонов для записи/изменения.""" + + fields = TemplateFieldWriteSerializer(many=True) + groups = TemplateGroupWriteSerializer(many=True) + + class Meta: + model = Template + fields = ("name", "deleted", "description", "fields", "groups") + + def validate(self, data): + # проверка, что все поля имеют уникальные тэги + data_fields = data.get("fields") + field_tags = [f["tag"] for f in data_fields] + tags_duplicates = get_non_unique_items(field_tags) + if tags_duplicates: + raise serializers.ValidationError( + detail=Messages.TEMPLATE_FIELD_TAGS_ARE_NOT_UNIQUE.format( + tags_duplicates + ) + ) + + # проверка, что все группы имеют уникальный id + data_groups = data.get("groups") + group_ids = [g["id"] for g in data_groups] + ids_duplicates = get_non_unique_items(group_ids) + if ids_duplicates: + raise serializers.ValidationError( + detail=Messages.TEMPLATE_GROUP_IDS_ARE_NOT_UNIQUE.format( + ids_duplicates + ) + ) + + # проверка, что поля шаблона привязаны к описанным группам в group + field_groups = set([f.get("group") for f in data_fields]) + if None in field_groups: + field_groups.discard(None) + unknown_groups = field_groups - set(group_ids) + if unknown_groups: + raise serializers.ValidationError( + detail=Messages.UNKNOWN_GROUP_ID.format(unknown_groups) + ) + return data + + def create(self, data): + data_fields = data.pop("fields") + data_groups = data.pop("groups") + template = Template.objects.create(**data) + # создание групп + data_groups.sort(key=lambda x: x["id"]) + group_models = {} + for group in data_groups: + model = TemplateFieldGroup.objects.create( + name=group["name"], template=template + ) + group_models[group["id"]] = model + # создание полей + template_fields = [] + for data in data_fields: + group_id = data.get("group") + if group_id: + data["group"] = group_models[group_id] + template_fields.append(TemplateField(template=template, **data)) + TemplateField.objects.bulk_create(template_fields) + return template + + def to_representation(self, instance): + request = self.context.get("request") + return TemplateSerializerPlain( + instance, context={"request": request} + ).data + + +class DocumentFieldSerializer(serializers.ModelSerializer): + """Сериализатор поля документов.""" + + description = serializers.CharField(required=False, max_length=200) + + class Meta: + model = DocumentField + exclude = ("document",) + + +class DocumentFieldWriteSerializer(serializers.ModelSerializer): + """Сериализатор для полей документа или превью шаблона.""" + + # description = serializers.CharField(required=False, max_length=200) + + class Meta: + model = DocumentField + fields = ("field", "value") + + def validate_field(self, template_field): + template_fields = self.context.get("template_fields", set()) + if template_field not in template_fields: + raise serializers.ValidationError( + Messages.WRONG_TEMPLATE_FIELD.format(template_field.id) + ) + return template_field + + +class DocumentReadSerializerMinified(serializers.ModelSerializer): + """Сериализатор документов сокращенный (без информации о полях)""" + + is_favorited = serializers.SerializerMethodField() + + class Meta: + model = Document + fields = ( + "id", + "created", + "updated", + "completed", + "description", + "template", + "owner", + "is_favorited", + ) + + def get_is_favorited(self, document: Document) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavDocument.objects.filter( + user=user, document=document + ).exists() + + +class DocumentReadSerializerExtended(serializers.ModelSerializer): + """Сериализатор документов расширенный (с информацией полей шаблона).""" + + grouped_fields = TemplateGroupSerializer( + read_only=True, + many=True, + source="template.field_groups", + allow_empty=True, + ) + ungrouped_fields = serializers.SerializerMethodField() + is_favorited = serializers.SerializerMethodField() + template = TemplateSerializerMinified(read_only=True) + + class Meta: + model = Document + fields = ( + "id", + "created", + "updated", + "completed", + "description", + "template", + "owner", + "is_favorited", + "grouped_fields", + "ungrouped_fields", + ) + + def get_is_favorited(self, document: Document) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavDocument.objects.filter( + user=user, document=document + ).exists() + + def get_ungrouped_fields(self, instance): + solo_fields = instance.template.fields.filter(group=None).order_by( + "id" + ) + return TemplateFieldSerializerMinified(solo_fields, many=True).data + + def to_representation(self, instance): + response = super().to_representation(instance) + response["grouped_fields"].sort(key=lambda x: x["id"]) + # add field values + field_vals = {} + for document_field in instance.document_fields.all(): + field_vals[document_field.field.id] = document_field.value + for group in response["grouped_fields"]: + for field in group["fields"]: + id = field.get("id") + if id in field_vals: + field["value"] = field_vals[id] + for field in response["ungrouped_fields"]: + id = field.get("id") + if id in field_vals: + field["value"] = field_vals[id] + return response + + +class DocumentWriteSerializer(serializers.ModelSerializer): + """Сериализатор документов.""" + + document_fields = DocumentFieldSerializer(many=True) + + class Meta: + model = Document + fields = ( + "id", + "created", + "completed", + "description", + "template", + "document_fields", + ) + + @transaction.atomic + def create(self, validated_data): + """Создание документа и полей документа""" + document_fields = validated_data.pop("document_fields", None) + document = Document.objects.create(**validated_data) + custom_fieldtypes_validation(document_fields) + document.create_document_fields(document_fields) + return document + + @transaction.atomic + def update(self, instance, validated_data): + """Обновление документа и полей документа""" + document_fields = validated_data.pop("document_fields", None) + Document.objects.filter(id=instance.id).update( + **validated_data, updated=timezone.now() + ) + document = Document.objects.get(id=instance.id) + if document_fields is not None: + custom_fieldtypes_validation(document_fields) + document.document_fields.all().delete() + document.create_document_fields(document_fields) + return document + + def to_representation(self, instance): + return DocumentReadSerializerMinified( + instance, context={"request": self.context.get("request")} + ).data + + +class FavTemplateSerializer(serializers.ModelSerializer): + class Meta: + model = FavTemplate + fields = "__all__" + + +class FavDocumentSerializer(serializers.ModelSerializer): + class Meta: + model = FavDocument + fields = "__all__" + + +class CategorySerializer(serializers.ModelSerializer): + class Meta: + model = Category + fields = "__all__" + + +class TemplateFileUploadSerializer(serializers.ModelSerializer): + errors = serializers.SerializerMethodField() + + class Meta: + model = Template + fields = ("template", "errors") + + def get_errors(self, instance): + return instance.get_consistency_errors() + + +class CustomUserSerializer(UserSerializer): + password = serializers.CharField(write_only=True) + + class Meta: + model = User + fields = ("id", "email", "password") + read_only_fields = ("id",) + + def create(self, validated_data): + email = validated_data.get("email") + password = validated_data.get("password") + username = email + user = User(email=email, username=username) + user.set_password(password) + user.save() + return user + + def validate(self, data): + if User.objects.filter(email=data["email"]): + raise serializers.ValidationError("Такой email уже есть!") + return data diff --git a/backend/api/v1/objects/views.py b/backend/api/v1/objects/views.py new file mode 100644 index 0000000..cf58adc --- /dev/null +++ b/backend/api/v1/objects/views.py @@ -0,0 +1,496 @@ +"""Вьюсеты v1 API.""" +from datetime import datetime +import io +import logging +import os +from pathlib import Path + +# import aspose.words as aw + +from django.contrib.auth import get_user_model +from django.http import FileResponse +from django.shortcuts import get_object_or_404 +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework import ( + filters, + generics, + serializers, + status, + views, + viewsets, +) +from rest_framework.decorators import action +from rest_framework.exceptions import PermissionDenied +from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated +from rest_framework.response import Response +from rest_framework.views import APIView +from rest_framework_simplejwt.tokens import RefreshToken + +from .permissions import IsAdminOrReadOnly, IsOwner, IsOwnerOrAdminOrReadOnly +from .serializers import ( + CategorySerializer, + DocumentFieldSerializer, + DocumentFieldWriteSerializer, + DocumentReadSerializerExtended, + DocumentReadSerializerMinified, + DocumentWriteSerializer, + FavDocumentSerializer, + FavTemplateSerializer, + TemplateFieldSerializer, + TemplateFileUploadSerializer, + TemplateSerializer, + TemplateSerializerMinified, + TemplateWriteSerializer, + CustomUserSerializer, +) + + +from api.v1 import utils as v1utils +from core.constants import Messages +from core.template_render import DocumentTemplate +from documents.models import ( + Category, + Document, + FavDocument, + FavTemplate, + Template, +) +from base_objects.models import (BaseObject, + BaseObjectField, + Object, + ObjectField + ) + +logger = logging.getLogger(__name__) + +User = get_user_model() + + +class CategoryViewSet(viewsets.ModelViewSet): + queryset = Category.objects.all() + serializer_class = CategorySerializer + permission_classes = (AllowAny,) + + +def send_file(filestream, filename: str, as_attachment: bool = True): + """Функция подготовки открытого двоичного файла к отправке.""" + response = FileResponse( + streaming_content=filestream, + as_attachment=as_attachment, + filename=filename, + ) + return response + + +class TemplateViewSet(viewsets.ModelViewSet): + """Шаблон.""" + + serializer_class = TemplateSerializer + http_method_names = ("get", "delete", "post") + permission_classes = (IsAdminOrReadOnly,) # AllowAny + filter_backends = ( + DjangoFilterBackend, + filters.SearchFilter, + filters.OrderingFilter, + ) + pagination_class = None + filterset_fields = ( + "owner", + "category", + ) + search_fields = ( + "owner", + "category", + ) + + def get_serializer_class(self): + if self.action == "list": + return TemplateSerializerMinified + elif self.action == "create": + return TemplateWriteSerializer + return TemplateSerializer + + def get_queryset(self): + if self.request.user.is_superuser: + return Template.objects.all() + else: + return Template.objects.filter(deleted=False) + + @action( + detail=True, + methods=["get"], + permission_classes=(AllowAny,), + url_path="download_draft", + url_name="download_draft", + ) + def download_draft(self, request, pk=None): + # template = get_object_or_404(Template, pk=pk) + template = serializers.PrimaryKeyRelatedField( + many=False, queryset=Template.objects.all() + ).to_internal_value(data=pk) + context = {field.tag: field.name for field in template.fields.all()} + path = template.template + doc = DocumentTemplate(path) + buffer = doc.get_draft(context) + filename = f"{template.name}_шаблон.docx" + if request.query_params.get("pdf"): + buffer = v1utils.convert_file_to_pdf(buffer) + filename = f"{template.name}_шаблон.pdf" + response = send_file(buffer, filename) + return response + + def destroy(self, request, *args, **kwargs): + user = request.user + template = self.get_object() + if not (user == template.owner or user.is_superuser): + return Response(status=status.HTTP_404_NOT_FOUND) + if template.deleted: + return Response( + Messages.TEMPLATE_ALREADY_DELETED, + status=status.HTTP_404_NOT_FOUND, + ) + template.deleted = True + template.save() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class TemplateFieldViewSet(viewsets.ModelViewSet): + """Поля шаблона.""" + + serializer_class = TemplateFieldSerializer + http_method_names = ("get",) + permission_classes = (IsAdminOrReadOnly,) + # permission_classes = (AllowAny,) # Заглушка + pagination_class = None + + def get_queryset(self): + template_id = self.kwargs.get("template_id") + template = get_object_or_404(Template, id=template_id) + return template.fields.all() + + +class DocumentViewSet(viewsets.ModelViewSet): + """Документ.""" + + queryset = Document.objects.all() + serializer_class = DocumentReadSerializerMinified + http_method_names = ("get", "post", "patch", "delete") + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + filter_backends = ( + filters.SearchFilter, + filters.OrderingFilter, + DjangoFilterBackend, + ) + pagination_class = None + filterset_fields = ("owner",) + search_fields = ("owner",) + + def get_queryset(self): + """Выдаем только список документов текущего пользователя.""" + # ЗАглушка + if self.request.user.is_authenticated: + return self.request.user.documents + else: + user = User.objects.get(id=1) + return Document.objects.filter(owner=user) + return Document.objects.none() + + def get_serializer_class(self): + """Выбор сериализатора.""" + if self.action == "retrieve": + return DocumentReadSerializerExtended + elif self.action == "list": + return DocumentReadSerializerMinified + return DocumentWriteSerializer + + def perform_create(self, serializer): + serializer.save(owner=self.request.user) + + @action( + detail=False, + permission_classes=[ + IsAuthenticated, + # AllowAny, # Заглушка + ], + url_path=r"draft", + ) + def draft_documents(self, request): + """Возвращает список незаконченных документов/черновиков""" + user = self.request.user + queryset = Document.objects.filter(completed=False, owner=user) + serializer = DocumentReadSerializerMinified( + queryset, many=True, context={"request": request} + ) + return Response(serializer.data, status=status.HTTP_200_OK) + + @action( + detail=False, + permission_classes=[ + IsAuthenticated, + ], + url_path=r"history", + ) + def history_documents(self, request): + """Возвращает список законченных документов/история""" + user = self.request.user + queryset = Document.objects.filter(completed=True, owner=user) + serializer = DocumentReadSerializerMinified( + queryset, many=True, context={"request": request} + ) + return Response(serializer.data, status=status.HTTP_200_OK) + + @action( + detail=True, + permission_classes=[ + IsAuthenticated + ], + url_path=r"download_document", + ) + def download_document(self, request, pk=None): + """Скачивание готового документа.""" + logger.debug(f"Start docx generation for document_id {pk}") + start_time = datetime.utcnow() + document = get_object_or_404(Document, id=pk) + buffer = v1utils.fill_docx_template_for_document(document) + docx_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for document_id {pk} is {docx_time-start_time}" + ) + response = send_file(buffer, f"{document.template.name}.docx") + return response + + @action( + detail=True, + permission_classes=[ + IsAuthenticated + ], + url_path="download_pdf", + ) + def download_pdf(self, request, pk=None): + """Генерация и выдача на скачивание pdf-файла.""" + document = get_object_or_404(Document, pk=pk) + logger.debug(f"Start docx generation for document_id {pk}") + start_time = datetime.utcnow() + buffer = v1utils.create_document_pdf_for_export(document) + pdf_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for document_id {pk} is {pdf_time-start_time}" + ) + response = send_file(buffer, f"{document.template.name}.pdf") + return response + + +class DocumentFieldViewSet(viewsets.ModelViewSet): + """Поле шаблона.""" + + queryset = Document.objects.all() + serializer_class = DocumentFieldSerializer + http_method_names = ("get",) + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + pagination_class = None + + def get_queryset(self): + document_id = self.kwargs.get("document_id") + document = get_object_or_404(Document, id=document_id) + if ( + not self.request.user.is_staff + and document.owner != self.request.user + ): + raise PermissionDenied() + return document.document_fields.all() + + +class FavTemplateAPIview(APIView): + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + + def post(self, request, **kwargs): + data = { + "user": self.request.user.pk, + "template": self.kwargs.get("template_id"), + } + serializer = FavTemplateSerializer(data=data) + queryset = FavTemplate.objects.filter( + user=self.request.user.pk, template=self.kwargs.get("template_id") + ) + # проверка, что такого FavTemplate нет в БД + if queryset.exists(): + raise serializers.ValidationError( + "Этот шаблон уже есть в Избранном!" + ) + if serializer.is_valid(): + serializer.save() + return Response(status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + def delete(self, request, **kwargs): + queryset = FavTemplate.objects.filter( + user=self.request.user.pk, template=self.kwargs.get("template_id") + ) + # проверка, что такой FavTemplate существует в БД + if not queryset.exists(): + return Response(status=status.HTTP_404_NOT_FOUND) + queryset.delete() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class FavDocumentAPIview(APIView): + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + + def post(self, request, **kwargs): + data = { + "user": self.request.user.pk, + "document": self.kwargs.get("document_id"), + } + serializer = FavDocumentSerializer(data=data) + queryset = FavDocument.objects.filter( + user=self.request.user.pk, document=self.kwargs.get("document_id") + ) + # проверка, что такого FavDocument нет в БД + if queryset.exists(): + raise serializers.ValidationError( + "Этот документ уже есть в Избранном!" + ) + if serializer.is_valid(): + serializer.save() + return Response(status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + def delete(self, request, **kwargs): + queryset = FavDocument.objects.filter( + user=self.request.user.pk, document=self.kwargs.get("document_id") + ) + # проверка, что такой FavDocument существует в БД + if not queryset.exists(): + return Response(status=status.HTTP_404_NOT_FOUND) + queryset.delete() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class AnonymousDownloadPreviewAPIView(views.APIView): + permission_classes = (AllowAny,) + + def post(self, request, template_id): + logger.debug(f"Start preview generation for template {template_id}") + start_time = datetime.utcnow() + template = get_object_or_404(Template, id=template_id) + document_fields = request.data.get("document_fields") + serializer = DocumentFieldWriteSerializer( + data=document_fields, + context={"template_fields": set(template.fields.all())}, + many=True, + ) + serializer.is_valid(raise_exception=True) + v1utils.custom_fieldtypes_validation(serializer.validated_data) + context = {} + for data in serializer.validated_data: + if data["value"]: # write only fields with non empty value + context[data["field"].tag] = data["value"] + context_default = { + field.tag: field.default or field.name + for field in template.fields.all() + } + doc = DocumentTemplate(template.template) + buffer = doc.get_partial(context, context_default) + filename = f"{template.name}_preview.docx" + docx_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for template {template_id} is {docx_time-start_time}" + ) + if request.query_params.get("pdf"): + buffer = v1utils.convert_file_to_pdf(buffer) + filename = f"{template.name}_preview.pdf" + pdf_time = datetime.utcnow() + logger.debug( + f"Time of pdf generation for template {template_id} is {pdf_time-docx_time}" + ) + response = send_file(buffer, filename) + return response + + +class CheckTemplateConsistencyAPIView(views.APIView): + permission_classes = (IsAdminUser,) + # permission_classes = (AllowAny,) # Заглушка + + def get(self, request, template_id): + template = get_object_or_404(Template, id=template_id) + errors = template.get_consistency_errors() + if errors: + return Response(data={"errors": errors}, status=status.HTTP_200_OK) + else: + return Response( + data={"result": Messages.TEMPLATE_CONSISTENT}, + status=status.HTTP_200_OK, + ) + + +class UploadTemplateFileAPIView(generics.UpdateAPIView): + queryset = Template.objects.all() + serializer_class = TemplateFileUploadSerializer + lookup_field = "id" + lookup_url_kwarg = "template_id" + permission_classes = (IsAdminUser,) + # permission_classes = (AllowAny,) # Заглушка + http_method_names = ["patch", "put"] + +from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode +from django.utils.encoding import force_bytes +from django.urls import reverse_lazy +from django.views.generic import CreateView, View, TemplateView + +class RegisterView(generics.GenericAPIView): + serializer_class = CustomUserSerializer + + def post(self, request): + user = request.data + serializer = self.serializer_class(data=user) + serializer.is_valid(raise_exception=True) + serializer.save() + user_data = serializer.data + user = User.objects.get(email=user_data["email"]) + token = RefreshToken.for_user(user).access_token + + uid = urlsafe_base64_encode(force_bytes(user.pk)) + activation_url = reverse_lazy('confirm_email', kwargs={'uidb64': uid, 'token': token}) + print(activation_url) + absurl = f'http://127.0.0.1:9000/{activation_url}' + email_body = ( + "Hi " + + user.username + + " Use the link below to verify your email \n" + + absurl + ) + print(email_body) + data = { + "email_body": email_body, + "to_email": user.email, + "email_subject": "Verify your email", + } + + Util.send_email(data) + return Response(user_data, status=status.HTTP_201_CREATED) + +from django.contrib.auth.tokens import default_token_generator +from django.contrib.auth import login +class UserConfirmEmailView(View): + def get(self, request, uidb64, token): + try: + uid = urlsafe_base64_decode(uidb64) + user = User.objects.get(pk=uid) + except (TypeError, ValueError, OverflowError, User.DoesNotExist): + user = None + + if user is not None and default_token_generator.check_token(user, token): + user.is_active = True + user.save() + login(request, user) + + +class BaseObjectFieldViewSet(viewsets.ModelViewSet): + queryset = BaseObject.objects.all() + http_method_names = ("get",) + permission_classes = (IsAdminOrReadOnly,) # AllowAny + pagination_class = None \ No newline at end of file diff --git a/backend/api/v1/templates/__init__.py b/backend/api/v1/templates/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v1/templates/serializers.py b/backend/api/v1/templates/serializers.py new file mode 100644 index 0000000..c917814 --- /dev/null +++ b/backend/api/v1/templates/serializers.py @@ -0,0 +1,512 @@ +"""Сериализаторы для API.""" +import base64 +from django.contrib.auth import get_user_model +from django.utils import timezone +from django.core.files.base import ContentFile +from django.db import transaction +from djoser.serializers import UserSerializer +from rest_framework import serializers + +from .utils import custom_fieldtypes_validation, get_non_unique_items +from core.constants import Messages +from documents.models import ( + Category, + Document, + DocumentField, + FavDocument, + FavTemplate, + Template, + TemplateField, + TemplateFieldGroup, + TemplateFieldType, +) + +User = get_user_model() + + +class Base64ImageField(serializers.ImageField): + def to_internal_value(self, data): + if isinstance(data, str) and data.startswith("data:image"): + format, imgstr = data.split(";base64,") + ext = format.split("/")[-1] + + data = ContentFile(base64.b64decode(imgstr), name="temp." + ext) + + return super().to_internal_value(data) + + +class TemplateFieldSerializer(serializers.ModelSerializer): + """Сериализатор поля шаблона.""" + + group_id = serializers.PrimaryKeyRelatedField( + source="group", read_only=True + ) + group_name = serializers.StringRelatedField( + source="group.name", read_only=True + ) + type = serializers.SlugRelatedField(slug_field="type", read_only=True) + mask = serializers.CharField(source="type.mask", read_only=True) + + class Meta: + model = TemplateField + fields = ( + "id", + "tag", + "name", + "hint", + "group_id", + "group_name", + "type", + "mask", + "length", + ) + + +class TemplateFieldWriteSerializer(serializers.ModelSerializer): + """Сериализатор поля шаблона для записи/обновления""" + + type = serializers.SlugRelatedField( + queryset=TemplateFieldType.objects.all(), slug_field="type" + ) + group = serializers.IntegerField(required=False, default=None) + default = serializers.CharField( + trim_whitespace=False, max_length=255, required=False + ) + + class Meta: + model = TemplateField + fields = ("tag", "name", "hint", "group", "type", "length", "default") + + +class TemplateFieldSerializerMinified(serializers.ModelSerializer): + """Сериализатор поля шаблона сокращенный (без полей группы)""" + + type = serializers.SlugRelatedField(slug_field="type", read_only=True) + mask = serializers.CharField(source="type.mask", read_only=True) + + class Meta: + model = TemplateField + fields = ( + "id", + "tag", + "name", + "hint", + "type", + "mask", + "length", + "default", + ) + + +class TemplateGroupSerializerMinified(serializers.ModelSerializer): + """Сериализатор группы полей шаблона без вложенных полей""" + + class Meta: + model = TemplateFieldGroup + fields = ("id", "name") + + +class TemplateGroupSerializer(serializers.ModelSerializer): + """Сериализатор группы полей шаблона""" + + fields = TemplateFieldSerializerMinified( + read_only=True, + many=True, + # source="fields", + allow_empty=True, + ) + + class Meta: + model = TemplateField + fields = ( + "id", + "name", + "fields", + ) + + def to_representation(self, instance): + response = super().to_representation(instance) + response["fields"].sort(key=lambda x: x["id"]) + return response + + +class TemplateGroupWriteSerializer(serializers.ModelSerializer): + """Сериализатор группы полей шаблона для записи/обновления""" + + id = serializers.IntegerField() + + class Meta: + model = TemplateFieldGroup + fields = ( + "id", + "name", + ) + + +class TemplateSerializerMinified(serializers.ModelSerializer): + """Сериализатор шаблонов сокращенный.""" + + is_favorited = serializers.SerializerMethodField() + image = Base64ImageField(required=True, allow_null=True) + + class Meta: + model = Template + exclude = ("template",) + read_only_fields = ( + "name", + "category", + "owner", + "image", + "modified", + "deleted", + "description", + "is_favorited", + ) + + def get_is_favorited(self, template: Template) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavTemplate.objects.filter( + user=user, template=template + ).exists() + + +class TemplateSerializerPlain(TemplateSerializerMinified): + """Сериализатор шаблона (без вложенности полей в группы).""" + + fields = TemplateFieldSerializer( + read_only=True, + many=True, + # source="fields", + allow_empty=True, + ) + + groups = TemplateGroupSerializerMinified( + source="field_groups", + read_only=True, + many=True, + allow_empty=True, + ) + + class Meta(TemplateSerializerMinified.Meta): + model = Template + exclude = ("template",) + # fields = "__all__" + read_only_fields = ("is_favorited", "groups") + + +class TemplateSerializer(TemplateSerializerMinified): + """Сериализатор шаблона (поля сгруппированы внутри grouped_fields).""" + + grouped_fields = TemplateGroupSerializer( + read_only=True, + many=True, + source="field_groups", + allow_empty=True, + ) + ungrouped_fields = serializers.SerializerMethodField() + + class Meta(TemplateSerializerMinified.Meta): + model = Template + exclude = ("template",) + read_only_fields = ( + "is_favorited", + "grouped_fields", + "ungrouped_fields", + ) + + def get_ungrouped_fields(self, instance): + solo_fields = instance.fields.filter(group=None).order_by("id") + return TemplateFieldSerializerMinified(solo_fields, many=True).data + + def to_representation(self, instance): + response = super().to_representation(instance) + response["grouped_fields"].sort(key=lambda x: x["id"]) + return response + + +class TemplateWriteSerializer(serializers.ModelSerializer): + """Сериализатор шаблонов для записи/изменения.""" + + fields = TemplateFieldWriteSerializer(many=True) + groups = TemplateGroupWriteSerializer(many=True) + + class Meta: + model = Template + fields = ("name", "deleted", "description", "fields", "groups") + + def validate(self, data): + # проверка, что все поля имеют уникальные тэги + data_fields = data.get("fields") + field_tags = [f["tag"] for f in data_fields] + tags_duplicates = get_non_unique_items(field_tags) + if tags_duplicates: + raise serializers.ValidationError( + detail=Messages.TEMPLATE_FIELD_TAGS_ARE_NOT_UNIQUE.format( + tags_duplicates + ) + ) + + # проверка, что все группы имеют уникальный id + data_groups = data.get("groups") + group_ids = [g["id"] for g in data_groups] + ids_duplicates = get_non_unique_items(group_ids) + if ids_duplicates: + raise serializers.ValidationError( + detail=Messages.TEMPLATE_GROUP_IDS_ARE_NOT_UNIQUE.format( + ids_duplicates + ) + ) + + # проверка, что поля шаблона привязаны к описанным группам в group + field_groups = set([f.get("group") for f in data_fields]) + if None in field_groups: + field_groups.discard(None) + unknown_groups = field_groups - set(group_ids) + if unknown_groups: + raise serializers.ValidationError( + detail=Messages.UNKNOWN_GROUP_ID.format(unknown_groups) + ) + return data + + def create(self, data): + data_fields = data.pop("fields") + data_groups = data.pop("groups") + template = Template.objects.create(**data) + # создание групп + data_groups.sort(key=lambda x: x["id"]) + group_models = {} + for group in data_groups: + model = TemplateFieldGroup.objects.create( + name=group["name"], template=template + ) + group_models[group["id"]] = model + # создание полей + template_fields = [] + for data in data_fields: + group_id = data.get("group") + if group_id: + data["group"] = group_models[group_id] + template_fields.append(TemplateField(template=template, **data)) + TemplateField.objects.bulk_create(template_fields) + return template + + def to_representation(self, instance): + request = self.context.get("request") + return TemplateSerializerPlain( + instance, context={"request": request} + ).data + + +class DocumentFieldSerializer(serializers.ModelSerializer): + """Сериализатор поля документов.""" + + description = serializers.CharField(required=False, max_length=200) + + class Meta: + model = DocumentField + exclude = ("document",) + + +class DocumentFieldWriteSerializer(serializers.ModelSerializer): + """Сериализатор для полей документа или превью шаблона.""" + + # description = serializers.CharField(required=False, max_length=200) + + class Meta: + model = DocumentField + fields = ("field", "value") + + def validate_field(self, template_field): + template_fields = self.context.get("template_fields", set()) + if template_field not in template_fields: + raise serializers.ValidationError( + Messages.WRONG_TEMPLATE_FIELD.format(template_field.id) + ) + return template_field + + +class DocumentReadSerializerMinified(serializers.ModelSerializer): + """Сериализатор документов сокращенный (без информации о полях)""" + + is_favorited = serializers.SerializerMethodField() + + class Meta: + model = Document + fields = ( + "id", + "created", + "updated", + "completed", + "description", + "template", + "owner", + "is_favorited", + ) + + def get_is_favorited(self, document: Document) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavDocument.objects.filter( + user=user, document=document + ).exists() + + +class DocumentReadSerializerExtended(serializers.ModelSerializer): + """Сериализатор документов расширенный (с информацией полей шаблона).""" + + grouped_fields = TemplateGroupSerializer( + read_only=True, + many=True, + source="template.field_groups", + allow_empty=True, + ) + ungrouped_fields = serializers.SerializerMethodField() + is_favorited = serializers.SerializerMethodField() + template = TemplateSerializerMinified(read_only=True) + + class Meta: + model = Document + fields = ( + "id", + "created", + "updated", + "completed", + "description", + "template", + "owner", + "is_favorited", + "grouped_fields", + "ungrouped_fields", + ) + + def get_is_favorited(self, document: Document) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavDocument.objects.filter( + user=user, document=document + ).exists() + + def get_ungrouped_fields(self, instance): + solo_fields = instance.template.fields.filter(group=None).order_by( + "id" + ) + return TemplateFieldSerializerMinified(solo_fields, many=True).data + + def to_representation(self, instance): + response = super().to_representation(instance) + response["grouped_fields"].sort(key=lambda x: x["id"]) + # add field values + field_vals = {} + for document_field in instance.document_fields.all(): + field_vals[document_field.field.id] = document_field.value + for group in response["grouped_fields"]: + for field in group["fields"]: + id = field.get("id") + if id in field_vals: + field["value"] = field_vals[id] + for field in response["ungrouped_fields"]: + id = field.get("id") + if id in field_vals: + field["value"] = field_vals[id] + return response + + +class DocumentWriteSerializer(serializers.ModelSerializer): + """Сериализатор документов.""" + + document_fields = DocumentFieldSerializer(many=True) + + class Meta: + model = Document + fields = ( + "id", + "created", + "completed", + "description", + "template", + "document_fields", + ) + + @transaction.atomic + def create(self, validated_data): + """Создание документа и полей документа""" + document_fields = validated_data.pop("document_fields", None) + document = Document.objects.create(**validated_data) + custom_fieldtypes_validation(document_fields) + document.create_document_fields(document_fields) + return document + + @transaction.atomic + def update(self, instance, validated_data): + """Обновление документа и полей документа""" + document_fields = validated_data.pop("document_fields", None) + Document.objects.filter(id=instance.id).update( + **validated_data, updated=timezone.now() + ) + document = Document.objects.get(id=instance.id) + if document_fields is not None: + custom_fieldtypes_validation(document_fields) + document.document_fields.all().delete() + document.create_document_fields(document_fields) + return document + + def to_representation(self, instance): + return DocumentReadSerializerMinified( + instance, context={"request": self.context.get("request")} + ).data + + +class FavTemplateSerializer(serializers.ModelSerializer): + class Meta: + model = FavTemplate + fields = "__all__" + + +class FavDocumentSerializer(serializers.ModelSerializer): + class Meta: + model = FavDocument + fields = "__all__" + + +class CategorySerializer(serializers.ModelSerializer): + class Meta: + model = Category + fields = "__all__" + + +class TemplateFileUploadSerializer(serializers.ModelSerializer): + errors = serializers.SerializerMethodField() + + class Meta: + model = Template + fields = ("template", "errors") + + def get_errors(self, instance): + return instance.get_consistency_errors() + + +class CustomUserSerializer(UserSerializer): + password = serializers.CharField(write_only=True) + + class Meta: + model = User + fields = ("id", "email", "password") + read_only_fields = ("id",) + + def create(self, validated_data): + email = validated_data.get("email") + password = validated_data.get("password") + username = email + user = User(email=email, username=username) + user.set_password(password) + user.save() + return user + + def validate(self, data): + if User.objects.filter(email=data["email"]): + raise serializers.ValidationError("Такой email уже есть!") + return data diff --git a/backend/api/v1/templates/views.py b/backend/api/v1/templates/views.py new file mode 100644 index 0000000..cf58adc --- /dev/null +++ b/backend/api/v1/templates/views.py @@ -0,0 +1,496 @@ +"""Вьюсеты v1 API.""" +from datetime import datetime +import io +import logging +import os +from pathlib import Path + +# import aspose.words as aw + +from django.contrib.auth import get_user_model +from django.http import FileResponse +from django.shortcuts import get_object_or_404 +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework import ( + filters, + generics, + serializers, + status, + views, + viewsets, +) +from rest_framework.decorators import action +from rest_framework.exceptions import PermissionDenied +from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated +from rest_framework.response import Response +from rest_framework.views import APIView +from rest_framework_simplejwt.tokens import RefreshToken + +from .permissions import IsAdminOrReadOnly, IsOwner, IsOwnerOrAdminOrReadOnly +from .serializers import ( + CategorySerializer, + DocumentFieldSerializer, + DocumentFieldWriteSerializer, + DocumentReadSerializerExtended, + DocumentReadSerializerMinified, + DocumentWriteSerializer, + FavDocumentSerializer, + FavTemplateSerializer, + TemplateFieldSerializer, + TemplateFileUploadSerializer, + TemplateSerializer, + TemplateSerializerMinified, + TemplateWriteSerializer, + CustomUserSerializer, +) + + +from api.v1 import utils as v1utils +from core.constants import Messages +from core.template_render import DocumentTemplate +from documents.models import ( + Category, + Document, + FavDocument, + FavTemplate, + Template, +) +from base_objects.models import (BaseObject, + BaseObjectField, + Object, + ObjectField + ) + +logger = logging.getLogger(__name__) + +User = get_user_model() + + +class CategoryViewSet(viewsets.ModelViewSet): + queryset = Category.objects.all() + serializer_class = CategorySerializer + permission_classes = (AllowAny,) + + +def send_file(filestream, filename: str, as_attachment: bool = True): + """Функция подготовки открытого двоичного файла к отправке.""" + response = FileResponse( + streaming_content=filestream, + as_attachment=as_attachment, + filename=filename, + ) + return response + + +class TemplateViewSet(viewsets.ModelViewSet): + """Шаблон.""" + + serializer_class = TemplateSerializer + http_method_names = ("get", "delete", "post") + permission_classes = (IsAdminOrReadOnly,) # AllowAny + filter_backends = ( + DjangoFilterBackend, + filters.SearchFilter, + filters.OrderingFilter, + ) + pagination_class = None + filterset_fields = ( + "owner", + "category", + ) + search_fields = ( + "owner", + "category", + ) + + def get_serializer_class(self): + if self.action == "list": + return TemplateSerializerMinified + elif self.action == "create": + return TemplateWriteSerializer + return TemplateSerializer + + def get_queryset(self): + if self.request.user.is_superuser: + return Template.objects.all() + else: + return Template.objects.filter(deleted=False) + + @action( + detail=True, + methods=["get"], + permission_classes=(AllowAny,), + url_path="download_draft", + url_name="download_draft", + ) + def download_draft(self, request, pk=None): + # template = get_object_or_404(Template, pk=pk) + template = serializers.PrimaryKeyRelatedField( + many=False, queryset=Template.objects.all() + ).to_internal_value(data=pk) + context = {field.tag: field.name for field in template.fields.all()} + path = template.template + doc = DocumentTemplate(path) + buffer = doc.get_draft(context) + filename = f"{template.name}_шаблон.docx" + if request.query_params.get("pdf"): + buffer = v1utils.convert_file_to_pdf(buffer) + filename = f"{template.name}_шаблон.pdf" + response = send_file(buffer, filename) + return response + + def destroy(self, request, *args, **kwargs): + user = request.user + template = self.get_object() + if not (user == template.owner or user.is_superuser): + return Response(status=status.HTTP_404_NOT_FOUND) + if template.deleted: + return Response( + Messages.TEMPLATE_ALREADY_DELETED, + status=status.HTTP_404_NOT_FOUND, + ) + template.deleted = True + template.save() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class TemplateFieldViewSet(viewsets.ModelViewSet): + """Поля шаблона.""" + + serializer_class = TemplateFieldSerializer + http_method_names = ("get",) + permission_classes = (IsAdminOrReadOnly,) + # permission_classes = (AllowAny,) # Заглушка + pagination_class = None + + def get_queryset(self): + template_id = self.kwargs.get("template_id") + template = get_object_or_404(Template, id=template_id) + return template.fields.all() + + +class DocumentViewSet(viewsets.ModelViewSet): + """Документ.""" + + queryset = Document.objects.all() + serializer_class = DocumentReadSerializerMinified + http_method_names = ("get", "post", "patch", "delete") + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + filter_backends = ( + filters.SearchFilter, + filters.OrderingFilter, + DjangoFilterBackend, + ) + pagination_class = None + filterset_fields = ("owner",) + search_fields = ("owner",) + + def get_queryset(self): + """Выдаем только список документов текущего пользователя.""" + # ЗАглушка + if self.request.user.is_authenticated: + return self.request.user.documents + else: + user = User.objects.get(id=1) + return Document.objects.filter(owner=user) + return Document.objects.none() + + def get_serializer_class(self): + """Выбор сериализатора.""" + if self.action == "retrieve": + return DocumentReadSerializerExtended + elif self.action == "list": + return DocumentReadSerializerMinified + return DocumentWriteSerializer + + def perform_create(self, serializer): + serializer.save(owner=self.request.user) + + @action( + detail=False, + permission_classes=[ + IsAuthenticated, + # AllowAny, # Заглушка + ], + url_path=r"draft", + ) + def draft_documents(self, request): + """Возвращает список незаконченных документов/черновиков""" + user = self.request.user + queryset = Document.objects.filter(completed=False, owner=user) + serializer = DocumentReadSerializerMinified( + queryset, many=True, context={"request": request} + ) + return Response(serializer.data, status=status.HTTP_200_OK) + + @action( + detail=False, + permission_classes=[ + IsAuthenticated, + ], + url_path=r"history", + ) + def history_documents(self, request): + """Возвращает список законченных документов/история""" + user = self.request.user + queryset = Document.objects.filter(completed=True, owner=user) + serializer = DocumentReadSerializerMinified( + queryset, many=True, context={"request": request} + ) + return Response(serializer.data, status=status.HTTP_200_OK) + + @action( + detail=True, + permission_classes=[ + IsAuthenticated + ], + url_path=r"download_document", + ) + def download_document(self, request, pk=None): + """Скачивание готового документа.""" + logger.debug(f"Start docx generation for document_id {pk}") + start_time = datetime.utcnow() + document = get_object_or_404(Document, id=pk) + buffer = v1utils.fill_docx_template_for_document(document) + docx_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for document_id {pk} is {docx_time-start_time}" + ) + response = send_file(buffer, f"{document.template.name}.docx") + return response + + @action( + detail=True, + permission_classes=[ + IsAuthenticated + ], + url_path="download_pdf", + ) + def download_pdf(self, request, pk=None): + """Генерация и выдача на скачивание pdf-файла.""" + document = get_object_or_404(Document, pk=pk) + logger.debug(f"Start docx generation for document_id {pk}") + start_time = datetime.utcnow() + buffer = v1utils.create_document_pdf_for_export(document) + pdf_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for document_id {pk} is {pdf_time-start_time}" + ) + response = send_file(buffer, f"{document.template.name}.pdf") + return response + + +class DocumentFieldViewSet(viewsets.ModelViewSet): + """Поле шаблона.""" + + queryset = Document.objects.all() + serializer_class = DocumentFieldSerializer + http_method_names = ("get",) + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + pagination_class = None + + def get_queryset(self): + document_id = self.kwargs.get("document_id") + document = get_object_or_404(Document, id=document_id) + if ( + not self.request.user.is_staff + and document.owner != self.request.user + ): + raise PermissionDenied() + return document.document_fields.all() + + +class FavTemplateAPIview(APIView): + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + + def post(self, request, **kwargs): + data = { + "user": self.request.user.pk, + "template": self.kwargs.get("template_id"), + } + serializer = FavTemplateSerializer(data=data) + queryset = FavTemplate.objects.filter( + user=self.request.user.pk, template=self.kwargs.get("template_id") + ) + # проверка, что такого FavTemplate нет в БД + if queryset.exists(): + raise serializers.ValidationError( + "Этот шаблон уже есть в Избранном!" + ) + if serializer.is_valid(): + serializer.save() + return Response(status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + def delete(self, request, **kwargs): + queryset = FavTemplate.objects.filter( + user=self.request.user.pk, template=self.kwargs.get("template_id") + ) + # проверка, что такой FavTemplate существует в БД + if not queryset.exists(): + return Response(status=status.HTTP_404_NOT_FOUND) + queryset.delete() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class FavDocumentAPIview(APIView): + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + + def post(self, request, **kwargs): + data = { + "user": self.request.user.pk, + "document": self.kwargs.get("document_id"), + } + serializer = FavDocumentSerializer(data=data) + queryset = FavDocument.objects.filter( + user=self.request.user.pk, document=self.kwargs.get("document_id") + ) + # проверка, что такого FavDocument нет в БД + if queryset.exists(): + raise serializers.ValidationError( + "Этот документ уже есть в Избранном!" + ) + if serializer.is_valid(): + serializer.save() + return Response(status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + def delete(self, request, **kwargs): + queryset = FavDocument.objects.filter( + user=self.request.user.pk, document=self.kwargs.get("document_id") + ) + # проверка, что такой FavDocument существует в БД + if not queryset.exists(): + return Response(status=status.HTTP_404_NOT_FOUND) + queryset.delete() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class AnonymousDownloadPreviewAPIView(views.APIView): + permission_classes = (AllowAny,) + + def post(self, request, template_id): + logger.debug(f"Start preview generation for template {template_id}") + start_time = datetime.utcnow() + template = get_object_or_404(Template, id=template_id) + document_fields = request.data.get("document_fields") + serializer = DocumentFieldWriteSerializer( + data=document_fields, + context={"template_fields": set(template.fields.all())}, + many=True, + ) + serializer.is_valid(raise_exception=True) + v1utils.custom_fieldtypes_validation(serializer.validated_data) + context = {} + for data in serializer.validated_data: + if data["value"]: # write only fields with non empty value + context[data["field"].tag] = data["value"] + context_default = { + field.tag: field.default or field.name + for field in template.fields.all() + } + doc = DocumentTemplate(template.template) + buffer = doc.get_partial(context, context_default) + filename = f"{template.name}_preview.docx" + docx_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for template {template_id} is {docx_time-start_time}" + ) + if request.query_params.get("pdf"): + buffer = v1utils.convert_file_to_pdf(buffer) + filename = f"{template.name}_preview.pdf" + pdf_time = datetime.utcnow() + logger.debug( + f"Time of pdf generation for template {template_id} is {pdf_time-docx_time}" + ) + response = send_file(buffer, filename) + return response + + +class CheckTemplateConsistencyAPIView(views.APIView): + permission_classes = (IsAdminUser,) + # permission_classes = (AllowAny,) # Заглушка + + def get(self, request, template_id): + template = get_object_or_404(Template, id=template_id) + errors = template.get_consistency_errors() + if errors: + return Response(data={"errors": errors}, status=status.HTTP_200_OK) + else: + return Response( + data={"result": Messages.TEMPLATE_CONSISTENT}, + status=status.HTTP_200_OK, + ) + + +class UploadTemplateFileAPIView(generics.UpdateAPIView): + queryset = Template.objects.all() + serializer_class = TemplateFileUploadSerializer + lookup_field = "id" + lookup_url_kwarg = "template_id" + permission_classes = (IsAdminUser,) + # permission_classes = (AllowAny,) # Заглушка + http_method_names = ["patch", "put"] + +from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode +from django.utils.encoding import force_bytes +from django.urls import reverse_lazy +from django.views.generic import CreateView, View, TemplateView + +class RegisterView(generics.GenericAPIView): + serializer_class = CustomUserSerializer + + def post(self, request): + user = request.data + serializer = self.serializer_class(data=user) + serializer.is_valid(raise_exception=True) + serializer.save() + user_data = serializer.data + user = User.objects.get(email=user_data["email"]) + token = RefreshToken.for_user(user).access_token + + uid = urlsafe_base64_encode(force_bytes(user.pk)) + activation_url = reverse_lazy('confirm_email', kwargs={'uidb64': uid, 'token': token}) + print(activation_url) + absurl = f'http://127.0.0.1:9000/{activation_url}' + email_body = ( + "Hi " + + user.username + + " Use the link below to verify your email \n" + + absurl + ) + print(email_body) + data = { + "email_body": email_body, + "to_email": user.email, + "email_subject": "Verify your email", + } + + Util.send_email(data) + return Response(user_data, status=status.HTTP_201_CREATED) + +from django.contrib.auth.tokens import default_token_generator +from django.contrib.auth import login +class UserConfirmEmailView(View): + def get(self, request, uidb64, token): + try: + uid = urlsafe_base64_decode(uidb64) + user = User.objects.get(pk=uid) + except (TypeError, ValueError, OverflowError, User.DoesNotExist): + user = None + + if user is not None and default_token_generator.check_token(user, token): + user.is_active = True + user.save() + login(request, user) + + +class BaseObjectFieldViewSet(viewsets.ModelViewSet): + queryset = BaseObject.objects.all() + http_method_names = ("get",) + permission_classes = (IsAdminOrReadOnly,) # AllowAny + pagination_class = None \ No newline at end of file diff --git a/backend/api/v1/urls.py b/backend/api/v1/urls.py index ec13eee..d030c00 100644 --- a/backend/api/v1/urls.py +++ b/backend/api/v1/urls.py @@ -1,14 +1,31 @@ -from api.v1.views import ( +# from api.v1.views import ( +# AnonymousDownloadPreviewAPIView, +# CheckTemplateConsistencyAPIView, +# TemplateFieldViewSet, +# TemplateViewSet, +# FavTemplateAPIview, +# FavDocumentAPIview, +# UploadTemplateFileAPIView, +# ) + +from api.v1.documents.views import ( + DocumentFieldViewSet, + DocumentViewSet,) + +from api.v1.templates import ( + UploadTemplateFileAPIView, AnonymousDownloadPreviewAPIView, CheckTemplateConsistencyAPIView, - DocumentFieldViewSet, - DocumentViewSet, TemplateFieldViewSet, - TemplateViewSet, + TemplateViewSet,) + +from api.v1.users import () +from api.v1.favorites import ( FavTemplateAPIview, - FavDocumentAPIview, - UploadTemplateFileAPIView, - ) + FavDocumentAPIview,) +from api.v1.objects import (BaseObjectViewSet, + BaseObjectFieldViewSet, + ObjectViewSet) from django.urls import include, path, re_path from rest_framework.routers import DefaultRouter diff --git a/backend/api/v1/users/__init__.py b/backend/api/v1/users/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v1/users/serializers.py b/backend/api/v1/users/serializers.py new file mode 100644 index 0000000..c917814 --- /dev/null +++ b/backend/api/v1/users/serializers.py @@ -0,0 +1,512 @@ +"""Сериализаторы для API.""" +import base64 +from django.contrib.auth import get_user_model +from django.utils import timezone +from django.core.files.base import ContentFile +from django.db import transaction +from djoser.serializers import UserSerializer +from rest_framework import serializers + +from .utils import custom_fieldtypes_validation, get_non_unique_items +from core.constants import Messages +from documents.models import ( + Category, + Document, + DocumentField, + FavDocument, + FavTemplate, + Template, + TemplateField, + TemplateFieldGroup, + TemplateFieldType, +) + +User = get_user_model() + + +class Base64ImageField(serializers.ImageField): + def to_internal_value(self, data): + if isinstance(data, str) and data.startswith("data:image"): + format, imgstr = data.split(";base64,") + ext = format.split("/")[-1] + + data = ContentFile(base64.b64decode(imgstr), name="temp." + ext) + + return super().to_internal_value(data) + + +class TemplateFieldSerializer(serializers.ModelSerializer): + """Сериализатор поля шаблона.""" + + group_id = serializers.PrimaryKeyRelatedField( + source="group", read_only=True + ) + group_name = serializers.StringRelatedField( + source="group.name", read_only=True + ) + type = serializers.SlugRelatedField(slug_field="type", read_only=True) + mask = serializers.CharField(source="type.mask", read_only=True) + + class Meta: + model = TemplateField + fields = ( + "id", + "tag", + "name", + "hint", + "group_id", + "group_name", + "type", + "mask", + "length", + ) + + +class TemplateFieldWriteSerializer(serializers.ModelSerializer): + """Сериализатор поля шаблона для записи/обновления""" + + type = serializers.SlugRelatedField( + queryset=TemplateFieldType.objects.all(), slug_field="type" + ) + group = serializers.IntegerField(required=False, default=None) + default = serializers.CharField( + trim_whitespace=False, max_length=255, required=False + ) + + class Meta: + model = TemplateField + fields = ("tag", "name", "hint", "group", "type", "length", "default") + + +class TemplateFieldSerializerMinified(serializers.ModelSerializer): + """Сериализатор поля шаблона сокращенный (без полей группы)""" + + type = serializers.SlugRelatedField(slug_field="type", read_only=True) + mask = serializers.CharField(source="type.mask", read_only=True) + + class Meta: + model = TemplateField + fields = ( + "id", + "tag", + "name", + "hint", + "type", + "mask", + "length", + "default", + ) + + +class TemplateGroupSerializerMinified(serializers.ModelSerializer): + """Сериализатор группы полей шаблона без вложенных полей""" + + class Meta: + model = TemplateFieldGroup + fields = ("id", "name") + + +class TemplateGroupSerializer(serializers.ModelSerializer): + """Сериализатор группы полей шаблона""" + + fields = TemplateFieldSerializerMinified( + read_only=True, + many=True, + # source="fields", + allow_empty=True, + ) + + class Meta: + model = TemplateField + fields = ( + "id", + "name", + "fields", + ) + + def to_representation(self, instance): + response = super().to_representation(instance) + response["fields"].sort(key=lambda x: x["id"]) + return response + + +class TemplateGroupWriteSerializer(serializers.ModelSerializer): + """Сериализатор группы полей шаблона для записи/обновления""" + + id = serializers.IntegerField() + + class Meta: + model = TemplateFieldGroup + fields = ( + "id", + "name", + ) + + +class TemplateSerializerMinified(serializers.ModelSerializer): + """Сериализатор шаблонов сокращенный.""" + + is_favorited = serializers.SerializerMethodField() + image = Base64ImageField(required=True, allow_null=True) + + class Meta: + model = Template + exclude = ("template",) + read_only_fields = ( + "name", + "category", + "owner", + "image", + "modified", + "deleted", + "description", + "is_favorited", + ) + + def get_is_favorited(self, template: Template) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavTemplate.objects.filter( + user=user, template=template + ).exists() + + +class TemplateSerializerPlain(TemplateSerializerMinified): + """Сериализатор шаблона (без вложенности полей в группы).""" + + fields = TemplateFieldSerializer( + read_only=True, + many=True, + # source="fields", + allow_empty=True, + ) + + groups = TemplateGroupSerializerMinified( + source="field_groups", + read_only=True, + many=True, + allow_empty=True, + ) + + class Meta(TemplateSerializerMinified.Meta): + model = Template + exclude = ("template",) + # fields = "__all__" + read_only_fields = ("is_favorited", "groups") + + +class TemplateSerializer(TemplateSerializerMinified): + """Сериализатор шаблона (поля сгруппированы внутри grouped_fields).""" + + grouped_fields = TemplateGroupSerializer( + read_only=True, + many=True, + source="field_groups", + allow_empty=True, + ) + ungrouped_fields = serializers.SerializerMethodField() + + class Meta(TemplateSerializerMinified.Meta): + model = Template + exclude = ("template",) + read_only_fields = ( + "is_favorited", + "grouped_fields", + "ungrouped_fields", + ) + + def get_ungrouped_fields(self, instance): + solo_fields = instance.fields.filter(group=None).order_by("id") + return TemplateFieldSerializerMinified(solo_fields, many=True).data + + def to_representation(self, instance): + response = super().to_representation(instance) + response["grouped_fields"].sort(key=lambda x: x["id"]) + return response + + +class TemplateWriteSerializer(serializers.ModelSerializer): + """Сериализатор шаблонов для записи/изменения.""" + + fields = TemplateFieldWriteSerializer(many=True) + groups = TemplateGroupWriteSerializer(many=True) + + class Meta: + model = Template + fields = ("name", "deleted", "description", "fields", "groups") + + def validate(self, data): + # проверка, что все поля имеют уникальные тэги + data_fields = data.get("fields") + field_tags = [f["tag"] for f in data_fields] + tags_duplicates = get_non_unique_items(field_tags) + if tags_duplicates: + raise serializers.ValidationError( + detail=Messages.TEMPLATE_FIELD_TAGS_ARE_NOT_UNIQUE.format( + tags_duplicates + ) + ) + + # проверка, что все группы имеют уникальный id + data_groups = data.get("groups") + group_ids = [g["id"] for g in data_groups] + ids_duplicates = get_non_unique_items(group_ids) + if ids_duplicates: + raise serializers.ValidationError( + detail=Messages.TEMPLATE_GROUP_IDS_ARE_NOT_UNIQUE.format( + ids_duplicates + ) + ) + + # проверка, что поля шаблона привязаны к описанным группам в group + field_groups = set([f.get("group") for f in data_fields]) + if None in field_groups: + field_groups.discard(None) + unknown_groups = field_groups - set(group_ids) + if unknown_groups: + raise serializers.ValidationError( + detail=Messages.UNKNOWN_GROUP_ID.format(unknown_groups) + ) + return data + + def create(self, data): + data_fields = data.pop("fields") + data_groups = data.pop("groups") + template = Template.objects.create(**data) + # создание групп + data_groups.sort(key=lambda x: x["id"]) + group_models = {} + for group in data_groups: + model = TemplateFieldGroup.objects.create( + name=group["name"], template=template + ) + group_models[group["id"]] = model + # создание полей + template_fields = [] + for data in data_fields: + group_id = data.get("group") + if group_id: + data["group"] = group_models[group_id] + template_fields.append(TemplateField(template=template, **data)) + TemplateField.objects.bulk_create(template_fields) + return template + + def to_representation(self, instance): + request = self.context.get("request") + return TemplateSerializerPlain( + instance, context={"request": request} + ).data + + +class DocumentFieldSerializer(serializers.ModelSerializer): + """Сериализатор поля документов.""" + + description = serializers.CharField(required=False, max_length=200) + + class Meta: + model = DocumentField + exclude = ("document",) + + +class DocumentFieldWriteSerializer(serializers.ModelSerializer): + """Сериализатор для полей документа или превью шаблона.""" + + # description = serializers.CharField(required=False, max_length=200) + + class Meta: + model = DocumentField + fields = ("field", "value") + + def validate_field(self, template_field): + template_fields = self.context.get("template_fields", set()) + if template_field not in template_fields: + raise serializers.ValidationError( + Messages.WRONG_TEMPLATE_FIELD.format(template_field.id) + ) + return template_field + + +class DocumentReadSerializerMinified(serializers.ModelSerializer): + """Сериализатор документов сокращенный (без информации о полях)""" + + is_favorited = serializers.SerializerMethodField() + + class Meta: + model = Document + fields = ( + "id", + "created", + "updated", + "completed", + "description", + "template", + "owner", + "is_favorited", + ) + + def get_is_favorited(self, document: Document) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavDocument.objects.filter( + user=user, document=document + ).exists() + + +class DocumentReadSerializerExtended(serializers.ModelSerializer): + """Сериализатор документов расширенный (с информацией полей шаблона).""" + + grouped_fields = TemplateGroupSerializer( + read_only=True, + many=True, + source="template.field_groups", + allow_empty=True, + ) + ungrouped_fields = serializers.SerializerMethodField() + is_favorited = serializers.SerializerMethodField() + template = TemplateSerializerMinified(read_only=True) + + class Meta: + model = Document + fields = ( + "id", + "created", + "updated", + "completed", + "description", + "template", + "owner", + "is_favorited", + "grouped_fields", + "ungrouped_fields", + ) + + def get_is_favorited(self, document: Document) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavDocument.objects.filter( + user=user, document=document + ).exists() + + def get_ungrouped_fields(self, instance): + solo_fields = instance.template.fields.filter(group=None).order_by( + "id" + ) + return TemplateFieldSerializerMinified(solo_fields, many=True).data + + def to_representation(self, instance): + response = super().to_representation(instance) + response["grouped_fields"].sort(key=lambda x: x["id"]) + # add field values + field_vals = {} + for document_field in instance.document_fields.all(): + field_vals[document_field.field.id] = document_field.value + for group in response["grouped_fields"]: + for field in group["fields"]: + id = field.get("id") + if id in field_vals: + field["value"] = field_vals[id] + for field in response["ungrouped_fields"]: + id = field.get("id") + if id in field_vals: + field["value"] = field_vals[id] + return response + + +class DocumentWriteSerializer(serializers.ModelSerializer): + """Сериализатор документов.""" + + document_fields = DocumentFieldSerializer(many=True) + + class Meta: + model = Document + fields = ( + "id", + "created", + "completed", + "description", + "template", + "document_fields", + ) + + @transaction.atomic + def create(self, validated_data): + """Создание документа и полей документа""" + document_fields = validated_data.pop("document_fields", None) + document = Document.objects.create(**validated_data) + custom_fieldtypes_validation(document_fields) + document.create_document_fields(document_fields) + return document + + @transaction.atomic + def update(self, instance, validated_data): + """Обновление документа и полей документа""" + document_fields = validated_data.pop("document_fields", None) + Document.objects.filter(id=instance.id).update( + **validated_data, updated=timezone.now() + ) + document = Document.objects.get(id=instance.id) + if document_fields is not None: + custom_fieldtypes_validation(document_fields) + document.document_fields.all().delete() + document.create_document_fields(document_fields) + return document + + def to_representation(self, instance): + return DocumentReadSerializerMinified( + instance, context={"request": self.context.get("request")} + ).data + + +class FavTemplateSerializer(serializers.ModelSerializer): + class Meta: + model = FavTemplate + fields = "__all__" + + +class FavDocumentSerializer(serializers.ModelSerializer): + class Meta: + model = FavDocument + fields = "__all__" + + +class CategorySerializer(serializers.ModelSerializer): + class Meta: + model = Category + fields = "__all__" + + +class TemplateFileUploadSerializer(serializers.ModelSerializer): + errors = serializers.SerializerMethodField() + + class Meta: + model = Template + fields = ("template", "errors") + + def get_errors(self, instance): + return instance.get_consistency_errors() + + +class CustomUserSerializer(UserSerializer): + password = serializers.CharField(write_only=True) + + class Meta: + model = User + fields = ("id", "email", "password") + read_only_fields = ("id",) + + def create(self, validated_data): + email = validated_data.get("email") + password = validated_data.get("password") + username = email + user = User(email=email, username=username) + user.set_password(password) + user.save() + return user + + def validate(self, data): + if User.objects.filter(email=data["email"]): + raise serializers.ValidationError("Такой email уже есть!") + return data diff --git a/backend/api/v1/users/views.py b/backend/api/v1/users/views.py new file mode 100644 index 0000000..cf58adc --- /dev/null +++ b/backend/api/v1/users/views.py @@ -0,0 +1,496 @@ +"""Вьюсеты v1 API.""" +from datetime import datetime +import io +import logging +import os +from pathlib import Path + +# import aspose.words as aw + +from django.contrib.auth import get_user_model +from django.http import FileResponse +from django.shortcuts import get_object_or_404 +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework import ( + filters, + generics, + serializers, + status, + views, + viewsets, +) +from rest_framework.decorators import action +from rest_framework.exceptions import PermissionDenied +from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated +from rest_framework.response import Response +from rest_framework.views import APIView +from rest_framework_simplejwt.tokens import RefreshToken + +from .permissions import IsAdminOrReadOnly, IsOwner, IsOwnerOrAdminOrReadOnly +from .serializers import ( + CategorySerializer, + DocumentFieldSerializer, + DocumentFieldWriteSerializer, + DocumentReadSerializerExtended, + DocumentReadSerializerMinified, + DocumentWriteSerializer, + FavDocumentSerializer, + FavTemplateSerializer, + TemplateFieldSerializer, + TemplateFileUploadSerializer, + TemplateSerializer, + TemplateSerializerMinified, + TemplateWriteSerializer, + CustomUserSerializer, +) + + +from api.v1 import utils as v1utils +from core.constants import Messages +from core.template_render import DocumentTemplate +from documents.models import ( + Category, + Document, + FavDocument, + FavTemplate, + Template, +) +from base_objects.models import (BaseObject, + BaseObjectField, + Object, + ObjectField + ) + +logger = logging.getLogger(__name__) + +User = get_user_model() + + +class CategoryViewSet(viewsets.ModelViewSet): + queryset = Category.objects.all() + serializer_class = CategorySerializer + permission_classes = (AllowAny,) + + +def send_file(filestream, filename: str, as_attachment: bool = True): + """Функция подготовки открытого двоичного файла к отправке.""" + response = FileResponse( + streaming_content=filestream, + as_attachment=as_attachment, + filename=filename, + ) + return response + + +class TemplateViewSet(viewsets.ModelViewSet): + """Шаблон.""" + + serializer_class = TemplateSerializer + http_method_names = ("get", "delete", "post") + permission_classes = (IsAdminOrReadOnly,) # AllowAny + filter_backends = ( + DjangoFilterBackend, + filters.SearchFilter, + filters.OrderingFilter, + ) + pagination_class = None + filterset_fields = ( + "owner", + "category", + ) + search_fields = ( + "owner", + "category", + ) + + def get_serializer_class(self): + if self.action == "list": + return TemplateSerializerMinified + elif self.action == "create": + return TemplateWriteSerializer + return TemplateSerializer + + def get_queryset(self): + if self.request.user.is_superuser: + return Template.objects.all() + else: + return Template.objects.filter(deleted=False) + + @action( + detail=True, + methods=["get"], + permission_classes=(AllowAny,), + url_path="download_draft", + url_name="download_draft", + ) + def download_draft(self, request, pk=None): + # template = get_object_or_404(Template, pk=pk) + template = serializers.PrimaryKeyRelatedField( + many=False, queryset=Template.objects.all() + ).to_internal_value(data=pk) + context = {field.tag: field.name for field in template.fields.all()} + path = template.template + doc = DocumentTemplate(path) + buffer = doc.get_draft(context) + filename = f"{template.name}_шаблон.docx" + if request.query_params.get("pdf"): + buffer = v1utils.convert_file_to_pdf(buffer) + filename = f"{template.name}_шаблон.pdf" + response = send_file(buffer, filename) + return response + + def destroy(self, request, *args, **kwargs): + user = request.user + template = self.get_object() + if not (user == template.owner or user.is_superuser): + return Response(status=status.HTTP_404_NOT_FOUND) + if template.deleted: + return Response( + Messages.TEMPLATE_ALREADY_DELETED, + status=status.HTTP_404_NOT_FOUND, + ) + template.deleted = True + template.save() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class TemplateFieldViewSet(viewsets.ModelViewSet): + """Поля шаблона.""" + + serializer_class = TemplateFieldSerializer + http_method_names = ("get",) + permission_classes = (IsAdminOrReadOnly,) + # permission_classes = (AllowAny,) # Заглушка + pagination_class = None + + def get_queryset(self): + template_id = self.kwargs.get("template_id") + template = get_object_or_404(Template, id=template_id) + return template.fields.all() + + +class DocumentViewSet(viewsets.ModelViewSet): + """Документ.""" + + queryset = Document.objects.all() + serializer_class = DocumentReadSerializerMinified + http_method_names = ("get", "post", "patch", "delete") + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + filter_backends = ( + filters.SearchFilter, + filters.OrderingFilter, + DjangoFilterBackend, + ) + pagination_class = None + filterset_fields = ("owner",) + search_fields = ("owner",) + + def get_queryset(self): + """Выдаем только список документов текущего пользователя.""" + # ЗАглушка + if self.request.user.is_authenticated: + return self.request.user.documents + else: + user = User.objects.get(id=1) + return Document.objects.filter(owner=user) + return Document.objects.none() + + def get_serializer_class(self): + """Выбор сериализатора.""" + if self.action == "retrieve": + return DocumentReadSerializerExtended + elif self.action == "list": + return DocumentReadSerializerMinified + return DocumentWriteSerializer + + def perform_create(self, serializer): + serializer.save(owner=self.request.user) + + @action( + detail=False, + permission_classes=[ + IsAuthenticated, + # AllowAny, # Заглушка + ], + url_path=r"draft", + ) + def draft_documents(self, request): + """Возвращает список незаконченных документов/черновиков""" + user = self.request.user + queryset = Document.objects.filter(completed=False, owner=user) + serializer = DocumentReadSerializerMinified( + queryset, many=True, context={"request": request} + ) + return Response(serializer.data, status=status.HTTP_200_OK) + + @action( + detail=False, + permission_classes=[ + IsAuthenticated, + ], + url_path=r"history", + ) + def history_documents(self, request): + """Возвращает список законченных документов/история""" + user = self.request.user + queryset = Document.objects.filter(completed=True, owner=user) + serializer = DocumentReadSerializerMinified( + queryset, many=True, context={"request": request} + ) + return Response(serializer.data, status=status.HTTP_200_OK) + + @action( + detail=True, + permission_classes=[ + IsAuthenticated + ], + url_path=r"download_document", + ) + def download_document(self, request, pk=None): + """Скачивание готового документа.""" + logger.debug(f"Start docx generation for document_id {pk}") + start_time = datetime.utcnow() + document = get_object_or_404(Document, id=pk) + buffer = v1utils.fill_docx_template_for_document(document) + docx_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for document_id {pk} is {docx_time-start_time}" + ) + response = send_file(buffer, f"{document.template.name}.docx") + return response + + @action( + detail=True, + permission_classes=[ + IsAuthenticated + ], + url_path="download_pdf", + ) + def download_pdf(self, request, pk=None): + """Генерация и выдача на скачивание pdf-файла.""" + document = get_object_or_404(Document, pk=pk) + logger.debug(f"Start docx generation for document_id {pk}") + start_time = datetime.utcnow() + buffer = v1utils.create_document_pdf_for_export(document) + pdf_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for document_id {pk} is {pdf_time-start_time}" + ) + response = send_file(buffer, f"{document.template.name}.pdf") + return response + + +class DocumentFieldViewSet(viewsets.ModelViewSet): + """Поле шаблона.""" + + queryset = Document.objects.all() + serializer_class = DocumentFieldSerializer + http_method_names = ("get",) + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + pagination_class = None + + def get_queryset(self): + document_id = self.kwargs.get("document_id") + document = get_object_or_404(Document, id=document_id) + if ( + not self.request.user.is_staff + and document.owner != self.request.user + ): + raise PermissionDenied() + return document.document_fields.all() + + +class FavTemplateAPIview(APIView): + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + + def post(self, request, **kwargs): + data = { + "user": self.request.user.pk, + "template": self.kwargs.get("template_id"), + } + serializer = FavTemplateSerializer(data=data) + queryset = FavTemplate.objects.filter( + user=self.request.user.pk, template=self.kwargs.get("template_id") + ) + # проверка, что такого FavTemplate нет в БД + if queryset.exists(): + raise serializers.ValidationError( + "Этот шаблон уже есть в Избранном!" + ) + if serializer.is_valid(): + serializer.save() + return Response(status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + def delete(self, request, **kwargs): + queryset = FavTemplate.objects.filter( + user=self.request.user.pk, template=self.kwargs.get("template_id") + ) + # проверка, что такой FavTemplate существует в БД + if not queryset.exists(): + return Response(status=status.HTTP_404_NOT_FOUND) + queryset.delete() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class FavDocumentAPIview(APIView): + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + + def post(self, request, **kwargs): + data = { + "user": self.request.user.pk, + "document": self.kwargs.get("document_id"), + } + serializer = FavDocumentSerializer(data=data) + queryset = FavDocument.objects.filter( + user=self.request.user.pk, document=self.kwargs.get("document_id") + ) + # проверка, что такого FavDocument нет в БД + if queryset.exists(): + raise serializers.ValidationError( + "Этот документ уже есть в Избранном!" + ) + if serializer.is_valid(): + serializer.save() + return Response(status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + def delete(self, request, **kwargs): + queryset = FavDocument.objects.filter( + user=self.request.user.pk, document=self.kwargs.get("document_id") + ) + # проверка, что такой FavDocument существует в БД + if not queryset.exists(): + return Response(status=status.HTTP_404_NOT_FOUND) + queryset.delete() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class AnonymousDownloadPreviewAPIView(views.APIView): + permission_classes = (AllowAny,) + + def post(self, request, template_id): + logger.debug(f"Start preview generation for template {template_id}") + start_time = datetime.utcnow() + template = get_object_or_404(Template, id=template_id) + document_fields = request.data.get("document_fields") + serializer = DocumentFieldWriteSerializer( + data=document_fields, + context={"template_fields": set(template.fields.all())}, + many=True, + ) + serializer.is_valid(raise_exception=True) + v1utils.custom_fieldtypes_validation(serializer.validated_data) + context = {} + for data in serializer.validated_data: + if data["value"]: # write only fields with non empty value + context[data["field"].tag] = data["value"] + context_default = { + field.tag: field.default or field.name + for field in template.fields.all() + } + doc = DocumentTemplate(template.template) + buffer = doc.get_partial(context, context_default) + filename = f"{template.name}_preview.docx" + docx_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for template {template_id} is {docx_time-start_time}" + ) + if request.query_params.get("pdf"): + buffer = v1utils.convert_file_to_pdf(buffer) + filename = f"{template.name}_preview.pdf" + pdf_time = datetime.utcnow() + logger.debug( + f"Time of pdf generation for template {template_id} is {pdf_time-docx_time}" + ) + response = send_file(buffer, filename) + return response + + +class CheckTemplateConsistencyAPIView(views.APIView): + permission_classes = (IsAdminUser,) + # permission_classes = (AllowAny,) # Заглушка + + def get(self, request, template_id): + template = get_object_or_404(Template, id=template_id) + errors = template.get_consistency_errors() + if errors: + return Response(data={"errors": errors}, status=status.HTTP_200_OK) + else: + return Response( + data={"result": Messages.TEMPLATE_CONSISTENT}, + status=status.HTTP_200_OK, + ) + + +class UploadTemplateFileAPIView(generics.UpdateAPIView): + queryset = Template.objects.all() + serializer_class = TemplateFileUploadSerializer + lookup_field = "id" + lookup_url_kwarg = "template_id" + permission_classes = (IsAdminUser,) + # permission_classes = (AllowAny,) # Заглушка + http_method_names = ["patch", "put"] + +from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode +from django.utils.encoding import force_bytes +from django.urls import reverse_lazy +from django.views.generic import CreateView, View, TemplateView + +class RegisterView(generics.GenericAPIView): + serializer_class = CustomUserSerializer + + def post(self, request): + user = request.data + serializer = self.serializer_class(data=user) + serializer.is_valid(raise_exception=True) + serializer.save() + user_data = serializer.data + user = User.objects.get(email=user_data["email"]) + token = RefreshToken.for_user(user).access_token + + uid = urlsafe_base64_encode(force_bytes(user.pk)) + activation_url = reverse_lazy('confirm_email', kwargs={'uidb64': uid, 'token': token}) + print(activation_url) + absurl = f'http://127.0.0.1:9000/{activation_url}' + email_body = ( + "Hi " + + user.username + + " Use the link below to verify your email \n" + + absurl + ) + print(email_body) + data = { + "email_body": email_body, + "to_email": user.email, + "email_subject": "Verify your email", + } + + Util.send_email(data) + return Response(user_data, status=status.HTTP_201_CREATED) + +from django.contrib.auth.tokens import default_token_generator +from django.contrib.auth import login +class UserConfirmEmailView(View): + def get(self, request, uidb64, token): + try: + uid = urlsafe_base64_decode(uidb64) + user = User.objects.get(pk=uid) + except (TypeError, ValueError, OverflowError, User.DoesNotExist): + user = None + + if user is not None and default_token_generator.check_token(user, token): + user.is_active = True + user.save() + login(request, user) + + +class BaseObjectFieldViewSet(viewsets.ModelViewSet): + queryset = BaseObject.objects.all() + http_method_names = ("get",) + permission_classes = (IsAdminOrReadOnly,) # AllowAny + pagination_class = None \ No newline at end of file From 82ff4e9aa23fe2d50e817e712e14c54e9b7a3714 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Wed, 3 Jan 2024 22:00:14 +0400 Subject: [PATCH 55/80] refactory --- backend/api/urls.py | 1 + backend/api/v1/draft.docx | Bin 0 -> 74461 bytes backend/api/v1/favorites/views.py | 496 ----------------- backend/api/v1/objects/serializers.py | 512 ------------------ backend/api/v1/{favorites => }/serializers.py | 0 backend/api/v1/templates/views.py | 496 ----------------- backend/api/v1/urls.py | 55 +- backend/api/v1/users/serializers.py | 512 ------------------ backend/api/v1/users/views.py | 496 ----------------- backend/api/v1/{objects => }/views.py | 12 - backend/api/{v1/documents => v2}/__init__.py | 0 backend/api/v2/apps.py | 6 + .../favorites => v2/documents}/__init__.py | 0 .../api/{v1 => v2}/documents/serializers.py | 18 +- backend/api/{v1 => v2}/documents/views.py | 51 +- .../{v1/objects => v2/favorites}/__init__.py | 0 backend/api/v2/favorites/serializers.py | 22 + backend/api/v2/favorites/views.py | 93 ++++ .../templates/__init__.py => v2/filters.py} | 0 .../{v1/users => v2/migrations}/__init__.py | 0 backend/api/v2/objects/__init__.py | 0 backend/api/v2/objects/serializers.py | 1 + backend/api/v2/objects/views.py | 0 backend/api/v2/permissions.py | 58 ++ backend/api/v2/templates/__init__.py | 0 .../api/{v1 => v2}/templates/serializers.py | 204 +------ backend/api/v2/templates/views.py | 160 ++++++ backend/api/v2/tests.py | 193 +++++++ backend/api/v2/urls.py | 95 ++++ backend/api/v2/users/__init__.py | 0 backend/api/v2/users/serializers.py | 31 ++ backend/api/v2/users/views.py | 74 +++ backend/api/v2/utils.py | 110 ++++ backend/backend/settings.py | 2 +- 34 files changed, 906 insertions(+), 2792 deletions(-) create mode 100644 backend/api/v1/draft.docx delete mode 100644 backend/api/v1/favorites/views.py delete mode 100644 backend/api/v1/objects/serializers.py rename backend/api/v1/{favorites => }/serializers.py (100%) delete mode 100644 backend/api/v1/templates/views.py delete mode 100644 backend/api/v1/users/serializers.py delete mode 100644 backend/api/v1/users/views.py rename backend/api/v1/{objects => }/views.py (97%) rename backend/api/{v1/documents => v2}/__init__.py (100%) create mode 100644 backend/api/v2/apps.py rename backend/api/{v1/favorites => v2/documents}/__init__.py (100%) rename backend/api/{v1 => v2}/documents/serializers.py (92%) rename backend/api/{v1 => v2}/documents/views.py (74%) rename backend/api/{v1/objects => v2/favorites}/__init__.py (100%) create mode 100644 backend/api/v2/favorites/serializers.py create mode 100644 backend/api/v2/favorites/views.py rename backend/api/{v1/templates/__init__.py => v2/filters.py} (100%) rename backend/api/{v1/users => v2/migrations}/__init__.py (100%) create mode 100644 backend/api/v2/objects/__init__.py create mode 100644 backend/api/v2/objects/serializers.py create mode 100644 backend/api/v2/objects/views.py create mode 100644 backend/api/v2/permissions.py create mode 100644 backend/api/v2/templates/__init__.py rename backend/api/{v1 => v2}/templates/serializers.py (59%) create mode 100644 backend/api/v2/templates/views.py create mode 100644 backend/api/v2/tests.py create mode 100644 backend/api/v2/urls.py create mode 100644 backend/api/v2/users/__init__.py create mode 100644 backend/api/v2/users/serializers.py create mode 100644 backend/api/v2/users/views.py create mode 100644 backend/api/v2/utils.py diff --git a/backend/api/urls.py b/backend/api/urls.py index b4a93e2..f6c3aa7 100644 --- a/backend/api/urls.py +++ b/backend/api/urls.py @@ -6,6 +6,7 @@ urlpatterns = [ path("", include("api.v1.urls")), + path("v2/", include("api.v2.urls")), ] diff --git a/backend/api/v1/draft.docx b/backend/api/v1/draft.docx new file mode 100644 index 0000000000000000000000000000000000000000..92bb398a9dd420ffdbb343b17b00859cd7bde965 GIT binary patch literal 74461 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 z z1MJCst^_CuUt4Oh-1(!&Q|_tx^j+@K_5`qc-~K4+okCCy+Kf3`Lh#b8Bm=yhYM)r{ z2yn*(1)_wDI~fR6V7|*Iu8*EKX@#-cLPEvCvOuKT+ZI zeB<^N+7D#(UNln>2I4e3Ej0nF0*;TFB?AWz^Z`Tw{+F*KF2SEfUOR4FOn#ln)9TaH zJXDr3Tr`s^=dV1?nDkf4Na)9~YDoSe``JM)`GZ|On&P_3Eu^wrY{Z#~uJX4LVWRs_-Q-ws8Q!heD%g?xO-FcM14*9$cLSlm$B%gQ zl%4}}0`2dfQbSvZpIgZP?Q)7njXqQm6%wiJ-*$e?rh3W44O2A3PW-gdxLN^J`U#OS;~723Te6)jWX`;iL!!q zgF&^|j@_~aFdMPt`RPo~*)jWZis6!1-%@o+po3u8aFN(jjnBW3xe?x5?a&H{gYEWK z=MSCXhYMIgN5xme=Rhi2iz4G87$)LtgD1wVTGP#pmspRX1q^ zIzGFqmKGJuAinzA6#T|-<=%x_*LXGH3l@M3@)+{7Y)#rsces&!sLOVk*=add*4Aby6Hl*f5})N8luNYI#V#@0 z&rP)(^F`fVgnD2#an~5g?{0phK6aiy^*ezUv<{gVJu3|{RK0Fwn~J3!-ae({nJka%5z9{Qpnj zgMgxS0nl2i6{G;uE<=j6Cb*l~-VN#%dAP3Li%KXc}(7zu3uaW=B z|Gz$aL19XMLSX8>2jl6{0ICo>Ca;!g&?;}Ib!jGfOxFHY;!y(H5g8!Kj?-vKZJMm|}qu(UdYX7$rKeHeG*@-{HJ%5u(z5I*B z--AE@g#Q_)^&3uh^B4S&pshbC{4+f1Hy#4Q>J|dx&tRoL(SL@F{KjJg_NJfD;CBGY zpWr`jPrtzkD3HIv|FA^;iU0G!`5Ui-@fZI0@$*mcp9hlPUEcqK>x$N`A|18Ozz AZ2$lO literal 0 HcmV?d00001 diff --git a/backend/api/v1/favorites/views.py b/backend/api/v1/favorites/views.py deleted file mode 100644 index cf58adc..0000000 --- a/backend/api/v1/favorites/views.py +++ /dev/null @@ -1,496 +0,0 @@ -"""Вьюсеты v1 API.""" -from datetime import datetime -import io -import logging -import os -from pathlib import Path - -# import aspose.words as aw - -from django.contrib.auth import get_user_model -from django.http import FileResponse -from django.shortcuts import get_object_or_404 -from django_filters.rest_framework import DjangoFilterBackend -from rest_framework import ( - filters, - generics, - serializers, - status, - views, - viewsets, -) -from rest_framework.decorators import action -from rest_framework.exceptions import PermissionDenied -from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated -from rest_framework.response import Response -from rest_framework.views import APIView -from rest_framework_simplejwt.tokens import RefreshToken - -from .permissions import IsAdminOrReadOnly, IsOwner, IsOwnerOrAdminOrReadOnly -from .serializers import ( - CategorySerializer, - DocumentFieldSerializer, - DocumentFieldWriteSerializer, - DocumentReadSerializerExtended, - DocumentReadSerializerMinified, - DocumentWriteSerializer, - FavDocumentSerializer, - FavTemplateSerializer, - TemplateFieldSerializer, - TemplateFileUploadSerializer, - TemplateSerializer, - TemplateSerializerMinified, - TemplateWriteSerializer, - CustomUserSerializer, -) - - -from api.v1 import utils as v1utils -from core.constants import Messages -from core.template_render import DocumentTemplate -from documents.models import ( - Category, - Document, - FavDocument, - FavTemplate, - Template, -) -from base_objects.models import (BaseObject, - BaseObjectField, - Object, - ObjectField - ) - -logger = logging.getLogger(__name__) - -User = get_user_model() - - -class CategoryViewSet(viewsets.ModelViewSet): - queryset = Category.objects.all() - serializer_class = CategorySerializer - permission_classes = (AllowAny,) - - -def send_file(filestream, filename: str, as_attachment: bool = True): - """Функция подготовки открытого двоичного файла к отправке.""" - response = FileResponse( - streaming_content=filestream, - as_attachment=as_attachment, - filename=filename, - ) - return response - - -class TemplateViewSet(viewsets.ModelViewSet): - """Шаблон.""" - - serializer_class = TemplateSerializer - http_method_names = ("get", "delete", "post") - permission_classes = (IsAdminOrReadOnly,) # AllowAny - filter_backends = ( - DjangoFilterBackend, - filters.SearchFilter, - filters.OrderingFilter, - ) - pagination_class = None - filterset_fields = ( - "owner", - "category", - ) - search_fields = ( - "owner", - "category", - ) - - def get_serializer_class(self): - if self.action == "list": - return TemplateSerializerMinified - elif self.action == "create": - return TemplateWriteSerializer - return TemplateSerializer - - def get_queryset(self): - if self.request.user.is_superuser: - return Template.objects.all() - else: - return Template.objects.filter(deleted=False) - - @action( - detail=True, - methods=["get"], - permission_classes=(AllowAny,), - url_path="download_draft", - url_name="download_draft", - ) - def download_draft(self, request, pk=None): - # template = get_object_or_404(Template, pk=pk) - template = serializers.PrimaryKeyRelatedField( - many=False, queryset=Template.objects.all() - ).to_internal_value(data=pk) - context = {field.tag: field.name for field in template.fields.all()} - path = template.template - doc = DocumentTemplate(path) - buffer = doc.get_draft(context) - filename = f"{template.name}_шаблон.docx" - if request.query_params.get("pdf"): - buffer = v1utils.convert_file_to_pdf(buffer) - filename = f"{template.name}_шаблон.pdf" - response = send_file(buffer, filename) - return response - - def destroy(self, request, *args, **kwargs): - user = request.user - template = self.get_object() - if not (user == template.owner or user.is_superuser): - return Response(status=status.HTTP_404_NOT_FOUND) - if template.deleted: - return Response( - Messages.TEMPLATE_ALREADY_DELETED, - status=status.HTTP_404_NOT_FOUND, - ) - template.deleted = True - template.save() - return Response(status=status.HTTP_204_NO_CONTENT) - - -class TemplateFieldViewSet(viewsets.ModelViewSet): - """Поля шаблона.""" - - serializer_class = TemplateFieldSerializer - http_method_names = ("get",) - permission_classes = (IsAdminOrReadOnly,) - # permission_classes = (AllowAny,) # Заглушка - pagination_class = None - - def get_queryset(self): - template_id = self.kwargs.get("template_id") - template = get_object_or_404(Template, id=template_id) - return template.fields.all() - - -class DocumentViewSet(viewsets.ModelViewSet): - """Документ.""" - - queryset = Document.objects.all() - serializer_class = DocumentReadSerializerMinified - http_method_names = ("get", "post", "patch", "delete") - permission_classes = (IsAuthenticated,) - # permission_classes = (AllowAny,) # Заглушка - filter_backends = ( - filters.SearchFilter, - filters.OrderingFilter, - DjangoFilterBackend, - ) - pagination_class = None - filterset_fields = ("owner",) - search_fields = ("owner",) - - def get_queryset(self): - """Выдаем только список документов текущего пользователя.""" - # ЗАглушка - if self.request.user.is_authenticated: - return self.request.user.documents - else: - user = User.objects.get(id=1) - return Document.objects.filter(owner=user) - return Document.objects.none() - - def get_serializer_class(self): - """Выбор сериализатора.""" - if self.action == "retrieve": - return DocumentReadSerializerExtended - elif self.action == "list": - return DocumentReadSerializerMinified - return DocumentWriteSerializer - - def perform_create(self, serializer): - serializer.save(owner=self.request.user) - - @action( - detail=False, - permission_classes=[ - IsAuthenticated, - # AllowAny, # Заглушка - ], - url_path=r"draft", - ) - def draft_documents(self, request): - """Возвращает список незаконченных документов/черновиков""" - user = self.request.user - queryset = Document.objects.filter(completed=False, owner=user) - serializer = DocumentReadSerializerMinified( - queryset, many=True, context={"request": request} - ) - return Response(serializer.data, status=status.HTTP_200_OK) - - @action( - detail=False, - permission_classes=[ - IsAuthenticated, - ], - url_path=r"history", - ) - def history_documents(self, request): - """Возвращает список законченных документов/история""" - user = self.request.user - queryset = Document.objects.filter(completed=True, owner=user) - serializer = DocumentReadSerializerMinified( - queryset, many=True, context={"request": request} - ) - return Response(serializer.data, status=status.HTTP_200_OK) - - @action( - detail=True, - permission_classes=[ - IsAuthenticated - ], - url_path=r"download_document", - ) - def download_document(self, request, pk=None): - """Скачивание готового документа.""" - logger.debug(f"Start docx generation for document_id {pk}") - start_time = datetime.utcnow() - document = get_object_or_404(Document, id=pk) - buffer = v1utils.fill_docx_template_for_document(document) - docx_time = datetime.utcnow() - logger.debug( - f"Time of docx generation for document_id {pk} is {docx_time-start_time}" - ) - response = send_file(buffer, f"{document.template.name}.docx") - return response - - @action( - detail=True, - permission_classes=[ - IsAuthenticated - ], - url_path="download_pdf", - ) - def download_pdf(self, request, pk=None): - """Генерация и выдача на скачивание pdf-файла.""" - document = get_object_or_404(Document, pk=pk) - logger.debug(f"Start docx generation for document_id {pk}") - start_time = datetime.utcnow() - buffer = v1utils.create_document_pdf_for_export(document) - pdf_time = datetime.utcnow() - logger.debug( - f"Time of docx generation for document_id {pk} is {pdf_time-start_time}" - ) - response = send_file(buffer, f"{document.template.name}.pdf") - return response - - -class DocumentFieldViewSet(viewsets.ModelViewSet): - """Поле шаблона.""" - - queryset = Document.objects.all() - serializer_class = DocumentFieldSerializer - http_method_names = ("get",) - permission_classes = (IsAuthenticated,) - # permission_classes = (AllowAny,) # Заглушка - pagination_class = None - - def get_queryset(self): - document_id = self.kwargs.get("document_id") - document = get_object_or_404(Document, id=document_id) - if ( - not self.request.user.is_staff - and document.owner != self.request.user - ): - raise PermissionDenied() - return document.document_fields.all() - - -class FavTemplateAPIview(APIView): - permission_classes = (IsAuthenticated,) - # permission_classes = (AllowAny,) # Заглушка - - def post(self, request, **kwargs): - data = { - "user": self.request.user.pk, - "template": self.kwargs.get("template_id"), - } - serializer = FavTemplateSerializer(data=data) - queryset = FavTemplate.objects.filter( - user=self.request.user.pk, template=self.kwargs.get("template_id") - ) - # проверка, что такого FavTemplate нет в БД - if queryset.exists(): - raise serializers.ValidationError( - "Этот шаблон уже есть в Избранном!" - ) - if serializer.is_valid(): - serializer.save() - return Response(status=status.HTTP_201_CREATED) - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - - def delete(self, request, **kwargs): - queryset = FavTemplate.objects.filter( - user=self.request.user.pk, template=self.kwargs.get("template_id") - ) - # проверка, что такой FavTemplate существует в БД - if not queryset.exists(): - return Response(status=status.HTTP_404_NOT_FOUND) - queryset.delete() - return Response(status=status.HTTP_204_NO_CONTENT) - - -class FavDocumentAPIview(APIView): - permission_classes = (IsAuthenticated,) - # permission_classes = (AllowAny,) # Заглушка - - def post(self, request, **kwargs): - data = { - "user": self.request.user.pk, - "document": self.kwargs.get("document_id"), - } - serializer = FavDocumentSerializer(data=data) - queryset = FavDocument.objects.filter( - user=self.request.user.pk, document=self.kwargs.get("document_id") - ) - # проверка, что такого FavDocument нет в БД - if queryset.exists(): - raise serializers.ValidationError( - "Этот документ уже есть в Избранном!" - ) - if serializer.is_valid(): - serializer.save() - return Response(status=status.HTTP_201_CREATED) - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - - def delete(self, request, **kwargs): - queryset = FavDocument.objects.filter( - user=self.request.user.pk, document=self.kwargs.get("document_id") - ) - # проверка, что такой FavDocument существует в БД - if not queryset.exists(): - return Response(status=status.HTTP_404_NOT_FOUND) - queryset.delete() - return Response(status=status.HTTP_204_NO_CONTENT) - - -class AnonymousDownloadPreviewAPIView(views.APIView): - permission_classes = (AllowAny,) - - def post(self, request, template_id): - logger.debug(f"Start preview generation for template {template_id}") - start_time = datetime.utcnow() - template = get_object_or_404(Template, id=template_id) - document_fields = request.data.get("document_fields") - serializer = DocumentFieldWriteSerializer( - data=document_fields, - context={"template_fields": set(template.fields.all())}, - many=True, - ) - serializer.is_valid(raise_exception=True) - v1utils.custom_fieldtypes_validation(serializer.validated_data) - context = {} - for data in serializer.validated_data: - if data["value"]: # write only fields with non empty value - context[data["field"].tag] = data["value"] - context_default = { - field.tag: field.default or field.name - for field in template.fields.all() - } - doc = DocumentTemplate(template.template) - buffer = doc.get_partial(context, context_default) - filename = f"{template.name}_preview.docx" - docx_time = datetime.utcnow() - logger.debug( - f"Time of docx generation for template {template_id} is {docx_time-start_time}" - ) - if request.query_params.get("pdf"): - buffer = v1utils.convert_file_to_pdf(buffer) - filename = f"{template.name}_preview.pdf" - pdf_time = datetime.utcnow() - logger.debug( - f"Time of pdf generation for template {template_id} is {pdf_time-docx_time}" - ) - response = send_file(buffer, filename) - return response - - -class CheckTemplateConsistencyAPIView(views.APIView): - permission_classes = (IsAdminUser,) - # permission_classes = (AllowAny,) # Заглушка - - def get(self, request, template_id): - template = get_object_or_404(Template, id=template_id) - errors = template.get_consistency_errors() - if errors: - return Response(data={"errors": errors}, status=status.HTTP_200_OK) - else: - return Response( - data={"result": Messages.TEMPLATE_CONSISTENT}, - status=status.HTTP_200_OK, - ) - - -class UploadTemplateFileAPIView(generics.UpdateAPIView): - queryset = Template.objects.all() - serializer_class = TemplateFileUploadSerializer - lookup_field = "id" - lookup_url_kwarg = "template_id" - permission_classes = (IsAdminUser,) - # permission_classes = (AllowAny,) # Заглушка - http_method_names = ["patch", "put"] - -from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode -from django.utils.encoding import force_bytes -from django.urls import reverse_lazy -from django.views.generic import CreateView, View, TemplateView - -class RegisterView(generics.GenericAPIView): - serializer_class = CustomUserSerializer - - def post(self, request): - user = request.data - serializer = self.serializer_class(data=user) - serializer.is_valid(raise_exception=True) - serializer.save() - user_data = serializer.data - user = User.objects.get(email=user_data["email"]) - token = RefreshToken.for_user(user).access_token - - uid = urlsafe_base64_encode(force_bytes(user.pk)) - activation_url = reverse_lazy('confirm_email', kwargs={'uidb64': uid, 'token': token}) - print(activation_url) - absurl = f'http://127.0.0.1:9000/{activation_url}' - email_body = ( - "Hi " - + user.username - + " Use the link below to verify your email \n" - + absurl - ) - print(email_body) - data = { - "email_body": email_body, - "to_email": user.email, - "email_subject": "Verify your email", - } - - Util.send_email(data) - return Response(user_data, status=status.HTTP_201_CREATED) - -from django.contrib.auth.tokens import default_token_generator -from django.contrib.auth import login -class UserConfirmEmailView(View): - def get(self, request, uidb64, token): - try: - uid = urlsafe_base64_decode(uidb64) - user = User.objects.get(pk=uid) - except (TypeError, ValueError, OverflowError, User.DoesNotExist): - user = None - - if user is not None and default_token_generator.check_token(user, token): - user.is_active = True - user.save() - login(request, user) - - -class BaseObjectFieldViewSet(viewsets.ModelViewSet): - queryset = BaseObject.objects.all() - http_method_names = ("get",) - permission_classes = (IsAdminOrReadOnly,) # AllowAny - pagination_class = None \ No newline at end of file diff --git a/backend/api/v1/objects/serializers.py b/backend/api/v1/objects/serializers.py deleted file mode 100644 index c917814..0000000 --- a/backend/api/v1/objects/serializers.py +++ /dev/null @@ -1,512 +0,0 @@ -"""Сериализаторы для API.""" -import base64 -from django.contrib.auth import get_user_model -from django.utils import timezone -from django.core.files.base import ContentFile -from django.db import transaction -from djoser.serializers import UserSerializer -from rest_framework import serializers - -from .utils import custom_fieldtypes_validation, get_non_unique_items -from core.constants import Messages -from documents.models import ( - Category, - Document, - DocumentField, - FavDocument, - FavTemplate, - Template, - TemplateField, - TemplateFieldGroup, - TemplateFieldType, -) - -User = get_user_model() - - -class Base64ImageField(serializers.ImageField): - def to_internal_value(self, data): - if isinstance(data, str) and data.startswith("data:image"): - format, imgstr = data.split(";base64,") - ext = format.split("/")[-1] - - data = ContentFile(base64.b64decode(imgstr), name="temp." + ext) - - return super().to_internal_value(data) - - -class TemplateFieldSerializer(serializers.ModelSerializer): - """Сериализатор поля шаблона.""" - - group_id = serializers.PrimaryKeyRelatedField( - source="group", read_only=True - ) - group_name = serializers.StringRelatedField( - source="group.name", read_only=True - ) - type = serializers.SlugRelatedField(slug_field="type", read_only=True) - mask = serializers.CharField(source="type.mask", read_only=True) - - class Meta: - model = TemplateField - fields = ( - "id", - "tag", - "name", - "hint", - "group_id", - "group_name", - "type", - "mask", - "length", - ) - - -class TemplateFieldWriteSerializer(serializers.ModelSerializer): - """Сериализатор поля шаблона для записи/обновления""" - - type = serializers.SlugRelatedField( - queryset=TemplateFieldType.objects.all(), slug_field="type" - ) - group = serializers.IntegerField(required=False, default=None) - default = serializers.CharField( - trim_whitespace=False, max_length=255, required=False - ) - - class Meta: - model = TemplateField - fields = ("tag", "name", "hint", "group", "type", "length", "default") - - -class TemplateFieldSerializerMinified(serializers.ModelSerializer): - """Сериализатор поля шаблона сокращенный (без полей группы)""" - - type = serializers.SlugRelatedField(slug_field="type", read_only=True) - mask = serializers.CharField(source="type.mask", read_only=True) - - class Meta: - model = TemplateField - fields = ( - "id", - "tag", - "name", - "hint", - "type", - "mask", - "length", - "default", - ) - - -class TemplateGroupSerializerMinified(serializers.ModelSerializer): - """Сериализатор группы полей шаблона без вложенных полей""" - - class Meta: - model = TemplateFieldGroup - fields = ("id", "name") - - -class TemplateGroupSerializer(serializers.ModelSerializer): - """Сериализатор группы полей шаблона""" - - fields = TemplateFieldSerializerMinified( - read_only=True, - many=True, - # source="fields", - allow_empty=True, - ) - - class Meta: - model = TemplateField - fields = ( - "id", - "name", - "fields", - ) - - def to_representation(self, instance): - response = super().to_representation(instance) - response["fields"].sort(key=lambda x: x["id"]) - return response - - -class TemplateGroupWriteSerializer(serializers.ModelSerializer): - """Сериализатор группы полей шаблона для записи/обновления""" - - id = serializers.IntegerField() - - class Meta: - model = TemplateFieldGroup - fields = ( - "id", - "name", - ) - - -class TemplateSerializerMinified(serializers.ModelSerializer): - """Сериализатор шаблонов сокращенный.""" - - is_favorited = serializers.SerializerMethodField() - image = Base64ImageField(required=True, allow_null=True) - - class Meta: - model = Template - exclude = ("template",) - read_only_fields = ( - "name", - "category", - "owner", - "image", - "modified", - "deleted", - "description", - "is_favorited", - ) - - def get_is_favorited(self, template: Template) -> bool: - user = self.context.get("request").user - if not user.is_authenticated: - return False - return FavTemplate.objects.filter( - user=user, template=template - ).exists() - - -class TemplateSerializerPlain(TemplateSerializerMinified): - """Сериализатор шаблона (без вложенности полей в группы).""" - - fields = TemplateFieldSerializer( - read_only=True, - many=True, - # source="fields", - allow_empty=True, - ) - - groups = TemplateGroupSerializerMinified( - source="field_groups", - read_only=True, - many=True, - allow_empty=True, - ) - - class Meta(TemplateSerializerMinified.Meta): - model = Template - exclude = ("template",) - # fields = "__all__" - read_only_fields = ("is_favorited", "groups") - - -class TemplateSerializer(TemplateSerializerMinified): - """Сериализатор шаблона (поля сгруппированы внутри grouped_fields).""" - - grouped_fields = TemplateGroupSerializer( - read_only=True, - many=True, - source="field_groups", - allow_empty=True, - ) - ungrouped_fields = serializers.SerializerMethodField() - - class Meta(TemplateSerializerMinified.Meta): - model = Template - exclude = ("template",) - read_only_fields = ( - "is_favorited", - "grouped_fields", - "ungrouped_fields", - ) - - def get_ungrouped_fields(self, instance): - solo_fields = instance.fields.filter(group=None).order_by("id") - return TemplateFieldSerializerMinified(solo_fields, many=True).data - - def to_representation(self, instance): - response = super().to_representation(instance) - response["grouped_fields"].sort(key=lambda x: x["id"]) - return response - - -class TemplateWriteSerializer(serializers.ModelSerializer): - """Сериализатор шаблонов для записи/изменения.""" - - fields = TemplateFieldWriteSerializer(many=True) - groups = TemplateGroupWriteSerializer(many=True) - - class Meta: - model = Template - fields = ("name", "deleted", "description", "fields", "groups") - - def validate(self, data): - # проверка, что все поля имеют уникальные тэги - data_fields = data.get("fields") - field_tags = [f["tag"] for f in data_fields] - tags_duplicates = get_non_unique_items(field_tags) - if tags_duplicates: - raise serializers.ValidationError( - detail=Messages.TEMPLATE_FIELD_TAGS_ARE_NOT_UNIQUE.format( - tags_duplicates - ) - ) - - # проверка, что все группы имеют уникальный id - data_groups = data.get("groups") - group_ids = [g["id"] for g in data_groups] - ids_duplicates = get_non_unique_items(group_ids) - if ids_duplicates: - raise serializers.ValidationError( - detail=Messages.TEMPLATE_GROUP_IDS_ARE_NOT_UNIQUE.format( - ids_duplicates - ) - ) - - # проверка, что поля шаблона привязаны к описанным группам в group - field_groups = set([f.get("group") for f in data_fields]) - if None in field_groups: - field_groups.discard(None) - unknown_groups = field_groups - set(group_ids) - if unknown_groups: - raise serializers.ValidationError( - detail=Messages.UNKNOWN_GROUP_ID.format(unknown_groups) - ) - return data - - def create(self, data): - data_fields = data.pop("fields") - data_groups = data.pop("groups") - template = Template.objects.create(**data) - # создание групп - data_groups.sort(key=lambda x: x["id"]) - group_models = {} - for group in data_groups: - model = TemplateFieldGroup.objects.create( - name=group["name"], template=template - ) - group_models[group["id"]] = model - # создание полей - template_fields = [] - for data in data_fields: - group_id = data.get("group") - if group_id: - data["group"] = group_models[group_id] - template_fields.append(TemplateField(template=template, **data)) - TemplateField.objects.bulk_create(template_fields) - return template - - def to_representation(self, instance): - request = self.context.get("request") - return TemplateSerializerPlain( - instance, context={"request": request} - ).data - - -class DocumentFieldSerializer(serializers.ModelSerializer): - """Сериализатор поля документов.""" - - description = serializers.CharField(required=False, max_length=200) - - class Meta: - model = DocumentField - exclude = ("document",) - - -class DocumentFieldWriteSerializer(serializers.ModelSerializer): - """Сериализатор для полей документа или превью шаблона.""" - - # description = serializers.CharField(required=False, max_length=200) - - class Meta: - model = DocumentField - fields = ("field", "value") - - def validate_field(self, template_field): - template_fields = self.context.get("template_fields", set()) - if template_field not in template_fields: - raise serializers.ValidationError( - Messages.WRONG_TEMPLATE_FIELD.format(template_field.id) - ) - return template_field - - -class DocumentReadSerializerMinified(serializers.ModelSerializer): - """Сериализатор документов сокращенный (без информации о полях)""" - - is_favorited = serializers.SerializerMethodField() - - class Meta: - model = Document - fields = ( - "id", - "created", - "updated", - "completed", - "description", - "template", - "owner", - "is_favorited", - ) - - def get_is_favorited(self, document: Document) -> bool: - user = self.context.get("request").user - if not user.is_authenticated: - return False - return FavDocument.objects.filter( - user=user, document=document - ).exists() - - -class DocumentReadSerializerExtended(serializers.ModelSerializer): - """Сериализатор документов расширенный (с информацией полей шаблона).""" - - grouped_fields = TemplateGroupSerializer( - read_only=True, - many=True, - source="template.field_groups", - allow_empty=True, - ) - ungrouped_fields = serializers.SerializerMethodField() - is_favorited = serializers.SerializerMethodField() - template = TemplateSerializerMinified(read_only=True) - - class Meta: - model = Document - fields = ( - "id", - "created", - "updated", - "completed", - "description", - "template", - "owner", - "is_favorited", - "grouped_fields", - "ungrouped_fields", - ) - - def get_is_favorited(self, document: Document) -> bool: - user = self.context.get("request").user - if not user.is_authenticated: - return False - return FavDocument.objects.filter( - user=user, document=document - ).exists() - - def get_ungrouped_fields(self, instance): - solo_fields = instance.template.fields.filter(group=None).order_by( - "id" - ) - return TemplateFieldSerializerMinified(solo_fields, many=True).data - - def to_representation(self, instance): - response = super().to_representation(instance) - response["grouped_fields"].sort(key=lambda x: x["id"]) - # add field values - field_vals = {} - for document_field in instance.document_fields.all(): - field_vals[document_field.field.id] = document_field.value - for group in response["grouped_fields"]: - for field in group["fields"]: - id = field.get("id") - if id in field_vals: - field["value"] = field_vals[id] - for field in response["ungrouped_fields"]: - id = field.get("id") - if id in field_vals: - field["value"] = field_vals[id] - return response - - -class DocumentWriteSerializer(serializers.ModelSerializer): - """Сериализатор документов.""" - - document_fields = DocumentFieldSerializer(many=True) - - class Meta: - model = Document - fields = ( - "id", - "created", - "completed", - "description", - "template", - "document_fields", - ) - - @transaction.atomic - def create(self, validated_data): - """Создание документа и полей документа""" - document_fields = validated_data.pop("document_fields", None) - document = Document.objects.create(**validated_data) - custom_fieldtypes_validation(document_fields) - document.create_document_fields(document_fields) - return document - - @transaction.atomic - def update(self, instance, validated_data): - """Обновление документа и полей документа""" - document_fields = validated_data.pop("document_fields", None) - Document.objects.filter(id=instance.id).update( - **validated_data, updated=timezone.now() - ) - document = Document.objects.get(id=instance.id) - if document_fields is not None: - custom_fieldtypes_validation(document_fields) - document.document_fields.all().delete() - document.create_document_fields(document_fields) - return document - - def to_representation(self, instance): - return DocumentReadSerializerMinified( - instance, context={"request": self.context.get("request")} - ).data - - -class FavTemplateSerializer(serializers.ModelSerializer): - class Meta: - model = FavTemplate - fields = "__all__" - - -class FavDocumentSerializer(serializers.ModelSerializer): - class Meta: - model = FavDocument - fields = "__all__" - - -class CategorySerializer(serializers.ModelSerializer): - class Meta: - model = Category - fields = "__all__" - - -class TemplateFileUploadSerializer(serializers.ModelSerializer): - errors = serializers.SerializerMethodField() - - class Meta: - model = Template - fields = ("template", "errors") - - def get_errors(self, instance): - return instance.get_consistency_errors() - - -class CustomUserSerializer(UserSerializer): - password = serializers.CharField(write_only=True) - - class Meta: - model = User - fields = ("id", "email", "password") - read_only_fields = ("id",) - - def create(self, validated_data): - email = validated_data.get("email") - password = validated_data.get("password") - username = email - user = User(email=email, username=username) - user.set_password(password) - user.save() - return user - - def validate(self, data): - if User.objects.filter(email=data["email"]): - raise serializers.ValidationError("Такой email уже есть!") - return data diff --git a/backend/api/v1/favorites/serializers.py b/backend/api/v1/serializers.py similarity index 100% rename from backend/api/v1/favorites/serializers.py rename to backend/api/v1/serializers.py diff --git a/backend/api/v1/templates/views.py b/backend/api/v1/templates/views.py deleted file mode 100644 index cf58adc..0000000 --- a/backend/api/v1/templates/views.py +++ /dev/null @@ -1,496 +0,0 @@ -"""Вьюсеты v1 API.""" -from datetime import datetime -import io -import logging -import os -from pathlib import Path - -# import aspose.words as aw - -from django.contrib.auth import get_user_model -from django.http import FileResponse -from django.shortcuts import get_object_or_404 -from django_filters.rest_framework import DjangoFilterBackend -from rest_framework import ( - filters, - generics, - serializers, - status, - views, - viewsets, -) -from rest_framework.decorators import action -from rest_framework.exceptions import PermissionDenied -from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated -from rest_framework.response import Response -from rest_framework.views import APIView -from rest_framework_simplejwt.tokens import RefreshToken - -from .permissions import IsAdminOrReadOnly, IsOwner, IsOwnerOrAdminOrReadOnly -from .serializers import ( - CategorySerializer, - DocumentFieldSerializer, - DocumentFieldWriteSerializer, - DocumentReadSerializerExtended, - DocumentReadSerializerMinified, - DocumentWriteSerializer, - FavDocumentSerializer, - FavTemplateSerializer, - TemplateFieldSerializer, - TemplateFileUploadSerializer, - TemplateSerializer, - TemplateSerializerMinified, - TemplateWriteSerializer, - CustomUserSerializer, -) - - -from api.v1 import utils as v1utils -from core.constants import Messages -from core.template_render import DocumentTemplate -from documents.models import ( - Category, - Document, - FavDocument, - FavTemplate, - Template, -) -from base_objects.models import (BaseObject, - BaseObjectField, - Object, - ObjectField - ) - -logger = logging.getLogger(__name__) - -User = get_user_model() - - -class CategoryViewSet(viewsets.ModelViewSet): - queryset = Category.objects.all() - serializer_class = CategorySerializer - permission_classes = (AllowAny,) - - -def send_file(filestream, filename: str, as_attachment: bool = True): - """Функция подготовки открытого двоичного файла к отправке.""" - response = FileResponse( - streaming_content=filestream, - as_attachment=as_attachment, - filename=filename, - ) - return response - - -class TemplateViewSet(viewsets.ModelViewSet): - """Шаблон.""" - - serializer_class = TemplateSerializer - http_method_names = ("get", "delete", "post") - permission_classes = (IsAdminOrReadOnly,) # AllowAny - filter_backends = ( - DjangoFilterBackend, - filters.SearchFilter, - filters.OrderingFilter, - ) - pagination_class = None - filterset_fields = ( - "owner", - "category", - ) - search_fields = ( - "owner", - "category", - ) - - def get_serializer_class(self): - if self.action == "list": - return TemplateSerializerMinified - elif self.action == "create": - return TemplateWriteSerializer - return TemplateSerializer - - def get_queryset(self): - if self.request.user.is_superuser: - return Template.objects.all() - else: - return Template.objects.filter(deleted=False) - - @action( - detail=True, - methods=["get"], - permission_classes=(AllowAny,), - url_path="download_draft", - url_name="download_draft", - ) - def download_draft(self, request, pk=None): - # template = get_object_or_404(Template, pk=pk) - template = serializers.PrimaryKeyRelatedField( - many=False, queryset=Template.objects.all() - ).to_internal_value(data=pk) - context = {field.tag: field.name for field in template.fields.all()} - path = template.template - doc = DocumentTemplate(path) - buffer = doc.get_draft(context) - filename = f"{template.name}_шаблон.docx" - if request.query_params.get("pdf"): - buffer = v1utils.convert_file_to_pdf(buffer) - filename = f"{template.name}_шаблон.pdf" - response = send_file(buffer, filename) - return response - - def destroy(self, request, *args, **kwargs): - user = request.user - template = self.get_object() - if not (user == template.owner or user.is_superuser): - return Response(status=status.HTTP_404_NOT_FOUND) - if template.deleted: - return Response( - Messages.TEMPLATE_ALREADY_DELETED, - status=status.HTTP_404_NOT_FOUND, - ) - template.deleted = True - template.save() - return Response(status=status.HTTP_204_NO_CONTENT) - - -class TemplateFieldViewSet(viewsets.ModelViewSet): - """Поля шаблона.""" - - serializer_class = TemplateFieldSerializer - http_method_names = ("get",) - permission_classes = (IsAdminOrReadOnly,) - # permission_classes = (AllowAny,) # Заглушка - pagination_class = None - - def get_queryset(self): - template_id = self.kwargs.get("template_id") - template = get_object_or_404(Template, id=template_id) - return template.fields.all() - - -class DocumentViewSet(viewsets.ModelViewSet): - """Документ.""" - - queryset = Document.objects.all() - serializer_class = DocumentReadSerializerMinified - http_method_names = ("get", "post", "patch", "delete") - permission_classes = (IsAuthenticated,) - # permission_classes = (AllowAny,) # Заглушка - filter_backends = ( - filters.SearchFilter, - filters.OrderingFilter, - DjangoFilterBackend, - ) - pagination_class = None - filterset_fields = ("owner",) - search_fields = ("owner",) - - def get_queryset(self): - """Выдаем только список документов текущего пользователя.""" - # ЗАглушка - if self.request.user.is_authenticated: - return self.request.user.documents - else: - user = User.objects.get(id=1) - return Document.objects.filter(owner=user) - return Document.objects.none() - - def get_serializer_class(self): - """Выбор сериализатора.""" - if self.action == "retrieve": - return DocumentReadSerializerExtended - elif self.action == "list": - return DocumentReadSerializerMinified - return DocumentWriteSerializer - - def perform_create(self, serializer): - serializer.save(owner=self.request.user) - - @action( - detail=False, - permission_classes=[ - IsAuthenticated, - # AllowAny, # Заглушка - ], - url_path=r"draft", - ) - def draft_documents(self, request): - """Возвращает список незаконченных документов/черновиков""" - user = self.request.user - queryset = Document.objects.filter(completed=False, owner=user) - serializer = DocumentReadSerializerMinified( - queryset, many=True, context={"request": request} - ) - return Response(serializer.data, status=status.HTTP_200_OK) - - @action( - detail=False, - permission_classes=[ - IsAuthenticated, - ], - url_path=r"history", - ) - def history_documents(self, request): - """Возвращает список законченных документов/история""" - user = self.request.user - queryset = Document.objects.filter(completed=True, owner=user) - serializer = DocumentReadSerializerMinified( - queryset, many=True, context={"request": request} - ) - return Response(serializer.data, status=status.HTTP_200_OK) - - @action( - detail=True, - permission_classes=[ - IsAuthenticated - ], - url_path=r"download_document", - ) - def download_document(self, request, pk=None): - """Скачивание готового документа.""" - logger.debug(f"Start docx generation for document_id {pk}") - start_time = datetime.utcnow() - document = get_object_or_404(Document, id=pk) - buffer = v1utils.fill_docx_template_for_document(document) - docx_time = datetime.utcnow() - logger.debug( - f"Time of docx generation for document_id {pk} is {docx_time-start_time}" - ) - response = send_file(buffer, f"{document.template.name}.docx") - return response - - @action( - detail=True, - permission_classes=[ - IsAuthenticated - ], - url_path="download_pdf", - ) - def download_pdf(self, request, pk=None): - """Генерация и выдача на скачивание pdf-файла.""" - document = get_object_or_404(Document, pk=pk) - logger.debug(f"Start docx generation for document_id {pk}") - start_time = datetime.utcnow() - buffer = v1utils.create_document_pdf_for_export(document) - pdf_time = datetime.utcnow() - logger.debug( - f"Time of docx generation for document_id {pk} is {pdf_time-start_time}" - ) - response = send_file(buffer, f"{document.template.name}.pdf") - return response - - -class DocumentFieldViewSet(viewsets.ModelViewSet): - """Поле шаблона.""" - - queryset = Document.objects.all() - serializer_class = DocumentFieldSerializer - http_method_names = ("get",) - permission_classes = (IsAuthenticated,) - # permission_classes = (AllowAny,) # Заглушка - pagination_class = None - - def get_queryset(self): - document_id = self.kwargs.get("document_id") - document = get_object_or_404(Document, id=document_id) - if ( - not self.request.user.is_staff - and document.owner != self.request.user - ): - raise PermissionDenied() - return document.document_fields.all() - - -class FavTemplateAPIview(APIView): - permission_classes = (IsAuthenticated,) - # permission_classes = (AllowAny,) # Заглушка - - def post(self, request, **kwargs): - data = { - "user": self.request.user.pk, - "template": self.kwargs.get("template_id"), - } - serializer = FavTemplateSerializer(data=data) - queryset = FavTemplate.objects.filter( - user=self.request.user.pk, template=self.kwargs.get("template_id") - ) - # проверка, что такого FavTemplate нет в БД - if queryset.exists(): - raise serializers.ValidationError( - "Этот шаблон уже есть в Избранном!" - ) - if serializer.is_valid(): - serializer.save() - return Response(status=status.HTTP_201_CREATED) - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - - def delete(self, request, **kwargs): - queryset = FavTemplate.objects.filter( - user=self.request.user.pk, template=self.kwargs.get("template_id") - ) - # проверка, что такой FavTemplate существует в БД - if not queryset.exists(): - return Response(status=status.HTTP_404_NOT_FOUND) - queryset.delete() - return Response(status=status.HTTP_204_NO_CONTENT) - - -class FavDocumentAPIview(APIView): - permission_classes = (IsAuthenticated,) - # permission_classes = (AllowAny,) # Заглушка - - def post(self, request, **kwargs): - data = { - "user": self.request.user.pk, - "document": self.kwargs.get("document_id"), - } - serializer = FavDocumentSerializer(data=data) - queryset = FavDocument.objects.filter( - user=self.request.user.pk, document=self.kwargs.get("document_id") - ) - # проверка, что такого FavDocument нет в БД - if queryset.exists(): - raise serializers.ValidationError( - "Этот документ уже есть в Избранном!" - ) - if serializer.is_valid(): - serializer.save() - return Response(status=status.HTTP_201_CREATED) - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - - def delete(self, request, **kwargs): - queryset = FavDocument.objects.filter( - user=self.request.user.pk, document=self.kwargs.get("document_id") - ) - # проверка, что такой FavDocument существует в БД - if not queryset.exists(): - return Response(status=status.HTTP_404_NOT_FOUND) - queryset.delete() - return Response(status=status.HTTP_204_NO_CONTENT) - - -class AnonymousDownloadPreviewAPIView(views.APIView): - permission_classes = (AllowAny,) - - def post(self, request, template_id): - logger.debug(f"Start preview generation for template {template_id}") - start_time = datetime.utcnow() - template = get_object_or_404(Template, id=template_id) - document_fields = request.data.get("document_fields") - serializer = DocumentFieldWriteSerializer( - data=document_fields, - context={"template_fields": set(template.fields.all())}, - many=True, - ) - serializer.is_valid(raise_exception=True) - v1utils.custom_fieldtypes_validation(serializer.validated_data) - context = {} - for data in serializer.validated_data: - if data["value"]: # write only fields with non empty value - context[data["field"].tag] = data["value"] - context_default = { - field.tag: field.default or field.name - for field in template.fields.all() - } - doc = DocumentTemplate(template.template) - buffer = doc.get_partial(context, context_default) - filename = f"{template.name}_preview.docx" - docx_time = datetime.utcnow() - logger.debug( - f"Time of docx generation for template {template_id} is {docx_time-start_time}" - ) - if request.query_params.get("pdf"): - buffer = v1utils.convert_file_to_pdf(buffer) - filename = f"{template.name}_preview.pdf" - pdf_time = datetime.utcnow() - logger.debug( - f"Time of pdf generation for template {template_id} is {pdf_time-docx_time}" - ) - response = send_file(buffer, filename) - return response - - -class CheckTemplateConsistencyAPIView(views.APIView): - permission_classes = (IsAdminUser,) - # permission_classes = (AllowAny,) # Заглушка - - def get(self, request, template_id): - template = get_object_or_404(Template, id=template_id) - errors = template.get_consistency_errors() - if errors: - return Response(data={"errors": errors}, status=status.HTTP_200_OK) - else: - return Response( - data={"result": Messages.TEMPLATE_CONSISTENT}, - status=status.HTTP_200_OK, - ) - - -class UploadTemplateFileAPIView(generics.UpdateAPIView): - queryset = Template.objects.all() - serializer_class = TemplateFileUploadSerializer - lookup_field = "id" - lookup_url_kwarg = "template_id" - permission_classes = (IsAdminUser,) - # permission_classes = (AllowAny,) # Заглушка - http_method_names = ["patch", "put"] - -from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode -from django.utils.encoding import force_bytes -from django.urls import reverse_lazy -from django.views.generic import CreateView, View, TemplateView - -class RegisterView(generics.GenericAPIView): - serializer_class = CustomUserSerializer - - def post(self, request): - user = request.data - serializer = self.serializer_class(data=user) - serializer.is_valid(raise_exception=True) - serializer.save() - user_data = serializer.data - user = User.objects.get(email=user_data["email"]) - token = RefreshToken.for_user(user).access_token - - uid = urlsafe_base64_encode(force_bytes(user.pk)) - activation_url = reverse_lazy('confirm_email', kwargs={'uidb64': uid, 'token': token}) - print(activation_url) - absurl = f'http://127.0.0.1:9000/{activation_url}' - email_body = ( - "Hi " - + user.username - + " Use the link below to verify your email \n" - + absurl - ) - print(email_body) - data = { - "email_body": email_body, - "to_email": user.email, - "email_subject": "Verify your email", - } - - Util.send_email(data) - return Response(user_data, status=status.HTTP_201_CREATED) - -from django.contrib.auth.tokens import default_token_generator -from django.contrib.auth import login -class UserConfirmEmailView(View): - def get(self, request, uidb64, token): - try: - uid = urlsafe_base64_decode(uidb64) - user = User.objects.get(pk=uid) - except (TypeError, ValueError, OverflowError, User.DoesNotExist): - user = None - - if user is not None and default_token_generator.check_token(user, token): - user.is_active = True - user.save() - login(request, user) - - -class BaseObjectFieldViewSet(viewsets.ModelViewSet): - queryset = BaseObject.objects.all() - http_method_names = ("get",) - permission_classes = (IsAdminOrReadOnly,) # AllowAny - pagination_class = None \ No newline at end of file diff --git a/backend/api/v1/urls.py b/backend/api/v1/urls.py index d030c00..65698cc 100644 --- a/backend/api/v1/urls.py +++ b/backend/api/v1/urls.py @@ -1,32 +1,15 @@ -# from api.v1.views import ( -# AnonymousDownloadPreviewAPIView, -# CheckTemplateConsistencyAPIView, -# TemplateFieldViewSet, -# TemplateViewSet, -# FavTemplateAPIview, -# FavDocumentAPIview, -# UploadTemplateFileAPIView, -# ) - -from api.v1.documents.views import ( - DocumentFieldViewSet, - DocumentViewSet,) - -from api.v1.templates import ( - UploadTemplateFileAPIView, +from api.v1.views import ( AnonymousDownloadPreviewAPIView, CheckTemplateConsistencyAPIView, + DocumentFieldViewSet, + DocumentViewSet, TemplateFieldViewSet, - TemplateViewSet,) - -from api.v1.users import () -from api.v1.favorites import ( + TemplateViewSet, FavTemplateAPIview, - FavDocumentAPIview,) -from api.v1.objects import (BaseObjectViewSet, - BaseObjectFieldViewSet, - ObjectViewSet) - + FavDocumentAPIview, + UploadTemplateFileAPIView, + # RegisterView, +) from django.urls import include, path, re_path from rest_framework.routers import DefaultRouter @@ -59,27 +42,6 @@ viewset=DocumentViewSet, ) -router_v1.register( - prefix="base_objects", - basename="base_objects", - viewset=BaseObjectViewSet, -) -router_v1.register( - prefix="base_object_fields", - basename="base_object_fields", - viewset=BaseObjectFieldViewSet, -) -router_v1.register( - prefix="objects", - basename="objects", - viewset=ObjectViewSet, -) -router_v1.register( - prefix="object_fields", - basename="object_fields", - viewset=ObjectFieldViewSet, -) - urlpatterns = [ path( "templates//favorite/", FavTemplateAPIview.as_view() @@ -102,6 +64,7 @@ UploadTemplateFileAPIView.as_view(), name="upload_template", ), + # path("users/", RegisterView.as_view(), name="register"), path("", include(router_v1.urls)), path("", include("djoser.urls")), path("auth/", include("djoser.urls.authtoken")), diff --git a/backend/api/v1/users/serializers.py b/backend/api/v1/users/serializers.py deleted file mode 100644 index c917814..0000000 --- a/backend/api/v1/users/serializers.py +++ /dev/null @@ -1,512 +0,0 @@ -"""Сериализаторы для API.""" -import base64 -from django.contrib.auth import get_user_model -from django.utils import timezone -from django.core.files.base import ContentFile -from django.db import transaction -from djoser.serializers import UserSerializer -from rest_framework import serializers - -from .utils import custom_fieldtypes_validation, get_non_unique_items -from core.constants import Messages -from documents.models import ( - Category, - Document, - DocumentField, - FavDocument, - FavTemplate, - Template, - TemplateField, - TemplateFieldGroup, - TemplateFieldType, -) - -User = get_user_model() - - -class Base64ImageField(serializers.ImageField): - def to_internal_value(self, data): - if isinstance(data, str) and data.startswith("data:image"): - format, imgstr = data.split(";base64,") - ext = format.split("/")[-1] - - data = ContentFile(base64.b64decode(imgstr), name="temp." + ext) - - return super().to_internal_value(data) - - -class TemplateFieldSerializer(serializers.ModelSerializer): - """Сериализатор поля шаблона.""" - - group_id = serializers.PrimaryKeyRelatedField( - source="group", read_only=True - ) - group_name = serializers.StringRelatedField( - source="group.name", read_only=True - ) - type = serializers.SlugRelatedField(slug_field="type", read_only=True) - mask = serializers.CharField(source="type.mask", read_only=True) - - class Meta: - model = TemplateField - fields = ( - "id", - "tag", - "name", - "hint", - "group_id", - "group_name", - "type", - "mask", - "length", - ) - - -class TemplateFieldWriteSerializer(serializers.ModelSerializer): - """Сериализатор поля шаблона для записи/обновления""" - - type = serializers.SlugRelatedField( - queryset=TemplateFieldType.objects.all(), slug_field="type" - ) - group = serializers.IntegerField(required=False, default=None) - default = serializers.CharField( - trim_whitespace=False, max_length=255, required=False - ) - - class Meta: - model = TemplateField - fields = ("tag", "name", "hint", "group", "type", "length", "default") - - -class TemplateFieldSerializerMinified(serializers.ModelSerializer): - """Сериализатор поля шаблона сокращенный (без полей группы)""" - - type = serializers.SlugRelatedField(slug_field="type", read_only=True) - mask = serializers.CharField(source="type.mask", read_only=True) - - class Meta: - model = TemplateField - fields = ( - "id", - "tag", - "name", - "hint", - "type", - "mask", - "length", - "default", - ) - - -class TemplateGroupSerializerMinified(serializers.ModelSerializer): - """Сериализатор группы полей шаблона без вложенных полей""" - - class Meta: - model = TemplateFieldGroup - fields = ("id", "name") - - -class TemplateGroupSerializer(serializers.ModelSerializer): - """Сериализатор группы полей шаблона""" - - fields = TemplateFieldSerializerMinified( - read_only=True, - many=True, - # source="fields", - allow_empty=True, - ) - - class Meta: - model = TemplateField - fields = ( - "id", - "name", - "fields", - ) - - def to_representation(self, instance): - response = super().to_representation(instance) - response["fields"].sort(key=lambda x: x["id"]) - return response - - -class TemplateGroupWriteSerializer(serializers.ModelSerializer): - """Сериализатор группы полей шаблона для записи/обновления""" - - id = serializers.IntegerField() - - class Meta: - model = TemplateFieldGroup - fields = ( - "id", - "name", - ) - - -class TemplateSerializerMinified(serializers.ModelSerializer): - """Сериализатор шаблонов сокращенный.""" - - is_favorited = serializers.SerializerMethodField() - image = Base64ImageField(required=True, allow_null=True) - - class Meta: - model = Template - exclude = ("template",) - read_only_fields = ( - "name", - "category", - "owner", - "image", - "modified", - "deleted", - "description", - "is_favorited", - ) - - def get_is_favorited(self, template: Template) -> bool: - user = self.context.get("request").user - if not user.is_authenticated: - return False - return FavTemplate.objects.filter( - user=user, template=template - ).exists() - - -class TemplateSerializerPlain(TemplateSerializerMinified): - """Сериализатор шаблона (без вложенности полей в группы).""" - - fields = TemplateFieldSerializer( - read_only=True, - many=True, - # source="fields", - allow_empty=True, - ) - - groups = TemplateGroupSerializerMinified( - source="field_groups", - read_only=True, - many=True, - allow_empty=True, - ) - - class Meta(TemplateSerializerMinified.Meta): - model = Template - exclude = ("template",) - # fields = "__all__" - read_only_fields = ("is_favorited", "groups") - - -class TemplateSerializer(TemplateSerializerMinified): - """Сериализатор шаблона (поля сгруппированы внутри grouped_fields).""" - - grouped_fields = TemplateGroupSerializer( - read_only=True, - many=True, - source="field_groups", - allow_empty=True, - ) - ungrouped_fields = serializers.SerializerMethodField() - - class Meta(TemplateSerializerMinified.Meta): - model = Template - exclude = ("template",) - read_only_fields = ( - "is_favorited", - "grouped_fields", - "ungrouped_fields", - ) - - def get_ungrouped_fields(self, instance): - solo_fields = instance.fields.filter(group=None).order_by("id") - return TemplateFieldSerializerMinified(solo_fields, many=True).data - - def to_representation(self, instance): - response = super().to_representation(instance) - response["grouped_fields"].sort(key=lambda x: x["id"]) - return response - - -class TemplateWriteSerializer(serializers.ModelSerializer): - """Сериализатор шаблонов для записи/изменения.""" - - fields = TemplateFieldWriteSerializer(many=True) - groups = TemplateGroupWriteSerializer(many=True) - - class Meta: - model = Template - fields = ("name", "deleted", "description", "fields", "groups") - - def validate(self, data): - # проверка, что все поля имеют уникальные тэги - data_fields = data.get("fields") - field_tags = [f["tag"] for f in data_fields] - tags_duplicates = get_non_unique_items(field_tags) - if tags_duplicates: - raise serializers.ValidationError( - detail=Messages.TEMPLATE_FIELD_TAGS_ARE_NOT_UNIQUE.format( - tags_duplicates - ) - ) - - # проверка, что все группы имеют уникальный id - data_groups = data.get("groups") - group_ids = [g["id"] for g in data_groups] - ids_duplicates = get_non_unique_items(group_ids) - if ids_duplicates: - raise serializers.ValidationError( - detail=Messages.TEMPLATE_GROUP_IDS_ARE_NOT_UNIQUE.format( - ids_duplicates - ) - ) - - # проверка, что поля шаблона привязаны к описанным группам в group - field_groups = set([f.get("group") for f in data_fields]) - if None in field_groups: - field_groups.discard(None) - unknown_groups = field_groups - set(group_ids) - if unknown_groups: - raise serializers.ValidationError( - detail=Messages.UNKNOWN_GROUP_ID.format(unknown_groups) - ) - return data - - def create(self, data): - data_fields = data.pop("fields") - data_groups = data.pop("groups") - template = Template.objects.create(**data) - # создание групп - data_groups.sort(key=lambda x: x["id"]) - group_models = {} - for group in data_groups: - model = TemplateFieldGroup.objects.create( - name=group["name"], template=template - ) - group_models[group["id"]] = model - # создание полей - template_fields = [] - for data in data_fields: - group_id = data.get("group") - if group_id: - data["group"] = group_models[group_id] - template_fields.append(TemplateField(template=template, **data)) - TemplateField.objects.bulk_create(template_fields) - return template - - def to_representation(self, instance): - request = self.context.get("request") - return TemplateSerializerPlain( - instance, context={"request": request} - ).data - - -class DocumentFieldSerializer(serializers.ModelSerializer): - """Сериализатор поля документов.""" - - description = serializers.CharField(required=False, max_length=200) - - class Meta: - model = DocumentField - exclude = ("document",) - - -class DocumentFieldWriteSerializer(serializers.ModelSerializer): - """Сериализатор для полей документа или превью шаблона.""" - - # description = serializers.CharField(required=False, max_length=200) - - class Meta: - model = DocumentField - fields = ("field", "value") - - def validate_field(self, template_field): - template_fields = self.context.get("template_fields", set()) - if template_field not in template_fields: - raise serializers.ValidationError( - Messages.WRONG_TEMPLATE_FIELD.format(template_field.id) - ) - return template_field - - -class DocumentReadSerializerMinified(serializers.ModelSerializer): - """Сериализатор документов сокращенный (без информации о полях)""" - - is_favorited = serializers.SerializerMethodField() - - class Meta: - model = Document - fields = ( - "id", - "created", - "updated", - "completed", - "description", - "template", - "owner", - "is_favorited", - ) - - def get_is_favorited(self, document: Document) -> bool: - user = self.context.get("request").user - if not user.is_authenticated: - return False - return FavDocument.objects.filter( - user=user, document=document - ).exists() - - -class DocumentReadSerializerExtended(serializers.ModelSerializer): - """Сериализатор документов расширенный (с информацией полей шаблона).""" - - grouped_fields = TemplateGroupSerializer( - read_only=True, - many=True, - source="template.field_groups", - allow_empty=True, - ) - ungrouped_fields = serializers.SerializerMethodField() - is_favorited = serializers.SerializerMethodField() - template = TemplateSerializerMinified(read_only=True) - - class Meta: - model = Document - fields = ( - "id", - "created", - "updated", - "completed", - "description", - "template", - "owner", - "is_favorited", - "grouped_fields", - "ungrouped_fields", - ) - - def get_is_favorited(self, document: Document) -> bool: - user = self.context.get("request").user - if not user.is_authenticated: - return False - return FavDocument.objects.filter( - user=user, document=document - ).exists() - - def get_ungrouped_fields(self, instance): - solo_fields = instance.template.fields.filter(group=None).order_by( - "id" - ) - return TemplateFieldSerializerMinified(solo_fields, many=True).data - - def to_representation(self, instance): - response = super().to_representation(instance) - response["grouped_fields"].sort(key=lambda x: x["id"]) - # add field values - field_vals = {} - for document_field in instance.document_fields.all(): - field_vals[document_field.field.id] = document_field.value - for group in response["grouped_fields"]: - for field in group["fields"]: - id = field.get("id") - if id in field_vals: - field["value"] = field_vals[id] - for field in response["ungrouped_fields"]: - id = field.get("id") - if id in field_vals: - field["value"] = field_vals[id] - return response - - -class DocumentWriteSerializer(serializers.ModelSerializer): - """Сериализатор документов.""" - - document_fields = DocumentFieldSerializer(many=True) - - class Meta: - model = Document - fields = ( - "id", - "created", - "completed", - "description", - "template", - "document_fields", - ) - - @transaction.atomic - def create(self, validated_data): - """Создание документа и полей документа""" - document_fields = validated_data.pop("document_fields", None) - document = Document.objects.create(**validated_data) - custom_fieldtypes_validation(document_fields) - document.create_document_fields(document_fields) - return document - - @transaction.atomic - def update(self, instance, validated_data): - """Обновление документа и полей документа""" - document_fields = validated_data.pop("document_fields", None) - Document.objects.filter(id=instance.id).update( - **validated_data, updated=timezone.now() - ) - document = Document.objects.get(id=instance.id) - if document_fields is not None: - custom_fieldtypes_validation(document_fields) - document.document_fields.all().delete() - document.create_document_fields(document_fields) - return document - - def to_representation(self, instance): - return DocumentReadSerializerMinified( - instance, context={"request": self.context.get("request")} - ).data - - -class FavTemplateSerializer(serializers.ModelSerializer): - class Meta: - model = FavTemplate - fields = "__all__" - - -class FavDocumentSerializer(serializers.ModelSerializer): - class Meta: - model = FavDocument - fields = "__all__" - - -class CategorySerializer(serializers.ModelSerializer): - class Meta: - model = Category - fields = "__all__" - - -class TemplateFileUploadSerializer(serializers.ModelSerializer): - errors = serializers.SerializerMethodField() - - class Meta: - model = Template - fields = ("template", "errors") - - def get_errors(self, instance): - return instance.get_consistency_errors() - - -class CustomUserSerializer(UserSerializer): - password = serializers.CharField(write_only=True) - - class Meta: - model = User - fields = ("id", "email", "password") - read_only_fields = ("id",) - - def create(self, validated_data): - email = validated_data.get("email") - password = validated_data.get("password") - username = email - user = User(email=email, username=username) - user.set_password(password) - user.save() - return user - - def validate(self, data): - if User.objects.filter(email=data["email"]): - raise serializers.ValidationError("Такой email уже есть!") - return data diff --git a/backend/api/v1/users/views.py b/backend/api/v1/users/views.py deleted file mode 100644 index cf58adc..0000000 --- a/backend/api/v1/users/views.py +++ /dev/null @@ -1,496 +0,0 @@ -"""Вьюсеты v1 API.""" -from datetime import datetime -import io -import logging -import os -from pathlib import Path - -# import aspose.words as aw - -from django.contrib.auth import get_user_model -from django.http import FileResponse -from django.shortcuts import get_object_or_404 -from django_filters.rest_framework import DjangoFilterBackend -from rest_framework import ( - filters, - generics, - serializers, - status, - views, - viewsets, -) -from rest_framework.decorators import action -from rest_framework.exceptions import PermissionDenied -from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated -from rest_framework.response import Response -from rest_framework.views import APIView -from rest_framework_simplejwt.tokens import RefreshToken - -from .permissions import IsAdminOrReadOnly, IsOwner, IsOwnerOrAdminOrReadOnly -from .serializers import ( - CategorySerializer, - DocumentFieldSerializer, - DocumentFieldWriteSerializer, - DocumentReadSerializerExtended, - DocumentReadSerializerMinified, - DocumentWriteSerializer, - FavDocumentSerializer, - FavTemplateSerializer, - TemplateFieldSerializer, - TemplateFileUploadSerializer, - TemplateSerializer, - TemplateSerializerMinified, - TemplateWriteSerializer, - CustomUserSerializer, -) - - -from api.v1 import utils as v1utils -from core.constants import Messages -from core.template_render import DocumentTemplate -from documents.models import ( - Category, - Document, - FavDocument, - FavTemplate, - Template, -) -from base_objects.models import (BaseObject, - BaseObjectField, - Object, - ObjectField - ) - -logger = logging.getLogger(__name__) - -User = get_user_model() - - -class CategoryViewSet(viewsets.ModelViewSet): - queryset = Category.objects.all() - serializer_class = CategorySerializer - permission_classes = (AllowAny,) - - -def send_file(filestream, filename: str, as_attachment: bool = True): - """Функция подготовки открытого двоичного файла к отправке.""" - response = FileResponse( - streaming_content=filestream, - as_attachment=as_attachment, - filename=filename, - ) - return response - - -class TemplateViewSet(viewsets.ModelViewSet): - """Шаблон.""" - - serializer_class = TemplateSerializer - http_method_names = ("get", "delete", "post") - permission_classes = (IsAdminOrReadOnly,) # AllowAny - filter_backends = ( - DjangoFilterBackend, - filters.SearchFilter, - filters.OrderingFilter, - ) - pagination_class = None - filterset_fields = ( - "owner", - "category", - ) - search_fields = ( - "owner", - "category", - ) - - def get_serializer_class(self): - if self.action == "list": - return TemplateSerializerMinified - elif self.action == "create": - return TemplateWriteSerializer - return TemplateSerializer - - def get_queryset(self): - if self.request.user.is_superuser: - return Template.objects.all() - else: - return Template.objects.filter(deleted=False) - - @action( - detail=True, - methods=["get"], - permission_classes=(AllowAny,), - url_path="download_draft", - url_name="download_draft", - ) - def download_draft(self, request, pk=None): - # template = get_object_or_404(Template, pk=pk) - template = serializers.PrimaryKeyRelatedField( - many=False, queryset=Template.objects.all() - ).to_internal_value(data=pk) - context = {field.tag: field.name for field in template.fields.all()} - path = template.template - doc = DocumentTemplate(path) - buffer = doc.get_draft(context) - filename = f"{template.name}_шаблон.docx" - if request.query_params.get("pdf"): - buffer = v1utils.convert_file_to_pdf(buffer) - filename = f"{template.name}_шаблон.pdf" - response = send_file(buffer, filename) - return response - - def destroy(self, request, *args, **kwargs): - user = request.user - template = self.get_object() - if not (user == template.owner or user.is_superuser): - return Response(status=status.HTTP_404_NOT_FOUND) - if template.deleted: - return Response( - Messages.TEMPLATE_ALREADY_DELETED, - status=status.HTTP_404_NOT_FOUND, - ) - template.deleted = True - template.save() - return Response(status=status.HTTP_204_NO_CONTENT) - - -class TemplateFieldViewSet(viewsets.ModelViewSet): - """Поля шаблона.""" - - serializer_class = TemplateFieldSerializer - http_method_names = ("get",) - permission_classes = (IsAdminOrReadOnly,) - # permission_classes = (AllowAny,) # Заглушка - pagination_class = None - - def get_queryset(self): - template_id = self.kwargs.get("template_id") - template = get_object_or_404(Template, id=template_id) - return template.fields.all() - - -class DocumentViewSet(viewsets.ModelViewSet): - """Документ.""" - - queryset = Document.objects.all() - serializer_class = DocumentReadSerializerMinified - http_method_names = ("get", "post", "patch", "delete") - permission_classes = (IsAuthenticated,) - # permission_classes = (AllowAny,) # Заглушка - filter_backends = ( - filters.SearchFilter, - filters.OrderingFilter, - DjangoFilterBackend, - ) - pagination_class = None - filterset_fields = ("owner",) - search_fields = ("owner",) - - def get_queryset(self): - """Выдаем только список документов текущего пользователя.""" - # ЗАглушка - if self.request.user.is_authenticated: - return self.request.user.documents - else: - user = User.objects.get(id=1) - return Document.objects.filter(owner=user) - return Document.objects.none() - - def get_serializer_class(self): - """Выбор сериализатора.""" - if self.action == "retrieve": - return DocumentReadSerializerExtended - elif self.action == "list": - return DocumentReadSerializerMinified - return DocumentWriteSerializer - - def perform_create(self, serializer): - serializer.save(owner=self.request.user) - - @action( - detail=False, - permission_classes=[ - IsAuthenticated, - # AllowAny, # Заглушка - ], - url_path=r"draft", - ) - def draft_documents(self, request): - """Возвращает список незаконченных документов/черновиков""" - user = self.request.user - queryset = Document.objects.filter(completed=False, owner=user) - serializer = DocumentReadSerializerMinified( - queryset, many=True, context={"request": request} - ) - return Response(serializer.data, status=status.HTTP_200_OK) - - @action( - detail=False, - permission_classes=[ - IsAuthenticated, - ], - url_path=r"history", - ) - def history_documents(self, request): - """Возвращает список законченных документов/история""" - user = self.request.user - queryset = Document.objects.filter(completed=True, owner=user) - serializer = DocumentReadSerializerMinified( - queryset, many=True, context={"request": request} - ) - return Response(serializer.data, status=status.HTTP_200_OK) - - @action( - detail=True, - permission_classes=[ - IsAuthenticated - ], - url_path=r"download_document", - ) - def download_document(self, request, pk=None): - """Скачивание готового документа.""" - logger.debug(f"Start docx generation for document_id {pk}") - start_time = datetime.utcnow() - document = get_object_or_404(Document, id=pk) - buffer = v1utils.fill_docx_template_for_document(document) - docx_time = datetime.utcnow() - logger.debug( - f"Time of docx generation for document_id {pk} is {docx_time-start_time}" - ) - response = send_file(buffer, f"{document.template.name}.docx") - return response - - @action( - detail=True, - permission_classes=[ - IsAuthenticated - ], - url_path="download_pdf", - ) - def download_pdf(self, request, pk=None): - """Генерация и выдача на скачивание pdf-файла.""" - document = get_object_or_404(Document, pk=pk) - logger.debug(f"Start docx generation for document_id {pk}") - start_time = datetime.utcnow() - buffer = v1utils.create_document_pdf_for_export(document) - pdf_time = datetime.utcnow() - logger.debug( - f"Time of docx generation for document_id {pk} is {pdf_time-start_time}" - ) - response = send_file(buffer, f"{document.template.name}.pdf") - return response - - -class DocumentFieldViewSet(viewsets.ModelViewSet): - """Поле шаблона.""" - - queryset = Document.objects.all() - serializer_class = DocumentFieldSerializer - http_method_names = ("get",) - permission_classes = (IsAuthenticated,) - # permission_classes = (AllowAny,) # Заглушка - pagination_class = None - - def get_queryset(self): - document_id = self.kwargs.get("document_id") - document = get_object_or_404(Document, id=document_id) - if ( - not self.request.user.is_staff - and document.owner != self.request.user - ): - raise PermissionDenied() - return document.document_fields.all() - - -class FavTemplateAPIview(APIView): - permission_classes = (IsAuthenticated,) - # permission_classes = (AllowAny,) # Заглушка - - def post(self, request, **kwargs): - data = { - "user": self.request.user.pk, - "template": self.kwargs.get("template_id"), - } - serializer = FavTemplateSerializer(data=data) - queryset = FavTemplate.objects.filter( - user=self.request.user.pk, template=self.kwargs.get("template_id") - ) - # проверка, что такого FavTemplate нет в БД - if queryset.exists(): - raise serializers.ValidationError( - "Этот шаблон уже есть в Избранном!" - ) - if serializer.is_valid(): - serializer.save() - return Response(status=status.HTTP_201_CREATED) - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - - def delete(self, request, **kwargs): - queryset = FavTemplate.objects.filter( - user=self.request.user.pk, template=self.kwargs.get("template_id") - ) - # проверка, что такой FavTemplate существует в БД - if not queryset.exists(): - return Response(status=status.HTTP_404_NOT_FOUND) - queryset.delete() - return Response(status=status.HTTP_204_NO_CONTENT) - - -class FavDocumentAPIview(APIView): - permission_classes = (IsAuthenticated,) - # permission_classes = (AllowAny,) # Заглушка - - def post(self, request, **kwargs): - data = { - "user": self.request.user.pk, - "document": self.kwargs.get("document_id"), - } - serializer = FavDocumentSerializer(data=data) - queryset = FavDocument.objects.filter( - user=self.request.user.pk, document=self.kwargs.get("document_id") - ) - # проверка, что такого FavDocument нет в БД - if queryset.exists(): - raise serializers.ValidationError( - "Этот документ уже есть в Избранном!" - ) - if serializer.is_valid(): - serializer.save() - return Response(status=status.HTTP_201_CREATED) - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - - def delete(self, request, **kwargs): - queryset = FavDocument.objects.filter( - user=self.request.user.pk, document=self.kwargs.get("document_id") - ) - # проверка, что такой FavDocument существует в БД - if not queryset.exists(): - return Response(status=status.HTTP_404_NOT_FOUND) - queryset.delete() - return Response(status=status.HTTP_204_NO_CONTENT) - - -class AnonymousDownloadPreviewAPIView(views.APIView): - permission_classes = (AllowAny,) - - def post(self, request, template_id): - logger.debug(f"Start preview generation for template {template_id}") - start_time = datetime.utcnow() - template = get_object_or_404(Template, id=template_id) - document_fields = request.data.get("document_fields") - serializer = DocumentFieldWriteSerializer( - data=document_fields, - context={"template_fields": set(template.fields.all())}, - many=True, - ) - serializer.is_valid(raise_exception=True) - v1utils.custom_fieldtypes_validation(serializer.validated_data) - context = {} - for data in serializer.validated_data: - if data["value"]: # write only fields with non empty value - context[data["field"].tag] = data["value"] - context_default = { - field.tag: field.default or field.name - for field in template.fields.all() - } - doc = DocumentTemplate(template.template) - buffer = doc.get_partial(context, context_default) - filename = f"{template.name}_preview.docx" - docx_time = datetime.utcnow() - logger.debug( - f"Time of docx generation for template {template_id} is {docx_time-start_time}" - ) - if request.query_params.get("pdf"): - buffer = v1utils.convert_file_to_pdf(buffer) - filename = f"{template.name}_preview.pdf" - pdf_time = datetime.utcnow() - logger.debug( - f"Time of pdf generation for template {template_id} is {pdf_time-docx_time}" - ) - response = send_file(buffer, filename) - return response - - -class CheckTemplateConsistencyAPIView(views.APIView): - permission_classes = (IsAdminUser,) - # permission_classes = (AllowAny,) # Заглушка - - def get(self, request, template_id): - template = get_object_or_404(Template, id=template_id) - errors = template.get_consistency_errors() - if errors: - return Response(data={"errors": errors}, status=status.HTTP_200_OK) - else: - return Response( - data={"result": Messages.TEMPLATE_CONSISTENT}, - status=status.HTTP_200_OK, - ) - - -class UploadTemplateFileAPIView(generics.UpdateAPIView): - queryset = Template.objects.all() - serializer_class = TemplateFileUploadSerializer - lookup_field = "id" - lookup_url_kwarg = "template_id" - permission_classes = (IsAdminUser,) - # permission_classes = (AllowAny,) # Заглушка - http_method_names = ["patch", "put"] - -from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode -from django.utils.encoding import force_bytes -from django.urls import reverse_lazy -from django.views.generic import CreateView, View, TemplateView - -class RegisterView(generics.GenericAPIView): - serializer_class = CustomUserSerializer - - def post(self, request): - user = request.data - serializer = self.serializer_class(data=user) - serializer.is_valid(raise_exception=True) - serializer.save() - user_data = serializer.data - user = User.objects.get(email=user_data["email"]) - token = RefreshToken.for_user(user).access_token - - uid = urlsafe_base64_encode(force_bytes(user.pk)) - activation_url = reverse_lazy('confirm_email', kwargs={'uidb64': uid, 'token': token}) - print(activation_url) - absurl = f'http://127.0.0.1:9000/{activation_url}' - email_body = ( - "Hi " - + user.username - + " Use the link below to verify your email \n" - + absurl - ) - print(email_body) - data = { - "email_body": email_body, - "to_email": user.email, - "email_subject": "Verify your email", - } - - Util.send_email(data) - return Response(user_data, status=status.HTTP_201_CREATED) - -from django.contrib.auth.tokens import default_token_generator -from django.contrib.auth import login -class UserConfirmEmailView(View): - def get(self, request, uidb64, token): - try: - uid = urlsafe_base64_decode(uidb64) - user = User.objects.get(pk=uid) - except (TypeError, ValueError, OverflowError, User.DoesNotExist): - user = None - - if user is not None and default_token_generator.check_token(user, token): - user.is_active = True - user.save() - login(request, user) - - -class BaseObjectFieldViewSet(viewsets.ModelViewSet): - queryset = BaseObject.objects.all() - http_method_names = ("get",) - permission_classes = (IsAdminOrReadOnly,) # AllowAny - pagination_class = None \ No newline at end of file diff --git a/backend/api/v1/objects/views.py b/backend/api/v1/views.py similarity index 97% rename from backend/api/v1/objects/views.py rename to backend/api/v1/views.py index cf58adc..31c0e82 100644 --- a/backend/api/v1/objects/views.py +++ b/backend/api/v1/views.py @@ -55,11 +55,6 @@ FavTemplate, Template, ) -from base_objects.models import (BaseObject, - BaseObjectField, - Object, - ObjectField - ) logger = logging.getLogger(__name__) @@ -487,10 +482,3 @@ def get(self, request, uidb64, token): user.is_active = True user.save() login(request, user) - - -class BaseObjectFieldViewSet(viewsets.ModelViewSet): - queryset = BaseObject.objects.all() - http_method_names = ("get",) - permission_classes = (IsAdminOrReadOnly,) # AllowAny - pagination_class = None \ No newline at end of file diff --git a/backend/api/v1/documents/__init__.py b/backend/api/v2/__init__.py similarity index 100% rename from backend/api/v1/documents/__init__.py rename to backend/api/v2/__init__.py diff --git a/backend/api/v2/apps.py b/backend/api/v2/apps.py new file mode 100644 index 0000000..66656fd --- /dev/null +++ b/backend/api/v2/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ApiConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'api' diff --git a/backend/api/v1/favorites/__init__.py b/backend/api/v2/documents/__init__.py similarity index 100% rename from backend/api/v1/favorites/__init__.py rename to backend/api/v2/documents/__init__.py diff --git a/backend/api/v1/documents/serializers.py b/backend/api/v2/documents/serializers.py similarity index 92% rename from backend/api/v1/documents/serializers.py rename to backend/api/v2/documents/serializers.py index e2398e8..17ef39a 100644 --- a/backend/api/v1/documents/serializers.py +++ b/backend/api/v2/documents/serializers.py @@ -6,29 +6,19 @@ from django.db import transaction from rest_framework import serializers -from api.v1.utils import custom_fieldtypes_validation -from api.v1.templates.serializers import (TemplateGroupSerializer, +from api.v2.utils import custom_fieldtypes_validation +from api.v2.templates.serializers import (TemplateGroupSerializer, TemplateSerializerMinified, TemplateFieldSerializerMinified) from core.constants import Messages from documents.models import ( Document, - DocumentField,) + DocumentField, + FavDocument) User = get_user_model() -class Base64ImageField(serializers.ImageField): - def to_internal_value(self, data): - if isinstance(data, str) and data.startswith("data:image"): - format, imgstr = data.split(";base64,") - ext = format.split("/")[-1] - - data = ContentFile(base64.b64decode(imgstr), name="temp." + ext) - - return super().to_internal_value(data) - - class DocumentFieldSerializer(serializers.ModelSerializer): """Сериализатор поля документов.""" diff --git a/backend/api/v1/documents/views.py b/backend/api/v2/documents/views.py similarity index 74% rename from backend/api/v1/documents/views.py rename to backend/api/v2/documents/views.py index 3bc5013..41212f9 100644 --- a/backend/api/v1/documents/views.py +++ b/backend/api/v2/documents/views.py @@ -10,12 +10,14 @@ filters, status, viewsets, + views, ) from rest_framework.decorators import action from rest_framework.exceptions import PermissionDenied -from rest_framework.permissions import IsAuthenticated +from rest_framework.permissions import IsAuthenticated, AllowAny from rest_framework.response import Response +from core.template_render import DocumentTemplate from .serializers import ( DocumentFieldSerializer, DocumentReadSerializerExtended, @@ -23,9 +25,8 @@ DocumentWriteSerializer, ) - -from api.v1 import utils as v1utils -from documents.models import Document +from api.v2 import utils as v1utils +from documents.models import Document, Template logger = logging.getLogger(__name__) @@ -173,3 +174,45 @@ def get_queryset(self): ): raise PermissionDenied() return document.document_fields.all() + + +class AnonymousDownloadPreviewAPIView(views.APIView): + permission_classes = (AllowAny,) + + def post(self, request, template_id): + logger.debug(f"Start preview generation for template {template_id}") + start_time = datetime.utcnow() + template = get_object_or_404(Template, id=template_id) + document_fields = request.data.get("document_fields") + serializer = DocumentFieldWriteSerializer( + data=document_fields, + context={"template_fields": set(template.fields.all())}, + many=True, + ) + serializer.is_valid(raise_exception=True) + v1utils.custom_fieldtypes_validation(serializer.validated_data) + context = {} + for data in serializer.validated_data: + if data["value"]: # write only fields with non empty value + context[data["field"].tag] = data["value"] + context_default = { + field.tag: field.default or field.name + for field in template.fields.all() + } + doc = DocumentTemplate(template.template) + buffer = doc.get_partial(context, context_default) + filename = f"{template.name}_preview.docx" + docx_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for template {template_id} is {docx_time-start_time}" + ) + if request.query_params.get("pdf"): + buffer = v1utils.convert_file_to_pdf(buffer) + filename = f"{template.name}_preview.pdf" + pdf_time = datetime.utcnow() + logger.debug( + f"Time of pdf generation for template {template_id} is {pdf_time-docx_time}" + ) + response = send_file(buffer, filename) + return response + diff --git a/backend/api/v1/objects/__init__.py b/backend/api/v2/favorites/__init__.py similarity index 100% rename from backend/api/v1/objects/__init__.py rename to backend/api/v2/favorites/__init__.py diff --git a/backend/api/v2/favorites/serializers.py b/backend/api/v2/favorites/serializers.py new file mode 100644 index 0000000..a0f7527 --- /dev/null +++ b/backend/api/v2/favorites/serializers.py @@ -0,0 +1,22 @@ +"""Сериализаторы для API.""" +from django.contrib.auth import get_user_model +from rest_framework import serializers + +from documents.models import ( + FavDocument, + FavTemplate, +) + +User = get_user_model() + + +class FavTemplateSerializer(serializers.ModelSerializer): + class Meta: + model = FavTemplate + fields = "__all__" + + +class FavDocumentSerializer(serializers.ModelSerializer): + class Meta: + model = FavDocument + fields = "__all__" diff --git a/backend/api/v2/favorites/views.py b/backend/api/v2/favorites/views.py new file mode 100644 index 0000000..14f3a50 --- /dev/null +++ b/backend/api/v2/favorites/views.py @@ -0,0 +1,93 @@ +"""Вьюсеты v1 API.""" +import logging + +from django.contrib.auth import get_user_model +from rest_framework import ( + serializers, + status, +) + +from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated +from rest_framework.response import Response +from rest_framework.views import APIView + +from .serializers import ( + FavDocumentSerializer, + FavTemplateSerializer, +) +from documents.models import ( + FavDocument, + FavTemplate, +) + +logger = logging.getLogger(__name__) + +User = get_user_model() + + +class FavTemplateAPIview(APIView): + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + + def post(self, request, **kwargs): + data = { + "user": self.request.user.pk, + "template": self.kwargs.get("template_id"), + } + serializer = FavTemplateSerializer(data=data) + queryset = FavTemplate.objects.filter( + user=self.request.user.pk, template=self.kwargs.get("template_id") + ) + # проверка, что такого FavTemplate нет в БД + if queryset.exists(): + raise serializers.ValidationError( + "Этот шаблон уже есть в Избранном!" + ) + if serializer.is_valid(): + serializer.save() + return Response(status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + def delete(self, request, **kwargs): + queryset = FavTemplate.objects.filter( + user=self.request.user.pk, template=self.kwargs.get("template_id") + ) + # проверка, что такой FavTemplate существует в БД + if not queryset.exists(): + return Response(status=status.HTTP_404_NOT_FOUND) + queryset.delete() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class FavDocumentAPIview(APIView): + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + + def post(self, request, **kwargs): + data = { + "user": self.request.user.pk, + "document": self.kwargs.get("document_id"), + } + serializer = FavDocumentSerializer(data=data) + queryset = FavDocument.objects.filter( + user=self.request.user.pk, document=self.kwargs.get("document_id") + ) + # проверка, что такого FavDocument нет в БД + if queryset.exists(): + raise serializers.ValidationError( + "Этот документ уже есть в Избранном!" + ) + if serializer.is_valid(): + serializer.save() + return Response(status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + def delete(self, request, **kwargs): + queryset = FavDocument.objects.filter( + user=self.request.user.pk, document=self.kwargs.get("document_id") + ) + # проверка, что такой FavDocument существует в БД + if not queryset.exists(): + return Response(status=status.HTTP_404_NOT_FOUND) + queryset.delete() + return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/backend/api/v1/templates/__init__.py b/backend/api/v2/filters.py similarity index 100% rename from backend/api/v1/templates/__init__.py rename to backend/api/v2/filters.py diff --git a/backend/api/v1/users/__init__.py b/backend/api/v2/migrations/__init__.py similarity index 100% rename from backend/api/v1/users/__init__.py rename to backend/api/v2/migrations/__init__.py diff --git a/backend/api/v2/objects/__init__.py b/backend/api/v2/objects/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v2/objects/serializers.py b/backend/api/v2/objects/serializers.py new file mode 100644 index 0000000..f3081c4 --- /dev/null +++ b/backend/api/v2/objects/serializers.py @@ -0,0 +1 @@ +"""Сериализаторы для API.""" diff --git a/backend/api/v2/objects/views.py b/backend/api/v2/objects/views.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v2/permissions.py b/backend/api/v2/permissions.py new file mode 100644 index 0000000..0f795c3 --- /dev/null +++ b/backend/api/v2/permissions.py @@ -0,0 +1,58 @@ +"""Разрешения для API.""" + +from rest_framework import permissions + + +class IsSuperUserOrReadOnly(permissions.BasePermission): + """Доступ: Администратор или только просмотр.""" + + def has_permission(self, request, view): + """Выдача прав на уровне списка.""" + return ( + request.method in permissions.SAFE_METHODS + or request.user.is_superuser + ) + + +class IsOwnerOrAdminOrReadOnly(permissions.BasePermission): + """Доступ: Владелец/админ или только для чтения""" + + def has_permission(self, request, view): + """Видеть список могут все, добавлять только авторизованные.""" + return ( + request.method in permissions.SAFE_METHODS + or request.user.is_authenticated + ) + + def has_object_permission(self, request, view, obj): + """Под объектом подразумевается Template или Document.""" + return obj.owner == request.user or request.user.is_superuser + + +class IsAdminOrReadOnly(permissions.BasePermission): + """Доступ: Админ или только для чтения""" + + def has_permission(self, request, view): + """Видеть список могут все, добавлять только администратор.""" + + return request.method in permissions.SAFE_METHODS or ( + request.user.is_authenticated and request.user.is_superuser + ) + + def has_object_permission(self, request, view, obj): + return ( + request.method in permissions.SAFE_METHODS + or request.user.is_superuser + ) + + +class IsOwner(permissions.BasePermission): + """Доступ: только владелец.""" + + def has_permission(self, request, view): + """Видеть список может только владелец.""" + return request.user.is_authenticated + + def has_object_permission(self, request, view, obj): + """Под объектом подразумевается Document.""" + return request.user.is_authenticated and obj.owner == request.user diff --git a/backend/api/v2/templates/__init__.py b/backend/api/v2/templates/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v1/templates/serializers.py b/backend/api/v2/templates/serializers.py similarity index 59% rename from backend/api/v1/templates/serializers.py rename to backend/api/v2/templates/serializers.py index c917814..e22a861 100644 --- a/backend/api/v1/templates/serializers.py +++ b/backend/api/v2/templates/serializers.py @@ -7,7 +7,7 @@ from djoser.serializers import UserSerializer from rest_framework import serializers -from .utils import custom_fieldtypes_validation, get_non_unique_items +from api.v2.utils import custom_fieldtypes_validation, get_non_unique_items from core.constants import Messages from documents.models import ( Category, @@ -299,185 +299,6 @@ def to_representation(self, instance): ).data -class DocumentFieldSerializer(serializers.ModelSerializer): - """Сериализатор поля документов.""" - - description = serializers.CharField(required=False, max_length=200) - - class Meta: - model = DocumentField - exclude = ("document",) - - -class DocumentFieldWriteSerializer(serializers.ModelSerializer): - """Сериализатор для полей документа или превью шаблона.""" - - # description = serializers.CharField(required=False, max_length=200) - - class Meta: - model = DocumentField - fields = ("field", "value") - - def validate_field(self, template_field): - template_fields = self.context.get("template_fields", set()) - if template_field not in template_fields: - raise serializers.ValidationError( - Messages.WRONG_TEMPLATE_FIELD.format(template_field.id) - ) - return template_field - - -class DocumentReadSerializerMinified(serializers.ModelSerializer): - """Сериализатор документов сокращенный (без информации о полях)""" - - is_favorited = serializers.SerializerMethodField() - - class Meta: - model = Document - fields = ( - "id", - "created", - "updated", - "completed", - "description", - "template", - "owner", - "is_favorited", - ) - - def get_is_favorited(self, document: Document) -> bool: - user = self.context.get("request").user - if not user.is_authenticated: - return False - return FavDocument.objects.filter( - user=user, document=document - ).exists() - - -class DocumentReadSerializerExtended(serializers.ModelSerializer): - """Сериализатор документов расширенный (с информацией полей шаблона).""" - - grouped_fields = TemplateGroupSerializer( - read_only=True, - many=True, - source="template.field_groups", - allow_empty=True, - ) - ungrouped_fields = serializers.SerializerMethodField() - is_favorited = serializers.SerializerMethodField() - template = TemplateSerializerMinified(read_only=True) - - class Meta: - model = Document - fields = ( - "id", - "created", - "updated", - "completed", - "description", - "template", - "owner", - "is_favorited", - "grouped_fields", - "ungrouped_fields", - ) - - def get_is_favorited(self, document: Document) -> bool: - user = self.context.get("request").user - if not user.is_authenticated: - return False - return FavDocument.objects.filter( - user=user, document=document - ).exists() - - def get_ungrouped_fields(self, instance): - solo_fields = instance.template.fields.filter(group=None).order_by( - "id" - ) - return TemplateFieldSerializerMinified(solo_fields, many=True).data - - def to_representation(self, instance): - response = super().to_representation(instance) - response["grouped_fields"].sort(key=lambda x: x["id"]) - # add field values - field_vals = {} - for document_field in instance.document_fields.all(): - field_vals[document_field.field.id] = document_field.value - for group in response["grouped_fields"]: - for field in group["fields"]: - id = field.get("id") - if id in field_vals: - field["value"] = field_vals[id] - for field in response["ungrouped_fields"]: - id = field.get("id") - if id in field_vals: - field["value"] = field_vals[id] - return response - - -class DocumentWriteSerializer(serializers.ModelSerializer): - """Сериализатор документов.""" - - document_fields = DocumentFieldSerializer(many=True) - - class Meta: - model = Document - fields = ( - "id", - "created", - "completed", - "description", - "template", - "document_fields", - ) - - @transaction.atomic - def create(self, validated_data): - """Создание документа и полей документа""" - document_fields = validated_data.pop("document_fields", None) - document = Document.objects.create(**validated_data) - custom_fieldtypes_validation(document_fields) - document.create_document_fields(document_fields) - return document - - @transaction.atomic - def update(self, instance, validated_data): - """Обновление документа и полей документа""" - document_fields = validated_data.pop("document_fields", None) - Document.objects.filter(id=instance.id).update( - **validated_data, updated=timezone.now() - ) - document = Document.objects.get(id=instance.id) - if document_fields is not None: - custom_fieldtypes_validation(document_fields) - document.document_fields.all().delete() - document.create_document_fields(document_fields) - return document - - def to_representation(self, instance): - return DocumentReadSerializerMinified( - instance, context={"request": self.context.get("request")} - ).data - - -class FavTemplateSerializer(serializers.ModelSerializer): - class Meta: - model = FavTemplate - fields = "__all__" - - -class FavDocumentSerializer(serializers.ModelSerializer): - class Meta: - model = FavDocument - fields = "__all__" - - -class CategorySerializer(serializers.ModelSerializer): - class Meta: - model = Category - fields = "__all__" - - class TemplateFileUploadSerializer(serializers.ModelSerializer): errors = serializers.SerializerMethodField() @@ -487,26 +308,3 @@ class Meta: def get_errors(self, instance): return instance.get_consistency_errors() - - -class CustomUserSerializer(UserSerializer): - password = serializers.CharField(write_only=True) - - class Meta: - model = User - fields = ("id", "email", "password") - read_only_fields = ("id",) - - def create(self, validated_data): - email = validated_data.get("email") - password = validated_data.get("password") - username = email - user = User(email=email, username=username) - user.set_password(password) - user.save() - return user - - def validate(self, data): - if User.objects.filter(email=data["email"]): - raise serializers.ValidationError("Такой email уже есть!") - return data diff --git a/backend/api/v2/templates/views.py b/backend/api/v2/templates/views.py new file mode 100644 index 0000000..733f1cf --- /dev/null +++ b/backend/api/v2/templates/views.py @@ -0,0 +1,160 @@ +"""Вьюсеты v1 API.""" +import logging + +from django.contrib.auth import get_user_model +from django.http import FileResponse +from django.shortcuts import get_object_or_404 +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework import ( + filters, + generics, + serializers, + status, + views, + viewsets, +) +from rest_framework.decorators import action +from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated +from rest_framework.response import Response + +from api.v2.permissions import IsAdminOrReadOnly, IsOwner, IsOwnerOrAdminOrReadOnly +from .serializers import ( + TemplateFieldSerializer, + TemplateFileUploadSerializer, + TemplateSerializer, + TemplateSerializerMinified, + TemplateWriteSerializer, +) + +from api.v2 import utils as v1utils +from core.constants import Messages +from core.template_render import DocumentTemplate +from documents.models import Template + + +logger = logging.getLogger(__name__) + +User = get_user_model() + + +def send_file(filestream, filename: str, as_attachment: bool = True): + """Функция подготовки открытого двоичного файла к отправке.""" + response = FileResponse( + streaming_content=filestream, + as_attachment=as_attachment, + filename=filename, + ) + return response + + +class TemplateViewSet(viewsets.ModelViewSet): + """Шаблон.""" + + serializer_class = TemplateSerializer + http_method_names = ("get", "delete", "post") + permission_classes = (IsAdminOrReadOnly,) # AllowAny + filter_backends = ( + DjangoFilterBackend, + filters.SearchFilter, + filters.OrderingFilter, + ) + pagination_class = None + filterset_fields = ( + "owner", + "category", + ) + search_fields = ( + "owner", + "category", + ) + + def get_serializer_class(self): + if self.action == "list": + return TemplateSerializerMinified + elif self.action == "create": + return TemplateWriteSerializer + return TemplateSerializer + + def get_queryset(self): + if self.request.user.is_superuser: + return Template.objects.all() + else: + return Template.objects.filter(deleted=False) + + @action( + detail=True, + methods=["get"], + permission_classes=(AllowAny,), + url_path="download_draft", + url_name="download_draft", + ) + def download_draft(self, request, pk=None): + # template = get_object_or_404(Template, pk=pk) + template = serializers.PrimaryKeyRelatedField( + many=False, queryset=Template.objects.all() + ).to_internal_value(data=pk) + context = {field.tag: field.name for field in template.fields.all()} + path = template.template + doc = DocumentTemplate(path) + buffer = doc.get_draft(context) + filename = f"{template.name}_шаблон.docx" + if request.query_params.get("pdf"): + buffer = v1utils.convert_file_to_pdf(buffer) + filename = f"{template.name}_шаблон.pdf" + response = send_file(buffer, filename) + return response + + def destroy(self, request, *args, **kwargs): + user = request.user + template = self.get_object() + if not (user == template.owner or user.is_superuser): + return Response(status=status.HTTP_404_NOT_FOUND) + if template.deleted: + return Response( + Messages.TEMPLATE_ALREADY_DELETED, + status=status.HTTP_404_NOT_FOUND, + ) + template.deleted = True + template.save() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class TemplateFieldViewSet(viewsets.ModelViewSet): + """Поля шаблона.""" + + serializer_class = TemplateFieldSerializer + http_method_names = ("get",) + permission_classes = (IsAdminOrReadOnly,) + # permission_classes = (AllowAny,) # Заглушка + pagination_class = None + + def get_queryset(self): + template_id = self.kwargs.get("template_id") + template = get_object_or_404(Template, id=template_id) + return template.fields.all() + + +class CheckTemplateConsistencyAPIView(views.APIView): + permission_classes = (IsAdminUser,) + # permission_classes = (AllowAny,) # Заглушка + + def get(self, request, template_id): + template = get_object_or_404(Template, id=template_id) + errors = template.get_consistency_errors() + if errors: + return Response(data={"errors": errors}, status=status.HTTP_200_OK) + else: + return Response( + data={"result": Messages.TEMPLATE_CONSISTENT}, + status=status.HTTP_200_OK, + ) + + +class UploadTemplateFileAPIView(generics.UpdateAPIView): + queryset = Template.objects.all() + serializer_class = TemplateFileUploadSerializer + lookup_field = "id" + lookup_url_kwarg = "template_id" + permission_classes = (IsAdminUser,) + # permission_classes = (AllowAny,) # Заглушка + http_method_names = ["patch", "put"] diff --git a/backend/api/v2/tests.py b/backend/api/v2/tests.py new file mode 100644 index 0000000..0058ea3 --- /dev/null +++ b/backend/api/v2/tests.py @@ -0,0 +1,193 @@ +import json + +from api.v1.serializers import TemplateWriteSerializer +from django.test import TestCase + +from core.constants import Messages +from documents.models import Template, TemplateFieldType + +duplicate_fields_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str"}, + {"tag": "tag2", "name": "Поле 2", "type": "str"}, + {"tag": "tag1", "name": "Поле 3", "type": "str"}, + ], + "groups": [], +} + +duplicate_group_ids_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str"}, + {"tag": "tag2", "name": "Поле 2", "type": "str"}, + {"tag": "tag3", "name": "Поле 3", "type": "str"}, + ], + "groups": [ + {"id": 1, "name": "Группа 1"}, + {"id": 2, "name": "Группа 2"}, + {"id": 1, "name": "Группа 3"}, + ], +} + +unknown_group_id_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str", "group": 1}, + {"tag": "tag2", "name": "Поле 2", "type": "str", "group": 2}, + {"tag": "tag3", "name": "Поле 3", "type": "str", "group": 3}, + ], + "groups": [ + {"id": 1, "name": "Группа 1"}, + {"id": 2, "name": "Группа 2"}, + ], +} + +valid_template_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str", "group": 1}, + {"tag": "tag2", "name": "Поле 2", "type": "int", "group": 2}, + {"tag": "tag3", "name": "Поле 3", "type": "str", "group": 2}, + {"tag": "tag4", "name": "Поле 4", "type": "int"}, + ], + "groups": [ + {"id": 1, "name": "Группа 1"}, + {"id": 2, "name": "Группа 2"}, + ], +} + +unknown_field_type_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str"}, + {"tag": "tag2", "name": "Поле 2", "type": "int"}, + {"tag": "tag3", "name": "Поле 3", "type": "unknown_type"}, + ], + "groups": [], +} + +templatefieldtype_fixture = [ + {"type": "int", "name": "Целочисленный"}, + {"type": "str", "name": "Строковый"}, +] + + +class Test(TestCase): + @classmethod + def setUpClass(cls) -> None: + super().setUpClass() + for data in templatefieldtype_fixture: + TemplateFieldType.objects.create(**data) + + def test_duplicate_field_tags_is_not_valid(self): + """Проверка, что дубликатные тэги полей взводят ошибку""" + + serializer = TemplateWriteSerializer(data=duplicate_fields_fixture) + self.assertFalse(serializer.is_valid()) + pattern = Messages.TEMPLATE_FIELD_TAGS_ARE_NOT_UNIQUE.format(".*") + self.assertRegex( + json.dumps(serializer.errors, ensure_ascii=False), + rf".*{pattern}.*", + ) + + def test_duplicate_group_ids_is_not_valid(self): + """Проверка, что дубликатные id групп взводят ошибку""" + + serializer = TemplateWriteSerializer(data=duplicate_group_ids_fixture) + self.assertFalse(serializer.is_valid()) + pattern = Messages.TEMPLATE_GROUP_IDS_ARE_NOT_UNIQUE.format(".*") + self.assertRegex( + json.dumps(serializer.errors, ensure_ascii=False), + rf".*{pattern}.*", + ) + + def test_undefined_field_group_is_not_valid(self): + """Проверка, что неописанные id групп в полях взводят ошибку""" + + serializer = TemplateWriteSerializer(data=unknown_group_id_fixture) + self.assertFalse(serializer.is_valid()) + pattern = Messages.UNKNOWN_GROUP_ID.format(".*") + self.assertRegex( + json.dumps(serializer.errors, ensure_ascii=False), + rf".*{pattern}.*", + ) + + def test_unknown_field_type_is_not_valid(self): + """Проверка, что неописанный тип поля взводит ошибку""" + + serializer = TemplateWriteSerializer(data=unknown_field_type_fixture) + self.assertFalse(serializer.is_valid()) + + def test_valid_template_is_created(self): + """Проверка, что валидный шаблон успешно создается в базе""" + Template.objects.all().delete() + serializer = TemplateWriteSerializer(data=valid_template_fixture) + self.assertTrue(serializer.is_valid()) + serializer.save() + fields = valid_template_fixture.pop("fields") + groups = valid_template_fixture.pop("groups") + self.assertTrue( + Template.objects.filter(**valid_template_fixture).exists(), + "Валидный шаблон в базе не создан", + ) + template = Template.objects.filter(**valid_template_fixture).first() + + # проверка, что поля созданы и они привязаны к правильной группе + for field in fields: + with self.subTest(field=field): + self.assertTrue( + template.fields.filter( + name=field["name"], tag=field["tag"] + ).exists(), + "Поле {} для шаблона не создано".format(field), + ) + field_obj = template.fields.filter( + name=field["name"], tag=field["tag"] + ).first() + self.assertEqual( + field_obj.type.type, + field["type"], + "Поле {} привязано к неправильному типу".format(field), + ) + + # проверка, что созданы все группы для полей + for group in groups: + with self.subTest(group=group, template=template): + self.assertTrue( + template.field_groups.filter( + name=(group["name"]) + ).exists(), + "Группа {} для шаблона не создана".format(group), + ) + + # проверка, что поля привязаны к правильным группам + groups_dct = {} + for g in groups: + id = g.pop("id") + groups_dct[id] = g + for f in fields: + if "group" in f: + f["group"] = groups_dct[f["group"]] + + for field in fields: + field_obj = template.fields.filter( + name=field["name"], tag=field["tag"] + ).first() + with self.subTest(field=field): + if "group" in field: + self.assertEqual( + field_obj.group.name, + field["group"]["name"], + "Поле {} неправильно привязано к группе".format(field), + ) diff --git a/backend/api/v2/urls.py b/backend/api/v2/urls.py new file mode 100644 index 0000000..2c1bc9c --- /dev/null +++ b/backend/api/v2/urls.py @@ -0,0 +1,95 @@ +from api.v2.documents.views import ( + AnonymousDownloadPreviewAPIView, + DocumentFieldViewSet, + DocumentViewSet,) +from api.v2.templates.views import ( + UploadTemplateFileAPIView, + CheckTemplateConsistencyAPIView, + TemplateFieldViewSet, + TemplateViewSet,) +from api.v2.favorites.views import ( + FavTemplateAPIview, + FavDocumentAPIview,) +# from api.v2.objects.views import (BaseObjectViewSet, +# BaseObjectFieldViewSet, +# ObjectViewSet) + +from django.urls import include, path, re_path +from rest_framework.routers import DefaultRouter + +app_name = "api" + +router_v1 = DefaultRouter() + + +router_v1.register( + prefix="templates", + basename="templates", + viewset=TemplateViewSet, +) + +router_v1.register( + r"templates/(?P[0-9]+)/fields", + basename="template_fields", + viewset=TemplateFieldViewSet, +) + +router_v1.register( + r"documents/(?P[0-9]+)/fields", + basename="document_fields", + viewset=DocumentFieldViewSet, +) + +router_v1.register( + prefix="documents", + basename="documents", + viewset=DocumentViewSet, +) + +# router_v1.register( +# prefix="base_objects", +# basename="base_objects", +# viewset=BaseObjectViewSet, +# ) +# router_v1.register( +# prefix="base_object_fields", +# basename="base_object_fields", +# viewset=BaseObjectFieldViewSet, +# ) +# router_v1.register( +# prefix="objects", +# basename="objects", +# viewset=ObjectViewSet, +# ) +# router_v1.register( +# prefix="object_fields", +# basename="object_fields", +# viewset=ObjectFieldViewSet, +# ) + +urlpatterns = [ + path( + "templates//favorite/", FavTemplateAPIview.as_view() + ), + path( + "documents//favorite/", FavDocumentAPIview.as_view() + ), + path( + "templates//download_preview/", + AnonymousDownloadPreviewAPIView.as_view(), + name="download_preview", + ), + path( + "templates//check_consistency/", + CheckTemplateConsistencyAPIView.as_view(), + name="check_consistency", + ), + re_path( + "templates//upload_template/", + UploadTemplateFileAPIView.as_view(), + name="upload_template", + ), + path("", include(router_v1.urls)), + path("", include("djoser.urls")), + path("auth/", include("djoser.urls.authtoken")), +] diff --git a/backend/api/v2/users/__init__.py b/backend/api/v2/users/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v2/users/serializers.py b/backend/api/v2/users/serializers.py new file mode 100644 index 0000000..47d7348 --- /dev/null +++ b/backend/api/v2/users/serializers.py @@ -0,0 +1,31 @@ +"""Сериализаторы для API.""" + +from django.contrib.auth import get_user_model +from djoser.serializers import UserSerializer +from rest_framework import serializers + + +User = get_user_model() + + +class CustomUserSerializer(UserSerializer): + password = serializers.CharField(write_only=True) + + class Meta: + model = User + fields = ("id", "email", "password") + read_only_fields = ("id",) + + def create(self, validated_data): + email = validated_data.get("email") + password = validated_data.get("password") + username = email + user = User(email=email, username=username) + user.set_password(password) + user.save() + return user + + def validate(self, data): + if User.objects.filter(email=data["email"]): + raise serializers.ValidationError("Такой email уже есть!") + return data diff --git a/backend/api/v2/users/views.py b/backend/api/v2/users/views.py new file mode 100644 index 0000000..3df409b --- /dev/null +++ b/backend/api/v2/users/views.py @@ -0,0 +1,74 @@ +"""Вьюсеты v1 API.""" + +import logging + +from django.contrib.auth import get_user_model +from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode +from django.utils.encoding import force_bytes +from django.urls import reverse_lazy +from django.views.generic import View +from django.contrib.auth.tokens import default_token_generator +from django.contrib.auth import login + +from rest_framework import ( + generics, + status, +) +from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated +from rest_framework.response import Response +from rest_framework_simplejwt.tokens import RefreshToken + +from .serializers import CustomUserSerializer + + +logger = logging.getLogger(__name__) + +User = get_user_model() + + +class RegisterView(generics.GenericAPIView): + serializer_class = CustomUserSerializer + + def post(self, request): + user = request.data + serializer = self.serializer_class(data=user) + serializer.is_valid(raise_exception=True) + serializer.save() + user_data = serializer.data + user = User.objects.get(email=user_data["email"]) + token = RefreshToken.for_user(user).access_token + + uid = urlsafe_base64_encode(force_bytes(user.pk)) + activation_url = reverse_lazy('confirm_email', kwargs={'uidb64': uid, 'token': token}) + print(activation_url) + absurl = f'http://127.0.0.1:9000/{activation_url}' + email_body = ( + "Hi " + + user.username + + " Use the link below to verify your email \n" + + absurl + ) + print(email_body) + data = { + "email_body": email_body, + "to_email": user.email, + "email_subject": "Verify your email", + } + + Util.send_email(data) + return Response(user_data, status=status.HTTP_201_CREATED) + + +class UserConfirmEmailView(View): + def get(self, request, uidb64, token): + try: + uid = urlsafe_base64_decode(uidb64) + user = User.objects.get(pk=uid) + except (TypeError, ValueError, OverflowError, User.DoesNotExist): + user = None + + if user is not None and default_token_generator.check_token(user, token): + user.is_active = True + user.save() + login(request, user) + diff --git a/backend/api/v2/utils.py b/backend/api/v2/utils.py new file mode 100644 index 0000000..beeb1cf --- /dev/null +++ b/backend/api/v2/utils.py @@ -0,0 +1,110 @@ +"""Утилиты.""" + +import datetime +import io +import logging +import pathlib +import subprocess +import tempfile +from typing import Any, Dict, List, Set, Union + +from django.core.mail import send_mail + +from documents.models import Document, DocumentTemplate, TemplateField + +logger = logging.getLogger(__name__) + + +class Util: + @staticmethod + def send_email(data): + send_mail( + data["email_subject"], + data["email_body"], + "draftnikox@rambler.ru", + [data["to_email"]], + fail_silently=False, + ) + + +def get_non_unique_items(items: List[Any]) -> Set[Any]: + """Возвращает множество неуникальных элементов списка.""" + visited = set() + non_unique = set() + for item in items: + if item not in visited: + visited.add(item) + else: + non_unique.add(item) + return non_unique + + +def fill_docx_template_for_document(document: Document) -> io.BytesIO: + """Создание документа из шаблона.""" + context = { + docfield.field.tag: docfield.value + for docfield in document.document_fields.all() + } + context_default = { + field.tag: field.default or field.name + for field in document.template.fields.all() + } + path = document.template.template + doc = DocumentTemplate(path) + buffer = doc.get_partial(context, context_default) + return buffer + + +def create_document_pdf_for_export(document: Document) -> io.BytesIO: + """Создание pdf-файла.""" + doc_file = fill_docx_template_for_document(document) + buffer = convert_file_to_pdf(doc_file) + return buffer + + +def convert_file_to_pdf(in_file: io.BytesIO) -> io.BytesIO: + """Файл в виде строки байт преобразуем в строку байт pdf-файла.""" + with tempfile.NamedTemporaryFile() as output: + out_file = pathlib.Path(output.name).resolve() + out_file.write_bytes(in_file.getvalue()) + subprocess.run( + [ + "soffice", + "--headless", + "--invisible", + "--nologo", + "--convert-to", + "pdf", + "--outdir", + out_file.parent, + out_file.absolute(), + ], + check=True, + ) + pdf_file = out_file.with_suffix(".pdf") + out_buffer = io.BytesIO() + out_buffer.write(pdf_file.read_bytes()) + out_buffer.seek(0) + pdf_file.unlink(missing_ok=True) + return out_buffer + + +def date_iso_to_ddmmyyyy(value: str): + """Преобразует строку из ISO формата в dd.mm.yyyy""" + try: + date = datetime.date.fromisoformat(value) + return date.strftime("%d.%m.%Y") + except Exception: + # print(e) # TODO logging + logger.debug("Invalid date:", exc_info=True) + return value + + +def custom_fieldtypes_validation( + validated_data: List[Dict[str, Union[TemplateField, str]]] +): + """Валидация полей согласно кастомным типам""" + for data in validated_data: + field = data["field"] + if field.type.type == "date": + data["value"] = date_iso_to_ddmmyyyy(data["value"]) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index d0630b4..c8728fc 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -172,7 +172,7 @@ "SECURITY_DEFINITIONS": { "Token": {"type": "apiKey", "name": "Authorization", "in": "header"} }, - "BASE_PATH": "https://documents-template.site/api/", + "BASE_PATH": "https://doky.pro/api/v2/", } LOGGING = { From d26e1b901faf47a39e731edfd72b30474322797f Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Thu, 4 Jan 2024 14:48:57 +0400 Subject: [PATCH 56/80] 2 --- backend/api/urls.py | 2 +- backend/api/v2/documents/views.py | 2 +- backend/backend/urls.py | 20 ++++++++++---------- backend/request/documents.http | 24 ++++++++++++------------ backend/request/template.http | 26 +++++++++----------------- backend/request/users.http | 16 ++++++++-------- 6 files changed, 41 insertions(+), 49 deletions(-) diff --git a/backend/api/urls.py b/backend/api/urls.py index f6c3aa7..e0ca5df 100644 --- a/backend/api/urls.py +++ b/backend/api/urls.py @@ -5,7 +5,7 @@ from django.conf.urls import url urlpatterns = [ - path("", include("api.v1.urls")), + # path("v1/", include("api.v1.urls")), path("v2/", include("api.v2.urls")), ] diff --git a/backend/api/v2/documents/views.py b/backend/api/v2/documents/views.py index 41212f9..e5046cf 100644 --- a/backend/api/v2/documents/views.py +++ b/backend/api/v2/documents/views.py @@ -23,7 +23,7 @@ DocumentReadSerializerExtended, DocumentReadSerializerMinified, DocumentWriteSerializer, - + DocumentFieldWriteSerializer, ) from api.v2 import utils as v1utils from documents.models import Document, Template diff --git a/backend/backend/urls.py b/backend/backend/urls.py index 376fa6a..37c1096 100644 --- a/backend/backend/urls.py +++ b/backend/backend/urls.py @@ -11,16 +11,16 @@ ] schema_view = get_schema_view( - openapi.Info( - title="Draft API", - default_version='v1', - description="Документация для приложения draft docuemnts проекта Шаблонизатор", - # terms_of_service="URL страницы с пользовательским соглашением", - contact=openapi.Contact(email="nikox122@mail.ru"), - license=openapi.License(name="BSD License"), - ), - public=True, - permission_classes=(permissions.AllowAny,), + openapi.Info( + title="Draft API", + default_version='v1', + description="Документация для приложения draft docuemnts проекта Шаблонизатор", + # terms_of_service="URL страницы с пользовательским соглашением", + contact=openapi.Contact(email="nikox122@mail.ru"), + license=openapi.License(name="BSD License"), + ), + public=True, + permission_classes=(permissions.AllowAny,), ) urlpatterns += [ diff --git a/backend/request/documents.http b/backend/request/documents.http index a40b568..4103db4 100644 --- a/backend/request/documents.http +++ b/backend/request/documents.http @@ -1,22 +1,22 @@ -@TOKEN = Token bb4f5dbedaafd2730f35803e7087e797479d68f5 -@URL = https://documents-template.site/ -# @URL = http://127.0.0.1:8000 +@TOKEN = Token c911144116cd1689f8fd01e00102bcd1ce4cc175 +# @URL = https://documents-template.site/ +@URL = http://127.0.0.1:8000/api/v2 ### -GET {{URL}}/api/documents/1 -# Authorization: {{TOKEN}} +GET {{URL}}/documents/1 +Authorization: {{TOKEN}} { } ### -POST {{URL}}/api/documents/ +POST {{URL}}/documents/ Content-Type: application/json -# Authorization: {{TOKEN}} +Authorization: {{TOKEN}} { "description": "doc1", - "template": 1, + "template": 42, "completed": true, "document_fields": [ { @@ -63,7 +63,7 @@ Content-Type: application/json } ### -PATCH {{URL}}/api/documents/2/ +PATCH {{URL}}/documents/2/ Content-Type: application/json Authorization: {{TOKEN}} @@ -115,7 +115,7 @@ Authorization: {{TOKEN}} } ### -get {{URL}}/api/documents/draft/ +get {{URL}}/documents/draft/ Content-Type: application/json Authorization: {{TOKEN}} @@ -123,7 +123,7 @@ Authorization: {{TOKEN}} } ### -get {{URL}}/api/documents/history/ +get {{URL}}/documents/history/ Content-Type: application/json Authorization: {{TOKEN}} @@ -131,7 +131,7 @@ Authorization: {{TOKEN}} } ### -get {{URL}}/api/documents/2/download_document/ +get {{URL}}/documents/2/download_document/ Content-Type: application/json Authorization: {{TOKEN}} diff --git a/backend/request/template.http b/backend/request/template.http index bd115dc..c49b524 100644 --- a/backend/request/template.http +++ b/backend/request/template.http @@ -1,11 +1,11 @@ -@TOKEN = Token 640063c217c9693de37f04d65249f35a19705efb +@TOKEN = Token c911144116cd1689f8fd01e00102bcd1ce4cc175 # @URL = https://documents-template.site/ -@URL = http://localhost:8000 +@URL = http://localhost:8000/api/v2 ### Все шаблоны -GET {{URL}}/api/templates/ +GET {{URL}}/templates/ Content-Type: application/json Authorization: {{TOKEN}} @@ -13,7 +13,7 @@ Authorization: {{TOKEN}} } ### Просмотр одного шаблона -GET {{URL}}/api/templates/1/ +GET {{URL}}/templates/42/ Content-Type: application/json Authorization: {{TOKEN}} @@ -22,7 +22,7 @@ Authorization: {{TOKEN}} ### Просмотр всех полей шаблона -GET {{URL}}/api/templates/1/fields +GET {{URL}}/templates/42/fields Content-Type: application/json Authorization: {{TOKEN}} @@ -30,7 +30,7 @@ Authorization: {{TOKEN}} } ### Добавить шаблон в избранное -POST {{URL}}/api/templates/1/favorite/ +POST {{URL}}/templates/42/favorite/ Content-Type: application/json Authorization: {{TOKEN}} @@ -38,15 +38,7 @@ Authorization: {{TOKEN}} } ### Удалить шаблон из избранного -DELETE {{URL}}/api/templates/1/favorite/ -Content-Type: application/json -Authorization: {{TOKEN}} - -{ -} - -### Удалить шаблон из избранного -DELETE {{URL}}/api/templates/1/favorite/ +DELETE {{URL}}/templates/1/favorite/ Content-Type: application/json Authorization: {{TOKEN}} @@ -55,7 +47,7 @@ Authorization: {{TOKEN}} ### Получить первью документа от анонимного пользователя -POST {{URL}}/api/templates/1/download_preview/ +POST {{URL}}/templates/42/download_preview/ Content-Type: application/json # Authorization: {{TOKEN}} @@ -101,7 +93,7 @@ Content-Type: application/json } ### Добавить новый шаблон и описание его полей в базу (ТОЛЬКО ДЛЯ АДМИНА) -POST {{URL}}/api/templates/ +POST {{URL}}/templates/ Content-Type: application/json Authorization: {{TOKEN}} diff --git a/backend/request/users.http b/backend/request/users.http index 5e77a07..d0a5c46 100644 --- a/backend/request/users.http +++ b/backend/request/users.http @@ -1,9 +1,9 @@ -@TOKEN = Token b5b767cb36da725f900892f627a28dc1c0e40488 +@TOKEN = Token c911144116cd1689f8fd01e00102bcd1ce4cc175 # @URL = https://documents-template.site -@URL = http://127.0.0.1:8000 +@URL = http://127.0.0.1:8000/api/v2 ### -POST {{URL}}/api/users/ +POST {{URL}}/users/ Content-Type: application/json { @@ -15,16 +15,16 @@ Content-Type: application/json } ### -POST {{URL}}/api/auth/token/login/ +POST {{URL}}/auth/token/login/ Content-Type: application/json { - "email": "nikox118182@mail.ru", + "email": "nikox1181182@mail.ru", "password": "456852Zx" } ### -POST {{URL}}/api/users/set_password/ +POST {{URL}}/users/set_password/ Content-Type: application/json Authorization: {{TOKEN}} @@ -34,7 +34,7 @@ Authorization: {{TOKEN}} } ### -GET {{URL}}/api/users/me/ +GET {{URL}}/users/me/ Content-Type: application/json Authorization: {{TOKEN}} @@ -43,7 +43,7 @@ Authorization: {{TOKEN}} ### -GET {{URL}}/api/users/2/ +GET {{URL}}/users/2/ Content-Type: application/json Authorization: {{TOKEN}} From 07df9b94bf1ad124fccb16973eaad4a08bb09ff2 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Thu, 4 Jan 2024 14:48:57 +0400 Subject: [PATCH 57/80] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B7=D0=B0=D0=B3=D0=BB=D1=83=D1=88=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=BA=20=D0=BE=D0=B1=D1=8C=D0=B5=D0=BA=D1=82=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit api --- backend/api/urls.py | 2 +- backend/api/v2/documents/views.py | 2 +- backend/api/v2/objects/serializers.py | 40 ++++++++++++++++++++++ backend/api/v2/objects/views.py | 36 ++++++++++++++++++++ backend/api/v2/urls.py | 49 ++++++++++++++------------- backend/backend/urls.py | 20 +++++------ backend/base_objects/models.py | 14 ++++---- backend/documents/admin.py | 2 +- backend/documents/models.py | 19 ++++++----- backend/request/documents.http | 24 ++++++------- backend/request/objects.http | 37 ++++++++++++++++++++ backend/request/template.http | 26 +++++--------- backend/request/users.http | 16 ++++----- 13 files changed, 198 insertions(+), 89 deletions(-) create mode 100644 backend/request/objects.http diff --git a/backend/api/urls.py b/backend/api/urls.py index f6c3aa7..e0ca5df 100644 --- a/backend/api/urls.py +++ b/backend/api/urls.py @@ -5,7 +5,7 @@ from django.conf.urls import url urlpatterns = [ - path("", include("api.v1.urls")), + # path("v1/", include("api.v1.urls")), path("v2/", include("api.v2.urls")), ] diff --git a/backend/api/v2/documents/views.py b/backend/api/v2/documents/views.py index 41212f9..e5046cf 100644 --- a/backend/api/v2/documents/views.py +++ b/backend/api/v2/documents/views.py @@ -23,7 +23,7 @@ DocumentReadSerializerExtended, DocumentReadSerializerMinified, DocumentWriteSerializer, - + DocumentFieldWriteSerializer, ) from api.v2 import utils as v1utils from documents.models import Document, Template diff --git a/backend/api/v2/objects/serializers.py b/backend/api/v2/objects/serializers.py index f3081c4..8047f60 100644 --- a/backend/api/v2/objects/serializers.py +++ b/backend/api/v2/objects/serializers.py @@ -1 +1,41 @@ """Сериализаторы для API.""" +from rest_framework import serializers + +from base_objects.models import ( + BaseObject, + Object, + BaseObjectField, + ObjectField, + ) + + +class BaseObjectSerializer(serializers.ModelSerializer): + """Сериализатор поля документов.""" + + class Meta: + fields = '__all__' + model = BaseObject + + +class BaseObjectFieldSerializer(serializers.ModelSerializer): + """Сериализатор поля документов.""" + + class Meta: + fields = '__all__' + model = BaseObjectField + + +class ObjectSerializer(serializers.ModelSerializer): + """Сериализатор поля документов.""" + + class Meta: + fields = '__all__' + model = Object + + +class ObjectFieldSerializer(serializers.ModelSerializer): + """Сериализатор поля документов.""" + + class Meta: + fields = '__all__' + model = ObjectField \ No newline at end of file diff --git a/backend/api/v2/objects/views.py b/backend/api/v2/objects/views.py index e69de29..c664bc9 100644 --- a/backend/api/v2/objects/views.py +++ b/backend/api/v2/objects/views.py @@ -0,0 +1,36 @@ +from rest_framework import ( + viewsets, +) + +from base_objects.models import ( + BaseObject, + Object, + BaseObjectField, + ObjectField + ) +from .serializers import ( + BaseObjectSerializer, + BaseObjectFieldSerializer, + ObjectSerializer, + ObjectFieldSerializer, +) + + +class BaseObjectViewSet(viewsets.ModelViewSet): + queryset = BaseObject.objects.all() + serializer_class = BaseObjectSerializer + + +class BaseObjectFieldViewSet(viewsets.ModelViewSet): + queryset = BaseObjectField.objects.all() + serializer_class = BaseObjectFieldSerializer + + +class ObjectViewSet(viewsets.ModelViewSet): + queryset = Object.objects.all() + serializer_class = ObjectSerializer + + +class ObjectFieldViewSet(viewsets.ModelViewSet): + queryset = ObjectField.objects.all() + serializer_class = ObjectFieldSerializer \ No newline at end of file diff --git a/backend/api/v2/urls.py b/backend/api/v2/urls.py index 2c1bc9c..a810605 100644 --- a/backend/api/v2/urls.py +++ b/backend/api/v2/urls.py @@ -10,9 +10,12 @@ from api.v2.favorites.views import ( FavTemplateAPIview, FavDocumentAPIview,) -# from api.v2.objects.views import (BaseObjectViewSet, -# BaseObjectFieldViewSet, -# ObjectViewSet) +from api.v2.objects.views import ( + BaseObjectViewSet, + BaseObjectFieldViewSet, + ObjectViewSet, + ObjectFieldViewSet + ) from django.urls import include, path, re_path from rest_framework.routers import DefaultRouter @@ -46,26 +49,26 @@ viewset=DocumentViewSet, ) -# router_v1.register( -# prefix="base_objects", -# basename="base_objects", -# viewset=BaseObjectViewSet, -# ) -# router_v1.register( -# prefix="base_object_fields", -# basename="base_object_fields", -# viewset=BaseObjectFieldViewSet, -# ) -# router_v1.register( -# prefix="objects", -# basename="objects", -# viewset=ObjectViewSet, -# ) -# router_v1.register( -# prefix="object_fields", -# basename="object_fields", -# viewset=ObjectFieldViewSet, -# ) +router_v1.register( + prefix="base_objects", + basename="base_objects", + viewset=BaseObjectViewSet, +) +router_v1.register( + prefix="base_object_fields", + basename="base_object_fields", + viewset=BaseObjectFieldViewSet, +) +router_v1.register( + prefix="objects", + basename="objects", + viewset=ObjectViewSet, +) +router_v1.register( + prefix="object_fields", + basename="object_fields", + viewset=ObjectFieldViewSet, +) urlpatterns = [ path( diff --git a/backend/backend/urls.py b/backend/backend/urls.py index 376fa6a..37c1096 100644 --- a/backend/backend/urls.py +++ b/backend/backend/urls.py @@ -11,16 +11,16 @@ ] schema_view = get_schema_view( - openapi.Info( - title="Draft API", - default_version='v1', - description="Документация для приложения draft docuemnts проекта Шаблонизатор", - # terms_of_service="URL страницы с пользовательским соглашением", - contact=openapi.Contact(email="nikox122@mail.ru"), - license=openapi.License(name="BSD License"), - ), - public=True, - permission_classes=(permissions.AllowAny,), + openapi.Info( + title="Draft API", + default_version='v1', + description="Документация для приложения draft docuemnts проекта Шаблонизатор", + # terms_of_service="URL страницы с пользовательским соглашением", + contact=openapi.Contact(email="nikox122@mail.ru"), + license=openapi.License(name="BSD License"), + ), + public=True, + permission_classes=(permissions.AllowAny,), ) urlpatterns += [ diff --git a/backend/base_objects/models.py b/backend/base_objects/models.py index 29737a1..40deb40 100644 --- a/backend/base_objects/models.py +++ b/backend/base_objects/models.py @@ -57,18 +57,16 @@ class Object(models.Model): # owner = models.ForeignKey( # User, - # on_delete=models.CASCADE, + # on_delete=models.SET_NULL, # verbose_name="Автор документа", # null=True, # blank=True, # ) - base_object = models.ForeignKey( - BaseObject, - on_delete=models.PROTECT, - verbose_name="Юр или физ лицо", - null=True, - blank=True, - ) + # base_object = models.ForeignKey( + # BaseObject, + # on_delete=models.CASCADE, + # verbose_name="поля базового Обьект", + # ) name = models.CharField( max_length=255, verbose_name="Наименование обьекта" ) diff --git a/backend/documents/admin.py b/backend/documents/admin.py index 0313e74..91695b8 100644 --- a/backend/documents/admin.py +++ b/backend/documents/admin.py @@ -101,7 +101,7 @@ class TemplateFieldAdmin(admin.ModelAdmin): "group", "type", "length", - "base_object_field", + # "base_object_field", ) list_filter = ("template",) readonly_fields = ("id",) diff --git a/backend/documents/models.py b/backend/documents/models.py index 8875583..33806d6 100644 --- a/backend/documents/models.py +++ b/backend/documents/models.py @@ -7,7 +7,10 @@ from core.constants import Messages from core.template_render import DocumentTemplate -from base_objects.models import BaseObject, BaseObjectField +from base_objects.models import ( + BaseObject, + # BaseObjectField +) User = get_user_model() @@ -189,13 +192,13 @@ class TemplateField(models.Model): on_delete=models.CASCADE, verbose_name="Шаблон", ) - base_object_field = models.ForeignKey( - BaseObjectField, - on_delete=models.SET_NULL, - verbose_name="Поле базового обьекта", - null=True, - blank=True, - ) + # base_object_field = models.ForeignKey( + # BaseObjectField, + # on_delete=models.SET_NULL, + # verbose_name="Поле базового обьекта", + # null=True, + # blank=True, + # ) tag = models.CharField(max_length=255, verbose_name="Тэг поля") name = models.CharField(max_length=255, verbose_name="Наименование поля") hint = models.CharField( diff --git a/backend/request/documents.http b/backend/request/documents.http index a40b568..4103db4 100644 --- a/backend/request/documents.http +++ b/backend/request/documents.http @@ -1,22 +1,22 @@ -@TOKEN = Token bb4f5dbedaafd2730f35803e7087e797479d68f5 -@URL = https://documents-template.site/ -# @URL = http://127.0.0.1:8000 +@TOKEN = Token c911144116cd1689f8fd01e00102bcd1ce4cc175 +# @URL = https://documents-template.site/ +@URL = http://127.0.0.1:8000/api/v2 ### -GET {{URL}}/api/documents/1 -# Authorization: {{TOKEN}} +GET {{URL}}/documents/1 +Authorization: {{TOKEN}} { } ### -POST {{URL}}/api/documents/ +POST {{URL}}/documents/ Content-Type: application/json -# Authorization: {{TOKEN}} +Authorization: {{TOKEN}} { "description": "doc1", - "template": 1, + "template": 42, "completed": true, "document_fields": [ { @@ -63,7 +63,7 @@ Content-Type: application/json } ### -PATCH {{URL}}/api/documents/2/ +PATCH {{URL}}/documents/2/ Content-Type: application/json Authorization: {{TOKEN}} @@ -115,7 +115,7 @@ Authorization: {{TOKEN}} } ### -get {{URL}}/api/documents/draft/ +get {{URL}}/documents/draft/ Content-Type: application/json Authorization: {{TOKEN}} @@ -123,7 +123,7 @@ Authorization: {{TOKEN}} } ### -get {{URL}}/api/documents/history/ +get {{URL}}/documents/history/ Content-Type: application/json Authorization: {{TOKEN}} @@ -131,7 +131,7 @@ Authorization: {{TOKEN}} } ### -get {{URL}}/api/documents/2/download_document/ +get {{URL}}/documents/2/download_document/ Content-Type: application/json Authorization: {{TOKEN}} diff --git a/backend/request/objects.http b/backend/request/objects.http new file mode 100644 index 0000000..aad2263 --- /dev/null +++ b/backend/request/objects.http @@ -0,0 +1,37 @@ +@TOKEN = Token 66ba19730c8aaad7378dc20fae75656b06b00e02 + +# @URL = https://documents-template.site/ +@URL = http://localhost:8000/api/v2 + + +### Все базовые обьекты +GET {{URL}}/base_objects/ +Content-Type: application/json +Authorization: {{TOKEN}} + +{ +} + +### Все поля базового обьекта +GET {{URL}}/base_object_fields/ +Content-Type: application/json +Authorization: {{TOKEN}} + +{ +} + +### Все поля базового обьекта +GET {{URL}}/objects/ +Content-Type: application/json +Authorization: {{TOKEN}} + +{ +} + +### Все поля базового обьекта +GET {{URL}}/object_fields/ +Content-Type: application/json +Authorization: {{TOKEN}} + +{ +} \ No newline at end of file diff --git a/backend/request/template.http b/backend/request/template.http index bd115dc..ca97d79 100644 --- a/backend/request/template.http +++ b/backend/request/template.http @@ -1,11 +1,11 @@ -@TOKEN = Token 640063c217c9693de37f04d65249f35a19705efb +@TOKEN = Token 66ba19730c8aaad7378dc20fae75656b06b00e02 # @URL = https://documents-template.site/ -@URL = http://localhost:8000 +@URL = http://localhost:8000/api/v2 ### Все шаблоны -GET {{URL}}/api/templates/ +GET {{URL}}/templates/ Content-Type: application/json Authorization: {{TOKEN}} @@ -13,7 +13,7 @@ Authorization: {{TOKEN}} } ### Просмотр одного шаблона -GET {{URL}}/api/templates/1/ +GET {{URL}}/templates/22/ Content-Type: application/json Authorization: {{TOKEN}} @@ -22,7 +22,7 @@ Authorization: {{TOKEN}} ### Просмотр всех полей шаблона -GET {{URL}}/api/templates/1/fields +GET {{URL}}/templates/42/fields Content-Type: application/json Authorization: {{TOKEN}} @@ -30,7 +30,7 @@ Authorization: {{TOKEN}} } ### Добавить шаблон в избранное -POST {{URL}}/api/templates/1/favorite/ +POST {{URL}}/templates/22/favorite/ Content-Type: application/json Authorization: {{TOKEN}} @@ -38,15 +38,7 @@ Authorization: {{TOKEN}} } ### Удалить шаблон из избранного -DELETE {{URL}}/api/templates/1/favorite/ -Content-Type: application/json -Authorization: {{TOKEN}} - -{ -} - -### Удалить шаблон из избранного -DELETE {{URL}}/api/templates/1/favorite/ +DELETE {{URL}}/templates/1/favorite/ Content-Type: application/json Authorization: {{TOKEN}} @@ -55,7 +47,7 @@ Authorization: {{TOKEN}} ### Получить первью документа от анонимного пользователя -POST {{URL}}/api/templates/1/download_preview/ +POST {{URL}}/templates/22/download_preview/ Content-Type: application/json # Authorization: {{TOKEN}} @@ -101,7 +93,7 @@ Content-Type: application/json } ### Добавить новый шаблон и описание его полей в базу (ТОЛЬКО ДЛЯ АДМИНА) -POST {{URL}}/api/templates/ +POST {{URL}}/templates/ Content-Type: application/json Authorization: {{TOKEN}} diff --git a/backend/request/users.http b/backend/request/users.http index 5e77a07..d0a5c46 100644 --- a/backend/request/users.http +++ b/backend/request/users.http @@ -1,9 +1,9 @@ -@TOKEN = Token b5b767cb36da725f900892f627a28dc1c0e40488 +@TOKEN = Token c911144116cd1689f8fd01e00102bcd1ce4cc175 # @URL = https://documents-template.site -@URL = http://127.0.0.1:8000 +@URL = http://127.0.0.1:8000/api/v2 ### -POST {{URL}}/api/users/ +POST {{URL}}/users/ Content-Type: application/json { @@ -15,16 +15,16 @@ Content-Type: application/json } ### -POST {{URL}}/api/auth/token/login/ +POST {{URL}}/auth/token/login/ Content-Type: application/json { - "email": "nikox118182@mail.ru", + "email": "nikox1181182@mail.ru", "password": "456852Zx" } ### -POST {{URL}}/api/users/set_password/ +POST {{URL}}/users/set_password/ Content-Type: application/json Authorization: {{TOKEN}} @@ -34,7 +34,7 @@ Authorization: {{TOKEN}} } ### -GET {{URL}}/api/users/me/ +GET {{URL}}/users/me/ Content-Type: application/json Authorization: {{TOKEN}} @@ -43,7 +43,7 @@ Authorization: {{TOKEN}} ### -GET {{URL}}/api/users/2/ +GET {{URL}}/users/2/ Content-Type: application/json Authorization: {{TOKEN}} From 1ab0a609a7dd0a5b9cad9f0a9ffa87994ea86f38 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Mon, 15 Jan 2024 18:21:07 +0300 Subject: [PATCH 58/80] fix --- backend/api/v2/templates/serializers.py | 2 +- .../0006_remove_object_base_object.py | 17 +++ backend/documents/models.py | 16 +-- backend/users/tests.py | 122 +++++++++--------- 4 files changed, 87 insertions(+), 70 deletions(-) create mode 100644 backend/base_objects/migrations/0006_remove_object_base_object.py diff --git a/backend/api/v2/templates/serializers.py b/backend/api/v2/templates/serializers.py index e22a861..339fc4f 100644 --- a/backend/api/v2/templates/serializers.py +++ b/backend/api/v2/templates/serializers.py @@ -103,7 +103,7 @@ class TemplateGroupSerializerMinified(serializers.ModelSerializer): class Meta: model = TemplateFieldGroup - fields = ("id", "name") + fields = ("id", "name", ) class TemplateGroupSerializer(serializers.ModelSerializer): diff --git a/backend/base_objects/migrations/0006_remove_object_base_object.py b/backend/base_objects/migrations/0006_remove_object_base_object.py new file mode 100644 index 0000000..d8ffe0e --- /dev/null +++ b/backend/base_objects/migrations/0006_remove_object_base_object.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2 on 2024-01-14 17:40 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('base_objects', '0005_alter_object_base_object'), + ] + + operations = [ + migrations.RemoveField( + model_name='object', + name='base_object', + ), + ] diff --git a/backend/documents/models.py b/backend/documents/models.py index 33806d6..aab3a6b 100644 --- a/backend/documents/models.py +++ b/backend/documents/models.py @@ -9,7 +9,7 @@ from core.template_render import DocumentTemplate from base_objects.models import ( BaseObject, - # BaseObjectField + BaseObjectField, ) User = get_user_model() @@ -192,13 +192,13 @@ class TemplateField(models.Model): on_delete=models.CASCADE, verbose_name="Шаблон", ) - # base_object_field = models.ForeignKey( - # BaseObjectField, - # on_delete=models.SET_NULL, - # verbose_name="Поле базового обьекта", - # null=True, - # blank=True, - # ) + base_object_field = models.ForeignKey( + BaseObjectField, + on_delete=models.SET_NULL, + verbose_name="Поле базового обьекта", + null=True, + blank=True, + ) tag = models.CharField(max_length=255, verbose_name="Тэг поля") name = models.CharField(max_length=255, verbose_name="Наименование поля") hint = models.CharField( diff --git a/backend/users/tests.py b/backend/users/tests.py index 19b0c86..9fa6235 100644 --- a/backend/users/tests.py +++ b/backend/users/tests.py @@ -1,61 +1,61 @@ -import shutil -import tempfile - -from django.conf import settings -from django.contrib.auth import get_user_model -from django.test import override_settings -from rest_framework import status -from rest_framework.test import APIClient, APITestCase - -DEFAULT_NUMBER_OF_USERS = 0 -TEMP_MEDIA_ROOT = tempfile.mkdtemp(dir=settings.BASE_DIR) - -User = get_user_model() - - -@override_settings(MEDIA_ROOT=TEMP_MEDIA_ROOT) -class TestAPIRegistrationAndAuthenticationUser(APITestCase): - @classmethod - def setUpClass(cls): - super().setUpClass() - cls.client = APIClient() - cls.test_user_data = { - "email": "user@mail.ru", - "password": "qwertyqwerty123", - } - cls.response_registration = cls.client.post( - "/api/users/", cls.test_user_data - ) - - @classmethod - def tearDownClass(cls): - super().tearDownClass() - shutil.rmtree(TEMP_MEDIA_ROOT, ignore_errors=True) - - def test_registration(self): - response = self.response_registration - user = User.objects.first() - user_data = [user.id, user.email] - user_count = User.objects.count() - - self.assertEqual(response.status_code, status.HTTP_201_CREATED) - self.assertEqual(user_data, [*response.data.values()]) - self.assertEqual(user_count, DEFAULT_NUMBER_OF_USERS + 1) - - def test_authentication(self): - response_registration = self.response_registration - response_token_login = self.client.post( - "/api/auth/token/login/", self.test_user_data - ) - response_auth = self.client.get( - "/api/users/me/", - HTTP_AUTHORIZATION=f'Token {response_token_login.data["auth_token"]}', - ) - self.assertEqual( - response_registration.data["id"], - response_auth.data["id"], - ) - self.assertEqual( - response_registration.data["email"], - response_auth.data["email"], - ) \ No newline at end of file +# import shutil +# import tempfile + +# from django.conf import settings +# from django.contrib.auth import get_user_model +# from django.test import override_settings +# from rest_framework import status +# from rest_framework.test import APIClient, APITestCase + +# DEFAULT_NUMBER_OF_USERS = 0 +# TEMP_MEDIA_ROOT = tempfile.mkdtemp(dir=settings.BASE_DIR) + +# User = get_user_model() + + +# @override_settings(MEDIA_ROOT=TEMP_MEDIA_ROOT) +# class TestAPIRegistrationAndAuthenticationUser(APITestCase): +# @classmethod +# def setUpClass(cls): +# super().setUpClass() +# cls.client = APIClient() +# cls.test_user_data = { +# "email": "user@mail.ru", +# "password": "qwertyqwerty123", +# } +# cls.response_registration = cls.client.post( +# "/api/users/", cls.test_user_data +# ) + +# @classmethod +# def tearDownClass(cls): +# super().tearDownClass() +# shutil.rmtree(TEMP_MEDIA_ROOT, ignore_errors=True) + +# def test_registration(self): +# response = self.response_registration +# user = User.objects.first() +# user_data = [user.id, user.email] +# user_count = User.objects.count() + +# self.assertEqual(response.status_code, status.HTTP_201_CREATED) +# self.assertEqual(user_data, [*response.data.values()]) +# self.assertEqual(user_count, DEFAULT_NUMBER_OF_USERS + 1) + +# def test_authentication(self): +# response_registration = self.response_registration +# response_token_login = self.client.post( +# "/api/auth/token/login/", self.test_user_data +# ) +# response_auth = self.client.get( +# "/api/users/me/", +# HTTP_AUTHORIZATION=f'Token {response_token_login.data["auth_token"]}', +# ) +# self.assertEqual( +# response_registration.data["id"], +# response_auth.data["id"], +# ) +# self.assertEqual( +# response_registration.data["email"], +# response_auth.data["email"], +# ) \ No newline at end of file From e42261d5e68b91ab3ab1f0c1a42a995753995d60 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Sun, 21 Jan 2024 14:18:32 +0300 Subject: [PATCH 59/80] fix --- backend/backend/settings.py | 22 +-- .../base_objects/migrations/0001_initial.py | 49 ++++-- ...ct.py => 0002_alter_object_base_object.py} | 6 +- .../migrations/0002_auto_20240102_2044.py | 92 ----------- .../0003_alter_object_base_object.py | 19 +++ .../migrations/0003_auto_20240102_2045.py | 33 ---- .../migrations/0004_auto_20240102_2047.py | 26 ---- .../0006_remove_object_base_object.py | 17 -- backend/base_objects/models.py | 29 ++-- backend/documents/migrations/0001_initial.py | 147 ++++++++++++++---- .../migrations/0002_auto_20231007_1448.py | 101 ------------ .../migrations/0003_auto_20231007_1516.py | 51 ------ .../0004_alter_templatefield_hint.py | 18 --- .../0005_alter_document_completed.py | 18 --- .../0006_alter_templatefield_template_id.py | 19 --- .../migrations/0006_auto_20231011_1727.py | 35 ----- .../migrations/0007_auto_20231011_2320.py | 31 ---- .../migrations/0007_document_fields.py | 18 --- ..._rename_fields_document_docuemnt_fields.py | 18 --- ...ocuemnt_fields_document_document_fields.py | 18 --- .../migrations/0010_auto_20231014_1451.py | 28 ---- ...o_20231011_2320_0010_auto_20231014_1451.py | 14 -- .../migrations/0012_auto_20231014_2014.py | 45 ------ .../migrations/0013_auto_20231014_2225.py | 37 ----- .../migrations/0014_auto_20231014_2357.py | 21 --- .../migrations/0015_auto_20231017_2347.py | 24 --- .../migrations/0016_auto_20231018_0034.py | 26 ---- .../migrations/0017_auto_20231019_1108.py | 40 ----- .../0018_alter_documentfield_description.py | 18 --- .../migrations/0019_auto_20231023_2010.py | 33 ---- .../0020_alter_templatefield_hint.py | 18 --- ...0021_rename_slug_templatefieldtype_type.py | 18 --- .../migrations/0022_auto_20231025_2055.py | 107 ------------- .../0023_alter_templatefieldtype_mask.py | 19 --- .../migrations/0024_templatefield_length.py | 18 --- .../migrations/0025_templatefield_image.py | 18 --- .../migrations/0026_auto_20231107_1326.py | 22 --- .../migrations/0027_auto_20231108_1053.py | 27 ---- .../0028_remove_documentfield_description.py | 17 -- .../0029_alter_template_modified.py | 18 --- .../migrations/0030_auto_20231118_2115.py | 22 --- .../0031_alter_template_template.py | 18 --- .../migrations/0032_templatefield_default.py | 18 --- .../0033_templatefieldgroup_type_object.py | 20 --- .../0034_templatefield_base_object_field.py | 20 --- backend/documents/models.py | 3 +- backend/request/objects.http | 8 +- backend/request/template.http | 6 +- backend/request/users.http | 4 +- backend/users/tests.py | 122 +++++++-------- 50 files changed, 281 insertions(+), 1295 deletions(-) rename backend/base_objects/migrations/{0005_alter_object_base_object.py => 0002_alter_object_base_object.py} (57%) delete mode 100644 backend/base_objects/migrations/0002_auto_20240102_2044.py create mode 100644 backend/base_objects/migrations/0003_alter_object_base_object.py delete mode 100644 backend/base_objects/migrations/0003_auto_20240102_2045.py delete mode 100644 backend/base_objects/migrations/0004_auto_20240102_2047.py delete mode 100644 backend/base_objects/migrations/0006_remove_object_base_object.py delete mode 100644 backend/documents/migrations/0002_auto_20231007_1448.py delete mode 100644 backend/documents/migrations/0003_auto_20231007_1516.py delete mode 100644 backend/documents/migrations/0004_alter_templatefield_hint.py delete mode 100644 backend/documents/migrations/0005_alter_document_completed.py delete mode 100644 backend/documents/migrations/0006_alter_templatefield_template_id.py delete mode 100644 backend/documents/migrations/0006_auto_20231011_1727.py delete mode 100644 backend/documents/migrations/0007_auto_20231011_2320.py delete mode 100644 backend/documents/migrations/0007_document_fields.py delete mode 100644 backend/documents/migrations/0008_rename_fields_document_docuemnt_fields.py delete mode 100644 backend/documents/migrations/0009_rename_docuemnt_fields_document_document_fields.py delete mode 100644 backend/documents/migrations/0010_auto_20231014_1451.py delete mode 100644 backend/documents/migrations/0011_merge_0007_auto_20231011_2320_0010_auto_20231014_1451.py delete mode 100644 backend/documents/migrations/0012_auto_20231014_2014.py delete mode 100644 backend/documents/migrations/0013_auto_20231014_2225.py delete mode 100644 backend/documents/migrations/0014_auto_20231014_2357.py delete mode 100644 backend/documents/migrations/0015_auto_20231017_2347.py delete mode 100644 backend/documents/migrations/0016_auto_20231018_0034.py delete mode 100644 backend/documents/migrations/0017_auto_20231019_1108.py delete mode 100644 backend/documents/migrations/0018_alter_documentfield_description.py delete mode 100644 backend/documents/migrations/0019_auto_20231023_2010.py delete mode 100644 backend/documents/migrations/0020_alter_templatefield_hint.py delete mode 100644 backend/documents/migrations/0021_rename_slug_templatefieldtype_type.py delete mode 100644 backend/documents/migrations/0022_auto_20231025_2055.py delete mode 100644 backend/documents/migrations/0023_alter_templatefieldtype_mask.py delete mode 100644 backend/documents/migrations/0024_templatefield_length.py delete mode 100644 backend/documents/migrations/0025_templatefield_image.py delete mode 100644 backend/documents/migrations/0026_auto_20231107_1326.py delete mode 100644 backend/documents/migrations/0027_auto_20231108_1053.py delete mode 100644 backend/documents/migrations/0028_remove_documentfield_description.py delete mode 100644 backend/documents/migrations/0029_alter_template_modified.py delete mode 100644 backend/documents/migrations/0030_auto_20231118_2115.py delete mode 100644 backend/documents/migrations/0031_alter_template_template.py delete mode 100644 backend/documents/migrations/0032_templatefield_default.py delete mode 100644 backend/documents/migrations/0033_templatefieldgroup_type_object.py delete mode 100644 backend/documents/migrations/0034_templatefield_base_object_field.py diff --git a/backend/backend/settings.py b/backend/backend/settings.py index c8728fc..e38eb8f 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -2,7 +2,7 @@ import os from pathlib import Path -# import sentry_sdk +import sentry_sdk from dotenv import load_dotenv load_dotenv() @@ -203,13 +203,13 @@ }, } -# sentry_sdk.init( -# dsn="https://be8f804283b7a2e423209e00692792f0@o4506344044298240.ingest.sentry.io/4506344234156032", -# # Set traces_sample_rate to 1.0 to capture 100% -# # of transactions for performance monitoring. -# traces_sample_rate=1.0, -# # Set profiles_sample_rate to 1.0 to profile 100% -# # of sampled transactions. -# # We recommend adjusting this value in production. -# profiles_sample_rate=1.0, -# ) +sentry_sdk.init( + dsn="https://be8f804283b7a2e423209e00692792f0@o4506344044298240.ingest.sentry.io/4506344234156032", + # Set traces_sample_rate to 1.0 to capture 100% + # of transactions for performance monitoring. + traces_sample_rate=1.0, + # Set profiles_sample_rate to 1.0 to profile 100% + # of sampled transactions. + # We recommend adjusting this value in production. + profiles_sample_rate=1.0, +) diff --git a/backend/base_objects/migrations/0001_initial.py b/backend/base_objects/migrations/0001_initial.py index 6da2fd4..597be78 100644 --- a/backend/base_objects/migrations/0001_initial.py +++ b/backend/base_objects/migrations/0001_initial.py @@ -1,5 +1,6 @@ -# Generated by Django 3.2 on 2024-01-02 13:52 +# Generated by Django 3.2 on 2024-01-17 14:48 +from django.conf import settings from django.db import migrations, models import django.db.models.deletion @@ -9,38 +10,66 @@ class Migration(migrations.Migration): initial = True dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ + migrations.CreateModel( + name='BaseObject', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='Наименование базового обьекта')), + ('updated', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')), + ('deleted', models.BooleanField(verbose_name='Удален')), + ('description', models.TextField(verbose_name='Описание базового обьекта')), + ], + options={ + 'verbose_name': 'базовый Обьекта', + 'verbose_name_plural': 'базовые Обьекты', + 'ordering': ('name',), + 'default_related_name': 'Base_objects', + }, + ), + migrations.CreateModel( + name='BaseObjectField', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='Наименование базового поля обьекта')), + ('base_object', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='base_fields', to='base_objects.baseobject', verbose_name='поля базового Обьект')), + ], + options={ + 'verbose_name': 'Поле базового обьекта', + 'verbose_name_plural': 'Поля базового обьекта', + 'default_related_name': 'base_fields', + }, + ), migrations.CreateModel( name='Object', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='Наименование обьекта')), + ('created', models.DateTimeField(auto_now=True, verbose_name='Дата создания')), ('updated', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')), - ('deleted', models.BooleanField(verbose_name='Удален')), - ('description', models.TextField(verbose_name='Описание обьета')), + ('base_object', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='customer_objects', to='base_objects.baseobject', verbose_name='поля базового Обьект')), + ('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='customer_objects', to=settings.AUTH_USER_MODEL, verbose_name='Автор документа')), ], options={ 'verbose_name': 'Обьект', 'verbose_name_plural': 'Обьекты', - 'ordering': ('name',), - 'default_related_name': 'objects', + 'default_related_name': 'customer_objects', }, ), migrations.CreateModel( name='ObjectField', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='Наименование поля')), - ('default', models.CharField(blank=True, max_length=255, null=True, verbose_name='Значение по умолчанию')), - ('object', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fields', to='base_objects.object', verbose_name='Обьект')), + ('value', models.CharField(blank=True, max_length=255, null=True, verbose_name='Содержимое поля')), + ('base_field', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='object_fields', to='base_objects.baseobjectfield', verbose_name='Поле')), + ('object', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='base_objects.object', verbose_name='Обьект')), ], options={ 'verbose_name': 'Поле обьекта', 'verbose_name_plural': 'Поля обьекта', - 'ordering': ('object', 'name'), - 'default_related_name': 'fields', }, ), ] diff --git a/backend/base_objects/migrations/0005_alter_object_base_object.py b/backend/base_objects/migrations/0002_alter_object_base_object.py similarity index 57% rename from backend/base_objects/migrations/0005_alter_object_base_object.py rename to backend/base_objects/migrations/0002_alter_object_base_object.py index 856ced4..5c259ce 100644 --- a/backend/base_objects/migrations/0005_alter_object_base_object.py +++ b/backend/base_objects/migrations/0002_alter_object_base_object.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2 on 2024-01-03 11:04 +# Generated by Django 3.2 on 2024-01-17 14:51 from django.db import migrations, models import django.db.models.deletion @@ -7,13 +7,13 @@ class Migration(migrations.Migration): dependencies = [ - ('base_objects', '0004_auto_20240102_2047'), + ('base_objects', '0001_initial'), ] operations = [ migrations.AlterField( model_name='object', name='base_object', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='objects', to='base_objects.baseobject', verbose_name='Юр или физ лицо'), + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='customer_objects', to='base_objects.baseobject', verbose_name='поля базового Обьект'), ), ] diff --git a/backend/base_objects/migrations/0002_auto_20240102_2044.py b/backend/base_objects/migrations/0002_auto_20240102_2044.py deleted file mode 100644 index 784bfbe..0000000 --- a/backend/base_objects/migrations/0002_auto_20240102_2044.py +++ /dev/null @@ -1,92 +0,0 @@ -# Generated by Django 3.2 on 2024-01-02 20:44 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('base_objects', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='BaseObject', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='Наименование шаблона обьекта')), - ('updated', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')), - ('deleted', models.BooleanField(verbose_name='Удален')), - ('description', models.TextField(verbose_name='Описание базового обьекта')), - ], - options={ - 'verbose_name': 'Шаблон Обьект', - 'verbose_name_plural': 'Шаблон Обьекты', - 'ordering': ('name',), - 'default_related_name': 'Base_objects', - }, - ), - migrations.AlterModelOptions( - name='object', - options={}, - ), - migrations.AlterModelOptions( - name='objectfield', - options={'verbose_name': 'Поле обьекта', 'verbose_name_plural': 'Поля обьекта'}, - ), - migrations.RemoveField( - model_name='object', - name='deleted', - ), - migrations.RemoveField( - model_name='object', - name='description', - ), - migrations.RemoveField( - model_name='object', - name='updated', - ), - migrations.RemoveField( - model_name='objectfield', - name='default', - ), - migrations.RemoveField( - model_name='objectfield', - name='name', - ), - migrations.AddField( - model_name='objectfield', - name='value', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Содержимое поля'), - ), - migrations.AlterField( - model_name='objectfield', - name='object', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='base_objects.object', verbose_name='Обьект'), - ), - migrations.CreateModel( - name='BaseObjectField', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='Наименование базового поля обьекта')), - ('default', models.CharField(blank=True, max_length=255, null=True, verbose_name='Значение по умолчанию')), - ('base_object', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='base_fields', to='base_objects.baseobject', verbose_name='поля базового Обьект')), - ], - options={ - 'verbose_name': 'Поле базового обьекта', - 'verbose_name_plural': 'Поля базового обьекта', - 'default_related_name': 'base_fields', - }, - ), - migrations.AddField( - model_name='object', - name='base_object', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='base_objects.baseobject', verbose_name='Обьект'), - ), - migrations.AddField( - model_name='objectfield', - name='base_field', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='object_fields', to='base_objects.baseobjectfield', verbose_name='Поле'), - ), - ] diff --git a/backend/base_objects/migrations/0003_alter_object_base_object.py b/backend/base_objects/migrations/0003_alter_object_base_object.py new file mode 100644 index 0000000..a42d194 --- /dev/null +++ b/backend/base_objects/migrations/0003_alter_object_base_object.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2 on 2024-01-17 14:52 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('base_objects', '0002_alter_object_base_object'), + ] + + operations = [ + migrations.AlterField( + model_name='object', + name='base_object', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='customer_objects', to='base_objects.baseobject', verbose_name='Базовый Обьект'), + ), + ] diff --git a/backend/base_objects/migrations/0003_auto_20240102_2045.py b/backend/base_objects/migrations/0003_auto_20240102_2045.py deleted file mode 100644 index 4ff5308..0000000 --- a/backend/base_objects/migrations/0003_auto_20240102_2045.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 3.2 on 2024-01-02 20:45 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('base_objects', '0002_auto_20240102_2044'), - ] - - operations = [ - migrations.AlterModelOptions( - name='object', - options={'default_related_name': 'objects', 'verbose_name': 'Обьект', 'verbose_name_plural': 'Обьекты'}, - ), - migrations.AddField( - model_name='object', - name='created', - field=models.DateTimeField(auto_now=True, verbose_name='Дата создания'), - ), - migrations.AddField( - model_name='object', - name='updated', - field=models.DateTimeField(auto_now=True, verbose_name='Дата изменения'), - ), - migrations.AlterField( - model_name='object', - name='base_object', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='objects', to='base_objects.baseobject', verbose_name='Обьект'), - ), - ] diff --git a/backend/base_objects/migrations/0004_auto_20240102_2047.py b/backend/base_objects/migrations/0004_auto_20240102_2047.py deleted file mode 100644 index 741bdcb..0000000 --- a/backend/base_objects/migrations/0004_auto_20240102_2047.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 3.2 on 2024-01-02 20:47 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('base_objects', '0003_auto_20240102_2045'), - ] - - operations = [ - migrations.AlterModelOptions( - name='baseobject', - options={'default_related_name': 'Base_objects', 'ordering': ('name',), 'verbose_name': 'базовый Обьекта', 'verbose_name_plural': 'базовые Обьекты'}, - ), - migrations.RemoveField( - model_name='baseobjectfield', - name='default', - ), - migrations.AlterField( - model_name='baseobject', - name='name', - field=models.CharField(max_length=255, verbose_name='Наименование базового обьекта'), - ), - ] diff --git a/backend/base_objects/migrations/0006_remove_object_base_object.py b/backend/base_objects/migrations/0006_remove_object_base_object.py deleted file mode 100644 index d8ffe0e..0000000 --- a/backend/base_objects/migrations/0006_remove_object_base_object.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 3.2 on 2024-01-14 17:40 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('base_objects', '0005_alter_object_base_object'), - ] - - operations = [ - migrations.RemoveField( - model_name='object', - name='base_object', - ), - ] diff --git a/backend/base_objects/models.py b/backend/base_objects/models.py index 40deb40..2072abd 100644 --- a/backend/base_objects/models.py +++ b/backend/base_objects/models.py @@ -37,6 +37,7 @@ class BaseObjectField(models.Model): BaseObject, on_delete=models.CASCADE, verbose_name="поля базового Обьект", + default=1, ) name = models.CharField( max_length=255, @@ -55,18 +56,20 @@ def __str__(self): class Object(models.Model): """Обьект.""" - # owner = models.ForeignKey( - # User, - # on_delete=models.SET_NULL, - # verbose_name="Автор документа", - # null=True, - # blank=True, - # ) - # base_object = models.ForeignKey( - # BaseObject, - # on_delete=models.CASCADE, - # verbose_name="поля базового Обьект", - # ) + owner = models.ForeignKey( + User, + on_delete=models.SET_NULL, + verbose_name="Автор документа", + null=True, + blank=True, + ) + base_object = models.ForeignKey( + BaseObject, + on_delete=models.CASCADE, + verbose_name="Базовый Обьект", + null=True, + blank=True, + ) name = models.CharField( max_length=255, verbose_name="Наименование обьекта" ) @@ -82,7 +85,7 @@ class Object(models.Model): class Meta: verbose_name = "Обьект" verbose_name_plural = "Обьекты" - default_related_name = "objects" + default_related_name = "customer_objects" def __str__(self): """Отображение - название.""" diff --git a/backend/documents/migrations/0001_initial.py b/backend/documents/migrations/0001_initial.py index 8cada4c..1aba3cb 100644 --- a/backend/documents/migrations/0001_initial.py +++ b/backend/documents/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2 on 2023-10-07 11:36 +# Generated by Django 3.2 on 2024-01-17 14:48 from django.conf import settings from django.db import migrations, models @@ -10,6 +10,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ + ('base_objects', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] @@ -18,59 +19,153 @@ class Migration(migrations.Migration): name='Category', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255)), + ('name', models.CharField(max_length=255, verbose_name='Наименование категории')), ], + options={ + 'verbose_name': 'Категория', + 'verbose_name_plural': 'Категории', + 'ordering': ('name',), + }, ), migrations.CreateModel( name='Document', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateTimeField(auto_now_add=True)), - ('completed', models.BooleanField()), - ('description', models.TextField()), + ('created', models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')), + ('updated', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')), + ('completed', models.BooleanField(default=False, verbose_name='Документ заполнен')), + ('description', models.TextField(verbose_name='Описание документа')), + ('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='documents', to=settings.AUTH_USER_MODEL, verbose_name='Автор документа')), ], + options={ + 'verbose_name': 'Документ', + 'verbose_name_plural': 'Документы', + 'ordering': ('created',), + 'default_related_name': 'documents', + }, ), migrations.CreateModel( name='Template', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('template', models.FileField(upload_to='templates/')), - ('name', models.CharField(max_length=255)), - ('modified', models.DateField()), - ('deleted', models.BooleanField()), - ('description', models.TextField()), - ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.category')), - ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('template', models.FileField(upload_to='templates/', verbose_name='Файл шаблона')), + ('name', models.CharField(max_length=255, verbose_name='Наименование шаблона')), + ('updated', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')), + ('deleted', models.BooleanField(verbose_name='Удален')), + ('description', models.TextField(verbose_name='Описание шаблона')), + ('image', models.ImageField(blank=True, null=True, upload_to='posts/', verbose_name='Картинка')), + ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='templates', to='documents.category', verbose_name='Категория')), + ('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='templates', to=settings.AUTH_USER_MODEL, verbose_name='Автор шаблона')), ], + options={ + 'verbose_name': 'Шаблон', + 'verbose_name_plural': 'Шаблоны', + 'ordering': ('name',), + 'default_related_name': 'templates', + }, + ), + migrations.CreateModel( + name='TemplateFieldType', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type', models.SlugField(unique=True, verbose_name='Тип данных')), + ('name', models.CharField(max_length=50, verbose_name='Наименование типа')), + ('mask', models.CharField(blank=True, max_length=255, verbose_name='Маска допустимых значений')), + ], + options={ + 'verbose_name': 'Тип поля шаблона', + 'verbose_name_plural': 'Типы поля шаблона', + 'ordering': ('name',), + }, + ), + migrations.CreateModel( + name='TemplateFieldGroup', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='Наименование группы полей')), + ('template', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='field_groups', to='documents.template', verbose_name='Шаблон')), + ('type_object', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='base_objects.baseobject', verbose_name='Обьект')), + ], + options={ + 'verbose_name': 'Группа полей', + 'verbose_name_plural': 'Группы полей', + 'ordering': ('id',), + }, ), migrations.CreateModel( name='TemplateField', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tag', models.CharField(max_length=255)), - ('name', models.CharField(max_length=255)), - ('hint', models.TextField()), - ('template_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.template')), + ('tag', models.CharField(max_length=255, verbose_name='Тэг поля')), + ('name', models.CharField(max_length=255, verbose_name='Наименование поля')), + ('hint', models.CharField(blank=True, max_length=255, verbose_name='Подсказка')), + ('length', models.PositiveIntegerField(blank=True, null=True, verbose_name='Размер поля ввода')), + ('default', models.CharField(blank=True, max_length=255, null=True, verbose_name='Значение по умолчанию')), + ('base_object_field', models.ForeignKey(blank=True, default=1, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='base_objects.baseobjectfield', verbose_name='Поле базового обьекта')), + ('group', models.ForeignKey(blank=True, help_text='Группа полей в шаблоне', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='documents.templatefieldgroup', verbose_name='Группа')), + ('template', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fields', to='documents.template', verbose_name='Шаблон')), + ('type', models.ForeignKey(blank=True, help_text='Тип поля', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='documents.templatefieldtype', verbose_name='Тип')), ], + options={ + 'verbose_name': 'Поле шаблона', + 'verbose_name_plural': 'Поля шаблона', + 'ordering': ('template', 'name'), + 'default_related_name': 'fields', + }, + ), + migrations.CreateModel( + name='FavTemplate', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('template', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_templates', to='documents.template', verbose_name='Шаблон')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_templates', to=settings.AUTH_USER_MODEL, verbose_name='Пользователь')), + ], + options={ + 'verbose_name': 'Избранный шаблон', + 'verbose_name_plural': 'Избранные шаблоны', + 'ordering': ('user', 'template'), + 'default_related_name': 'favorite_templates', + }, + ), + migrations.CreateModel( + name='FavDocument', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_documents', to='documents.document', verbose_name='Документ')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_documents', to=settings.AUTH_USER_MODEL, verbose_name='Пользователь')), + ], + options={ + 'verbose_name': 'Избранный документ', + 'verbose_name_plural': 'Избранные документы', + 'ordering': ('user', 'document'), + 'default_related_name': 'favorite_documents', + }, ), migrations.CreateModel( name='DocumentField', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('value', models.CharField(max_length=255)), - ('description', models.TextField()), - ('document_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.document')), - ('field_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.templatefield')), + ('value', models.CharField(max_length=255, verbose_name='Содержимое поля')), + ('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='document_fields', to='documents.document', verbose_name='Документ')), + ('field', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='document_fields', to='documents.templatefield', verbose_name='Поле')), ], + options={ + 'verbose_name': 'Поле документа', + 'verbose_name_plural': 'Поля документа', + 'ordering': ('field__template', 'field'), + }, ), migrations.AddField( model_name='document', - name='template_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.template'), + name='template', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='documents', to='documents.template', verbose_name='Шаблон'), ), - migrations.AddField( - model_name='document', - name='user_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + migrations.AddConstraint( + model_name='favtemplate', + constraint=models.UniqueConstraint(fields=('user', 'template'), name='unique_user_template'), + ), + migrations.AddConstraint( + model_name='favdocument', + constraint=models.UniqueConstraint(fields=('user', 'document'), name='unique_user_document'), ), ] diff --git a/backend/documents/migrations/0002_auto_20231007_1448.py b/backend/documents/migrations/0002_auto_20231007_1448.py deleted file mode 100644 index cb9201d..0000000 --- a/backend/documents/migrations/0002_auto_20231007_1448.py +++ /dev/null @@ -1,101 +0,0 @@ -# Generated by Django 3.2 on 2023-10-07 11:48 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0001_initial'), - ] - - operations = [ - migrations.AlterModelOptions( - name='category', - options={'ordering': ('name',), 'verbose_name': 'Категория', 'verbose_name_plural': 'Категории'}, - ), - migrations.AlterModelOptions( - name='document', - options={'ordering': ('created',), 'verbose_name': 'Документ', 'verbose_name_plural': 'Документы'}, - ), - migrations.AlterModelOptions( - name='documentfield', - options={'verbose_name': 'Поле документа', 'verbose_name_plural': 'Поля документа'}, - ), - migrations.AlterModelOptions( - name='template', - options={'ordering': ('name',), 'verbose_name': 'Шаблон', 'verbose_name_plural': 'Шаблоны'}, - ), - migrations.AlterModelOptions( - name='templatefield', - options={'ordering': ('name',), 'verbose_name': 'Поле шаблона', 'verbose_name_plural': 'Поля шаблона'}, - ), - migrations.AlterField( - model_name='category', - name='name', - field=models.CharField(max_length=255, verbose_name='Наименование категории'), - ), - migrations.AlterField( - model_name='document', - name='completed', - field=models.BooleanField(verbose_name='Статус документа'), - ), - migrations.AlterField( - model_name='document', - name='created', - field=models.DateTimeField(auto_now_add=True, verbose_name='Дата создания'), - ), - migrations.AlterField( - model_name='document', - name='description', - field=models.TextField(verbose_name='Описание документа'), - ), - migrations.AlterField( - model_name='documentfield', - name='description', - field=models.TextField(verbose_name='Описание поля'), - ), - migrations.AlterField( - model_name='documentfield', - name='value', - field=models.CharField(max_length=255, verbose_name='Содержимое поля'), - ), - migrations.AlterField( - model_name='template', - name='category', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.category', verbose_name='Категория'), - ), - migrations.AlterField( - model_name='template', - name='description', - field=models.TextField(verbose_name='Описание шаблона'), - ), - migrations.AlterField( - model_name='template', - name='name', - field=models.CharField(max_length=255, verbose_name='Наименование шаблона'), - ), - migrations.AlterField( - model_name='template', - name='owner', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Автор шаблона'), - ), - migrations.AlterField( - model_name='templatefield', - name='hint', - field=models.TextField(verbose_name='Подсказка'), - ), - migrations.AlterField( - model_name='templatefield', - name='name', - field=models.CharField(max_length=255, verbose_name='Наименование поля'), - ), - migrations.AlterField( - model_name='templatefield', - name='tag', - field=models.CharField(max_length=255, verbose_name='Тэг поля'), - ), - ] diff --git a/backend/documents/migrations/0003_auto_20231007_1516.py b/backend/documents/migrations/0003_auto_20231007_1516.py deleted file mode 100644 index ff2acb8..0000000 --- a/backend/documents/migrations/0003_auto_20231007_1516.py +++ /dev/null @@ -1,51 +0,0 @@ -# Generated by Django 3.2 on 2023-10-07 12:16 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0002_auto_20231007_1448'), - ] - - operations = [ - migrations.AlterField( - model_name='document', - name='template_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.template', verbose_name='Шаблон'), - ), - migrations.AlterField( - model_name='document', - name='user_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Автор документа'), - ), - migrations.AlterField( - model_name='documentfield', - name='document_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.document', verbose_name='Документ'), - ), - migrations.AlterField( - model_name='documentfield', - name='field_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.templatefield', verbose_name='Поле'), - ), - migrations.AlterField( - model_name='template', - name='deleted', - field=models.BooleanField(verbose_name='Удален'), - ), - migrations.AlterField( - model_name='template', - name='modified', - field=models.DateField(verbose_name='Дата модификации'), - ), - migrations.AlterField( - model_name='templatefield', - name='template_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.template', verbose_name='Шаблон'), - ), - ] diff --git a/backend/documents/migrations/0004_alter_templatefield_hint.py b/backend/documents/migrations/0004_alter_templatefield_hint.py deleted file mode 100644 index 7bd7d91..0000000 --- a/backend/documents/migrations/0004_alter_templatefield_hint.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-07 12:18 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0003_auto_20231007_1516'), - ] - - operations = [ - migrations.AlterField( - model_name='templatefield', - name='hint', - field=models.TextField(blank=True, null=True, verbose_name='Подсказка'), - ), - ] diff --git a/backend/documents/migrations/0005_alter_document_completed.py b/backend/documents/migrations/0005_alter_document_completed.py deleted file mode 100644 index d2aa450..0000000 --- a/backend/documents/migrations/0005_alter_document_completed.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-07 12:19 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0004_alter_templatefield_hint'), - ] - - operations = [ - migrations.AlterField( - model_name='document', - name='completed', - field=models.BooleanField(verbose_name='Документ заполнен'), - ), - ] diff --git a/backend/documents/migrations/0006_alter_templatefield_template_id.py b/backend/documents/migrations/0006_alter_templatefield_template_id.py deleted file mode 100644 index 119cec5..0000000 --- a/backend/documents/migrations/0006_alter_templatefield_template_id.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 3.2 on 2023-10-11 08:55 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0005_alter_document_completed'), - ] - - operations = [ - migrations.AlterField( - model_name='templatefield', - name='template_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fields', to='documents.template', verbose_name='Шаблон'), - ), - ] diff --git a/backend/documents/migrations/0006_auto_20231011_1727.py b/backend/documents/migrations/0006_auto_20231011_1727.py deleted file mode 100644 index dda8c65..0000000 --- a/backend/documents/migrations/0006_auto_20231011_1727.py +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by Django 3.2 on 2023-10-11 14:27 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0005_alter_document_completed'), - ] - - operations = [ - migrations.RenameField( - model_name='document', - old_name='user_id', - new_name='owner', - ), - migrations.RemoveField( - model_name='documentfield', - name='document_id', - ), - migrations.CreateModel( - name='FieldToDocument', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.document')), - ('fields', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.documentfield')), - ], - options={ - 'verbose_name': 'Связь между полем и документом', - 'verbose_name_plural': 'Связи между полями и документами', - }, - ), - ] diff --git a/backend/documents/migrations/0007_auto_20231011_2320.py b/backend/documents/migrations/0007_auto_20231011_2320.py deleted file mode 100644 index 9aa93af..0000000 --- a/backend/documents/migrations/0007_auto_20231011_2320.py +++ /dev/null @@ -1,31 +0,0 @@ -# Generated by Django 3.2 on 2023-10-11 20:20 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0006_alter_templatefield_template_id'), - ] - - operations = [ - migrations.AlterField( - model_name='template', - name='category', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='documents.category', verbose_name='Категория'), - ), - migrations.AlterField( - model_name='template', - name='modified', - field=models.DateField(auto_now=True, verbose_name='Дата модификации'), - ), - migrations.AlterField( - model_name='template', - name='owner', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Автор шаблона'), - ), - ] diff --git a/backend/documents/migrations/0007_document_fields.py b/backend/documents/migrations/0007_document_fields.py deleted file mode 100644 index 07267fe..0000000 --- a/backend/documents/migrations/0007_document_fields.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-11 14:30 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0006_auto_20231011_1727'), - ] - - operations = [ - migrations.AddField( - model_name='document', - name='fields', - field=models.ManyToManyField(through='documents.FieldToDocument', to='documents.DocumentField'), - ), - ] diff --git a/backend/documents/migrations/0008_rename_fields_document_docuemnt_fields.py b/backend/documents/migrations/0008_rename_fields_document_docuemnt_fields.py deleted file mode 100644 index 2dde33f..0000000 --- a/backend/documents/migrations/0008_rename_fields_document_docuemnt_fields.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-11 14:36 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0007_document_fields'), - ] - - operations = [ - migrations.RenameField( - model_name='document', - old_name='fields', - new_name='docuemnt_fields', - ), - ] diff --git a/backend/documents/migrations/0009_rename_docuemnt_fields_document_document_fields.py b/backend/documents/migrations/0009_rename_docuemnt_fields_document_document_fields.py deleted file mode 100644 index 6e02d5e..0000000 --- a/backend/documents/migrations/0009_rename_docuemnt_fields_document_document_fields.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-11 14:43 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0008_rename_fields_document_docuemnt_fields'), - ] - - operations = [ - migrations.RenameField( - model_name='document', - old_name='docuemnt_fields', - new_name='document_fields', - ), - ] diff --git a/backend/documents/migrations/0010_auto_20231014_1451.py b/backend/documents/migrations/0010_auto_20231014_1451.py deleted file mode 100644 index a56fec3..0000000 --- a/backend/documents/migrations/0010_auto_20231014_1451.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 3.2 on 2023-10-14 11:51 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0009_rename_docuemnt_fields_document_document_fields'), - ] - - operations = [ - migrations.RenameField( - model_name='document', - old_name='template_id', - new_name='template', - ), - migrations.RenameField( - model_name='documentfield', - old_name='field_id', - new_name='field', - ), - migrations.AlterField( - model_name='documentfield', - name='description', - field=models.TextField(default='Нет описания', verbose_name='Описание поля'), - ), - ] diff --git a/backend/documents/migrations/0011_merge_0007_auto_20231011_2320_0010_auto_20231014_1451.py b/backend/documents/migrations/0011_merge_0007_auto_20231011_2320_0010_auto_20231014_1451.py deleted file mode 100644 index 846b7aa..0000000 --- a/backend/documents/migrations/0011_merge_0007_auto_20231011_2320_0010_auto_20231014_1451.py +++ /dev/null @@ -1,14 +0,0 @@ -# Generated by Django 3.2 on 2023-10-14 13:28 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0007_auto_20231011_2320'), - ('documents', '0010_auto_20231014_1451'), - ] - - operations = [ - ] diff --git a/backend/documents/migrations/0012_auto_20231014_2014.py b/backend/documents/migrations/0012_auto_20231014_2014.py deleted file mode 100644 index 9a79684..0000000 --- a/backend/documents/migrations/0012_auto_20231014_2014.py +++ /dev/null @@ -1,45 +0,0 @@ -# Generated by Django 3.2 on 2023-10-14 17:14 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0011_merge_0007_auto_20231011_2320_0010_auto_20231014_1451'), - ] - - operations = [ - migrations.AlterField( - model_name='documentfield', - name='description', - field=models.TextField(verbose_name='Описание поля'), - ), - migrations.CreateModel( - name='FavTemplate', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('template', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='documents.template', verbose_name='Шаблон')), - ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Пользователь')), - ], - options={ - 'verbose_name': 'Избранный шаблон', - 'verbose_name_plural': 'Избранные шаблоны', - }, - ), - migrations.CreateModel( - name='FavDocument', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('document', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='documents.document', verbose_name='Документ')), - ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Пользователь')), - ], - options={ - 'verbose_name': 'Избранный документ', - 'verbose_name_plural': 'Избранные документы', - }, - ), - ] diff --git a/backend/documents/migrations/0013_auto_20231014_2225.py b/backend/documents/migrations/0013_auto_20231014_2225.py deleted file mode 100644 index b04bb26..0000000 --- a/backend/documents/migrations/0013_auto_20231014_2225.py +++ /dev/null @@ -1,37 +0,0 @@ -# Generated by Django 3.2 on 2023-10-14 19:25 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0012_auto_20231014_2014'), - ] - - operations = [ - migrations.RenameField( - model_name='templatefield', - old_name='template_id', - new_name='template', - ), - migrations.CreateModel( - name='TemplateFieldGroup', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='Наименование группы полей')), - ('template', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='field_groups', to='documents.template', verbose_name='Шаблон')), - ], - options={ - 'verbose_name': 'Группа полей', - 'verbose_name_plural': 'Группы полей', - 'ordering': ('id',), - }, - ), - migrations.AddField( - model_name='templatefield', - name='group', - field=models.ForeignKey(blank=True, help_text='Группа полей в шаблоне', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='documents.templatefieldgroup', verbose_name='Группа'), - ), - ] diff --git a/backend/documents/migrations/0014_auto_20231014_2357.py b/backend/documents/migrations/0014_auto_20231014_2357.py deleted file mode 100644 index 0c919a4..0000000 --- a/backend/documents/migrations/0014_auto_20231014_2357.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 3.2 on 2023-10-14 20:57 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0013_auto_20231014_2225'), - ] - - operations = [ - migrations.AddConstraint( - model_name='favdocument', - constraint=models.UniqueConstraint(fields=('user', 'document'), name='unique_user_document'), - ), - migrations.AddConstraint( - model_name='favtemplate', - constraint=models.UniqueConstraint(fields=('user', 'template'), name='unique_user_template'), - ), - ] diff --git a/backend/documents/migrations/0015_auto_20231017_2347.py b/backend/documents/migrations/0015_auto_20231017_2347.py deleted file mode 100644 index 20e1e25..0000000 --- a/backend/documents/migrations/0015_auto_20231017_2347.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 3.2 on 2023-10-17 20:47 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0014_auto_20231014_2357'), - ] - - operations = [ - migrations.AlterField( - model_name='document', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='documents.template', verbose_name='Шаблон'), - ), - migrations.AlterField( - model_name='documentfield', - name='field', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='documents.templatefield', verbose_name='Поле'), - ), - ] diff --git a/backend/documents/migrations/0016_auto_20231018_0034.py b/backend/documents/migrations/0016_auto_20231018_0034.py deleted file mode 100644 index ee37920..0000000 --- a/backend/documents/migrations/0016_auto_20231018_0034.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 3.2 on 2023-10-17 21:34 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0015_auto_20231017_2347'), - ] - - operations = [ - migrations.AlterField( - model_name='template', - name='category', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='documents.category', verbose_name='Категория'), - ), - migrations.AlterField( - model_name='template', - name='owner', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Автор шаблона'), - ), - ] diff --git a/backend/documents/migrations/0017_auto_20231019_1108.py b/backend/documents/migrations/0017_auto_20231019_1108.py deleted file mode 100644 index d031ca7..0000000 --- a/backend/documents/migrations/0017_auto_20231019_1108.py +++ /dev/null @@ -1,40 +0,0 @@ -# Generated by Django 3.2 on 2023-10-19 08:08 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0016_auto_20231018_0034'), - ] - - operations = [ - migrations.AlterModelOptions( - name='document', - options={'default_related_name': 'documents', 'ordering': ('created',), 'verbose_name': 'Документ', 'verbose_name_plural': 'Документы'}, - ), - migrations.AddField( - model_name='document', - name='updated', - field=models.DateTimeField(auto_now=True, verbose_name='Дата изменения'), - ), - migrations.AlterField( - model_name='document', - name='document_fields', - field=models.ManyToManyField(related_name='documents', through='documents.FieldToDocument', to='documents.DocumentField'), - ), - migrations.AlterField( - model_name='document', - name='owner', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='documents', to=settings.AUTH_USER_MODEL, verbose_name='Автор документа'), - ), - migrations.AlterField( - model_name='document', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='documents', to='documents.template', verbose_name='Шаблон'), - ), - ] diff --git a/backend/documents/migrations/0018_alter_documentfield_description.py b/backend/documents/migrations/0018_alter_documentfield_description.py deleted file mode 100644 index cd10473..0000000 --- a/backend/documents/migrations/0018_alter_documentfield_description.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-19 14:05 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0017_auto_20231019_1108'), - ] - - operations = [ - migrations.AlterField( - model_name='documentfield', - name='description', - field=models.TextField(blank=True, null=True, verbose_name='Описание поля'), - ), - ] diff --git a/backend/documents/migrations/0019_auto_20231023_2010.py b/backend/documents/migrations/0019_auto_20231023_2010.py deleted file mode 100644 index 7c415e0..0000000 --- a/backend/documents/migrations/0019_auto_20231023_2010.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 3.2 on 2023-10-23 17:10 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0018_alter_documentfield_description'), - ] - - operations = [ - migrations.CreateModel( - name='TemplateFieldType', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('slug', models.SlugField(unique=True, verbose_name='Тип данных')), - ('name', models.CharField(max_length=50, verbose_name='Наименование типа')), - ('mask', models.CharField(blank=True, max_length=255, null=True, verbose_name='Маска допустимых значений')), - ], - options={ - 'verbose_name': 'Тип поля шаблона', - 'verbose_name_plural': 'Типы поля шаблона', - 'ordering': ('name',), - }, - ), - migrations.AddField( - model_name='templatefield', - name='type', - field=models.ForeignKey(blank=True, help_text='Тип поля', null=True, on_delete=django.db.models.deletion.SET_NULL, to='documents.templatefieldtype', verbose_name='Тип'), - ), - ] diff --git a/backend/documents/migrations/0020_alter_templatefield_hint.py b/backend/documents/migrations/0020_alter_templatefield_hint.py deleted file mode 100644 index ee66800..0000000 --- a/backend/documents/migrations/0020_alter_templatefield_hint.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-23 17:54 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0019_auto_20231023_2010'), - ] - - operations = [ - migrations.AlterField( - model_name='templatefield', - name='hint', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Подсказка'), - ), - ] diff --git a/backend/documents/migrations/0021_rename_slug_templatefieldtype_type.py b/backend/documents/migrations/0021_rename_slug_templatefieldtype_type.py deleted file mode 100644 index 60be64a..0000000 --- a/backend/documents/migrations/0021_rename_slug_templatefieldtype_type.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-23 18:50 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0020_alter_templatefield_hint'), - ] - - operations = [ - migrations.RenameField( - model_name='templatefieldtype', - old_name='slug', - new_name='type', - ), - ] diff --git a/backend/documents/migrations/0022_auto_20231025_2055.py b/backend/documents/migrations/0022_auto_20231025_2055.py deleted file mode 100644 index ff58211..0000000 --- a/backend/documents/migrations/0022_auto_20231025_2055.py +++ /dev/null @@ -1,107 +0,0 @@ -# Generated by Django 3.2 on 2023-10-25 17:55 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0021_rename_slug_templatefieldtype_type'), - ] - - operations = [ - migrations.AlterModelOptions( - name='documentfield', - options={'ordering': ('field__template', 'field'), 'verbose_name': 'Поле документа', 'verbose_name_plural': 'Поля документа'}, - ), - migrations.AlterModelOptions( - name='favdocument', - options={'default_related_name': 'favorite_documents', 'ordering': ('user', 'document'), 'verbose_name': 'Избранный документ', 'verbose_name_plural': 'Избранные документы'}, - ), - migrations.AlterModelOptions( - name='favtemplate', - options={'default_related_name': 'favorite_templates', 'ordering': ('user', 'template'), 'verbose_name': 'Избранный шаблон', 'verbose_name_plural': 'Избранные шаблоны'}, - ), - migrations.AlterModelOptions( - name='template', - options={'default_related_name': 'templates', 'ordering': ('name',), 'verbose_name': 'Шаблон', 'verbose_name_plural': 'Шаблоны'}, - ), - migrations.AlterModelOptions( - name='templatefield', - options={'default_related_name': 'fields', 'ordering': ('template', 'name'), 'verbose_name': 'Поле шаблона', 'verbose_name_plural': 'Поля шаблона'}, - ), - migrations.AlterField( - model_name='document', - name='completed', - field=models.BooleanField(default=False, verbose_name='Документ заполнен'), - ), - migrations.AlterField( - model_name='documentfield', - name='description', - field=models.TextField(blank=True, default='', verbose_name='Описание поля'), - preserve_default=False, - ), - migrations.AlterField( - model_name='documentfield', - name='field', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='document_fields', to='documents.templatefield', verbose_name='Поле'), - ), - migrations.AlterField( - model_name='favdocument', - name='document', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_documents', to='documents.document', verbose_name='Документ'), - preserve_default=False, - ), - migrations.AlterField( - model_name='favdocument', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_documents', to='users.user', verbose_name='Пользователь'), - preserve_default=False, - ), - migrations.AlterField( - model_name='favtemplate', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_templates', to='documents.template', verbose_name='Шаблон'), - preserve_default=False, - ), - migrations.AlterField( - model_name='favtemplate', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_templates', to='users.user', verbose_name='Пользователь'), - preserve_default=False, - ), - migrations.AlterField( - model_name='fieldtodocument', - name='document', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='document_of_field', to='documents.document'), - ), - migrations.AlterField( - model_name='fieldtodocument', - name='fields', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fields_of_document', to='documents.documentfield'), - ), - migrations.AlterField( - model_name='template', - name='category', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='templates', to='documents.category', verbose_name='Категория'), - ), - migrations.AlterField( - model_name='template', - name='owner', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='templates', to=settings.AUTH_USER_MODEL, verbose_name='Автор шаблона'), - ), - migrations.AlterField( - model_name='templatefield', - name='hint', - field=models.CharField(blank=True, default='', max_length=255, verbose_name='Подсказка'), - preserve_default=False, - ), - migrations.AlterField( - model_name='templatefield', - name='type', - field=models.ForeignKey(blank=True, help_text='Тип поля', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='documents.templatefieldtype', verbose_name='Тип'), - ), - ] diff --git a/backend/documents/migrations/0023_alter_templatefieldtype_mask.py b/backend/documents/migrations/0023_alter_templatefieldtype_mask.py deleted file mode 100644 index c20b6e3..0000000 --- a/backend/documents/migrations/0023_alter_templatefieldtype_mask.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 3.2 on 2023-10-25 18:10 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0022_auto_20231025_2055'), - ] - - operations = [ - migrations.AlterField( - model_name='templatefieldtype', - name='mask', - field=models.CharField(blank=True, default='', max_length=255, verbose_name='Маска допустимых значений'), - preserve_default=False, - ), - ] diff --git a/backend/documents/migrations/0024_templatefield_length.py b/backend/documents/migrations/0024_templatefield_length.py deleted file mode 100644 index 4bd25e7..0000000 --- a/backend/documents/migrations/0024_templatefield_length.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-11-03 14:17 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0023_alter_templatefieldtype_mask'), - ] - - operations = [ - migrations.AddField( - model_name='templatefield', - name='length', - field=models.PositiveIntegerField(blank=True, null=True, verbose_name='Размер поля ввода'), - ), - ] diff --git a/backend/documents/migrations/0025_templatefield_image.py b/backend/documents/migrations/0025_templatefield_image.py deleted file mode 100644 index d2c86af..0000000 --- a/backend/documents/migrations/0025_templatefield_image.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-11-07 10:22 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0024_templatefield_length'), - ] - - operations = [ - migrations.AddField( - model_name='templatefield', - name='image', - field=models.ImageField(blank=True, null=True, upload_to='posts/', verbose_name='Картинка'), - ), - ] diff --git a/backend/documents/migrations/0026_auto_20231107_1326.py b/backend/documents/migrations/0026_auto_20231107_1326.py deleted file mode 100644 index b5fddab..0000000 --- a/backend/documents/migrations/0026_auto_20231107_1326.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 3.2 on 2023-11-07 10:26 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0025_templatefield_image'), - ] - - operations = [ - migrations.RemoveField( - model_name='templatefield', - name='image', - ), - migrations.AddField( - model_name='template', - name='image', - field=models.ImageField(blank=True, null=True, upload_to='posts/', verbose_name='Картинка'), - ), - ] diff --git a/backend/documents/migrations/0027_auto_20231108_1053.py b/backend/documents/migrations/0027_auto_20231108_1053.py deleted file mode 100644 index 151d890..0000000 --- a/backend/documents/migrations/0027_auto_20231108_1053.py +++ /dev/null @@ -1,27 +0,0 @@ -# Generated by Django 3.2 on 2023-11-08 07:53 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0026_auto_20231107_1326'), - ] - - operations = [ - migrations.RemoveField( - model_name='document', - name='document_fields', - ), - migrations.AddField( - model_name='documentfield', - name='document', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='document_fields', to='documents.document', verbose_name='Документ'), - preserve_default=False, - ), - migrations.DeleteModel( - name='FieldToDocument', - ), - ] diff --git a/backend/documents/migrations/0028_remove_documentfield_description.py b/backend/documents/migrations/0028_remove_documentfield_description.py deleted file mode 100644 index 5e0e3bc..0000000 --- a/backend/documents/migrations/0028_remove_documentfield_description.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 3.2 on 2023-11-08 08:50 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0027_auto_20231108_1053'), - ] - - operations = [ - migrations.RemoveField( - model_name='documentfield', - name='description', - ), - ] diff --git a/backend/documents/migrations/0029_alter_template_modified.py b/backend/documents/migrations/0029_alter_template_modified.py deleted file mode 100644 index bf37d57..0000000 --- a/backend/documents/migrations/0029_alter_template_modified.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-11-18 18:09 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0028_remove_documentfield_description'), - ] - - operations = [ - migrations.AlterField( - model_name='template', - name='modified', - field=models.DateTimeField(auto_now=True, verbose_name='Дата модификации'), - ), - ] diff --git a/backend/documents/migrations/0030_auto_20231118_2115.py b/backend/documents/migrations/0030_auto_20231118_2115.py deleted file mode 100644 index ebd149a..0000000 --- a/backend/documents/migrations/0030_auto_20231118_2115.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 3.2 on 2023-11-18 18:15 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0029_alter_template_modified'), - ] - - operations = [ - migrations.RemoveField( - model_name='template', - name='modified', - ), - migrations.AddField( - model_name='template', - name='updated', - field=models.DateTimeField(auto_now=True, verbose_name='Дата изменения'), - ), - ] diff --git a/backend/documents/migrations/0031_alter_template_template.py b/backend/documents/migrations/0031_alter_template_template.py deleted file mode 100644 index 150251f..0000000 --- a/backend/documents/migrations/0031_alter_template_template.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-11-21 05:28 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0030_auto_20231118_2115'), - ] - - operations = [ - migrations.AlterField( - model_name='template', - name='template', - field=models.FileField(upload_to='templates/', verbose_name='Файл шаблона'), - ), - ] diff --git a/backend/documents/migrations/0032_templatefield_default.py b/backend/documents/migrations/0032_templatefield_default.py deleted file mode 100644 index daa9fdf..0000000 --- a/backend/documents/migrations/0032_templatefield_default.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-11-23 14:35 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0031_alter_template_template'), - ] - - operations = [ - migrations.AddField( - model_name='templatefield', - name='default', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Значение по умолчанию'), - ), - ] diff --git a/backend/documents/migrations/0033_templatefieldgroup_type_object.py b/backend/documents/migrations/0033_templatefieldgroup_type_object.py deleted file mode 100644 index 37bd798..0000000 --- a/backend/documents/migrations/0033_templatefieldgroup_type_object.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 3.2 on 2024-01-02 20:57 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('base_objects', '0004_auto_20240102_2047'), - ('documents', '0032_templatefield_default'), - ] - - operations = [ - migrations.AddField( - model_name='templatefieldgroup', - name='type_object', - field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='base_objects.baseobject', verbose_name='Обьект'), - ), - ] diff --git a/backend/documents/migrations/0034_templatefield_base_object_field.py b/backend/documents/migrations/0034_templatefield_base_object_field.py deleted file mode 100644 index b292cb4..0000000 --- a/backend/documents/migrations/0034_templatefield_base_object_field.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 3.2 on 2024-01-03 11:04 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('base_objects', '0005_alter_object_base_object'), - ('documents', '0033_templatefieldgroup_type_object'), - ] - - operations = [ - migrations.AddField( - model_name='templatefield', - name='base_object_field', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='base_objects.baseobjectfield', verbose_name='Поле базового обьекта'), - ), - ] diff --git a/backend/documents/models.py b/backend/documents/models.py index aab3a6b..1bd3e6a 100644 --- a/backend/documents/models.py +++ b/backend/documents/models.py @@ -150,7 +150,7 @@ class TemplateFieldGroup(models.Model): verbose_name="Обьект", null=True, blank=True, - default=None + # default=None ) class Meta: @@ -198,6 +198,7 @@ class TemplateField(models.Model): verbose_name="Поле базового обьекта", null=True, blank=True, + default=1 ) tag = models.CharField(max_length=255, verbose_name="Тэг поля") name = models.CharField(max_length=255, verbose_name="Наименование поля") diff --git a/backend/request/objects.http b/backend/request/objects.http index aad2263..b52d468 100644 --- a/backend/request/objects.http +++ b/backend/request/objects.http @@ -7,7 +7,7 @@ ### Все базовые обьекты GET {{URL}}/base_objects/ Content-Type: application/json -Authorization: {{TOKEN}} +# Authorization: {{TOKEN}} { } @@ -15,7 +15,7 @@ Authorization: {{TOKEN}} ### Все поля базового обьекта GET {{URL}}/base_object_fields/ Content-Type: application/json -Authorization: {{TOKEN}} +# Authorization: {{TOKEN}} { } @@ -23,7 +23,7 @@ Authorization: {{TOKEN}} ### Все поля базового обьекта GET {{URL}}/objects/ Content-Type: application/json -Authorization: {{TOKEN}} +# Authorization: {{TOKEN}} { } @@ -31,7 +31,7 @@ Authorization: {{TOKEN}} ### Все поля базового обьекта GET {{URL}}/object_fields/ Content-Type: application/json -Authorization: {{TOKEN}} +# Authorization: {{TOKEN}} { } \ No newline at end of file diff --git a/backend/request/template.http b/backend/request/template.http index ca97d79..f83c612 100644 --- a/backend/request/template.http +++ b/backend/request/template.http @@ -1,13 +1,13 @@ @TOKEN = Token 66ba19730c8aaad7378dc20fae75656b06b00e02 -# @URL = https://documents-template.site/ -@URL = http://localhost:8000/api/v2 +@URL = https://doky.pro/api/v2 +# @URL = http://localhost:8000/api/v2 ### Все шаблоны GET {{URL}}/templates/ Content-Type: application/json -Authorization: {{TOKEN}} +# Authorization: {{TOKEN}} { } diff --git a/backend/request/users.http b/backend/request/users.http index d0a5c46..29b9889 100644 --- a/backend/request/users.http +++ b/backend/request/users.http @@ -1,6 +1,6 @@ @TOKEN = Token c911144116cd1689f8fd01e00102bcd1ce4cc175 -# @URL = https://documents-template.site -@URL = http://127.0.0.1:8000/api/v2 +@URL = https://doki.pro/api/v2 +# @URL = http://127.0.0.1:8000/api/v2 ### POST {{URL}}/users/ diff --git a/backend/users/tests.py b/backend/users/tests.py index 9fa6235..19b0c86 100644 --- a/backend/users/tests.py +++ b/backend/users/tests.py @@ -1,61 +1,61 @@ -# import shutil -# import tempfile - -# from django.conf import settings -# from django.contrib.auth import get_user_model -# from django.test import override_settings -# from rest_framework import status -# from rest_framework.test import APIClient, APITestCase - -# DEFAULT_NUMBER_OF_USERS = 0 -# TEMP_MEDIA_ROOT = tempfile.mkdtemp(dir=settings.BASE_DIR) - -# User = get_user_model() - - -# @override_settings(MEDIA_ROOT=TEMP_MEDIA_ROOT) -# class TestAPIRegistrationAndAuthenticationUser(APITestCase): -# @classmethod -# def setUpClass(cls): -# super().setUpClass() -# cls.client = APIClient() -# cls.test_user_data = { -# "email": "user@mail.ru", -# "password": "qwertyqwerty123", -# } -# cls.response_registration = cls.client.post( -# "/api/users/", cls.test_user_data -# ) - -# @classmethod -# def tearDownClass(cls): -# super().tearDownClass() -# shutil.rmtree(TEMP_MEDIA_ROOT, ignore_errors=True) - -# def test_registration(self): -# response = self.response_registration -# user = User.objects.first() -# user_data = [user.id, user.email] -# user_count = User.objects.count() - -# self.assertEqual(response.status_code, status.HTTP_201_CREATED) -# self.assertEqual(user_data, [*response.data.values()]) -# self.assertEqual(user_count, DEFAULT_NUMBER_OF_USERS + 1) - -# def test_authentication(self): -# response_registration = self.response_registration -# response_token_login = self.client.post( -# "/api/auth/token/login/", self.test_user_data -# ) -# response_auth = self.client.get( -# "/api/users/me/", -# HTTP_AUTHORIZATION=f'Token {response_token_login.data["auth_token"]}', -# ) -# self.assertEqual( -# response_registration.data["id"], -# response_auth.data["id"], -# ) -# self.assertEqual( -# response_registration.data["email"], -# response_auth.data["email"], -# ) \ No newline at end of file +import shutil +import tempfile + +from django.conf import settings +from django.contrib.auth import get_user_model +from django.test import override_settings +from rest_framework import status +from rest_framework.test import APIClient, APITestCase + +DEFAULT_NUMBER_OF_USERS = 0 +TEMP_MEDIA_ROOT = tempfile.mkdtemp(dir=settings.BASE_DIR) + +User = get_user_model() + + +@override_settings(MEDIA_ROOT=TEMP_MEDIA_ROOT) +class TestAPIRegistrationAndAuthenticationUser(APITestCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.client = APIClient() + cls.test_user_data = { + "email": "user@mail.ru", + "password": "qwertyqwerty123", + } + cls.response_registration = cls.client.post( + "/api/users/", cls.test_user_data + ) + + @classmethod + def tearDownClass(cls): + super().tearDownClass() + shutil.rmtree(TEMP_MEDIA_ROOT, ignore_errors=True) + + def test_registration(self): + response = self.response_registration + user = User.objects.first() + user_data = [user.id, user.email] + user_count = User.objects.count() + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + self.assertEqual(user_data, [*response.data.values()]) + self.assertEqual(user_count, DEFAULT_NUMBER_OF_USERS + 1) + + def test_authentication(self): + response_registration = self.response_registration + response_token_login = self.client.post( + "/api/auth/token/login/", self.test_user_data + ) + response_auth = self.client.get( + "/api/users/me/", + HTTP_AUTHORIZATION=f'Token {response_token_login.data["auth_token"]}', + ) + self.assertEqual( + response_registration.data["id"], + response_auth.data["id"], + ) + self.assertEqual( + response_registration.data["email"], + response_auth.data["email"], + ) \ No newline at end of file From 9657fdc29fd74061b6830fabee9970588d2c8521 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Sun, 21 Jan 2024 14:22:36 +0300 Subject: [PATCH 60/80] fix --- backend/users/tests.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/users/tests.py b/backend/users/tests.py index 19b0c86..d5c6a87 100644 --- a/backend/users/tests.py +++ b/backend/users/tests.py @@ -24,7 +24,7 @@ def setUpClass(cls): "password": "qwertyqwerty123", } cls.response_registration = cls.client.post( - "/api/users/", cls.test_user_data + "/api/v2/users/", cls.test_user_data ) @classmethod @@ -45,10 +45,10 @@ def test_registration(self): def test_authentication(self): response_registration = self.response_registration response_token_login = self.client.post( - "/api/auth/token/login/", self.test_user_data + "/api/v2/auth/token/login/", self.test_user_data ) response_auth = self.client.get( - "/api/users/me/", + "/api/v2/users/me/", HTTP_AUTHORIZATION=f'Token {response_token_login.data["auth_token"]}', ) self.assertEqual( From 294189632fa5e674b37ded5541a45558f7bd69b2 Mon Sep 17 00:00:00 2001 From: Nikita Romanov Date: Tue, 12 Mar 2024 15:12:55 +0300 Subject: [PATCH 61/80] add validator --- backend/api/urls.py | 3 +- backend/api/v2/__init__.py | 0 backend/api/v2/apps.py | 6 + backend/api/v2/documents/__init__.py | 0 backend/api/v2/documents/serializers.py | 180 ++++++++++ backend/api/v2/documents/views.py | 218 ++++++++++++ backend/api/v2/favorites/__init__.py | 0 backend/api/v2/favorites/serializers.py | 22 ++ backend/api/v2/favorites/views.py | 93 ++++++ backend/api/v2/filters.py | 0 backend/api/v2/migrations/__init__.py | 0 backend/api/v2/objects/__init__.py | 0 backend/api/v2/objects/serializers.py | 41 +++ backend/api/v2/objects/views.py | 36 ++ backend/api/v2/permissions.py | 58 ++++ backend/api/v2/templates/__init__.py | 0 backend/api/v2/templates/serializers.py | 310 ++++++++++++++++++ backend/api/v2/templates/views.py | 160 +++++++++ backend/api/v2/tests.py | 193 +++++++++++ backend/api/v2/urls.py | 98 ++++++ backend/api/v2/users/__init__.py | 0 backend/api/v2/users/serializers.py | 31 ++ backend/api/v2/users/views.py | 74 +++++ backend/api/v2/utils.py | 110 +++++++ backend/backend/settings.py | 26 +- backend/backend/urls.py | 20 +- backend/base_objects/__init__.py | 0 backend/base_objects/admin.py | 23 ++ backend/base_objects/apps.py | 6 + .../base_objects/migrations/0001_initial.py | 75 +++++ .../0002_alter_object_base_object.py | 19 ++ .../0003_alter_object_base_object.py | 19 ++ backend/base_objects/migrations/__init__.py | 0 backend/base_objects/models.py | 123 +++++++ backend/base_objects/tests.py | 3 + backend/documents/admin.py | 3 +- backend/documents/migrations/0001_initial.py | 147 +++++++-- .../migrations/0002_auto_20231007_1448.py | 101 ------ .../migrations/0003_auto_20231007_1516.py | 51 --- .../0004_alter_templatefield_hint.py | 18 - .../0005_alter_document_completed.py | 18 - .../0006_alter_templatefield_template_id.py | 19 -- .../migrations/0006_auto_20231011_1727.py | 35 -- .../migrations/0007_auto_20231011_2320.py | 31 -- .../migrations/0007_document_fields.py | 18 - ..._rename_fields_document_docuemnt_fields.py | 18 - ...ocuemnt_fields_document_document_fields.py | 18 - .../migrations/0010_auto_20231014_1451.py | 28 -- ...o_20231011_2320_0010_auto_20231014_1451.py | 14 - .../migrations/0012_auto_20231014_2014.py | 45 --- .../migrations/0013_auto_20231014_2225.py | 37 --- .../migrations/0014_auto_20231014_2357.py | 21 -- .../migrations/0015_auto_20231017_2347.py | 24 -- .../migrations/0016_auto_20231018_0034.py | 26 -- .../migrations/0017_auto_20231019_1108.py | 40 --- .../0018_alter_documentfield_description.py | 18 - .../migrations/0019_auto_20231023_2010.py | 33 -- .../0020_alter_templatefield_hint.py | 18 - ...0021_rename_slug_templatefieldtype_type.py | 18 - .../migrations/0022_auto_20231025_2055.py | 107 ------ .../0023_alter_templatefieldtype_mask.py | 19 -- .../migrations/0024_templatefield_length.py | 18 - .../migrations/0025_templatefield_image.py | 18 - .../migrations/0026_auto_20231107_1326.py | 22 -- .../migrations/0027_auto_20231108_1053.py | 27 -- .../0028_remove_documentfield_description.py | 17 - .../0029_alter_template_modified.py | 18 - .../migrations/0030_auto_20231118_2115.py | 22 -- .../0031_alter_template_template.py | 18 - .../migrations/0032_templatefield_default.py | 18 - backend/documents/models.py | 21 ++ backend/request/documents.http | 24 +- backend/request/objects.http | 37 +++ backend/request/template.http | 30 +- backend/request/users.http | 18 +- backend/users/models.py | 8 + backend/users/tests.py | 6 +- backend/users/validators.py | 16 +- 78 files changed, 2160 insertions(+), 1050 deletions(-) create mode 100644 backend/api/v2/__init__.py create mode 100644 backend/api/v2/apps.py create mode 100644 backend/api/v2/documents/__init__.py create mode 100644 backend/api/v2/documents/serializers.py create mode 100644 backend/api/v2/documents/views.py create mode 100644 backend/api/v2/favorites/__init__.py create mode 100644 backend/api/v2/favorites/serializers.py create mode 100644 backend/api/v2/favorites/views.py create mode 100644 backend/api/v2/filters.py create mode 100644 backend/api/v2/migrations/__init__.py create mode 100644 backend/api/v2/objects/__init__.py create mode 100644 backend/api/v2/objects/serializers.py create mode 100644 backend/api/v2/objects/views.py create mode 100644 backend/api/v2/permissions.py create mode 100644 backend/api/v2/templates/__init__.py create mode 100644 backend/api/v2/templates/serializers.py create mode 100644 backend/api/v2/templates/views.py create mode 100644 backend/api/v2/tests.py create mode 100644 backend/api/v2/urls.py create mode 100644 backend/api/v2/users/__init__.py create mode 100644 backend/api/v2/users/serializers.py create mode 100644 backend/api/v2/users/views.py create mode 100644 backend/api/v2/utils.py create mode 100644 backend/base_objects/__init__.py create mode 100644 backend/base_objects/admin.py create mode 100644 backend/base_objects/apps.py create mode 100644 backend/base_objects/migrations/0001_initial.py create mode 100644 backend/base_objects/migrations/0002_alter_object_base_object.py create mode 100644 backend/base_objects/migrations/0003_alter_object_base_object.py create mode 100644 backend/base_objects/migrations/__init__.py create mode 100644 backend/base_objects/models.py create mode 100644 backend/base_objects/tests.py delete mode 100644 backend/documents/migrations/0002_auto_20231007_1448.py delete mode 100644 backend/documents/migrations/0003_auto_20231007_1516.py delete mode 100644 backend/documents/migrations/0004_alter_templatefield_hint.py delete mode 100644 backend/documents/migrations/0005_alter_document_completed.py delete mode 100644 backend/documents/migrations/0006_alter_templatefield_template_id.py delete mode 100644 backend/documents/migrations/0006_auto_20231011_1727.py delete mode 100644 backend/documents/migrations/0007_auto_20231011_2320.py delete mode 100644 backend/documents/migrations/0007_document_fields.py delete mode 100644 backend/documents/migrations/0008_rename_fields_document_docuemnt_fields.py delete mode 100644 backend/documents/migrations/0009_rename_docuemnt_fields_document_document_fields.py delete mode 100644 backend/documents/migrations/0010_auto_20231014_1451.py delete mode 100644 backend/documents/migrations/0011_merge_0007_auto_20231011_2320_0010_auto_20231014_1451.py delete mode 100644 backend/documents/migrations/0012_auto_20231014_2014.py delete mode 100644 backend/documents/migrations/0013_auto_20231014_2225.py delete mode 100644 backend/documents/migrations/0014_auto_20231014_2357.py delete mode 100644 backend/documents/migrations/0015_auto_20231017_2347.py delete mode 100644 backend/documents/migrations/0016_auto_20231018_0034.py delete mode 100644 backend/documents/migrations/0017_auto_20231019_1108.py delete mode 100644 backend/documents/migrations/0018_alter_documentfield_description.py delete mode 100644 backend/documents/migrations/0019_auto_20231023_2010.py delete mode 100644 backend/documents/migrations/0020_alter_templatefield_hint.py delete mode 100644 backend/documents/migrations/0021_rename_slug_templatefieldtype_type.py delete mode 100644 backend/documents/migrations/0022_auto_20231025_2055.py delete mode 100644 backend/documents/migrations/0023_alter_templatefieldtype_mask.py delete mode 100644 backend/documents/migrations/0024_templatefield_length.py delete mode 100644 backend/documents/migrations/0025_templatefield_image.py delete mode 100644 backend/documents/migrations/0026_auto_20231107_1326.py delete mode 100644 backend/documents/migrations/0027_auto_20231108_1053.py delete mode 100644 backend/documents/migrations/0028_remove_documentfield_description.py delete mode 100644 backend/documents/migrations/0029_alter_template_modified.py delete mode 100644 backend/documents/migrations/0030_auto_20231118_2115.py delete mode 100644 backend/documents/migrations/0031_alter_template_template.py delete mode 100644 backend/documents/migrations/0032_templatefield_default.py create mode 100644 backend/request/objects.http diff --git a/backend/api/urls.py b/backend/api/urls.py index b4a93e2..e0ca5df 100644 --- a/backend/api/urls.py +++ b/backend/api/urls.py @@ -5,7 +5,8 @@ from django.conf.urls import url urlpatterns = [ - path("", include("api.v1.urls")), + # path("v1/", include("api.v1.urls")), + path("v2/", include("api.v2.urls")), ] diff --git a/backend/api/v2/__init__.py b/backend/api/v2/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v2/apps.py b/backend/api/v2/apps.py new file mode 100644 index 0000000..66656fd --- /dev/null +++ b/backend/api/v2/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ApiConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'api' diff --git a/backend/api/v2/documents/__init__.py b/backend/api/v2/documents/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v2/documents/serializers.py b/backend/api/v2/documents/serializers.py new file mode 100644 index 0000000..17ef39a --- /dev/null +++ b/backend/api/v2/documents/serializers.py @@ -0,0 +1,180 @@ +"""Сериализаторы для API.""" +import base64 +from django.contrib.auth import get_user_model +from django.utils import timezone +from django.core.files.base import ContentFile +from django.db import transaction +from rest_framework import serializers + +from api.v2.utils import custom_fieldtypes_validation +from api.v2.templates.serializers import (TemplateGroupSerializer, + TemplateSerializerMinified, + TemplateFieldSerializerMinified) +from core.constants import Messages +from documents.models import ( + Document, + DocumentField, + FavDocument) + +User = get_user_model() + + +class DocumentFieldSerializer(serializers.ModelSerializer): + """Сериализатор поля документов.""" + + description = serializers.CharField(required=False, max_length=200) + + class Meta: + model = DocumentField + exclude = ("document",) + + +class DocumentFieldWriteSerializer(serializers.ModelSerializer): + """Сериализатор для полей документа или превью шаблона.""" + + # description = serializers.CharField(required=False, max_length=200) + + class Meta: + model = DocumentField + fields = ("field", "value") + + def validate_field(self, template_field): + template_fields = self.context.get("template_fields", set()) + if template_field not in template_fields: + raise serializers.ValidationError( + Messages.WRONG_TEMPLATE_FIELD.format(template_field.id) + ) + return template_field + + +class DocumentReadSerializerMinified(serializers.ModelSerializer): + """Сериализатор документов сокращенный (без информации о полях)""" + + is_favorited = serializers.SerializerMethodField() + + class Meta: + model = Document + fields = ( + "id", + "created", + "updated", + "completed", + "description", + "template", + "owner", + "is_favorited", + ) + + def get_is_favorited(self, document: Document) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavDocument.objects.filter( + user=user, document=document + ).exists() + + +class DocumentReadSerializerExtended(serializers.ModelSerializer): + """Сериализатор документов расширенный (с информацией полей шаблона).""" + + grouped_fields = TemplateGroupSerializer( + read_only=True, + many=True, + source="template.field_groups", + allow_empty=True, + ) + ungrouped_fields = serializers.SerializerMethodField() + is_favorited = serializers.SerializerMethodField() + template = TemplateSerializerMinified(read_only=True) + + class Meta: + model = Document + fields = ( + "id", + "created", + "updated", + "completed", + "description", + "template", + "owner", + "is_favorited", + "grouped_fields", + "ungrouped_fields", + ) + + def get_is_favorited(self, document: Document) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavDocument.objects.filter( + user=user, document=document + ).exists() + + def get_ungrouped_fields(self, instance): + solo_fields = instance.template.fields.filter(group=None).order_by( + "id" + ) + return TemplateFieldSerializerMinified(solo_fields, many=True).data + + def to_representation(self, instance): + response = super().to_representation(instance) + response["grouped_fields"].sort(key=lambda x: x["id"]) + # add field values + field_vals = {} + for document_field in instance.document_fields.all(): + field_vals[document_field.field.id] = document_field.value + for group in response["grouped_fields"]: + for field in group["fields"]: + id = field.get("id") + if id in field_vals: + field["value"] = field_vals[id] + for field in response["ungrouped_fields"]: + id = field.get("id") + if id in field_vals: + field["value"] = field_vals[id] + return response + + +class DocumentWriteSerializer(serializers.ModelSerializer): + """Сериализатор документов.""" + + document_fields = DocumentFieldSerializer(many=True) + + class Meta: + model = Document + fields = ( + "id", + "created", + "completed", + "description", + "template", + "document_fields", + ) + + @transaction.atomic + def create(self, validated_data): + """Создание документа и полей документа""" + document_fields = validated_data.pop("document_fields", None) + document = Document.objects.create(**validated_data) + custom_fieldtypes_validation(document_fields) + document.create_document_fields(document_fields) + return document + + @transaction.atomic + def update(self, instance, validated_data): + """Обновление документа и полей документа""" + document_fields = validated_data.pop("document_fields", None) + Document.objects.filter(id=instance.id).update( + **validated_data, updated=timezone.now() + ) + document = Document.objects.get(id=instance.id) + if document_fields is not None: + custom_fieldtypes_validation(document_fields) + document.document_fields.all().delete() + document.create_document_fields(document_fields) + return document + + def to_representation(self, instance): + return DocumentReadSerializerMinified( + instance, context={"request": self.context.get("request")} + ).data diff --git a/backend/api/v2/documents/views.py b/backend/api/v2/documents/views.py new file mode 100644 index 0000000..e5046cf --- /dev/null +++ b/backend/api/v2/documents/views.py @@ -0,0 +1,218 @@ +"""Вьюсеты v1 API.""" +from datetime import datetime +import logging + +from django.contrib.auth import get_user_model +from django.http import FileResponse +from django.shortcuts import get_object_or_404 +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework import ( + filters, + status, + viewsets, + views, +) +from rest_framework.decorators import action +from rest_framework.exceptions import PermissionDenied +from rest_framework.permissions import IsAuthenticated, AllowAny +from rest_framework.response import Response + +from core.template_render import DocumentTemplate +from .serializers import ( + DocumentFieldSerializer, + DocumentReadSerializerExtended, + DocumentReadSerializerMinified, + DocumentWriteSerializer, + DocumentFieldWriteSerializer, +) +from api.v2 import utils as v1utils +from documents.models import Document, Template + +logger = logging.getLogger(__name__) + +User = get_user_model() + + +def send_file(filestream, filename: str, as_attachment: bool = True): + """Функция подготовки открытого двоичного файла к отправке.""" + response = FileResponse( + streaming_content=filestream, + as_attachment=as_attachment, + filename=filename, + ) + return response + + +class DocumentViewSet(viewsets.ModelViewSet): + """Документ.""" + + queryset = Document.objects.all() + serializer_class = DocumentReadSerializerMinified + http_method_names = ("get", "post", "patch", "delete") + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + filter_backends = ( + filters.SearchFilter, + filters.OrderingFilter, + DjangoFilterBackend, + ) + pagination_class = None + filterset_fields = ("owner",) + search_fields = ("owner",) + + def get_queryset(self): + """Выдаем только список документов текущего пользователя.""" + # ЗАглушка + if self.request.user.is_authenticated: + return self.request.user.documents + else: + user = User.objects.get(id=1) + return Document.objects.filter(owner=user) + return Document.objects.none() + + def get_serializer_class(self): + """Выбор сериализатора.""" + if self.action == "retrieve": + return DocumentReadSerializerExtended + elif self.action == "list": + return DocumentReadSerializerMinified + return DocumentWriteSerializer + + def perform_create(self, serializer): + serializer.save(owner=self.request.user) + + @action( + detail=False, + permission_classes=[ + IsAuthenticated, + # AllowAny, # Заглушка + ], + url_path=r"draft", + ) + def draft_documents(self, request): + """Возвращает список незаконченных документов/черновиков""" + user = self.request.user + queryset = Document.objects.filter(completed=False, owner=user) + serializer = DocumentReadSerializerMinified( + queryset, many=True, context={"request": request} + ) + return Response(serializer.data, status=status.HTTP_200_OK) + + @action( + detail=False, + permission_classes=[ + IsAuthenticated, + ], + url_path=r"history", + ) + def history_documents(self, request): + """Возвращает список законченных документов/история""" + user = self.request.user + queryset = Document.objects.filter(completed=True, owner=user) + serializer = DocumentReadSerializerMinified( + queryset, many=True, context={"request": request} + ) + return Response(serializer.data, status=status.HTTP_200_OK) + + @action( + detail=True, + permission_classes=[ + IsAuthenticated + ], + url_path=r"download_document", + ) + def download_document(self, request, pk=None): + """Скачивание готового документа.""" + logger.debug(f"Start docx generation for document_id {pk}") + start_time = datetime.utcnow() + document = get_object_or_404(Document, id=pk) + buffer = v1utils.fill_docx_template_for_document(document) + docx_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for document_id {pk} is {docx_time-start_time}" + ) + response = send_file(buffer, f"{document.template.name}.docx") + return response + + @action( + detail=True, + permission_classes=[ + IsAuthenticated + ], + url_path="download_pdf", + ) + def download_pdf(self, request, pk=None): + """Генерация и выдача на скачивание pdf-файла.""" + document = get_object_or_404(Document, pk=pk) + logger.debug(f"Start docx generation for document_id {pk}") + start_time = datetime.utcnow() + buffer = v1utils.create_document_pdf_for_export(document) + pdf_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for document_id {pk} is {pdf_time-start_time}" + ) + response = send_file(buffer, f"{document.template.name}.pdf") + return response + + +class DocumentFieldViewSet(viewsets.ModelViewSet): + """Поле шаблона.""" + + queryset = Document.objects.all() + serializer_class = DocumentFieldSerializer + http_method_names = ("get",) + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + pagination_class = None + + def get_queryset(self): + document_id = self.kwargs.get("document_id") + document = get_object_or_404(Document, id=document_id) + if ( + not self.request.user.is_staff + and document.owner != self.request.user + ): + raise PermissionDenied() + return document.document_fields.all() + + +class AnonymousDownloadPreviewAPIView(views.APIView): + permission_classes = (AllowAny,) + + def post(self, request, template_id): + logger.debug(f"Start preview generation for template {template_id}") + start_time = datetime.utcnow() + template = get_object_or_404(Template, id=template_id) + document_fields = request.data.get("document_fields") + serializer = DocumentFieldWriteSerializer( + data=document_fields, + context={"template_fields": set(template.fields.all())}, + many=True, + ) + serializer.is_valid(raise_exception=True) + v1utils.custom_fieldtypes_validation(serializer.validated_data) + context = {} + for data in serializer.validated_data: + if data["value"]: # write only fields with non empty value + context[data["field"].tag] = data["value"] + context_default = { + field.tag: field.default or field.name + for field in template.fields.all() + } + doc = DocumentTemplate(template.template) + buffer = doc.get_partial(context, context_default) + filename = f"{template.name}_preview.docx" + docx_time = datetime.utcnow() + logger.debug( + f"Time of docx generation for template {template_id} is {docx_time-start_time}" + ) + if request.query_params.get("pdf"): + buffer = v1utils.convert_file_to_pdf(buffer) + filename = f"{template.name}_preview.pdf" + pdf_time = datetime.utcnow() + logger.debug( + f"Time of pdf generation for template {template_id} is {pdf_time-docx_time}" + ) + response = send_file(buffer, filename) + return response + diff --git a/backend/api/v2/favorites/__init__.py b/backend/api/v2/favorites/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v2/favorites/serializers.py b/backend/api/v2/favorites/serializers.py new file mode 100644 index 0000000..a0f7527 --- /dev/null +++ b/backend/api/v2/favorites/serializers.py @@ -0,0 +1,22 @@ +"""Сериализаторы для API.""" +from django.contrib.auth import get_user_model +from rest_framework import serializers + +from documents.models import ( + FavDocument, + FavTemplate, +) + +User = get_user_model() + + +class FavTemplateSerializer(serializers.ModelSerializer): + class Meta: + model = FavTemplate + fields = "__all__" + + +class FavDocumentSerializer(serializers.ModelSerializer): + class Meta: + model = FavDocument + fields = "__all__" diff --git a/backend/api/v2/favorites/views.py b/backend/api/v2/favorites/views.py new file mode 100644 index 0000000..14f3a50 --- /dev/null +++ b/backend/api/v2/favorites/views.py @@ -0,0 +1,93 @@ +"""Вьюсеты v1 API.""" +import logging + +from django.contrib.auth import get_user_model +from rest_framework import ( + serializers, + status, +) + +from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated +from rest_framework.response import Response +from rest_framework.views import APIView + +from .serializers import ( + FavDocumentSerializer, + FavTemplateSerializer, +) +from documents.models import ( + FavDocument, + FavTemplate, +) + +logger = logging.getLogger(__name__) + +User = get_user_model() + + +class FavTemplateAPIview(APIView): + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + + def post(self, request, **kwargs): + data = { + "user": self.request.user.pk, + "template": self.kwargs.get("template_id"), + } + serializer = FavTemplateSerializer(data=data) + queryset = FavTemplate.objects.filter( + user=self.request.user.pk, template=self.kwargs.get("template_id") + ) + # проверка, что такого FavTemplate нет в БД + if queryset.exists(): + raise serializers.ValidationError( + "Этот шаблон уже есть в Избранном!" + ) + if serializer.is_valid(): + serializer.save() + return Response(status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + def delete(self, request, **kwargs): + queryset = FavTemplate.objects.filter( + user=self.request.user.pk, template=self.kwargs.get("template_id") + ) + # проверка, что такой FavTemplate существует в БД + if not queryset.exists(): + return Response(status=status.HTTP_404_NOT_FOUND) + queryset.delete() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class FavDocumentAPIview(APIView): + permission_classes = (IsAuthenticated,) + # permission_classes = (AllowAny,) # Заглушка + + def post(self, request, **kwargs): + data = { + "user": self.request.user.pk, + "document": self.kwargs.get("document_id"), + } + serializer = FavDocumentSerializer(data=data) + queryset = FavDocument.objects.filter( + user=self.request.user.pk, document=self.kwargs.get("document_id") + ) + # проверка, что такого FavDocument нет в БД + if queryset.exists(): + raise serializers.ValidationError( + "Этот документ уже есть в Избранном!" + ) + if serializer.is_valid(): + serializer.save() + return Response(status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + def delete(self, request, **kwargs): + queryset = FavDocument.objects.filter( + user=self.request.user.pk, document=self.kwargs.get("document_id") + ) + # проверка, что такой FavDocument существует в БД + if not queryset.exists(): + return Response(status=status.HTTP_404_NOT_FOUND) + queryset.delete() + return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/backend/api/v2/filters.py b/backend/api/v2/filters.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v2/migrations/__init__.py b/backend/api/v2/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v2/objects/__init__.py b/backend/api/v2/objects/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v2/objects/serializers.py b/backend/api/v2/objects/serializers.py new file mode 100644 index 0000000..8047f60 --- /dev/null +++ b/backend/api/v2/objects/serializers.py @@ -0,0 +1,41 @@ +"""Сериализаторы для API.""" +from rest_framework import serializers + +from base_objects.models import ( + BaseObject, + Object, + BaseObjectField, + ObjectField, + ) + + +class BaseObjectSerializer(serializers.ModelSerializer): + """Сериализатор поля документов.""" + + class Meta: + fields = '__all__' + model = BaseObject + + +class BaseObjectFieldSerializer(serializers.ModelSerializer): + """Сериализатор поля документов.""" + + class Meta: + fields = '__all__' + model = BaseObjectField + + +class ObjectSerializer(serializers.ModelSerializer): + """Сериализатор поля документов.""" + + class Meta: + fields = '__all__' + model = Object + + +class ObjectFieldSerializer(serializers.ModelSerializer): + """Сериализатор поля документов.""" + + class Meta: + fields = '__all__' + model = ObjectField \ No newline at end of file diff --git a/backend/api/v2/objects/views.py b/backend/api/v2/objects/views.py new file mode 100644 index 0000000..c664bc9 --- /dev/null +++ b/backend/api/v2/objects/views.py @@ -0,0 +1,36 @@ +from rest_framework import ( + viewsets, +) + +from base_objects.models import ( + BaseObject, + Object, + BaseObjectField, + ObjectField + ) +from .serializers import ( + BaseObjectSerializer, + BaseObjectFieldSerializer, + ObjectSerializer, + ObjectFieldSerializer, +) + + +class BaseObjectViewSet(viewsets.ModelViewSet): + queryset = BaseObject.objects.all() + serializer_class = BaseObjectSerializer + + +class BaseObjectFieldViewSet(viewsets.ModelViewSet): + queryset = BaseObjectField.objects.all() + serializer_class = BaseObjectFieldSerializer + + +class ObjectViewSet(viewsets.ModelViewSet): + queryset = Object.objects.all() + serializer_class = ObjectSerializer + + +class ObjectFieldViewSet(viewsets.ModelViewSet): + queryset = ObjectField.objects.all() + serializer_class = ObjectFieldSerializer \ No newline at end of file diff --git a/backend/api/v2/permissions.py b/backend/api/v2/permissions.py new file mode 100644 index 0000000..0f795c3 --- /dev/null +++ b/backend/api/v2/permissions.py @@ -0,0 +1,58 @@ +"""Разрешения для API.""" + +from rest_framework import permissions + + +class IsSuperUserOrReadOnly(permissions.BasePermission): + """Доступ: Администратор или только просмотр.""" + + def has_permission(self, request, view): + """Выдача прав на уровне списка.""" + return ( + request.method in permissions.SAFE_METHODS + or request.user.is_superuser + ) + + +class IsOwnerOrAdminOrReadOnly(permissions.BasePermission): + """Доступ: Владелец/админ или только для чтения""" + + def has_permission(self, request, view): + """Видеть список могут все, добавлять только авторизованные.""" + return ( + request.method in permissions.SAFE_METHODS + or request.user.is_authenticated + ) + + def has_object_permission(self, request, view, obj): + """Под объектом подразумевается Template или Document.""" + return obj.owner == request.user or request.user.is_superuser + + +class IsAdminOrReadOnly(permissions.BasePermission): + """Доступ: Админ или только для чтения""" + + def has_permission(self, request, view): + """Видеть список могут все, добавлять только администратор.""" + + return request.method in permissions.SAFE_METHODS or ( + request.user.is_authenticated and request.user.is_superuser + ) + + def has_object_permission(self, request, view, obj): + return ( + request.method in permissions.SAFE_METHODS + or request.user.is_superuser + ) + + +class IsOwner(permissions.BasePermission): + """Доступ: только владелец.""" + + def has_permission(self, request, view): + """Видеть список может только владелец.""" + return request.user.is_authenticated + + def has_object_permission(self, request, view, obj): + """Под объектом подразумевается Document.""" + return request.user.is_authenticated and obj.owner == request.user diff --git a/backend/api/v2/templates/__init__.py b/backend/api/v2/templates/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v2/templates/serializers.py b/backend/api/v2/templates/serializers.py new file mode 100644 index 0000000..339fc4f --- /dev/null +++ b/backend/api/v2/templates/serializers.py @@ -0,0 +1,310 @@ +"""Сериализаторы для API.""" +import base64 +from django.contrib.auth import get_user_model +from django.utils import timezone +from django.core.files.base import ContentFile +from django.db import transaction +from djoser.serializers import UserSerializer +from rest_framework import serializers + +from api.v2.utils import custom_fieldtypes_validation, get_non_unique_items +from core.constants import Messages +from documents.models import ( + Category, + Document, + DocumentField, + FavDocument, + FavTemplate, + Template, + TemplateField, + TemplateFieldGroup, + TemplateFieldType, +) + +User = get_user_model() + + +class Base64ImageField(serializers.ImageField): + def to_internal_value(self, data): + if isinstance(data, str) and data.startswith("data:image"): + format, imgstr = data.split(";base64,") + ext = format.split("/")[-1] + + data = ContentFile(base64.b64decode(imgstr), name="temp." + ext) + + return super().to_internal_value(data) + + +class TemplateFieldSerializer(serializers.ModelSerializer): + """Сериализатор поля шаблона.""" + + group_id = serializers.PrimaryKeyRelatedField( + source="group", read_only=True + ) + group_name = serializers.StringRelatedField( + source="group.name", read_only=True + ) + type = serializers.SlugRelatedField(slug_field="type", read_only=True) + mask = serializers.CharField(source="type.mask", read_only=True) + + class Meta: + model = TemplateField + fields = ( + "id", + "tag", + "name", + "hint", + "group_id", + "group_name", + "type", + "mask", + "length", + ) + + +class TemplateFieldWriteSerializer(serializers.ModelSerializer): + """Сериализатор поля шаблона для записи/обновления""" + + type = serializers.SlugRelatedField( + queryset=TemplateFieldType.objects.all(), slug_field="type" + ) + group = serializers.IntegerField(required=False, default=None) + default = serializers.CharField( + trim_whitespace=False, max_length=255, required=False + ) + + class Meta: + model = TemplateField + fields = ("tag", "name", "hint", "group", "type", "length", "default") + + +class TemplateFieldSerializerMinified(serializers.ModelSerializer): + """Сериализатор поля шаблона сокращенный (без полей группы)""" + + type = serializers.SlugRelatedField(slug_field="type", read_only=True) + mask = serializers.CharField(source="type.mask", read_only=True) + + class Meta: + model = TemplateField + fields = ( + "id", + "tag", + "name", + "hint", + "type", + "mask", + "length", + "default", + ) + + +class TemplateGroupSerializerMinified(serializers.ModelSerializer): + """Сериализатор группы полей шаблона без вложенных полей""" + + class Meta: + model = TemplateFieldGroup + fields = ("id", "name", ) + + +class TemplateGroupSerializer(serializers.ModelSerializer): + """Сериализатор группы полей шаблона""" + + fields = TemplateFieldSerializerMinified( + read_only=True, + many=True, + # source="fields", + allow_empty=True, + ) + + class Meta: + model = TemplateField + fields = ( + "id", + "name", + "fields", + ) + + def to_representation(self, instance): + response = super().to_representation(instance) + response["fields"].sort(key=lambda x: x["id"]) + return response + + +class TemplateGroupWriteSerializer(serializers.ModelSerializer): + """Сериализатор группы полей шаблона для записи/обновления""" + + id = serializers.IntegerField() + + class Meta: + model = TemplateFieldGroup + fields = ( + "id", + "name", + ) + + +class TemplateSerializerMinified(serializers.ModelSerializer): + """Сериализатор шаблонов сокращенный.""" + + is_favorited = serializers.SerializerMethodField() + image = Base64ImageField(required=True, allow_null=True) + + class Meta: + model = Template + exclude = ("template",) + read_only_fields = ( + "name", + "category", + "owner", + "image", + "modified", + "deleted", + "description", + "is_favorited", + ) + + def get_is_favorited(self, template: Template) -> bool: + user = self.context.get("request").user + if not user.is_authenticated: + return False + return FavTemplate.objects.filter( + user=user, template=template + ).exists() + + +class TemplateSerializerPlain(TemplateSerializerMinified): + """Сериализатор шаблона (без вложенности полей в группы).""" + + fields = TemplateFieldSerializer( + read_only=True, + many=True, + # source="fields", + allow_empty=True, + ) + + groups = TemplateGroupSerializerMinified( + source="field_groups", + read_only=True, + many=True, + allow_empty=True, + ) + + class Meta(TemplateSerializerMinified.Meta): + model = Template + exclude = ("template",) + # fields = "__all__" + read_only_fields = ("is_favorited", "groups") + + +class TemplateSerializer(TemplateSerializerMinified): + """Сериализатор шаблона (поля сгруппированы внутри grouped_fields).""" + + grouped_fields = TemplateGroupSerializer( + read_only=True, + many=True, + source="field_groups", + allow_empty=True, + ) + ungrouped_fields = serializers.SerializerMethodField() + + class Meta(TemplateSerializerMinified.Meta): + model = Template + exclude = ("template",) + read_only_fields = ( + "is_favorited", + "grouped_fields", + "ungrouped_fields", + ) + + def get_ungrouped_fields(self, instance): + solo_fields = instance.fields.filter(group=None).order_by("id") + return TemplateFieldSerializerMinified(solo_fields, many=True).data + + def to_representation(self, instance): + response = super().to_representation(instance) + response["grouped_fields"].sort(key=lambda x: x["id"]) + return response + + +class TemplateWriteSerializer(serializers.ModelSerializer): + """Сериализатор шаблонов для записи/изменения.""" + + fields = TemplateFieldWriteSerializer(many=True) + groups = TemplateGroupWriteSerializer(many=True) + + class Meta: + model = Template + fields = ("name", "deleted", "description", "fields", "groups") + + def validate(self, data): + # проверка, что все поля имеют уникальные тэги + data_fields = data.get("fields") + field_tags = [f["tag"] for f in data_fields] + tags_duplicates = get_non_unique_items(field_tags) + if tags_duplicates: + raise serializers.ValidationError( + detail=Messages.TEMPLATE_FIELD_TAGS_ARE_NOT_UNIQUE.format( + tags_duplicates + ) + ) + + # проверка, что все группы имеют уникальный id + data_groups = data.get("groups") + group_ids = [g["id"] for g in data_groups] + ids_duplicates = get_non_unique_items(group_ids) + if ids_duplicates: + raise serializers.ValidationError( + detail=Messages.TEMPLATE_GROUP_IDS_ARE_NOT_UNIQUE.format( + ids_duplicates + ) + ) + + # проверка, что поля шаблона привязаны к описанным группам в group + field_groups = set([f.get("group") for f in data_fields]) + if None in field_groups: + field_groups.discard(None) + unknown_groups = field_groups - set(group_ids) + if unknown_groups: + raise serializers.ValidationError( + detail=Messages.UNKNOWN_GROUP_ID.format(unknown_groups) + ) + return data + + def create(self, data): + data_fields = data.pop("fields") + data_groups = data.pop("groups") + template = Template.objects.create(**data) + # создание групп + data_groups.sort(key=lambda x: x["id"]) + group_models = {} + for group in data_groups: + model = TemplateFieldGroup.objects.create( + name=group["name"], template=template + ) + group_models[group["id"]] = model + # создание полей + template_fields = [] + for data in data_fields: + group_id = data.get("group") + if group_id: + data["group"] = group_models[group_id] + template_fields.append(TemplateField(template=template, **data)) + TemplateField.objects.bulk_create(template_fields) + return template + + def to_representation(self, instance): + request = self.context.get("request") + return TemplateSerializerPlain( + instance, context={"request": request} + ).data + + +class TemplateFileUploadSerializer(serializers.ModelSerializer): + errors = serializers.SerializerMethodField() + + class Meta: + model = Template + fields = ("template", "errors") + + def get_errors(self, instance): + return instance.get_consistency_errors() diff --git a/backend/api/v2/templates/views.py b/backend/api/v2/templates/views.py new file mode 100644 index 0000000..733f1cf --- /dev/null +++ b/backend/api/v2/templates/views.py @@ -0,0 +1,160 @@ +"""Вьюсеты v1 API.""" +import logging + +from django.contrib.auth import get_user_model +from django.http import FileResponse +from django.shortcuts import get_object_or_404 +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework import ( + filters, + generics, + serializers, + status, + views, + viewsets, +) +from rest_framework.decorators import action +from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated +from rest_framework.response import Response + +from api.v2.permissions import IsAdminOrReadOnly, IsOwner, IsOwnerOrAdminOrReadOnly +from .serializers import ( + TemplateFieldSerializer, + TemplateFileUploadSerializer, + TemplateSerializer, + TemplateSerializerMinified, + TemplateWriteSerializer, +) + +from api.v2 import utils as v1utils +from core.constants import Messages +from core.template_render import DocumentTemplate +from documents.models import Template + + +logger = logging.getLogger(__name__) + +User = get_user_model() + + +def send_file(filestream, filename: str, as_attachment: bool = True): + """Функция подготовки открытого двоичного файла к отправке.""" + response = FileResponse( + streaming_content=filestream, + as_attachment=as_attachment, + filename=filename, + ) + return response + + +class TemplateViewSet(viewsets.ModelViewSet): + """Шаблон.""" + + serializer_class = TemplateSerializer + http_method_names = ("get", "delete", "post") + permission_classes = (IsAdminOrReadOnly,) # AllowAny + filter_backends = ( + DjangoFilterBackend, + filters.SearchFilter, + filters.OrderingFilter, + ) + pagination_class = None + filterset_fields = ( + "owner", + "category", + ) + search_fields = ( + "owner", + "category", + ) + + def get_serializer_class(self): + if self.action == "list": + return TemplateSerializerMinified + elif self.action == "create": + return TemplateWriteSerializer + return TemplateSerializer + + def get_queryset(self): + if self.request.user.is_superuser: + return Template.objects.all() + else: + return Template.objects.filter(deleted=False) + + @action( + detail=True, + methods=["get"], + permission_classes=(AllowAny,), + url_path="download_draft", + url_name="download_draft", + ) + def download_draft(self, request, pk=None): + # template = get_object_or_404(Template, pk=pk) + template = serializers.PrimaryKeyRelatedField( + many=False, queryset=Template.objects.all() + ).to_internal_value(data=pk) + context = {field.tag: field.name for field in template.fields.all()} + path = template.template + doc = DocumentTemplate(path) + buffer = doc.get_draft(context) + filename = f"{template.name}_шаблон.docx" + if request.query_params.get("pdf"): + buffer = v1utils.convert_file_to_pdf(buffer) + filename = f"{template.name}_шаблон.pdf" + response = send_file(buffer, filename) + return response + + def destroy(self, request, *args, **kwargs): + user = request.user + template = self.get_object() + if not (user == template.owner or user.is_superuser): + return Response(status=status.HTTP_404_NOT_FOUND) + if template.deleted: + return Response( + Messages.TEMPLATE_ALREADY_DELETED, + status=status.HTTP_404_NOT_FOUND, + ) + template.deleted = True + template.save() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class TemplateFieldViewSet(viewsets.ModelViewSet): + """Поля шаблона.""" + + serializer_class = TemplateFieldSerializer + http_method_names = ("get",) + permission_classes = (IsAdminOrReadOnly,) + # permission_classes = (AllowAny,) # Заглушка + pagination_class = None + + def get_queryset(self): + template_id = self.kwargs.get("template_id") + template = get_object_or_404(Template, id=template_id) + return template.fields.all() + + +class CheckTemplateConsistencyAPIView(views.APIView): + permission_classes = (IsAdminUser,) + # permission_classes = (AllowAny,) # Заглушка + + def get(self, request, template_id): + template = get_object_or_404(Template, id=template_id) + errors = template.get_consistency_errors() + if errors: + return Response(data={"errors": errors}, status=status.HTTP_200_OK) + else: + return Response( + data={"result": Messages.TEMPLATE_CONSISTENT}, + status=status.HTTP_200_OK, + ) + + +class UploadTemplateFileAPIView(generics.UpdateAPIView): + queryset = Template.objects.all() + serializer_class = TemplateFileUploadSerializer + lookup_field = "id" + lookup_url_kwarg = "template_id" + permission_classes = (IsAdminUser,) + # permission_classes = (AllowAny,) # Заглушка + http_method_names = ["patch", "put"] diff --git a/backend/api/v2/tests.py b/backend/api/v2/tests.py new file mode 100644 index 0000000..dda6b8a --- /dev/null +++ b/backend/api/v2/tests.py @@ -0,0 +1,193 @@ +import json + +from api.v1.serializers import TemplateWriteSerializer +from django.test import TestCase + +from core.constants import Messages +from documents.models import Template, TemplateFieldType + +duplicate_fields_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str"}, + {"tag": "tag2", "name": "Поле 2", "type": "str"}, + {"tag": "tag1", "name": "Поле 3", "type": "str"}, + ], + "groups": [], +} + +duplicate_group_ids_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str"}, + {"tag": "tag2", "name": "Поле 2", "type": "str"}, + {"tag": "tag3", "name": "Поле 3", "type": "str"}, + ], + "groups": [ + {"id": 1, "name": "Группа 1"}, + {"id": 2, "name": "Группа 2"}, + {"id": 1, "name": "Группа 3"}, + ], +} + +unknown_group_id_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str", "group": 1}, + {"tag": "tag2", "name": "Поле 2", "type": "str", "group": 2}, + {"tag": "tag3", "name": "Поле 3", "type": "str", "group": 3}, + ], + "groups": [ + {"id": 1, "name": "Группа 1"}, + {"id": 2, "name": "Группа 2"}, + ], +} + +valid_template_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str", "group": 1}, + {"tag": "tag2", "name": "Поле 2", "type": "int", "group": 2}, + {"tag": "tag3", "name": "Поле 3", "type": "str", "group": 2}, + {"tag": "tag4", "name": "Поле 4", "type": "int"}, + ], + "groups": [ + {"id": 1, "name": "Группа 1"}, + {"id": 2, "name": "Группа 2"}, + ], +} + +unknown_field_type_fixture = { + "name": "Тестовый шаблон", + "deleted": False, + "description": "Тестовый шаблон", + "fields": [ + {"tag": "tag1", "name": "Поле 1", "type": "str"}, + {"tag": "tag2", "name": "Поле 2", "type": "int"}, + {"tag": "tag3", "name": "Поле 3", "type": "unknown_type"}, + ], + "groups": [], +} + +templatefieldtype_fixture = [ + {"type": "int", "name": "Целочисленный"}, + {"type": "str", "name": "Строковый"}, +] + + +class Test(TestCase): + @classmethod + def setUpClass(cls) -> None: + super().setUpClass() + for data in templatefieldtype_fixture: + TemplateFieldType.objects.create(**data) + + def test_duplicate_field_tags_is_not_valid(self): + """Проверка, что дубликатные тэги полей взводят ошибку""" + + serializer = TemplateWriteSerializer(data=duplicate_fields_fixture) + self.assertFalse(serializer.is_valid()) + pattern = Messages.TEMPLATE_FIELD_TAGS_ARE_NOT_UNIQUE.format(".*") + self.assertRegex( + json.dumps(serializer.errors, ensure_ascii=False), + rf".*{pattern}.*", + ) + + def test_duplicate_group_ids_is_not_valid(self): + """Проверка, что дубликатные id групп взводят ошибку""" + + serializer = TemplateWriteSerializer(data=duplicate_group_ids_fixture) + self.assertFalse(serializer.is_valid()) + pattern = Messages.TEMPLATE_GROUP_IDS_ARE_NOT_UNIQUE.format(".*") + self.assertRegex( + json.dumps(serializer.errors, ensure_ascii=False), + rf".*{pattern}.*", + ) + + def test_undefined_field_group_is_not_valid(self): + """Проверка, что неописанные id групп в полях взводят ошибку""" + + serializer = TemplateWriteSerializer(data=unknown_group_id_fixture) + self.assertFalse(serializer.is_valid()) + pattern = Messages.UNKNOWN_GROUP_ID.format(".*") + self.assertRegex( + json.dumps(serializer.errors, ensure_ascii=False), + rf".*{pattern}.*", + ) + + def test_unknown_field_type_is_not_valid(self): + """Проверка, что неописанный тип поля взводит ошибку""" + + serializer = TemplateWriteSerializer(data=unknown_field_type_fixture) + self.assertFalse(serializer.is_valid()) + + def test_valid_template_is_created(self): + """Проверка, что валидный шаблон успешно создается в базе""" + Template.objects.all().delete() + serializer = TemplateWriteSerializer(data=valid_template_fixture) + self.assertTrue(serializer.is_valid()) + serializer.save() + fields = valid_template_fixture.pop("fields") + groups = valid_template_fixture.pop("groups") + self.assertTrue( + Template.objects.filter(**valid_template_fixture).exists(), + "Валидный шаблон в базе не создан", + ) + template = Template.objects.filter(**valid_template_fixture).first() + + # проверка, что поля созданы и они привязаны к правильной группе + for field in fields: + with self.subTest(field=field): + self.assertTrue( + template.fields.filter( + name=field["name"], tag=field["tag"] + ).exists(), + "Поле {} для шаблона не создано".format(field), + ) + field_obj = template.fields.filter( + name=field["name"], tag=field["tag"] + ).first() + self.assertEqual( + field_obj.type.type, + field["type"], + "Поле {} привязано к неправильному типу".format(field), + ) + + # проверка, что созданы все группы для полей + for group in groups: + with self.subTest(group=group, template=template): + self.assertTrue( + template.field_groups.filter( + name=(group["name"]) + ).exists(), + "Группа {} для шаблона не создана".format(group), + ) + + # проверка, что поля привязаны к правильным группам + groups_dct = {} + for g in groups: + id = g.pop("id") + groups_dct[id] = g + for f in fields: + if "group" in f: + f["group"] = groups_dct[f["group"]] + + for field in fields: + field_obj = template.fields.filter( + name=field["name"], tag=field["tag"] + ).first() + with self.subTest(field=field): + if "group" in field: + self.assertEqual( + field_obj.group.name, + field["group"]["name"], + "Поле {} неправильно привязано к группе".format(field), + ) diff --git a/backend/api/v2/urls.py b/backend/api/v2/urls.py new file mode 100644 index 0000000..a810605 --- /dev/null +++ b/backend/api/v2/urls.py @@ -0,0 +1,98 @@ +from api.v2.documents.views import ( + AnonymousDownloadPreviewAPIView, + DocumentFieldViewSet, + DocumentViewSet,) +from api.v2.templates.views import ( + UploadTemplateFileAPIView, + CheckTemplateConsistencyAPIView, + TemplateFieldViewSet, + TemplateViewSet,) +from api.v2.favorites.views import ( + FavTemplateAPIview, + FavDocumentAPIview,) +from api.v2.objects.views import ( + BaseObjectViewSet, + BaseObjectFieldViewSet, + ObjectViewSet, + ObjectFieldViewSet + ) + +from django.urls import include, path, re_path +from rest_framework.routers import DefaultRouter + +app_name = "api" + +router_v1 = DefaultRouter() + + +router_v1.register( + prefix="templates", + basename="templates", + viewset=TemplateViewSet, +) + +router_v1.register( + r"templates/(?P[0-9]+)/fields", + basename="template_fields", + viewset=TemplateFieldViewSet, +) + +router_v1.register( + r"documents/(?P[0-9]+)/fields", + basename="document_fields", + viewset=DocumentFieldViewSet, +) + +router_v1.register( + prefix="documents", + basename="documents", + viewset=DocumentViewSet, +) + +router_v1.register( + prefix="base_objects", + basename="base_objects", + viewset=BaseObjectViewSet, +) +router_v1.register( + prefix="base_object_fields", + basename="base_object_fields", + viewset=BaseObjectFieldViewSet, +) +router_v1.register( + prefix="objects", + basename="objects", + viewset=ObjectViewSet, +) +router_v1.register( + prefix="object_fields", + basename="object_fields", + viewset=ObjectFieldViewSet, +) + +urlpatterns = [ + path( + "templates//favorite/", FavTemplateAPIview.as_view() + ), + path( + "documents//favorite/", FavDocumentAPIview.as_view() + ), + path( + "templates//download_preview/", + AnonymousDownloadPreviewAPIView.as_view(), + name="download_preview", + ), + path( + "templates//check_consistency/", + CheckTemplateConsistencyAPIView.as_view(), + name="check_consistency", + ), + re_path( + "templates//upload_template/", + UploadTemplateFileAPIView.as_view(), + name="upload_template", + ), + path("", include(router_v1.urls)), + path("", include("djoser.urls")), + path("auth/", include("djoser.urls.authtoken")), +] diff --git a/backend/api/v2/users/__init__.py b/backend/api/v2/users/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v2/users/serializers.py b/backend/api/v2/users/serializers.py new file mode 100644 index 0000000..47d7348 --- /dev/null +++ b/backend/api/v2/users/serializers.py @@ -0,0 +1,31 @@ +"""Сериализаторы для API.""" + +from django.contrib.auth import get_user_model +from djoser.serializers import UserSerializer +from rest_framework import serializers + + +User = get_user_model() + + +class CustomUserSerializer(UserSerializer): + password = serializers.CharField(write_only=True) + + class Meta: + model = User + fields = ("id", "email", "password") + read_only_fields = ("id",) + + def create(self, validated_data): + email = validated_data.get("email") + password = validated_data.get("password") + username = email + user = User(email=email, username=username) + user.set_password(password) + user.save() + return user + + def validate(self, data): + if User.objects.filter(email=data["email"]): + raise serializers.ValidationError("Такой email уже есть!") + return data diff --git a/backend/api/v2/users/views.py b/backend/api/v2/users/views.py new file mode 100644 index 0000000..3df409b --- /dev/null +++ b/backend/api/v2/users/views.py @@ -0,0 +1,74 @@ +"""Вьюсеты v1 API.""" + +import logging + +from django.contrib.auth import get_user_model +from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode +from django.utils.encoding import force_bytes +from django.urls import reverse_lazy +from django.views.generic import View +from django.contrib.auth.tokens import default_token_generator +from django.contrib.auth import login + +from rest_framework import ( + generics, + status, +) +from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated +from rest_framework.response import Response +from rest_framework_simplejwt.tokens import RefreshToken + +from .serializers import CustomUserSerializer + + +logger = logging.getLogger(__name__) + +User = get_user_model() + + +class RegisterView(generics.GenericAPIView): + serializer_class = CustomUserSerializer + + def post(self, request): + user = request.data + serializer = self.serializer_class(data=user) + serializer.is_valid(raise_exception=True) + serializer.save() + user_data = serializer.data + user = User.objects.get(email=user_data["email"]) + token = RefreshToken.for_user(user).access_token + + uid = urlsafe_base64_encode(force_bytes(user.pk)) + activation_url = reverse_lazy('confirm_email', kwargs={'uidb64': uid, 'token': token}) + print(activation_url) + absurl = f'http://127.0.0.1:9000/{activation_url}' + email_body = ( + "Hi " + + user.username + + " Use the link below to verify your email \n" + + absurl + ) + print(email_body) + data = { + "email_body": email_body, + "to_email": user.email, + "email_subject": "Verify your email", + } + + Util.send_email(data) + return Response(user_data, status=status.HTTP_201_CREATED) + + +class UserConfirmEmailView(View): + def get(self, request, uidb64, token): + try: + uid = urlsafe_base64_decode(uidb64) + user = User.objects.get(pk=uid) + except (TypeError, ValueError, OverflowError, User.DoesNotExist): + user = None + + if user is not None and default_token_generator.check_token(user, token): + user.is_active = True + user.save() + login(request, user) + diff --git a/backend/api/v2/utils.py b/backend/api/v2/utils.py new file mode 100644 index 0000000..beeb1cf --- /dev/null +++ b/backend/api/v2/utils.py @@ -0,0 +1,110 @@ +"""Утилиты.""" + +import datetime +import io +import logging +import pathlib +import subprocess +import tempfile +from typing import Any, Dict, List, Set, Union + +from django.core.mail import send_mail + +from documents.models import Document, DocumentTemplate, TemplateField + +logger = logging.getLogger(__name__) + + +class Util: + @staticmethod + def send_email(data): + send_mail( + data["email_subject"], + data["email_body"], + "draftnikox@rambler.ru", + [data["to_email"]], + fail_silently=False, + ) + + +def get_non_unique_items(items: List[Any]) -> Set[Any]: + """Возвращает множество неуникальных элементов списка.""" + visited = set() + non_unique = set() + for item in items: + if item not in visited: + visited.add(item) + else: + non_unique.add(item) + return non_unique + + +def fill_docx_template_for_document(document: Document) -> io.BytesIO: + """Создание документа из шаблона.""" + context = { + docfield.field.tag: docfield.value + for docfield in document.document_fields.all() + } + context_default = { + field.tag: field.default or field.name + for field in document.template.fields.all() + } + path = document.template.template + doc = DocumentTemplate(path) + buffer = doc.get_partial(context, context_default) + return buffer + + +def create_document_pdf_for_export(document: Document) -> io.BytesIO: + """Создание pdf-файла.""" + doc_file = fill_docx_template_for_document(document) + buffer = convert_file_to_pdf(doc_file) + return buffer + + +def convert_file_to_pdf(in_file: io.BytesIO) -> io.BytesIO: + """Файл в виде строки байт преобразуем в строку байт pdf-файла.""" + with tempfile.NamedTemporaryFile() as output: + out_file = pathlib.Path(output.name).resolve() + out_file.write_bytes(in_file.getvalue()) + subprocess.run( + [ + "soffice", + "--headless", + "--invisible", + "--nologo", + "--convert-to", + "pdf", + "--outdir", + out_file.parent, + out_file.absolute(), + ], + check=True, + ) + pdf_file = out_file.with_suffix(".pdf") + out_buffer = io.BytesIO() + out_buffer.write(pdf_file.read_bytes()) + out_buffer.seek(0) + pdf_file.unlink(missing_ok=True) + return out_buffer + + +def date_iso_to_ddmmyyyy(value: str): + """Преобразует строку из ISO формата в dd.mm.yyyy""" + try: + date = datetime.date.fromisoformat(value) + return date.strftime("%d.%m.%Y") + except Exception: + # print(e) # TODO logging + logger.debug("Invalid date:", exc_info=True) + return value + + +def custom_fieldtypes_validation( + validated_data: List[Dict[str, Union[TemplateField, str]]] +): + """Валидация полей согласно кастомным типам""" + for data in validated_data: + field = data["field"] + if field.type.type == "date": + data["value"] = date_iso_to_ddmmyyyy(data["value"]) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 28a3e86..e38eb8f 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -2,7 +2,7 @@ import os from pathlib import Path -# import sentry_sdk +import sentry_sdk from dotenv import load_dotenv load_dotenv() @@ -31,7 +31,7 @@ "api", "users", "documents", - "colorfield", # wtf ? + "base_objects", "core", ] @@ -172,7 +172,7 @@ "SECURITY_DEFINITIONS": { "Token": {"type": "apiKey", "name": "Authorization", "in": "header"} }, - "BASE_PATH": "https://documents-template.site/api/", + "BASE_PATH": "https://doky.pro/api/v2/", } LOGGING = { @@ -203,13 +203,13 @@ }, } -# sentry_sdk.init( -# dsn="https://be8f804283b7a2e423209e00692792f0@o4506344044298240.ingest.sentry.io/4506344234156032", -# # Set traces_sample_rate to 1.0 to capture 100% -# # of transactions for performance monitoring. -# traces_sample_rate=1.0, -# # Set profiles_sample_rate to 1.0 to profile 100% -# # of sampled transactions. -# # We recommend adjusting this value in production. -# profiles_sample_rate=1.0, -# ) +sentry_sdk.init( + dsn="https://be8f804283b7a2e423209e00692792f0@o4506344044298240.ingest.sentry.io/4506344234156032", + # Set traces_sample_rate to 1.0 to capture 100% + # of transactions for performance monitoring. + traces_sample_rate=1.0, + # Set profiles_sample_rate to 1.0 to profile 100% + # of sampled transactions. + # We recommend adjusting this value in production. + profiles_sample_rate=1.0, +) diff --git a/backend/backend/urls.py b/backend/backend/urls.py index 376fa6a..37c1096 100644 --- a/backend/backend/urls.py +++ b/backend/backend/urls.py @@ -11,16 +11,16 @@ ] schema_view = get_schema_view( - openapi.Info( - title="Draft API", - default_version='v1', - description="Документация для приложения draft docuemnts проекта Шаблонизатор", - # terms_of_service="URL страницы с пользовательским соглашением", - contact=openapi.Contact(email="nikox122@mail.ru"), - license=openapi.License(name="BSD License"), - ), - public=True, - permission_classes=(permissions.AllowAny,), + openapi.Info( + title="Draft API", + default_version='v1', + description="Документация для приложения draft docuemnts проекта Шаблонизатор", + # terms_of_service="URL страницы с пользовательским соглашением", + contact=openapi.Contact(email="nikox122@mail.ru"), + license=openapi.License(name="BSD License"), + ), + public=True, + permission_classes=(permissions.AllowAny,), ) urlpatterns += [ diff --git a/backend/base_objects/__init__.py b/backend/base_objects/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/base_objects/admin.py b/backend/base_objects/admin.py new file mode 100644 index 0000000..7637e2e --- /dev/null +++ b/backend/base_objects/admin.py @@ -0,0 +1,23 @@ +"""Настройки админки для приложения "Документы".""" +from django.contrib import admin + +from base_objects import models + +@admin.register(models.BaseObject) +class ObjectAdmin(admin.ModelAdmin): + list_display = ("id", "name") + + +@admin.register(models.BaseObjectField) +class ObjectFieldAdmin(admin.ModelAdmin): + list_display = ("id", "name") + +@admin.register(models.Object) +class ObjectAdmin(admin.ModelAdmin): + list_display = ("id", "name") + + +@admin.register(models.ObjectField) +class ObjectFieldAdmin(admin.ModelAdmin): + list_display = ("id", "value") + diff --git a/backend/base_objects/apps.py b/backend/base_objects/apps.py new file mode 100644 index 0000000..96185d1 --- /dev/null +++ b/backend/base_objects/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class BaseObjectsConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'base_objects' diff --git a/backend/base_objects/migrations/0001_initial.py b/backend/base_objects/migrations/0001_initial.py new file mode 100644 index 0000000..597be78 --- /dev/null +++ b/backend/base_objects/migrations/0001_initial.py @@ -0,0 +1,75 @@ +# Generated by Django 3.2 on 2024-01-17 14:48 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='BaseObject', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='Наименование базового обьекта')), + ('updated', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')), + ('deleted', models.BooleanField(verbose_name='Удален')), + ('description', models.TextField(verbose_name='Описание базового обьекта')), + ], + options={ + 'verbose_name': 'базовый Обьекта', + 'verbose_name_plural': 'базовые Обьекты', + 'ordering': ('name',), + 'default_related_name': 'Base_objects', + }, + ), + migrations.CreateModel( + name='BaseObjectField', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='Наименование базового поля обьекта')), + ('base_object', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='base_fields', to='base_objects.baseobject', verbose_name='поля базового Обьект')), + ], + options={ + 'verbose_name': 'Поле базового обьекта', + 'verbose_name_plural': 'Поля базового обьекта', + 'default_related_name': 'base_fields', + }, + ), + migrations.CreateModel( + name='Object', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='Наименование обьекта')), + ('created', models.DateTimeField(auto_now=True, verbose_name='Дата создания')), + ('updated', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')), + ('base_object', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='customer_objects', to='base_objects.baseobject', verbose_name='поля базового Обьект')), + ('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='customer_objects', to=settings.AUTH_USER_MODEL, verbose_name='Автор документа')), + ], + options={ + 'verbose_name': 'Обьект', + 'verbose_name_plural': 'Обьекты', + 'default_related_name': 'customer_objects', + }, + ), + migrations.CreateModel( + name='ObjectField', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('value', models.CharField(blank=True, max_length=255, null=True, verbose_name='Содержимое поля')), + ('base_field', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='object_fields', to='base_objects.baseobjectfield', verbose_name='Поле')), + ('object', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='base_objects.object', verbose_name='Обьект')), + ], + options={ + 'verbose_name': 'Поле обьекта', + 'verbose_name_plural': 'Поля обьекта', + }, + ), + ] diff --git a/backend/base_objects/migrations/0002_alter_object_base_object.py b/backend/base_objects/migrations/0002_alter_object_base_object.py new file mode 100644 index 0000000..5c259ce --- /dev/null +++ b/backend/base_objects/migrations/0002_alter_object_base_object.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2 on 2024-01-17 14:51 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('base_objects', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='object', + name='base_object', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='customer_objects', to='base_objects.baseobject', verbose_name='поля базового Обьект'), + ), + ] diff --git a/backend/base_objects/migrations/0003_alter_object_base_object.py b/backend/base_objects/migrations/0003_alter_object_base_object.py new file mode 100644 index 0000000..a42d194 --- /dev/null +++ b/backend/base_objects/migrations/0003_alter_object_base_object.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2 on 2024-01-17 14:52 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('base_objects', '0002_alter_object_base_object'), + ] + + operations = [ + migrations.AlterField( + model_name='object', + name='base_object', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='customer_objects', to='base_objects.baseobject', verbose_name='Базовый Обьект'), + ), + ] diff --git a/backend/base_objects/migrations/__init__.py b/backend/base_objects/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/base_objects/models.py b/backend/base_objects/models.py new file mode 100644 index 0000000..2072abd --- /dev/null +++ b/backend/base_objects/models.py @@ -0,0 +1,123 @@ +"""Модели обьектов.""" +from django.db import models +from django.contrib.auth import get_user_model + +User = get_user_model() + + +class BaseObject(models.Model): + """Шаблон обьекта.""" + + name = models.CharField( + max_length=255, + verbose_name="Наименование базового обьекта" + ) + updated = models.DateTimeField( + verbose_name="Дата изменения", + auto_now=True + ) + deleted = models.BooleanField(verbose_name="Удален") + description = models.TextField(verbose_name="Описание базового обьекта") + + class Meta: + verbose_name = "базовый Обьекта" + verbose_name_plural = "базовые Обьекты" + default_related_name = "Base_objects" + ordering = ("name",) + + def __str__(self): + """Отображение - название.""" + return self.name + + +class BaseObjectField(models.Model): + """Поля шаблон обьектов""" + + base_object = models.ForeignKey( + BaseObject, + on_delete=models.CASCADE, + verbose_name="поля базового Обьект", + default=1, + ) + name = models.CharField( + max_length=255, + verbose_name="Наименование базового поля обьекта") + + class Meta: + verbose_name = "Поле базового обьекта" + verbose_name_plural = "Поля базового обьекта" + default_related_name = "base_fields" + + def __str__(self): + """Отображение - название поля (базового обьекта).""" + return f"{self.name} ({self.base_object})" + + +class Object(models.Model): + """Обьект.""" + + owner = models.ForeignKey( + User, + on_delete=models.SET_NULL, + verbose_name="Автор документа", + null=True, + blank=True, + ) + base_object = models.ForeignKey( + BaseObject, + on_delete=models.CASCADE, + verbose_name="Базовый Обьект", + null=True, + blank=True, + ) + name = models.CharField( + max_length=255, verbose_name="Наименование обьекта" + ) + created = models.DateTimeField( + auto_now=True, + verbose_name="Дата создания" + ) + updated = models.DateTimeField( + auto_now=True, + verbose_name="Дата изменения" + ) + + class Meta: + verbose_name = "Обьект" + verbose_name_plural = "Обьекты" + default_related_name = "customer_objects" + + def __str__(self): + """Отображение - название.""" + return self.name + + +class ObjectField(models.Model): + """Поля обьекта""" + + object = models.ForeignKey( + Object, + on_delete=models.CASCADE, + verbose_name="Обьект", + ) + base_field = models.ForeignKey( + BaseObjectField, + on_delete=models.SET_NULL, + blank=True, + null=True, + verbose_name="Поле", + related_name="object_fields", + ) + value = models.CharField( + max_length=255, + verbose_name="Содержимое поля", + blank=True, + null=True,) + + class Meta: + verbose_name = "Поле обьекта" + verbose_name_plural = "Поля обьекта" + + def __str__(self): + """Отображение - название поля (шаблон).""" + return f"{self.value}" diff --git a/backend/base_objects/tests.py b/backend/base_objects/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/backend/base_objects/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/documents/admin.py b/backend/documents/admin.py index c207c13..91695b8 100644 --- a/backend/documents/admin.py +++ b/backend/documents/admin.py @@ -67,7 +67,7 @@ def get_form(self, request, instance=None, **kwargs): @admin.register(models.TemplateFieldGroup) class TemplateFieldGroupAdmin(admin.ModelAdmin): - list_display = ("id", "name", "template") + list_display = ("id", "name", "template", "type_object") readonly_fields = ("id",) search_fields = ("name", "template") @@ -101,6 +101,7 @@ class TemplateFieldAdmin(admin.ModelAdmin): "group", "type", "length", + # "base_object_field", ) list_filter = ("template",) readonly_fields = ("id",) diff --git a/backend/documents/migrations/0001_initial.py b/backend/documents/migrations/0001_initial.py index 8cada4c..1aba3cb 100644 --- a/backend/documents/migrations/0001_initial.py +++ b/backend/documents/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2 on 2023-10-07 11:36 +# Generated by Django 3.2 on 2024-01-17 14:48 from django.conf import settings from django.db import migrations, models @@ -10,6 +10,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ + ('base_objects', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] @@ -18,59 +19,153 @@ class Migration(migrations.Migration): name='Category', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255)), + ('name', models.CharField(max_length=255, verbose_name='Наименование категории')), ], + options={ + 'verbose_name': 'Категория', + 'verbose_name_plural': 'Категории', + 'ordering': ('name',), + }, ), migrations.CreateModel( name='Document', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateTimeField(auto_now_add=True)), - ('completed', models.BooleanField()), - ('description', models.TextField()), + ('created', models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')), + ('updated', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')), + ('completed', models.BooleanField(default=False, verbose_name='Документ заполнен')), + ('description', models.TextField(verbose_name='Описание документа')), + ('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='documents', to=settings.AUTH_USER_MODEL, verbose_name='Автор документа')), ], + options={ + 'verbose_name': 'Документ', + 'verbose_name_plural': 'Документы', + 'ordering': ('created',), + 'default_related_name': 'documents', + }, ), migrations.CreateModel( name='Template', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('template', models.FileField(upload_to='templates/')), - ('name', models.CharField(max_length=255)), - ('modified', models.DateField()), - ('deleted', models.BooleanField()), - ('description', models.TextField()), - ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.category')), - ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('template', models.FileField(upload_to='templates/', verbose_name='Файл шаблона')), + ('name', models.CharField(max_length=255, verbose_name='Наименование шаблона')), + ('updated', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')), + ('deleted', models.BooleanField(verbose_name='Удален')), + ('description', models.TextField(verbose_name='Описание шаблона')), + ('image', models.ImageField(blank=True, null=True, upload_to='posts/', verbose_name='Картинка')), + ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='templates', to='documents.category', verbose_name='Категория')), + ('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='templates', to=settings.AUTH_USER_MODEL, verbose_name='Автор шаблона')), ], + options={ + 'verbose_name': 'Шаблон', + 'verbose_name_plural': 'Шаблоны', + 'ordering': ('name',), + 'default_related_name': 'templates', + }, + ), + migrations.CreateModel( + name='TemplateFieldType', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type', models.SlugField(unique=True, verbose_name='Тип данных')), + ('name', models.CharField(max_length=50, verbose_name='Наименование типа')), + ('mask', models.CharField(blank=True, max_length=255, verbose_name='Маска допустимых значений')), + ], + options={ + 'verbose_name': 'Тип поля шаблона', + 'verbose_name_plural': 'Типы поля шаблона', + 'ordering': ('name',), + }, + ), + migrations.CreateModel( + name='TemplateFieldGroup', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='Наименование группы полей')), + ('template', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='field_groups', to='documents.template', verbose_name='Шаблон')), + ('type_object', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='base_objects.baseobject', verbose_name='Обьект')), + ], + options={ + 'verbose_name': 'Группа полей', + 'verbose_name_plural': 'Группы полей', + 'ordering': ('id',), + }, ), migrations.CreateModel( name='TemplateField', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tag', models.CharField(max_length=255)), - ('name', models.CharField(max_length=255)), - ('hint', models.TextField()), - ('template_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.template')), + ('tag', models.CharField(max_length=255, verbose_name='Тэг поля')), + ('name', models.CharField(max_length=255, verbose_name='Наименование поля')), + ('hint', models.CharField(blank=True, max_length=255, verbose_name='Подсказка')), + ('length', models.PositiveIntegerField(blank=True, null=True, verbose_name='Размер поля ввода')), + ('default', models.CharField(blank=True, max_length=255, null=True, verbose_name='Значение по умолчанию')), + ('base_object_field', models.ForeignKey(blank=True, default=1, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='base_objects.baseobjectfield', verbose_name='Поле базового обьекта')), + ('group', models.ForeignKey(blank=True, help_text='Группа полей в шаблоне', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='documents.templatefieldgroup', verbose_name='Группа')), + ('template', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fields', to='documents.template', verbose_name='Шаблон')), + ('type', models.ForeignKey(blank=True, help_text='Тип поля', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='documents.templatefieldtype', verbose_name='Тип')), ], + options={ + 'verbose_name': 'Поле шаблона', + 'verbose_name_plural': 'Поля шаблона', + 'ordering': ('template', 'name'), + 'default_related_name': 'fields', + }, + ), + migrations.CreateModel( + name='FavTemplate', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('template', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_templates', to='documents.template', verbose_name='Шаблон')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_templates', to=settings.AUTH_USER_MODEL, verbose_name='Пользователь')), + ], + options={ + 'verbose_name': 'Избранный шаблон', + 'verbose_name_plural': 'Избранные шаблоны', + 'ordering': ('user', 'template'), + 'default_related_name': 'favorite_templates', + }, + ), + migrations.CreateModel( + name='FavDocument', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_documents', to='documents.document', verbose_name='Документ')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_documents', to=settings.AUTH_USER_MODEL, verbose_name='Пользователь')), + ], + options={ + 'verbose_name': 'Избранный документ', + 'verbose_name_plural': 'Избранные документы', + 'ordering': ('user', 'document'), + 'default_related_name': 'favorite_documents', + }, ), migrations.CreateModel( name='DocumentField', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('value', models.CharField(max_length=255)), - ('description', models.TextField()), - ('document_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.document')), - ('field_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.templatefield')), + ('value', models.CharField(max_length=255, verbose_name='Содержимое поля')), + ('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='document_fields', to='documents.document', verbose_name='Документ')), + ('field', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='document_fields', to='documents.templatefield', verbose_name='Поле')), ], + options={ + 'verbose_name': 'Поле документа', + 'verbose_name_plural': 'Поля документа', + 'ordering': ('field__template', 'field'), + }, ), migrations.AddField( model_name='document', - name='template_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.template'), + name='template', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='documents', to='documents.template', verbose_name='Шаблон'), ), - migrations.AddField( - model_name='document', - name='user_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + migrations.AddConstraint( + model_name='favtemplate', + constraint=models.UniqueConstraint(fields=('user', 'template'), name='unique_user_template'), + ), + migrations.AddConstraint( + model_name='favdocument', + constraint=models.UniqueConstraint(fields=('user', 'document'), name='unique_user_document'), ), ] diff --git a/backend/documents/migrations/0002_auto_20231007_1448.py b/backend/documents/migrations/0002_auto_20231007_1448.py deleted file mode 100644 index cb9201d..0000000 --- a/backend/documents/migrations/0002_auto_20231007_1448.py +++ /dev/null @@ -1,101 +0,0 @@ -# Generated by Django 3.2 on 2023-10-07 11:48 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0001_initial'), - ] - - operations = [ - migrations.AlterModelOptions( - name='category', - options={'ordering': ('name',), 'verbose_name': 'Категория', 'verbose_name_plural': 'Категории'}, - ), - migrations.AlterModelOptions( - name='document', - options={'ordering': ('created',), 'verbose_name': 'Документ', 'verbose_name_plural': 'Документы'}, - ), - migrations.AlterModelOptions( - name='documentfield', - options={'verbose_name': 'Поле документа', 'verbose_name_plural': 'Поля документа'}, - ), - migrations.AlterModelOptions( - name='template', - options={'ordering': ('name',), 'verbose_name': 'Шаблон', 'verbose_name_plural': 'Шаблоны'}, - ), - migrations.AlterModelOptions( - name='templatefield', - options={'ordering': ('name',), 'verbose_name': 'Поле шаблона', 'verbose_name_plural': 'Поля шаблона'}, - ), - migrations.AlterField( - model_name='category', - name='name', - field=models.CharField(max_length=255, verbose_name='Наименование категории'), - ), - migrations.AlterField( - model_name='document', - name='completed', - field=models.BooleanField(verbose_name='Статус документа'), - ), - migrations.AlterField( - model_name='document', - name='created', - field=models.DateTimeField(auto_now_add=True, verbose_name='Дата создания'), - ), - migrations.AlterField( - model_name='document', - name='description', - field=models.TextField(verbose_name='Описание документа'), - ), - migrations.AlterField( - model_name='documentfield', - name='description', - field=models.TextField(verbose_name='Описание поля'), - ), - migrations.AlterField( - model_name='documentfield', - name='value', - field=models.CharField(max_length=255, verbose_name='Содержимое поля'), - ), - migrations.AlterField( - model_name='template', - name='category', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.category', verbose_name='Категория'), - ), - migrations.AlterField( - model_name='template', - name='description', - field=models.TextField(verbose_name='Описание шаблона'), - ), - migrations.AlterField( - model_name='template', - name='name', - field=models.CharField(max_length=255, verbose_name='Наименование шаблона'), - ), - migrations.AlterField( - model_name='template', - name='owner', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Автор шаблона'), - ), - migrations.AlterField( - model_name='templatefield', - name='hint', - field=models.TextField(verbose_name='Подсказка'), - ), - migrations.AlterField( - model_name='templatefield', - name='name', - field=models.CharField(max_length=255, verbose_name='Наименование поля'), - ), - migrations.AlterField( - model_name='templatefield', - name='tag', - field=models.CharField(max_length=255, verbose_name='Тэг поля'), - ), - ] diff --git a/backend/documents/migrations/0003_auto_20231007_1516.py b/backend/documents/migrations/0003_auto_20231007_1516.py deleted file mode 100644 index ff2acb8..0000000 --- a/backend/documents/migrations/0003_auto_20231007_1516.py +++ /dev/null @@ -1,51 +0,0 @@ -# Generated by Django 3.2 on 2023-10-07 12:16 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0002_auto_20231007_1448'), - ] - - operations = [ - migrations.AlterField( - model_name='document', - name='template_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.template', verbose_name='Шаблон'), - ), - migrations.AlterField( - model_name='document', - name='user_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Автор документа'), - ), - migrations.AlterField( - model_name='documentfield', - name='document_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.document', verbose_name='Документ'), - ), - migrations.AlterField( - model_name='documentfield', - name='field_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.templatefield', verbose_name='Поле'), - ), - migrations.AlterField( - model_name='template', - name='deleted', - field=models.BooleanField(verbose_name='Удален'), - ), - migrations.AlterField( - model_name='template', - name='modified', - field=models.DateField(verbose_name='Дата модификации'), - ), - migrations.AlterField( - model_name='templatefield', - name='template_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.template', verbose_name='Шаблон'), - ), - ] diff --git a/backend/documents/migrations/0004_alter_templatefield_hint.py b/backend/documents/migrations/0004_alter_templatefield_hint.py deleted file mode 100644 index 7bd7d91..0000000 --- a/backend/documents/migrations/0004_alter_templatefield_hint.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-07 12:18 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0003_auto_20231007_1516'), - ] - - operations = [ - migrations.AlterField( - model_name='templatefield', - name='hint', - field=models.TextField(blank=True, null=True, verbose_name='Подсказка'), - ), - ] diff --git a/backend/documents/migrations/0005_alter_document_completed.py b/backend/documents/migrations/0005_alter_document_completed.py deleted file mode 100644 index d2aa450..0000000 --- a/backend/documents/migrations/0005_alter_document_completed.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-07 12:19 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0004_alter_templatefield_hint'), - ] - - operations = [ - migrations.AlterField( - model_name='document', - name='completed', - field=models.BooleanField(verbose_name='Документ заполнен'), - ), - ] diff --git a/backend/documents/migrations/0006_alter_templatefield_template_id.py b/backend/documents/migrations/0006_alter_templatefield_template_id.py deleted file mode 100644 index 119cec5..0000000 --- a/backend/documents/migrations/0006_alter_templatefield_template_id.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 3.2 on 2023-10-11 08:55 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0005_alter_document_completed'), - ] - - operations = [ - migrations.AlterField( - model_name='templatefield', - name='template_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fields', to='documents.template', verbose_name='Шаблон'), - ), - ] diff --git a/backend/documents/migrations/0006_auto_20231011_1727.py b/backend/documents/migrations/0006_auto_20231011_1727.py deleted file mode 100644 index dda8c65..0000000 --- a/backend/documents/migrations/0006_auto_20231011_1727.py +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by Django 3.2 on 2023-10-11 14:27 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0005_alter_document_completed'), - ] - - operations = [ - migrations.RenameField( - model_name='document', - old_name='user_id', - new_name='owner', - ), - migrations.RemoveField( - model_name='documentfield', - name='document_id', - ), - migrations.CreateModel( - name='FieldToDocument', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.document')), - ('fields', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='documents.documentfield')), - ], - options={ - 'verbose_name': 'Связь между полем и документом', - 'verbose_name_plural': 'Связи между полями и документами', - }, - ), - ] diff --git a/backend/documents/migrations/0007_auto_20231011_2320.py b/backend/documents/migrations/0007_auto_20231011_2320.py deleted file mode 100644 index 9aa93af..0000000 --- a/backend/documents/migrations/0007_auto_20231011_2320.py +++ /dev/null @@ -1,31 +0,0 @@ -# Generated by Django 3.2 on 2023-10-11 20:20 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0006_alter_templatefield_template_id'), - ] - - operations = [ - migrations.AlterField( - model_name='template', - name='category', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='documents.category', verbose_name='Категория'), - ), - migrations.AlterField( - model_name='template', - name='modified', - field=models.DateField(auto_now=True, verbose_name='Дата модификации'), - ), - migrations.AlterField( - model_name='template', - name='owner', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Автор шаблона'), - ), - ] diff --git a/backend/documents/migrations/0007_document_fields.py b/backend/documents/migrations/0007_document_fields.py deleted file mode 100644 index 07267fe..0000000 --- a/backend/documents/migrations/0007_document_fields.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-11 14:30 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0006_auto_20231011_1727'), - ] - - operations = [ - migrations.AddField( - model_name='document', - name='fields', - field=models.ManyToManyField(through='documents.FieldToDocument', to='documents.DocumentField'), - ), - ] diff --git a/backend/documents/migrations/0008_rename_fields_document_docuemnt_fields.py b/backend/documents/migrations/0008_rename_fields_document_docuemnt_fields.py deleted file mode 100644 index 2dde33f..0000000 --- a/backend/documents/migrations/0008_rename_fields_document_docuemnt_fields.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-11 14:36 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0007_document_fields'), - ] - - operations = [ - migrations.RenameField( - model_name='document', - old_name='fields', - new_name='docuemnt_fields', - ), - ] diff --git a/backend/documents/migrations/0009_rename_docuemnt_fields_document_document_fields.py b/backend/documents/migrations/0009_rename_docuemnt_fields_document_document_fields.py deleted file mode 100644 index 6e02d5e..0000000 --- a/backend/documents/migrations/0009_rename_docuemnt_fields_document_document_fields.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-11 14:43 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0008_rename_fields_document_docuemnt_fields'), - ] - - operations = [ - migrations.RenameField( - model_name='document', - old_name='docuemnt_fields', - new_name='document_fields', - ), - ] diff --git a/backend/documents/migrations/0010_auto_20231014_1451.py b/backend/documents/migrations/0010_auto_20231014_1451.py deleted file mode 100644 index a56fec3..0000000 --- a/backend/documents/migrations/0010_auto_20231014_1451.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 3.2 on 2023-10-14 11:51 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0009_rename_docuemnt_fields_document_document_fields'), - ] - - operations = [ - migrations.RenameField( - model_name='document', - old_name='template_id', - new_name='template', - ), - migrations.RenameField( - model_name='documentfield', - old_name='field_id', - new_name='field', - ), - migrations.AlterField( - model_name='documentfield', - name='description', - field=models.TextField(default='Нет описания', verbose_name='Описание поля'), - ), - ] diff --git a/backend/documents/migrations/0011_merge_0007_auto_20231011_2320_0010_auto_20231014_1451.py b/backend/documents/migrations/0011_merge_0007_auto_20231011_2320_0010_auto_20231014_1451.py deleted file mode 100644 index 846b7aa..0000000 --- a/backend/documents/migrations/0011_merge_0007_auto_20231011_2320_0010_auto_20231014_1451.py +++ /dev/null @@ -1,14 +0,0 @@ -# Generated by Django 3.2 on 2023-10-14 13:28 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0007_auto_20231011_2320'), - ('documents', '0010_auto_20231014_1451'), - ] - - operations = [ - ] diff --git a/backend/documents/migrations/0012_auto_20231014_2014.py b/backend/documents/migrations/0012_auto_20231014_2014.py deleted file mode 100644 index 9a79684..0000000 --- a/backend/documents/migrations/0012_auto_20231014_2014.py +++ /dev/null @@ -1,45 +0,0 @@ -# Generated by Django 3.2 on 2023-10-14 17:14 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0011_merge_0007_auto_20231011_2320_0010_auto_20231014_1451'), - ] - - operations = [ - migrations.AlterField( - model_name='documentfield', - name='description', - field=models.TextField(verbose_name='Описание поля'), - ), - migrations.CreateModel( - name='FavTemplate', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('template', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='documents.template', verbose_name='Шаблон')), - ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Пользователь')), - ], - options={ - 'verbose_name': 'Избранный шаблон', - 'verbose_name_plural': 'Избранные шаблоны', - }, - ), - migrations.CreateModel( - name='FavDocument', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('document', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='documents.document', verbose_name='Документ')), - ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Пользователь')), - ], - options={ - 'verbose_name': 'Избранный документ', - 'verbose_name_plural': 'Избранные документы', - }, - ), - ] diff --git a/backend/documents/migrations/0013_auto_20231014_2225.py b/backend/documents/migrations/0013_auto_20231014_2225.py deleted file mode 100644 index b04bb26..0000000 --- a/backend/documents/migrations/0013_auto_20231014_2225.py +++ /dev/null @@ -1,37 +0,0 @@ -# Generated by Django 3.2 on 2023-10-14 19:25 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0012_auto_20231014_2014'), - ] - - operations = [ - migrations.RenameField( - model_name='templatefield', - old_name='template_id', - new_name='template', - ), - migrations.CreateModel( - name='TemplateFieldGroup', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='Наименование группы полей')), - ('template', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='field_groups', to='documents.template', verbose_name='Шаблон')), - ], - options={ - 'verbose_name': 'Группа полей', - 'verbose_name_plural': 'Группы полей', - 'ordering': ('id',), - }, - ), - migrations.AddField( - model_name='templatefield', - name='group', - field=models.ForeignKey(blank=True, help_text='Группа полей в шаблоне', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='documents.templatefieldgroup', verbose_name='Группа'), - ), - ] diff --git a/backend/documents/migrations/0014_auto_20231014_2357.py b/backend/documents/migrations/0014_auto_20231014_2357.py deleted file mode 100644 index 0c919a4..0000000 --- a/backend/documents/migrations/0014_auto_20231014_2357.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 3.2 on 2023-10-14 20:57 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0013_auto_20231014_2225'), - ] - - operations = [ - migrations.AddConstraint( - model_name='favdocument', - constraint=models.UniqueConstraint(fields=('user', 'document'), name='unique_user_document'), - ), - migrations.AddConstraint( - model_name='favtemplate', - constraint=models.UniqueConstraint(fields=('user', 'template'), name='unique_user_template'), - ), - ] diff --git a/backend/documents/migrations/0015_auto_20231017_2347.py b/backend/documents/migrations/0015_auto_20231017_2347.py deleted file mode 100644 index 20e1e25..0000000 --- a/backend/documents/migrations/0015_auto_20231017_2347.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 3.2 on 2023-10-17 20:47 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0014_auto_20231014_2357'), - ] - - operations = [ - migrations.AlterField( - model_name='document', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='documents.template', verbose_name='Шаблон'), - ), - migrations.AlterField( - model_name='documentfield', - name='field', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='documents.templatefield', verbose_name='Поле'), - ), - ] diff --git a/backend/documents/migrations/0016_auto_20231018_0034.py b/backend/documents/migrations/0016_auto_20231018_0034.py deleted file mode 100644 index ee37920..0000000 --- a/backend/documents/migrations/0016_auto_20231018_0034.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 3.2 on 2023-10-17 21:34 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0015_auto_20231017_2347'), - ] - - operations = [ - migrations.AlterField( - model_name='template', - name='category', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='documents.category', verbose_name='Категория'), - ), - migrations.AlterField( - model_name='template', - name='owner', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Автор шаблона'), - ), - ] diff --git a/backend/documents/migrations/0017_auto_20231019_1108.py b/backend/documents/migrations/0017_auto_20231019_1108.py deleted file mode 100644 index d031ca7..0000000 --- a/backend/documents/migrations/0017_auto_20231019_1108.py +++ /dev/null @@ -1,40 +0,0 @@ -# Generated by Django 3.2 on 2023-10-19 08:08 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0016_auto_20231018_0034'), - ] - - operations = [ - migrations.AlterModelOptions( - name='document', - options={'default_related_name': 'documents', 'ordering': ('created',), 'verbose_name': 'Документ', 'verbose_name_plural': 'Документы'}, - ), - migrations.AddField( - model_name='document', - name='updated', - field=models.DateTimeField(auto_now=True, verbose_name='Дата изменения'), - ), - migrations.AlterField( - model_name='document', - name='document_fields', - field=models.ManyToManyField(related_name='documents', through='documents.FieldToDocument', to='documents.DocumentField'), - ), - migrations.AlterField( - model_name='document', - name='owner', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='documents', to=settings.AUTH_USER_MODEL, verbose_name='Автор документа'), - ), - migrations.AlterField( - model_name='document', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='documents', to='documents.template', verbose_name='Шаблон'), - ), - ] diff --git a/backend/documents/migrations/0018_alter_documentfield_description.py b/backend/documents/migrations/0018_alter_documentfield_description.py deleted file mode 100644 index cd10473..0000000 --- a/backend/documents/migrations/0018_alter_documentfield_description.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-19 14:05 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0017_auto_20231019_1108'), - ] - - operations = [ - migrations.AlterField( - model_name='documentfield', - name='description', - field=models.TextField(blank=True, null=True, verbose_name='Описание поля'), - ), - ] diff --git a/backend/documents/migrations/0019_auto_20231023_2010.py b/backend/documents/migrations/0019_auto_20231023_2010.py deleted file mode 100644 index 7c415e0..0000000 --- a/backend/documents/migrations/0019_auto_20231023_2010.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 3.2 on 2023-10-23 17:10 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0018_alter_documentfield_description'), - ] - - operations = [ - migrations.CreateModel( - name='TemplateFieldType', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('slug', models.SlugField(unique=True, verbose_name='Тип данных')), - ('name', models.CharField(max_length=50, verbose_name='Наименование типа')), - ('mask', models.CharField(blank=True, max_length=255, null=True, verbose_name='Маска допустимых значений')), - ], - options={ - 'verbose_name': 'Тип поля шаблона', - 'verbose_name_plural': 'Типы поля шаблона', - 'ordering': ('name',), - }, - ), - migrations.AddField( - model_name='templatefield', - name='type', - field=models.ForeignKey(blank=True, help_text='Тип поля', null=True, on_delete=django.db.models.deletion.SET_NULL, to='documents.templatefieldtype', verbose_name='Тип'), - ), - ] diff --git a/backend/documents/migrations/0020_alter_templatefield_hint.py b/backend/documents/migrations/0020_alter_templatefield_hint.py deleted file mode 100644 index ee66800..0000000 --- a/backend/documents/migrations/0020_alter_templatefield_hint.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-23 17:54 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0019_auto_20231023_2010'), - ] - - operations = [ - migrations.AlterField( - model_name='templatefield', - name='hint', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Подсказка'), - ), - ] diff --git a/backend/documents/migrations/0021_rename_slug_templatefieldtype_type.py b/backend/documents/migrations/0021_rename_slug_templatefieldtype_type.py deleted file mode 100644 index 60be64a..0000000 --- a/backend/documents/migrations/0021_rename_slug_templatefieldtype_type.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-10-23 18:50 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0020_alter_templatefield_hint'), - ] - - operations = [ - migrations.RenameField( - model_name='templatefieldtype', - old_name='slug', - new_name='type', - ), - ] diff --git a/backend/documents/migrations/0022_auto_20231025_2055.py b/backend/documents/migrations/0022_auto_20231025_2055.py deleted file mode 100644 index ff58211..0000000 --- a/backend/documents/migrations/0022_auto_20231025_2055.py +++ /dev/null @@ -1,107 +0,0 @@ -# Generated by Django 3.2 on 2023-10-25 17:55 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('documents', '0021_rename_slug_templatefieldtype_type'), - ] - - operations = [ - migrations.AlterModelOptions( - name='documentfield', - options={'ordering': ('field__template', 'field'), 'verbose_name': 'Поле документа', 'verbose_name_plural': 'Поля документа'}, - ), - migrations.AlterModelOptions( - name='favdocument', - options={'default_related_name': 'favorite_documents', 'ordering': ('user', 'document'), 'verbose_name': 'Избранный документ', 'verbose_name_plural': 'Избранные документы'}, - ), - migrations.AlterModelOptions( - name='favtemplate', - options={'default_related_name': 'favorite_templates', 'ordering': ('user', 'template'), 'verbose_name': 'Избранный шаблон', 'verbose_name_plural': 'Избранные шаблоны'}, - ), - migrations.AlterModelOptions( - name='template', - options={'default_related_name': 'templates', 'ordering': ('name',), 'verbose_name': 'Шаблон', 'verbose_name_plural': 'Шаблоны'}, - ), - migrations.AlterModelOptions( - name='templatefield', - options={'default_related_name': 'fields', 'ordering': ('template', 'name'), 'verbose_name': 'Поле шаблона', 'verbose_name_plural': 'Поля шаблона'}, - ), - migrations.AlterField( - model_name='document', - name='completed', - field=models.BooleanField(default=False, verbose_name='Документ заполнен'), - ), - migrations.AlterField( - model_name='documentfield', - name='description', - field=models.TextField(blank=True, default='', verbose_name='Описание поля'), - preserve_default=False, - ), - migrations.AlterField( - model_name='documentfield', - name='field', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='document_fields', to='documents.templatefield', verbose_name='Поле'), - ), - migrations.AlterField( - model_name='favdocument', - name='document', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_documents', to='documents.document', verbose_name='Документ'), - preserve_default=False, - ), - migrations.AlterField( - model_name='favdocument', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_documents', to='users.user', verbose_name='Пользователь'), - preserve_default=False, - ), - migrations.AlterField( - model_name='favtemplate', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_templates', to='documents.template', verbose_name='Шаблон'), - preserve_default=False, - ), - migrations.AlterField( - model_name='favtemplate', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='favorite_templates', to='users.user', verbose_name='Пользователь'), - preserve_default=False, - ), - migrations.AlterField( - model_name='fieldtodocument', - name='document', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='document_of_field', to='documents.document'), - ), - migrations.AlterField( - model_name='fieldtodocument', - name='fields', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fields_of_document', to='documents.documentfield'), - ), - migrations.AlterField( - model_name='template', - name='category', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='templates', to='documents.category', verbose_name='Категория'), - ), - migrations.AlterField( - model_name='template', - name='owner', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='templates', to=settings.AUTH_USER_MODEL, verbose_name='Автор шаблона'), - ), - migrations.AlterField( - model_name='templatefield', - name='hint', - field=models.CharField(blank=True, default='', max_length=255, verbose_name='Подсказка'), - preserve_default=False, - ), - migrations.AlterField( - model_name='templatefield', - name='type', - field=models.ForeignKey(blank=True, help_text='Тип поля', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='documents.templatefieldtype', verbose_name='Тип'), - ), - ] diff --git a/backend/documents/migrations/0023_alter_templatefieldtype_mask.py b/backend/documents/migrations/0023_alter_templatefieldtype_mask.py deleted file mode 100644 index c20b6e3..0000000 --- a/backend/documents/migrations/0023_alter_templatefieldtype_mask.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 3.2 on 2023-10-25 18:10 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0022_auto_20231025_2055'), - ] - - operations = [ - migrations.AlterField( - model_name='templatefieldtype', - name='mask', - field=models.CharField(blank=True, default='', max_length=255, verbose_name='Маска допустимых значений'), - preserve_default=False, - ), - ] diff --git a/backend/documents/migrations/0024_templatefield_length.py b/backend/documents/migrations/0024_templatefield_length.py deleted file mode 100644 index 4bd25e7..0000000 --- a/backend/documents/migrations/0024_templatefield_length.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-11-03 14:17 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0023_alter_templatefieldtype_mask'), - ] - - operations = [ - migrations.AddField( - model_name='templatefield', - name='length', - field=models.PositiveIntegerField(blank=True, null=True, verbose_name='Размер поля ввода'), - ), - ] diff --git a/backend/documents/migrations/0025_templatefield_image.py b/backend/documents/migrations/0025_templatefield_image.py deleted file mode 100644 index d2c86af..0000000 --- a/backend/documents/migrations/0025_templatefield_image.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-11-07 10:22 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0024_templatefield_length'), - ] - - operations = [ - migrations.AddField( - model_name='templatefield', - name='image', - field=models.ImageField(blank=True, null=True, upload_to='posts/', verbose_name='Картинка'), - ), - ] diff --git a/backend/documents/migrations/0026_auto_20231107_1326.py b/backend/documents/migrations/0026_auto_20231107_1326.py deleted file mode 100644 index b5fddab..0000000 --- a/backend/documents/migrations/0026_auto_20231107_1326.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 3.2 on 2023-11-07 10:26 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0025_templatefield_image'), - ] - - operations = [ - migrations.RemoveField( - model_name='templatefield', - name='image', - ), - migrations.AddField( - model_name='template', - name='image', - field=models.ImageField(blank=True, null=True, upload_to='posts/', verbose_name='Картинка'), - ), - ] diff --git a/backend/documents/migrations/0027_auto_20231108_1053.py b/backend/documents/migrations/0027_auto_20231108_1053.py deleted file mode 100644 index 151d890..0000000 --- a/backend/documents/migrations/0027_auto_20231108_1053.py +++ /dev/null @@ -1,27 +0,0 @@ -# Generated by Django 3.2 on 2023-11-08 07:53 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0026_auto_20231107_1326'), - ] - - operations = [ - migrations.RemoveField( - model_name='document', - name='document_fields', - ), - migrations.AddField( - model_name='documentfield', - name='document', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='document_fields', to='documents.document', verbose_name='Документ'), - preserve_default=False, - ), - migrations.DeleteModel( - name='FieldToDocument', - ), - ] diff --git a/backend/documents/migrations/0028_remove_documentfield_description.py b/backend/documents/migrations/0028_remove_documentfield_description.py deleted file mode 100644 index 5e0e3bc..0000000 --- a/backend/documents/migrations/0028_remove_documentfield_description.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 3.2 on 2023-11-08 08:50 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0027_auto_20231108_1053'), - ] - - operations = [ - migrations.RemoveField( - model_name='documentfield', - name='description', - ), - ] diff --git a/backend/documents/migrations/0029_alter_template_modified.py b/backend/documents/migrations/0029_alter_template_modified.py deleted file mode 100644 index bf37d57..0000000 --- a/backend/documents/migrations/0029_alter_template_modified.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-11-18 18:09 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0028_remove_documentfield_description'), - ] - - operations = [ - migrations.AlterField( - model_name='template', - name='modified', - field=models.DateTimeField(auto_now=True, verbose_name='Дата модификации'), - ), - ] diff --git a/backend/documents/migrations/0030_auto_20231118_2115.py b/backend/documents/migrations/0030_auto_20231118_2115.py deleted file mode 100644 index ebd149a..0000000 --- a/backend/documents/migrations/0030_auto_20231118_2115.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 3.2 on 2023-11-18 18:15 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0029_alter_template_modified'), - ] - - operations = [ - migrations.RemoveField( - model_name='template', - name='modified', - ), - migrations.AddField( - model_name='template', - name='updated', - field=models.DateTimeField(auto_now=True, verbose_name='Дата изменения'), - ), - ] diff --git a/backend/documents/migrations/0031_alter_template_template.py b/backend/documents/migrations/0031_alter_template_template.py deleted file mode 100644 index 150251f..0000000 --- a/backend/documents/migrations/0031_alter_template_template.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-11-21 05:28 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0030_auto_20231118_2115'), - ] - - operations = [ - migrations.AlterField( - model_name='template', - name='template', - field=models.FileField(upload_to='templates/', verbose_name='Файл шаблона'), - ), - ] diff --git a/backend/documents/migrations/0032_templatefield_default.py b/backend/documents/migrations/0032_templatefield_default.py deleted file mode 100644 index daa9fdf..0000000 --- a/backend/documents/migrations/0032_templatefield_default.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2023-11-23 14:35 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('documents', '0031_alter_template_template'), - ] - - operations = [ - migrations.AddField( - model_name='templatefield', - name='default', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Значение по умолчанию'), - ), - ] diff --git a/backend/documents/models.py b/backend/documents/models.py index be2f0df..1bd3e6a 100644 --- a/backend/documents/models.py +++ b/backend/documents/models.py @@ -7,6 +7,10 @@ from core.constants import Messages from core.template_render import DocumentTemplate +from base_objects.models import ( + BaseObject, + BaseObjectField, +) User = get_user_model() @@ -140,6 +144,15 @@ class TemplateFieldGroup(models.Model): verbose_name="Наименование группы полей", ) + type_object = models.ForeignKey( + BaseObject, + on_delete=models.SET_NULL, + verbose_name="Обьект", + null=True, + blank=True, + # default=None + ) + class Meta: verbose_name = "Группа полей" verbose_name_plural = "Группы полей" @@ -179,6 +192,14 @@ class TemplateField(models.Model): on_delete=models.CASCADE, verbose_name="Шаблон", ) + base_object_field = models.ForeignKey( + BaseObjectField, + on_delete=models.SET_NULL, + verbose_name="Поле базового обьекта", + null=True, + blank=True, + default=1 + ) tag = models.CharField(max_length=255, verbose_name="Тэг поля") name = models.CharField(max_length=255, verbose_name="Наименование поля") hint = models.CharField( diff --git a/backend/request/documents.http b/backend/request/documents.http index a40b568..4103db4 100644 --- a/backend/request/documents.http +++ b/backend/request/documents.http @@ -1,22 +1,22 @@ -@TOKEN = Token bb4f5dbedaafd2730f35803e7087e797479d68f5 -@URL = https://documents-template.site/ -# @URL = http://127.0.0.1:8000 +@TOKEN = Token c911144116cd1689f8fd01e00102bcd1ce4cc175 +# @URL = https://documents-template.site/ +@URL = http://127.0.0.1:8000/api/v2 ### -GET {{URL}}/api/documents/1 -# Authorization: {{TOKEN}} +GET {{URL}}/documents/1 +Authorization: {{TOKEN}} { } ### -POST {{URL}}/api/documents/ +POST {{URL}}/documents/ Content-Type: application/json -# Authorization: {{TOKEN}} +Authorization: {{TOKEN}} { "description": "doc1", - "template": 1, + "template": 42, "completed": true, "document_fields": [ { @@ -63,7 +63,7 @@ Content-Type: application/json } ### -PATCH {{URL}}/api/documents/2/ +PATCH {{URL}}/documents/2/ Content-Type: application/json Authorization: {{TOKEN}} @@ -115,7 +115,7 @@ Authorization: {{TOKEN}} } ### -get {{URL}}/api/documents/draft/ +get {{URL}}/documents/draft/ Content-Type: application/json Authorization: {{TOKEN}} @@ -123,7 +123,7 @@ Authorization: {{TOKEN}} } ### -get {{URL}}/api/documents/history/ +get {{URL}}/documents/history/ Content-Type: application/json Authorization: {{TOKEN}} @@ -131,7 +131,7 @@ Authorization: {{TOKEN}} } ### -get {{URL}}/api/documents/2/download_document/ +get {{URL}}/documents/2/download_document/ Content-Type: application/json Authorization: {{TOKEN}} diff --git a/backend/request/objects.http b/backend/request/objects.http new file mode 100644 index 0000000..b52d468 --- /dev/null +++ b/backend/request/objects.http @@ -0,0 +1,37 @@ +@TOKEN = Token 66ba19730c8aaad7378dc20fae75656b06b00e02 + +# @URL = https://documents-template.site/ +@URL = http://localhost:8000/api/v2 + + +### Все базовые обьекты +GET {{URL}}/base_objects/ +Content-Type: application/json +# Authorization: {{TOKEN}} + +{ +} + +### Все поля базового обьекта +GET {{URL}}/base_object_fields/ +Content-Type: application/json +# Authorization: {{TOKEN}} + +{ +} + +### Все поля базового обьекта +GET {{URL}}/objects/ +Content-Type: application/json +# Authorization: {{TOKEN}} + +{ +} + +### Все поля базового обьекта +GET {{URL}}/object_fields/ +Content-Type: application/json +# Authorization: {{TOKEN}} + +{ +} \ No newline at end of file diff --git a/backend/request/template.http b/backend/request/template.http index bd115dc..f83c612 100644 --- a/backend/request/template.http +++ b/backend/request/template.http @@ -1,19 +1,19 @@ -@TOKEN = Token 640063c217c9693de37f04d65249f35a19705efb +@TOKEN = Token 66ba19730c8aaad7378dc20fae75656b06b00e02 -# @URL = https://documents-template.site/ -@URL = http://localhost:8000 +@URL = https://doky.pro/api/v2 +# @URL = http://localhost:8000/api/v2 ### Все шаблоны -GET {{URL}}/api/templates/ +GET {{URL}}/templates/ Content-Type: application/json -Authorization: {{TOKEN}} +# Authorization: {{TOKEN}} { } ### Просмотр одного шаблона -GET {{URL}}/api/templates/1/ +GET {{URL}}/templates/22/ Content-Type: application/json Authorization: {{TOKEN}} @@ -22,7 +22,7 @@ Authorization: {{TOKEN}} ### Просмотр всех полей шаблона -GET {{URL}}/api/templates/1/fields +GET {{URL}}/templates/42/fields Content-Type: application/json Authorization: {{TOKEN}} @@ -30,15 +30,7 @@ Authorization: {{TOKEN}} } ### Добавить шаблон в избранное -POST {{URL}}/api/templates/1/favorite/ -Content-Type: application/json -Authorization: {{TOKEN}} - -{ -} - -### Удалить шаблон из избранного -DELETE {{URL}}/api/templates/1/favorite/ +POST {{URL}}/templates/22/favorite/ Content-Type: application/json Authorization: {{TOKEN}} @@ -46,7 +38,7 @@ Authorization: {{TOKEN}} } ### Удалить шаблон из избранного -DELETE {{URL}}/api/templates/1/favorite/ +DELETE {{URL}}/templates/1/favorite/ Content-Type: application/json Authorization: {{TOKEN}} @@ -55,7 +47,7 @@ Authorization: {{TOKEN}} ### Получить первью документа от анонимного пользователя -POST {{URL}}/api/templates/1/download_preview/ +POST {{URL}}/templates/22/download_preview/ Content-Type: application/json # Authorization: {{TOKEN}} @@ -101,7 +93,7 @@ Content-Type: application/json } ### Добавить новый шаблон и описание его полей в базу (ТОЛЬКО ДЛЯ АДМИНА) -POST {{URL}}/api/templates/ +POST {{URL}}/templates/ Content-Type: application/json Authorization: {{TOKEN}} diff --git a/backend/request/users.http b/backend/request/users.http index 5e77a07..29b9889 100644 --- a/backend/request/users.http +++ b/backend/request/users.http @@ -1,9 +1,9 @@ -@TOKEN = Token b5b767cb36da725f900892f627a28dc1c0e40488 -# @URL = https://documents-template.site -@URL = http://127.0.0.1:8000 +@TOKEN = Token c911144116cd1689f8fd01e00102bcd1ce4cc175 +@URL = https://doki.pro/api/v2 +# @URL = http://127.0.0.1:8000/api/v2 ### -POST {{URL}}/api/users/ +POST {{URL}}/users/ Content-Type: application/json { @@ -15,16 +15,16 @@ Content-Type: application/json } ### -POST {{URL}}/api/auth/token/login/ +POST {{URL}}/auth/token/login/ Content-Type: application/json { - "email": "nikox118182@mail.ru", + "email": "nikox1181182@mail.ru", "password": "456852Zx" } ### -POST {{URL}}/api/users/set_password/ +POST {{URL}}/users/set_password/ Content-Type: application/json Authorization: {{TOKEN}} @@ -34,7 +34,7 @@ Authorization: {{TOKEN}} } ### -GET {{URL}}/api/users/me/ +GET {{URL}}/users/me/ Content-Type: application/json Authorization: {{TOKEN}} @@ -43,7 +43,7 @@ Authorization: {{TOKEN}} ### -GET {{URL}}/api/users/2/ +GET {{URL}}/users/2/ Content-Type: application/json Authorization: {{TOKEN}} diff --git a/backend/users/models.py b/backend/users/models.py index 0ada553..096eb8a 100644 --- a/backend/users/models.py +++ b/backend/users/models.py @@ -1,6 +1,8 @@ from django.contrib.auth.models import AbstractUser from django.db import models +from .validators import validator_password + class User(AbstractUser): bio = models.TextField("Биография", null=True, blank=True) @@ -12,6 +14,12 @@ class User(AbstractUser): "unique": "Данная почта уже используется", }, ) + password = models.CharField( + max_length=150, + validators=[ + validator_password, + ], + ) class Meta: verbose_name = "Пользователь" diff --git a/backend/users/tests.py b/backend/users/tests.py index 19b0c86..d5c6a87 100644 --- a/backend/users/tests.py +++ b/backend/users/tests.py @@ -24,7 +24,7 @@ def setUpClass(cls): "password": "qwertyqwerty123", } cls.response_registration = cls.client.post( - "/api/users/", cls.test_user_data + "/api/v2/users/", cls.test_user_data ) @classmethod @@ -45,10 +45,10 @@ def test_registration(self): def test_authentication(self): response_registration = self.response_registration response_token_login = self.client.post( - "/api/auth/token/login/", self.test_user_data + "/api/v2/auth/token/login/", self.test_user_data ) response_auth = self.client.get( - "/api/users/me/", + "/api/v2/users/me/", HTTP_AUTHORIZATION=f'Token {response_token_login.data["auth_token"]}', ) self.assertEqual( diff --git a/backend/users/validators.py b/backend/users/validators.py index 6c17282..6d919bd 100644 --- a/backend/users/validators.py +++ b/backend/users/validators.py @@ -1,7 +1,17 @@ +import re from django.core.exceptions import ValidationError +# Латинские буквы +# Одна заглавная + +# Одна строчная +# Одна цифра +# Один из спецсимволов (!#$%*&@^) +# Длина поля: +# Min 8 символов +# Max 32 символов -def validator_username(value): - if value.lower() == "me": - raise ValidationError("me слово запрещенное, в любом регистре. ") +def validator_password(value): + if value.len() > 8 and value < 32: + raise ValidationError("Пароль должен сожержать больше 8 или меньше 32 символов") + # if re.search((r'\d'), value) != "" return value From b35edfded963280c7bea1ea74640b67dc9017798 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Wed, 13 Mar 2024 09:50:22 +0300 Subject: [PATCH 62/80] Update validators.py --- backend/users/validators.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/backend/users/validators.py b/backend/users/validators.py index 6d919bd..c42e326 100644 --- a/backend/users/validators.py +++ b/backend/users/validators.py @@ -8,10 +8,20 @@ # Один из спецсимволов (!#$%*&@^) # Длина поля: # Min 8 символов -# Max 32 символов +# Max 32 символов def validator_password(value): + if value.len() > 8 and value < 32: raise ValidationError("Пароль должен сожержать больше 8 или меньше 32 символов") - # if re.search((r'\d'), value) != "" + + pattern = r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d]{8,}$' + if re.match(pattern, value) is None: + raise ValidationError('Password has incorrecr format.') + + pattern = r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$' + if re.match(pattern, value) is None: + raise ValidationError('Password has incorrecr format.') + return value + From 9781d409d3a890af0594fb74dd8c3de2da9b93af Mon Sep 17 00:00:00 2001 From: Paymir121 Date: Wed, 3 Apr 2024 19:41:31 +0300 Subject: [PATCH 63/80] django allauth vk yandex --- backend/backend/settings.py | 54 ++++++++++++++++++++++++------------- backend/backend/urls.py | 21 ++++++++------- backend/requirements.txt | 1 + 3 files changed, 47 insertions(+), 29 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index bdb4701..f03f1d2 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -30,8 +30,12 @@ "api", "users", "documents", - "colorfield", # wtf ? "core", + 'allauth', + 'allauth.account', + 'allauth.socialaccount', + 'allauth.socialaccount.providers.yandex', + 'allauth.socialaccount.providers.vk', ] MIDDLEWARE = [ @@ -44,6 +48,9 @@ "django.middleware.clickjacking.XFrameOptionsMiddleware", "corsheaders.middleware.CorsMiddleware", "django.middleware.common.CommonMiddleware", + # allauth + "django.contrib.sessions.middleware.SessionMiddleware", + "allauth.account.middleware.AccountMiddleware", ] ROOT_URLCONF = "backend.urls" @@ -59,6 +66,7 @@ "django.template.context_processors.request", "django.contrib.auth.context_processors.auth", "django.contrib.messages.context_processors.messages", + 'django.template.context_processors.request', ], }, }, @@ -66,24 +74,24 @@ WSGI_APPLICATION = "backend.wsgi.application" -if os.getenv("BD") == "sqlite": - DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", - } - } -else: - DATABASES = { - "default": { - "ENGINE": "django.db.backends.postgresql", - "NAME": os.getenv("POSTGRES_DB", "django"), - "USER": os.getenv("POSTGRES_USER", "django"), - "PASSWORD": os.getenv("POSTGRES_PASSWORD", ""), - "HOST": os.getenv("DB_HOST", ""), - "PORT": int(os.getenv("DB_PORT", "5432")), - } +# if os.getenv("BD") == "sqlite": +DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", } +} +# else: +# DATABASES = { +# "default": { +# "ENGINE": "django.db.backends.postgresql", +# "NAME": os.getenv("POSTGRES_DB", "django"), +# "USER": os.getenv("POSTGRES_USER", "django"), +# "PASSWORD": os.getenv("POSTGRES_PASSWORD", ""), +# "HOST": os.getenv("DB_HOST", ""), +# "PORT": int(os.getenv("DB_PORT", "5432")), +# } +# } AUTH_PASSWORD_VALIDATORS = [ @@ -169,5 +177,13 @@ "SECURITY_DEFINITIONS": { "Token": {"type": "apiKey", "name": "Authorization", "in": "header"} }, - "BASE_PATH": "https://documents-template.site/api/", + "BASE_PATH": "https://doki.pro/api/v2/", } + + +AUTHENTICATION_BACKENDS = [ + 'django.contrib.auth.backends.ModelBackend', + 'allauth.account.auth_backends.AuthenticationBackend', +] + +ACCOUNT_LOGIN_REDIRECT_URL = "https://doky.pro/" \ No newline at end of file diff --git a/backend/backend/urls.py b/backend/backend/urls.py index 376fa6a..e0214ff 100644 --- a/backend/backend/urls.py +++ b/backend/backend/urls.py @@ -8,19 +8,20 @@ urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('api.urls')), + path('accounts/', include('allauth.urls')), ] schema_view = get_schema_view( - openapi.Info( - title="Draft API", - default_version='v1', - description="Документация для приложения draft docuemnts проекта Шаблонизатор", - # terms_of_service="URL страницы с пользовательским соглашением", - contact=openapi.Contact(email="nikox122@mail.ru"), - license=openapi.License(name="BSD License"), - ), - public=True, - permission_classes=(permissions.AllowAny,), + openapi.Info( + title="Draft API", + default_version='v1', + description="Документация для приложения draft docuemnts проекта Шаблонизатор", + # terms_of_service="URL страницы с пользовательским соглашением", + contact=openapi.Contact(email="nikox122@mail.ru"), + license=openapi.License(name="BSD License"), + ), + public=True, + permission_classes=(permissions.AllowAny,), ) urlpatterns += [ diff --git a/backend/requirements.txt b/backend/requirements.txt index 43f53b5..1561a1c 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -15,6 +15,7 @@ cryptography==41.0.4 DAWG-Python==0.7.2 defusedxml==0.8.0rc2 Django==3.2 +django-allauth==0.61.1 django-colorfield==0.9.0 django-cors-headers==4.1.0 django-filter==22.1 From 306e4532ba55c8008ff1e8a9a8056af2900b5d0a Mon Sep 17 00:00:00 2001 From: Paymir121 Date: Wed, 3 Apr 2024 19:42:40 +0300 Subject: [PATCH 64/80] django allauth vk yandex --- backend/backend/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index f03f1d2..471ec91 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -36,6 +36,7 @@ 'allauth.socialaccount', 'allauth.socialaccount.providers.yandex', 'allauth.socialaccount.providers.vk', + 'allauth.socialaccount.providers.google', ] MIDDLEWARE = [ From 0d9edf48eefdb8d977a7b9029a72ac2e8776ce4a Mon Sep 17 00:00:00 2001 From: Paymir121 Date: Wed, 3 Apr 2024 19:55:21 +0300 Subject: [PATCH 65/80] allauth VK and ayandex --- backend/backend/settings.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 471ec91..a63f165 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -75,24 +75,24 @@ WSGI_APPLICATION = "backend.wsgi.application" -# if os.getenv("BD") == "sqlite": -DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", +if os.getenv("BD") == "sqlite": + DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", + } + } +else: + DATABASES = { + "default": { + "ENGINE": "django.db.backends.postgresql", + "NAME": os.getenv("POSTGRES_DB", "django"), + "USER": os.getenv("POSTGRES_USER", "django"), + "PASSWORD": os.getenv("POSTGRES_PASSWORD", ""), + "HOST": os.getenv("DB_HOST", ""), + "PORT": int(os.getenv("DB_PORT", "5432")), + } } -} -# else: -# DATABASES = { -# "default": { -# "ENGINE": "django.db.backends.postgresql", -# "NAME": os.getenv("POSTGRES_DB", "django"), -# "USER": os.getenv("POSTGRES_USER", "django"), -# "PASSWORD": os.getenv("POSTGRES_PASSWORD", ""), -# "HOST": os.getenv("DB_HOST", ""), -# "PORT": int(os.getenv("DB_PORT", "5432")), -# } -# } AUTH_PASSWORD_VALIDATORS = [ From ca6e8c73c38c6a1c9d68c6b87be9728571b2f608 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Thu, 4 Apr 2024 10:43:33 +0300 Subject: [PATCH 66/80] Update requirements.txt --- backend/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index 8b9cbd5..88cfc97 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -11,7 +11,7 @@ click==8.1.7 colorama==0.4.6 coreapi==2.3.3 coreschema==0.0.4 -cryptography==41.0.4 +# cryptography==41.0.4 DAWG-Python==0.7.2 defusedxml==0.8.0rc2 distlib==0.3.7 From 01c04f8c44ffd119aa8766c4a73c722826495e72 Mon Sep 17 00:00:00 2001 From: Paymir121 Date: Thu, 4 Apr 2024 10:49:22 +0300 Subject: [PATCH 67/80] fix --- backend/backend/settings.py | 63 ++++++------------------------------- 1 file changed, 9 insertions(+), 54 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index eaeb0e5..a63f165 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -2,7 +2,6 @@ import os from pathlib import Path -import sentry_sdk from dotenv import load_dotenv load_dotenv() @@ -31,7 +30,6 @@ "api", "users", "documents", - "base_objects", "core", 'allauth', 'allauth.account', @@ -128,8 +126,7 @@ STATIC_ROOT = BASE_DIR / "collected_static" STATICFILES_DIRS = ((BASE_DIR / "static/"),) -INITIAL_DATA_DIR = BASE_DIR / "data/" # for local run -# INITIAL_DATA_DIR = BASE_DIR / "static/data/" +INITIAL_DATA_DIR = BASE_DIR / "static/data/" MEDIA_URL = "/media/" MEDIA_ROOT = "/app/media" @@ -155,28 +152,27 @@ DJOSER = { "LOGIN_FIELD": "email", - # "USER_ACTIVATION": "optional", + "USER_ACTIVATION": "optional", "PERMISSIONS": { "user_list": ["rest_framework.permissions.AllowAny"], "user": ["djoser.permissions.CurrentUserOrAdminOrReadOnly"], }, - "HIDE_USERS": True, + "HIDE_USERS": False, "PASSWORD_RESET_CONFIRM_URL": "#/set_password/{uid}/{token}", "SERIALIZERS": { "user_create": "api.v1.serializers.CustomUserSerializer", "user": "api.v1.serializers.CustomUserSerializer", - "current_user": "api.v1.serializers.CustomUserSerializer", }, - # "ACTIVATION_URL": "#activation/{uid}/{token}", - #'SEND_ACTIVATION_EMAIL': True, + "SENDACTIVATIONEMAIL": True, + "ACTIVATION_URL": "#activation/{uid}/{token}", } EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" -EMAIL_HOST = "smtp.gmail.com" +EMAIL_HOST = "smtp.rambler.ru" EMAIL_PORT = 465 EMAIL_USE_SSL = True -EMAIL_HOST_USER = "nikox12lamba@gmail.com" -EMAIL_HOST_PASSWORD = "fkzzqiydypuxrfvw" +EMAIL_HOST_USER = "draftnikox@rambler.ru" +EMAIL_HOST_PASSWORD = "456852Zx" SWAGGER_SETTINGS = { "SECURITY_DEFINITIONS": { @@ -191,45 +187,4 @@ 'allauth.account.auth_backends.AuthenticationBackend', ] -ACCOUNT_LOGIN_REDIRECT_URL = "https://doky.pro/" - "BASE_PATH": "https://doky.pro/api/v2/", -} - -LOGGING = { - "version": 1, - "disable_existing_loggers": False, - "formatters": { - "console": {"format": "%(name)-12s %(levelname)-8s %(message)s"}, - "file": { - "format": "%(asctime)s %(name)-12s %(levelname)-8s %(message)s" - }, - }, - "handlers": { - "console": {"class": "logging.StreamHandler", "formatter": "console"}, - "file": { - "level": "DEBUG", - "class": "logging.FileHandler", - "formatter": "file", - "filename": "debug.log", - }, - }, - "loggers": { - "": { - "level": "DEBUG", - "handlers": ["console", "file"], - "propagate": True, - }, - "django.request": {"level": "DEBUG", "handlers": ["console", "file"]}, - }, -} - -sentry_sdk.init( - dsn="https://be8f804283b7a2e423209e00692792f0@o4506344044298240.ingest.sentry.io/4506344234156032", - # Set traces_sample_rate to 1.0 to capture 100% - # of transactions for performance monitoring. - traces_sample_rate=1.0, - # Set profiles_sample_rate to 1.0 to profile 100% - # of sampled transactions. - # We recommend adjusting this value in production. - profiles_sample_rate=1.0, -) +ACCOUNT_LOGIN_REDIRECT_URL = "https://doky.pro/" \ No newline at end of file From bbaaa992e11faf59cc474ab7aec1047de489c362 Mon Sep 17 00:00:00 2001 From: Paymir121 Date: Thu, 4 Apr 2024 10:53:50 +0300 Subject: [PATCH 68/80] fix --- backend/backend/settings.py | 58 ++++++++++++++++++++++++++++++++----- 1 file changed, 50 insertions(+), 8 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index a63f165..837a950 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -2,6 +2,7 @@ import os from pathlib import Path +import sentry_sdk from dotenv import load_dotenv load_dotenv() @@ -30,6 +31,7 @@ "api", "users", "documents", + "base_objects", "core", 'allauth', 'allauth.account', @@ -126,7 +128,8 @@ STATIC_ROOT = BASE_DIR / "collected_static" STATICFILES_DIRS = ((BASE_DIR / "static/"),) -INITIAL_DATA_DIR = BASE_DIR / "static/data/" +INITIAL_DATA_DIR = BASE_DIR / "data/" # for local run +# INITIAL_DATA_DIR = BASE_DIR / "static/data/" MEDIA_URL = "/media/" MEDIA_ROOT = "/app/media" @@ -152,27 +155,28 @@ DJOSER = { "LOGIN_FIELD": "email", - "USER_ACTIVATION": "optional", + # "USER_ACTIVATION": "optional", "PERMISSIONS": { "user_list": ["rest_framework.permissions.AllowAny"], "user": ["djoser.permissions.CurrentUserOrAdminOrReadOnly"], }, - "HIDE_USERS": False, + "HIDE_USERS": True, "PASSWORD_RESET_CONFIRM_URL": "#/set_password/{uid}/{token}", "SERIALIZERS": { "user_create": "api.v1.serializers.CustomUserSerializer", "user": "api.v1.serializers.CustomUserSerializer", + "current_user": "api.v1.serializers.CustomUserSerializer", }, - "SENDACTIVATIONEMAIL": True, - "ACTIVATION_URL": "#activation/{uid}/{token}", + # "ACTIVATION_URL": "#activation/{uid}/{token}", + #'SEND_ACTIVATION_EMAIL': True, } EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" -EMAIL_HOST = "smtp.rambler.ru" +EMAIL_HOST = "smtp.gmail.com" EMAIL_PORT = 465 EMAIL_USE_SSL = True -EMAIL_HOST_USER = "draftnikox@rambler.ru" -EMAIL_HOST_PASSWORD = "456852Zx" +EMAIL_HOST_USER = "nikox12lamba@gmail.com" +EMAIL_HOST_PASSWORD = "fkzzqiydypuxrfvw" SWAGGER_SETTINGS = { "SECURITY_DEFINITIONS": { @@ -181,6 +185,44 @@ "BASE_PATH": "https://doki.pro/api/v2/", } +LOGGING = { + "version": 1, + "disable_existing_loggers": False, + "formatters": { + "console": {"format": "%(name)-12s %(levelname)-8s %(message)s"}, + "file": { + "format": "%(asctime)s %(name)-12s %(levelname)-8s %(message)s" + }, + }, + "handlers": { + "console": {"class": "logging.StreamHandler", "formatter": "console"}, + "file": { + "level": "DEBUG", + "class": "logging.FileHandler", + "formatter": "file", + "filename": "debug.log", + }, + }, + "loggers": { + "": { + "level": "DEBUG", + "handlers": ["console", "file"], + "propagate": True, + }, + "django.request": {"level": "DEBUG", "handlers": ["console", "file"]}, + }, +} + +sentry_sdk.init( + dsn="https://be8f804283b7a2e423209e00692792f0@o4506344044298240.ingest.sentry.io/4506344234156032", + # Set traces_sample_rate to 1.0 to capture 100% + # of transactions for performance monitoring. + traces_sample_rate=1.0, + # Set profiles_sample_rate to 1.0 to profile 100% + # of sampled transactions. + # We recommend adjusting this value in production. + profiles_sample_rate=1.0, +) AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend', From 00b8406a59f01845f0a46c168e8988b73295a133 Mon Sep 17 00:00:00 2001 From: Paymir121 Date: Thu, 4 Apr 2024 11:48:37 +0300 Subject: [PATCH 69/80] fix --- backend/api/v2/objects/__init__.py | 0 backend/api/v2/objects/serializers.py | 41 ------ backend/api/v2/objects/views.py | 36 ----- backend/api/v2/urls.py | 26 ---- backend/backend/settings.py | 35 +++-- backend/base_objects/__init__.py | 0 backend/base_objects/admin.py | 23 ---- backend/base_objects/apps.py | 6 - .../base_objects/migrations/0001_initial.py | 75 ----------- .../0002_alter_object_base_object.py | 19 --- .../0003_alter_object_base_object.py | 19 --- backend/base_objects/migrations/__init__.py | 0 backend/base_objects/models.py | 123 ------------------ backend/base_objects/tests.py | 3 - backend/documents/admin.py | 2 +- backend/documents/migrations/0001_initial.py | 5 +- backend/documents/models.py | 39 +++--- .../migrations/0003_alter_user_password.py | 19 +++ 18 files changed, 57 insertions(+), 414 deletions(-) delete mode 100644 backend/api/v2/objects/__init__.py delete mode 100644 backend/api/v2/objects/serializers.py delete mode 100644 backend/api/v2/objects/views.py delete mode 100644 backend/base_objects/__init__.py delete mode 100644 backend/base_objects/admin.py delete mode 100644 backend/base_objects/apps.py delete mode 100644 backend/base_objects/migrations/0001_initial.py delete mode 100644 backend/base_objects/migrations/0002_alter_object_base_object.py delete mode 100644 backend/base_objects/migrations/0003_alter_object_base_object.py delete mode 100644 backend/base_objects/migrations/__init__.py delete mode 100644 backend/base_objects/models.py delete mode 100644 backend/base_objects/tests.py create mode 100644 backend/users/migrations/0003_alter_user_password.py diff --git a/backend/api/v2/objects/__init__.py b/backend/api/v2/objects/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/backend/api/v2/objects/serializers.py b/backend/api/v2/objects/serializers.py deleted file mode 100644 index 8047f60..0000000 --- a/backend/api/v2/objects/serializers.py +++ /dev/null @@ -1,41 +0,0 @@ -"""Сериализаторы для API.""" -from rest_framework import serializers - -from base_objects.models import ( - BaseObject, - Object, - BaseObjectField, - ObjectField, - ) - - -class BaseObjectSerializer(serializers.ModelSerializer): - """Сериализатор поля документов.""" - - class Meta: - fields = '__all__' - model = BaseObject - - -class BaseObjectFieldSerializer(serializers.ModelSerializer): - """Сериализатор поля документов.""" - - class Meta: - fields = '__all__' - model = BaseObjectField - - -class ObjectSerializer(serializers.ModelSerializer): - """Сериализатор поля документов.""" - - class Meta: - fields = '__all__' - model = Object - - -class ObjectFieldSerializer(serializers.ModelSerializer): - """Сериализатор поля документов.""" - - class Meta: - fields = '__all__' - model = ObjectField \ No newline at end of file diff --git a/backend/api/v2/objects/views.py b/backend/api/v2/objects/views.py deleted file mode 100644 index c664bc9..0000000 --- a/backend/api/v2/objects/views.py +++ /dev/null @@ -1,36 +0,0 @@ -from rest_framework import ( - viewsets, -) - -from base_objects.models import ( - BaseObject, - Object, - BaseObjectField, - ObjectField - ) -from .serializers import ( - BaseObjectSerializer, - BaseObjectFieldSerializer, - ObjectSerializer, - ObjectFieldSerializer, -) - - -class BaseObjectViewSet(viewsets.ModelViewSet): - queryset = BaseObject.objects.all() - serializer_class = BaseObjectSerializer - - -class BaseObjectFieldViewSet(viewsets.ModelViewSet): - queryset = BaseObjectField.objects.all() - serializer_class = BaseObjectFieldSerializer - - -class ObjectViewSet(viewsets.ModelViewSet): - queryset = Object.objects.all() - serializer_class = ObjectSerializer - - -class ObjectFieldViewSet(viewsets.ModelViewSet): - queryset = ObjectField.objects.all() - serializer_class = ObjectFieldSerializer \ No newline at end of file diff --git a/backend/api/v2/urls.py b/backend/api/v2/urls.py index a810605..a79bcc4 100644 --- a/backend/api/v2/urls.py +++ b/backend/api/v2/urls.py @@ -10,12 +10,6 @@ from api.v2.favorites.views import ( FavTemplateAPIview, FavDocumentAPIview,) -from api.v2.objects.views import ( - BaseObjectViewSet, - BaseObjectFieldViewSet, - ObjectViewSet, - ObjectFieldViewSet - ) from django.urls import include, path, re_path from rest_framework.routers import DefaultRouter @@ -49,26 +43,6 @@ viewset=DocumentViewSet, ) -router_v1.register( - prefix="base_objects", - basename="base_objects", - viewset=BaseObjectViewSet, -) -router_v1.register( - prefix="base_object_fields", - basename="base_object_fields", - viewset=BaseObjectFieldViewSet, -) -router_v1.register( - prefix="objects", - basename="objects", - viewset=ObjectViewSet, -) -router_v1.register( - prefix="object_fields", - basename="object_fields", - viewset=ObjectFieldViewSet, -) urlpatterns = [ path( diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 837a950..7847b22 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -31,7 +31,6 @@ "api", "users", "documents", - "base_objects", "core", 'allauth', 'allauth.account', @@ -77,24 +76,24 @@ WSGI_APPLICATION = "backend.wsgi.application" -if os.getenv("BD") == "sqlite": - DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", - } - } -else: - DATABASES = { - "default": { - "ENGINE": "django.db.backends.postgresql", - "NAME": os.getenv("POSTGRES_DB", "django"), - "USER": os.getenv("POSTGRES_USER", "django"), - "PASSWORD": os.getenv("POSTGRES_PASSWORD", ""), - "HOST": os.getenv("DB_HOST", ""), - "PORT": int(os.getenv("DB_PORT", "5432")), - } +# if os.getenv("BD") == "sqlite": +DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", } +} +# else: +# DATABASES = { +# "default": { +# "ENGINE": "django.db.backends.postgresql", +# "NAME": os.getenv("POSTGRES_DB", "django"), +# "USER": os.getenv("POSTGRES_USER", "django"), +# "PASSWORD": os.getenv("POSTGRES_PASSWORD", ""), +# "HOST": os.getenv("DB_HOST", ""), +# "PORT": int(os.getenv("DB_PORT", "5432")), +# } +# } AUTH_PASSWORD_VALIDATORS = [ diff --git a/backend/base_objects/__init__.py b/backend/base_objects/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/backend/base_objects/admin.py b/backend/base_objects/admin.py deleted file mode 100644 index 7637e2e..0000000 --- a/backend/base_objects/admin.py +++ /dev/null @@ -1,23 +0,0 @@ -"""Настройки админки для приложения "Документы".""" -from django.contrib import admin - -from base_objects import models - -@admin.register(models.BaseObject) -class ObjectAdmin(admin.ModelAdmin): - list_display = ("id", "name") - - -@admin.register(models.BaseObjectField) -class ObjectFieldAdmin(admin.ModelAdmin): - list_display = ("id", "name") - -@admin.register(models.Object) -class ObjectAdmin(admin.ModelAdmin): - list_display = ("id", "name") - - -@admin.register(models.ObjectField) -class ObjectFieldAdmin(admin.ModelAdmin): - list_display = ("id", "value") - diff --git a/backend/base_objects/apps.py b/backend/base_objects/apps.py deleted file mode 100644 index 96185d1..0000000 --- a/backend/base_objects/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class BaseObjectsConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'base_objects' diff --git a/backend/base_objects/migrations/0001_initial.py b/backend/base_objects/migrations/0001_initial.py deleted file mode 100644 index 597be78..0000000 --- a/backend/base_objects/migrations/0001_initial.py +++ /dev/null @@ -1,75 +0,0 @@ -# Generated by Django 3.2 on 2024-01-17 14:48 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='BaseObject', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='Наименование базового обьекта')), - ('updated', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')), - ('deleted', models.BooleanField(verbose_name='Удален')), - ('description', models.TextField(verbose_name='Описание базового обьекта')), - ], - options={ - 'verbose_name': 'базовый Обьекта', - 'verbose_name_plural': 'базовые Обьекты', - 'ordering': ('name',), - 'default_related_name': 'Base_objects', - }, - ), - migrations.CreateModel( - name='BaseObjectField', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='Наименование базового поля обьекта')), - ('base_object', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='base_fields', to='base_objects.baseobject', verbose_name='поля базового Обьект')), - ], - options={ - 'verbose_name': 'Поле базового обьекта', - 'verbose_name_plural': 'Поля базового обьекта', - 'default_related_name': 'base_fields', - }, - ), - migrations.CreateModel( - name='Object', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='Наименование обьекта')), - ('created', models.DateTimeField(auto_now=True, verbose_name='Дата создания')), - ('updated', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')), - ('base_object', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='customer_objects', to='base_objects.baseobject', verbose_name='поля базового Обьект')), - ('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='customer_objects', to=settings.AUTH_USER_MODEL, verbose_name='Автор документа')), - ], - options={ - 'verbose_name': 'Обьект', - 'verbose_name_plural': 'Обьекты', - 'default_related_name': 'customer_objects', - }, - ), - migrations.CreateModel( - name='ObjectField', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('value', models.CharField(blank=True, max_length=255, null=True, verbose_name='Содержимое поля')), - ('base_field', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='object_fields', to='base_objects.baseobjectfield', verbose_name='Поле')), - ('object', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='base_objects.object', verbose_name='Обьект')), - ], - options={ - 'verbose_name': 'Поле обьекта', - 'verbose_name_plural': 'Поля обьекта', - }, - ), - ] diff --git a/backend/base_objects/migrations/0002_alter_object_base_object.py b/backend/base_objects/migrations/0002_alter_object_base_object.py deleted file mode 100644 index 5c259ce..0000000 --- a/backend/base_objects/migrations/0002_alter_object_base_object.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 3.2 on 2024-01-17 14:51 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('base_objects', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='object', - name='base_object', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='customer_objects', to='base_objects.baseobject', verbose_name='поля базового Обьект'), - ), - ] diff --git a/backend/base_objects/migrations/0003_alter_object_base_object.py b/backend/base_objects/migrations/0003_alter_object_base_object.py deleted file mode 100644 index a42d194..0000000 --- a/backend/base_objects/migrations/0003_alter_object_base_object.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 3.2 on 2024-01-17 14:52 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('base_objects', '0002_alter_object_base_object'), - ] - - operations = [ - migrations.AlterField( - model_name='object', - name='base_object', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='customer_objects', to='base_objects.baseobject', verbose_name='Базовый Обьект'), - ), - ] diff --git a/backend/base_objects/migrations/__init__.py b/backend/base_objects/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/backend/base_objects/models.py b/backend/base_objects/models.py deleted file mode 100644 index 2072abd..0000000 --- a/backend/base_objects/models.py +++ /dev/null @@ -1,123 +0,0 @@ -"""Модели обьектов.""" -from django.db import models -from django.contrib.auth import get_user_model - -User = get_user_model() - - -class BaseObject(models.Model): - """Шаблон обьекта.""" - - name = models.CharField( - max_length=255, - verbose_name="Наименование базового обьекта" - ) - updated = models.DateTimeField( - verbose_name="Дата изменения", - auto_now=True - ) - deleted = models.BooleanField(verbose_name="Удален") - description = models.TextField(verbose_name="Описание базового обьекта") - - class Meta: - verbose_name = "базовый Обьекта" - verbose_name_plural = "базовые Обьекты" - default_related_name = "Base_objects" - ordering = ("name",) - - def __str__(self): - """Отображение - название.""" - return self.name - - -class BaseObjectField(models.Model): - """Поля шаблон обьектов""" - - base_object = models.ForeignKey( - BaseObject, - on_delete=models.CASCADE, - verbose_name="поля базового Обьект", - default=1, - ) - name = models.CharField( - max_length=255, - verbose_name="Наименование базового поля обьекта") - - class Meta: - verbose_name = "Поле базового обьекта" - verbose_name_plural = "Поля базового обьекта" - default_related_name = "base_fields" - - def __str__(self): - """Отображение - название поля (базового обьекта).""" - return f"{self.name} ({self.base_object})" - - -class Object(models.Model): - """Обьект.""" - - owner = models.ForeignKey( - User, - on_delete=models.SET_NULL, - verbose_name="Автор документа", - null=True, - blank=True, - ) - base_object = models.ForeignKey( - BaseObject, - on_delete=models.CASCADE, - verbose_name="Базовый Обьект", - null=True, - blank=True, - ) - name = models.CharField( - max_length=255, verbose_name="Наименование обьекта" - ) - created = models.DateTimeField( - auto_now=True, - verbose_name="Дата создания" - ) - updated = models.DateTimeField( - auto_now=True, - verbose_name="Дата изменения" - ) - - class Meta: - verbose_name = "Обьект" - verbose_name_plural = "Обьекты" - default_related_name = "customer_objects" - - def __str__(self): - """Отображение - название.""" - return self.name - - -class ObjectField(models.Model): - """Поля обьекта""" - - object = models.ForeignKey( - Object, - on_delete=models.CASCADE, - verbose_name="Обьект", - ) - base_field = models.ForeignKey( - BaseObjectField, - on_delete=models.SET_NULL, - blank=True, - null=True, - verbose_name="Поле", - related_name="object_fields", - ) - value = models.CharField( - max_length=255, - verbose_name="Содержимое поля", - blank=True, - null=True,) - - class Meta: - verbose_name = "Поле обьекта" - verbose_name_plural = "Поля обьекта" - - def __str__(self): - """Отображение - название поля (шаблон).""" - return f"{self.value}" diff --git a/backend/base_objects/tests.py b/backend/base_objects/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/backend/base_objects/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/backend/documents/admin.py b/backend/documents/admin.py index 91695b8..4a90842 100644 --- a/backend/documents/admin.py +++ b/backend/documents/admin.py @@ -67,7 +67,7 @@ def get_form(self, request, instance=None, **kwargs): @admin.register(models.TemplateFieldGroup) class TemplateFieldGroupAdmin(admin.ModelAdmin): - list_display = ("id", "name", "template", "type_object") + list_display = ("id", "name", "template",) readonly_fields = ("id",) search_fields = ("name", "template") diff --git a/backend/documents/migrations/0001_initial.py b/backend/documents/migrations/0001_initial.py index 1aba3cb..e1a5447 100644 --- a/backend/documents/migrations/0001_initial.py +++ b/backend/documents/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2 on 2024-01-17 14:48 +# Generated by Django 3.2 on 2024-04-04 08:47 from django.conf import settings from django.db import migrations, models @@ -10,7 +10,6 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('base_objects', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] @@ -84,7 +83,6 @@ class Migration(migrations.Migration): ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='Наименование группы полей')), ('template', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='field_groups', to='documents.template', verbose_name='Шаблон')), - ('type_object', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='base_objects.baseobject', verbose_name='Обьект')), ], options={ 'verbose_name': 'Группа полей', @@ -101,7 +99,6 @@ class Migration(migrations.Migration): ('hint', models.CharField(blank=True, max_length=255, verbose_name='Подсказка')), ('length', models.PositiveIntegerField(blank=True, null=True, verbose_name='Размер поля ввода')), ('default', models.CharField(blank=True, max_length=255, null=True, verbose_name='Значение по умолчанию')), - ('base_object_field', models.ForeignKey(blank=True, default=1, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='base_objects.baseobjectfield', verbose_name='Поле базового обьекта')), ('group', models.ForeignKey(blank=True, help_text='Группа полей в шаблоне', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='documents.templatefieldgroup', verbose_name='Группа')), ('template', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fields', to='documents.template', verbose_name='Шаблон')), ('type', models.ForeignKey(blank=True, help_text='Тип поля', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fields', to='documents.templatefieldtype', verbose_name='Тип')), diff --git a/backend/documents/models.py b/backend/documents/models.py index 1bd3e6a..75c3de9 100644 --- a/backend/documents/models.py +++ b/backend/documents/models.py @@ -7,10 +7,10 @@ from core.constants import Messages from core.template_render import DocumentTemplate -from base_objects.models import ( - BaseObject, - BaseObjectField, -) +# from base_objects.models import ( +# BaseObject, +# BaseObjectField, +# ) User = get_user_model() @@ -144,14 +144,14 @@ class TemplateFieldGroup(models.Model): verbose_name="Наименование группы полей", ) - type_object = models.ForeignKey( - BaseObject, - on_delete=models.SET_NULL, - verbose_name="Обьект", - null=True, - blank=True, - # default=None - ) + # type_object = models.ForeignKey( + # BaseObject, + # on_delete=models.SET_NULL, + # verbose_name="Обьект", + # null=True, + # blank=True, + # # default=None + # ) class Meta: verbose_name = "Группа полей" @@ -192,14 +192,13 @@ class TemplateField(models.Model): on_delete=models.CASCADE, verbose_name="Шаблон", ) - base_object_field = models.ForeignKey( - BaseObjectField, - on_delete=models.SET_NULL, - verbose_name="Поле базового обьекта", - null=True, - blank=True, - default=1 - ) + # base_object_field = models.ForeignKey( + # BaseObjectField, + # on_delete=models.SET_NULL, + # verbose_name="Поле базового обьекта", + # null=True, + # blank=True, + # ) tag = models.CharField(max_length=255, verbose_name="Тэг поля") name = models.CharField(max_length=255, verbose_name="Наименование поля") hint = models.CharField( diff --git a/backend/users/migrations/0003_alter_user_password.py b/backend/users/migrations/0003_alter_user_password.py new file mode 100644 index 0000000..158a947 --- /dev/null +++ b/backend/users/migrations/0003_alter_user_password.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2 on 2024-04-04 08:47 + +from django.db import migrations, models +import users.validators + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0002_alter_user_email'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='password', + field=models.CharField(max_length=150, validators=[users.validators.validator_password]), + ), + ] From d83631ab9179a8546337b5effc5c4c1e8dabcc73 Mon Sep 17 00:00:00 2001 From: Paymir121 Date: Thu, 4 Apr 2024 13:03:28 +0300 Subject: [PATCH 70/80] fix --- backend/backend/settings.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 7847b22..6881a54 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -76,24 +76,24 @@ WSGI_APPLICATION = "backend.wsgi.application" -# if os.getenv("BD") == "sqlite": -DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", - } +if os.getenv("BD") == "sqlite": + DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", + } } -# else: -# DATABASES = { -# "default": { -# "ENGINE": "django.db.backends.postgresql", -# "NAME": os.getenv("POSTGRES_DB", "django"), -# "USER": os.getenv("POSTGRES_USER", "django"), -# "PASSWORD": os.getenv("POSTGRES_PASSWORD", ""), -# "HOST": os.getenv("DB_HOST", ""), -# "PORT": int(os.getenv("DB_PORT", "5432")), -# } -# } +else: + DATABASES = { + "default": { + "ENGINE": "django.db.backends.postgresql", + "NAME": os.getenv("POSTGRES_DB", "django"), + "USER": os.getenv("POSTGRES_USER", "django"), + "PASSWORD": os.getenv("POSTGRES_PASSWORD", ""), + "HOST": os.getenv("DB_HOST", ""), + "PORT": int(os.getenv("DB_PORT", "5432")), + } + } AUTH_PASSWORD_VALIDATORS = [ From 34c99aee0b9067582462ffd06274ff823358316e Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Fri, 5 Apr 2024 17:47:09 +0400 Subject: [PATCH 71/80] Update nginx.conf --- gateway/nginx.conf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gateway/nginx.conf b/gateway/nginx.conf index 79927db..9483561 100644 --- a/gateway/nginx.conf +++ b/gateway/nginx.conf @@ -6,6 +6,10 @@ server { proxy_set_header Host $http_host; proxy_pass http://backend:9000/api/; } + location /accounts/ { + proxy_set_header Host $http_host; + proxy_pass http://backend:9000/accounts/; + } location /admin/ { proxy_set_header Host $http_host; proxy_pass http://backend:9000/admin/; @@ -36,4 +40,4 @@ server { try_files $uri $uri/ /index.html; } } - \ No newline at end of file + From eb7764c534450bc08843344ee3b0a56ba6def637 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Fri, 5 Apr 2024 19:40:56 +0400 Subject: [PATCH 72/80] Update nginx.conf --- gateway/nginx.conf | 5 ----- 1 file changed, 5 deletions(-) diff --git a/gateway/nginx.conf b/gateway/nginx.conf index 9483561..c526155 100644 --- a/gateway/nginx.conf +++ b/gateway/nginx.conf @@ -6,10 +6,6 @@ server { proxy_set_header Host $http_host; proxy_pass http://backend:9000/api/; } - location /accounts/ { - proxy_set_header Host $http_host; - proxy_pass http://backend:9000/accounts/; - } location /admin/ { proxy_set_header Host $http_host; proxy_pass http://backend:9000/admin/; @@ -40,4 +36,3 @@ server { try_files $uri $uri/ /index.html; } } - From 35f1088709a4c2ea58458f04a29e669ef47b2f86 Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Sat, 6 Apr 2024 14:54:44 +0300 Subject: [PATCH 73/80] Update nginx.conf --- gateway/nginx.conf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gateway/nginx.conf b/gateway/nginx.conf index c526155..0832f32 100644 --- a/gateway/nginx.conf +++ b/gateway/nginx.conf @@ -6,6 +6,10 @@ server { proxy_set_header Host $http_host; proxy_pass http://backend:9000/api/; } + location /accounts/ { + proxy_set_header Host $http_host; + proxy_pass http://backend:9000/accounts/; + } location /admin/ { proxy_set_header Host $http_host; proxy_pass http://backend:9000/admin/; From c058d9a96e592bc34597550e22d0579ec8a7e85b Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Sun, 14 Apr 2024 11:54:33 +0300 Subject: [PATCH 74/80] Update settings.py --- backend/backend/settings.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 6881a54..e5afea8 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -228,4 +228,5 @@ 'allauth.account.auth_backends.AuthenticationBackend', ] -ACCOUNT_LOGIN_REDIRECT_URL = "https://doky.pro/" \ No newline at end of file +ACCOUNT_LOGIN_REDIRECT_URL = "https://doky.pro/accounts/vk/login/callback/" +# ACCOUNT_LOGIN_REDIRECT_URL = "http://localhost:9000/accounts/vk/login/callback/" From 56be36c4b02ed81c0b97920b06b5072a0270219a Mon Sep 17 00:00:00 2001 From: Nikki Nikkonor <110825664+Paymir121@users.noreply.github.com> Date: Mon, 15 Apr 2024 15:07:48 +0300 Subject: [PATCH 75/80] Update settings.py --- backend/backend/settings.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index e5afea8..2b712be 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -228,5 +228,7 @@ 'allauth.account.auth_backends.AuthenticationBackend', ] -ACCOUNT_LOGIN_REDIRECT_URL = "https://doky.pro/accounts/vk/login/callback/" -# ACCOUNT_LOGIN_REDIRECT_URL = "http://localhost:9000/accounts/vk/login/callback/" +# ACCOUNT_LOGIN_REDIRECT_URL = "https://doky.pro/accounts/vk/login/callback/" +# ACCOUNT_LOGIN_REDIRECT_URL = "/" +# ACCOUNT_SIGNUP_REDIRECT_URL = "/" +# LOGIN_REDIRECT_URL = "/" From 259ce8dd5658246fc68bba06dabb927effa89db7 Mon Sep 17 00:00:00 2001 From: Paymir Date: Sat, 20 Apr 2024 11:55:28 +0300 Subject: [PATCH 76/80] add github --- backend/backend/settings.py | 51 ++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 2b712be..5185c25 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -38,12 +38,13 @@ 'allauth.socialaccount.providers.yandex', 'allauth.socialaccount.providers.vk', 'allauth.socialaccount.providers.google', + 'allauth.socialaccount.providers.github', ] MIDDLEWARE = [ "django.middleware.security.SecurityMiddleware", - "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.common.CommonMiddleware", + "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.messages.middleware.MessageMiddleware", @@ -51,7 +52,6 @@ "corsheaders.middleware.CorsMiddleware", "django.middleware.common.CommonMiddleware", # allauth - "django.contrib.sessions.middleware.SessionMiddleware", "allauth.account.middleware.AccountMiddleware", ] @@ -76,24 +76,24 @@ WSGI_APPLICATION = "backend.wsgi.application" -if os.getenv("BD") == "sqlite": - DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", - } -} -else: - DATABASES = { - "default": { - "ENGINE": "django.db.backends.postgresql", - "NAME": os.getenv("POSTGRES_DB", "django"), - "USER": os.getenv("POSTGRES_USER", "django"), - "PASSWORD": os.getenv("POSTGRES_PASSWORD", ""), - "HOST": os.getenv("DB_HOST", ""), - "PORT": int(os.getenv("DB_PORT", "5432")), - } +# if os.getenv("BD") == "sqlite": +DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", } +} +# else: +# DATABASES = { +# "default": { +# "ENGINE": "django.db.backends.postgresql", +# "NAME": os.getenv("POSTGRES_DB", "django"), +# "USER": os.getenv("POSTGRES_USER", "django"), +# "PASSWORD": os.getenv("POSTGRES_PASSWORD", ""), +# "HOST": os.getenv("DB_HOST", ""), +# "PORT": int(os.getenv("DB_PORT", "5432")), +# } +# } AUTH_PASSWORD_VALIDATORS = [ @@ -228,7 +228,12 @@ 'allauth.account.auth_backends.AuthenticationBackend', ] -# ACCOUNT_LOGIN_REDIRECT_URL = "https://doky.pro/accounts/vk/login/callback/" -# ACCOUNT_LOGIN_REDIRECT_URL = "/" -# ACCOUNT_SIGNUP_REDIRECT_URL = "/" -# LOGIN_REDIRECT_URL = "/" +SOCIALACCOUNT_PROVIDERS = { + 'github': { + 'SCOPE': [ + 'user', + 'repo', + 'read:org', + ], + } +} \ No newline at end of file From 24ff926f22bbe6d27ebb6a688625c291565e390f Mon Sep 17 00:00:00 2001 From: Paymir Date: Sat, 20 Apr 2024 11:56:27 +0300 Subject: [PATCH 77/80] add all auth --- backend/backend/settings.py | 118 +++++++++++++++++++++++++++++++++++- 1 file changed, 115 insertions(+), 3 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 5185c25..7cc2ce5 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -35,10 +35,122 @@ 'allauth', 'allauth.account', 'allauth.socialaccount', - 'allauth.socialaccount.providers.yandex', - 'allauth.socialaccount.providers.vk', - 'allauth.socialaccount.providers.google', + 'allauth.socialaccount.providers.agave', + 'allauth.socialaccount.providers.amazon', + 'allauth.socialaccount.providers.amazon_cognito', + 'allauth.socialaccount.providers.angellist', + 'allauth.socialaccount.providers.apple', + 'allauth.socialaccount.providers.asana', + 'allauth.socialaccount.providers.auth0', + 'allauth.socialaccount.providers.authentiq', + 'allauth.socialaccount.providers.baidu', + 'allauth.socialaccount.providers.basecamp', + 'allauth.socialaccount.providers.battlenet', + 'allauth.socialaccount.providers.bitbucket_oauth2', + 'allauth.socialaccount.providers.bitly', + 'allauth.socialaccount.providers.box', + 'allauth.socialaccount.providers.cilogon', + 'allauth.socialaccount.providers.clever', + 'allauth.socialaccount.providers.coinbase', + 'allauth.socialaccount.providers.dataporten', + 'allauth.socialaccount.providers.daum', + 'allauth.socialaccount.providers.digitalocean', + 'allauth.socialaccount.providers.dingtalk', + 'allauth.socialaccount.providers.discord', + 'allauth.socialaccount.providers.disqus', + 'allauth.socialaccount.providers.douban', + 'allauth.socialaccount.providers.doximity', + 'allauth.socialaccount.providers.draugiem', + 'allauth.socialaccount.providers.drip', + 'allauth.socialaccount.providers.dropbox', + 'allauth.socialaccount.providers.dwolla', + 'allauth.socialaccount.providers.edmodo', + 'allauth.socialaccount.providers.edx', + 'allauth.socialaccount.providers.eventbrite', + 'allauth.socialaccount.providers.eveonline', + 'allauth.socialaccount.providers.evernote', + 'allauth.socialaccount.providers.exist', + 'allauth.socialaccount.providers.facebook', + 'allauth.socialaccount.providers.feedly', + 'allauth.socialaccount.providers.figma', + 'allauth.socialaccount.providers.fivehundredpx', + 'allauth.socialaccount.providers.flickr', + 'allauth.socialaccount.providers.foursquare', + 'allauth.socialaccount.providers.frontier', + 'allauth.socialaccount.providers.fxa', + 'allauth.socialaccount.providers.gitea', 'allauth.socialaccount.providers.github', + 'allauth.socialaccount.providers.gitlab', + 'allauth.socialaccount.providers.globus', + 'allauth.socialaccount.providers.google', + 'allauth.socialaccount.providers.gumroad', + 'allauth.socialaccount.providers.hubic', + 'allauth.socialaccount.providers.instagram', + 'allauth.socialaccount.providers.jupyterhub', + 'allauth.socialaccount.providers.kakao', + 'allauth.socialaccount.providers.lemonldap', + 'allauth.socialaccount.providers.line', + 'allauth.socialaccount.providers.linkedin', + 'allauth.socialaccount.providers.linkedin_oauth2', + 'allauth.socialaccount.providers.mailchimp', + 'allauth.socialaccount.providers.mailru', + 'allauth.socialaccount.providers.mediawiki', + 'allauth.socialaccount.providers.meetup', + 'allauth.socialaccount.providers.miro', + 'allauth.socialaccount.providers.microsoft', + 'allauth.socialaccount.providers.naver', + 'allauth.socialaccount.providers.nextcloud', + 'allauth.socialaccount.providers.notion', + 'allauth.socialaccount.providers.odnoklassniki', + 'allauth.socialaccount.providers.openid', + 'allauth.socialaccount.providers.openid_connect', + 'allauth.socialaccount.providers.openstreetmap', + 'allauth.socialaccount.providers.orcid', + 'allauth.socialaccount.providers.patreon', + 'allauth.socialaccount.providers.paypal', + 'allauth.socialaccount.providers.persona', + 'allauth.socialaccount.providers.pinterest', + 'allauth.socialaccount.providers.pocket', + "allauth.socialaccount.providers.questrade", + 'allauth.socialaccount.providers.quickbooks', + 'allauth.socialaccount.providers.reddit', + 'allauth.socialaccount.providers.robinhood', + 'allauth.socialaccount.providers.salesforce', + 'allauth.socialaccount.providers.sharefile', + 'allauth.socialaccount.providers.shopify', + 'allauth.socialaccount.providers.slack', + 'allauth.socialaccount.providers.snapchat', + 'allauth.socialaccount.providers.soundcloud', + 'allauth.socialaccount.providers.spotify', + 'allauth.socialaccount.providers.stackexchange', + 'allauth.socialaccount.providers.steam', + 'allauth.socialaccount.providers.stocktwits', + 'allauth.socialaccount.providers.strava', + 'allauth.socialaccount.providers.stripe', + 'allauth.socialaccount.providers.telegram', + 'allauth.socialaccount.providers.trainingpeaks', + 'allauth.socialaccount.providers.trello', + 'allauth.socialaccount.providers.tumblr', + 'allauth.socialaccount.providers.twentythreeandme', + 'allauth.socialaccount.providers.twitch', + 'allauth.socialaccount.providers.twitter', + 'allauth.socialaccount.providers.twitter_oauth2', + 'allauth.socialaccount.providers.untappd', + 'allauth.socialaccount.providers.vimeo', + 'allauth.socialaccount.providers.vimeo_oauth2', + 'allauth.socialaccount.providers.vk', + 'allauth.socialaccount.providers.wahoo', + 'allauth.socialaccount.providers.weibo', + 'allauth.socialaccount.providers.weixin', + 'allauth.socialaccount.providers.windowslive', + 'allauth.socialaccount.providers.xing', + 'allauth.socialaccount.providers.yahoo', + 'allauth.socialaccount.providers.yandex', + 'allauth.socialaccount.providers.ynab', + 'allauth.socialaccount.providers.zoho', + 'allauth.socialaccount.providers.zoom', + 'allauth.socialaccount.providers.okta', + 'allauth.socialaccount.providers.feishu', ] MIDDLEWARE = [ From a78f460630e999204abf32bff831d1d1f8db05be Mon Sep 17 00:00:00 2001 From: Paymir Date: Sat, 20 Apr 2024 11:57:52 +0300 Subject: [PATCH 78/80] add all auth --- backend/backend/settings.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 7cc2ce5..1aa3fe1 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -188,24 +188,24 @@ WSGI_APPLICATION = "backend.wsgi.application" -# if os.getenv("BD") == "sqlite": -DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", +if os.getenv("BD") == "sqlite": + DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", + } + } +else: + DATABASES = { + "default": { + "ENGINE": "django.db.backends.postgresql", + "NAME": os.getenv("POSTGRES_DB", "django"), + "USER": os.getenv("POSTGRES_USER", "django"), + "PASSWORD": os.getenv("POSTGRES_PASSWORD", ""), + "HOST": os.getenv("DB_HOST", ""), + "PORT": int(os.getenv("DB_PORT", "5432")), + } } -} -# else: -# DATABASES = { -# "default": { -# "ENGINE": "django.db.backends.postgresql", -# "NAME": os.getenv("POSTGRES_DB", "django"), -# "USER": os.getenv("POSTGRES_USER", "django"), -# "PASSWORD": os.getenv("POSTGRES_PASSWORD", ""), -# "HOST": os.getenv("DB_HOST", ""), -# "PORT": int(os.getenv("DB_PORT", "5432")), -# } -# } AUTH_PASSWORD_VALIDATORS = [ From 4323bac198e5781171d76f160df6207674039ede Mon Sep 17 00:00:00 2001 From: Paymir Date: Sat, 20 Apr 2024 12:00:48 +0300 Subject: [PATCH 79/80] add all auth --- backend/backend/settings.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 1aa3fe1..4bb9a5e 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -347,5 +347,15 @@ 'repo', 'read:org', ], + }, + 'google': { + 'SCOPE': [ + 'profile', + 'email', + ], + 'AUTH_PARAMS': { + 'access_type': 'online', + }, + 'OAUTH_PKCE_ENABLED': True, } } \ No newline at end of file From bbee4b674248152faf52b1cfb78a0d13cdc33a07 Mon Sep 17 00:00:00 2001 From: Paymir Date: Sat, 20 Apr 2024 12:08:58 +0300 Subject: [PATCH 80/80] add all auth --- backend/backend/settings.py | 110 +----------------------------------- 1 file changed, 1 insertion(+), 109 deletions(-) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 4bb9a5e..45533a2 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -35,122 +35,14 @@ 'allauth', 'allauth.account', 'allauth.socialaccount', - 'allauth.socialaccount.providers.agave', - 'allauth.socialaccount.providers.amazon', - 'allauth.socialaccount.providers.amazon_cognito', - 'allauth.socialaccount.providers.angellist', 'allauth.socialaccount.providers.apple', - 'allauth.socialaccount.providers.asana', - 'allauth.socialaccount.providers.auth0', - 'allauth.socialaccount.providers.authentiq', - 'allauth.socialaccount.providers.baidu', - 'allauth.socialaccount.providers.basecamp', - 'allauth.socialaccount.providers.battlenet', - 'allauth.socialaccount.providers.bitbucket_oauth2', - 'allauth.socialaccount.providers.bitly', - 'allauth.socialaccount.providers.box', - 'allauth.socialaccount.providers.cilogon', - 'allauth.socialaccount.providers.clever', - 'allauth.socialaccount.providers.coinbase', - 'allauth.socialaccount.providers.dataporten', - 'allauth.socialaccount.providers.daum', - 'allauth.socialaccount.providers.digitalocean', - 'allauth.socialaccount.providers.dingtalk', 'allauth.socialaccount.providers.discord', - 'allauth.socialaccount.providers.disqus', - 'allauth.socialaccount.providers.douban', - 'allauth.socialaccount.providers.doximity', - 'allauth.socialaccount.providers.draugiem', - 'allauth.socialaccount.providers.drip', - 'allauth.socialaccount.providers.dropbox', - 'allauth.socialaccount.providers.dwolla', - 'allauth.socialaccount.providers.edmodo', - 'allauth.socialaccount.providers.edx', - 'allauth.socialaccount.providers.eventbrite', - 'allauth.socialaccount.providers.eveonline', - 'allauth.socialaccount.providers.evernote', - 'allauth.socialaccount.providers.exist', - 'allauth.socialaccount.providers.facebook', - 'allauth.socialaccount.providers.feedly', - 'allauth.socialaccount.providers.figma', - 'allauth.socialaccount.providers.fivehundredpx', - 'allauth.socialaccount.providers.flickr', - 'allauth.socialaccount.providers.foursquare', - 'allauth.socialaccount.providers.frontier', - 'allauth.socialaccount.providers.fxa', - 'allauth.socialaccount.providers.gitea', 'allauth.socialaccount.providers.github', - 'allauth.socialaccount.providers.gitlab', - 'allauth.socialaccount.providers.globus', 'allauth.socialaccount.providers.google', - 'allauth.socialaccount.providers.gumroad', - 'allauth.socialaccount.providers.hubic', - 'allauth.socialaccount.providers.instagram', - 'allauth.socialaccount.providers.jupyterhub', - 'allauth.socialaccount.providers.kakao', - 'allauth.socialaccount.providers.lemonldap', - 'allauth.socialaccount.providers.line', - 'allauth.socialaccount.providers.linkedin', - 'allauth.socialaccount.providers.linkedin_oauth2', - 'allauth.socialaccount.providers.mailchimp', - 'allauth.socialaccount.providers.mailru', - 'allauth.socialaccount.providers.mediawiki', - 'allauth.socialaccount.providers.meetup', - 'allauth.socialaccount.providers.miro', - 'allauth.socialaccount.providers.microsoft', - 'allauth.socialaccount.providers.naver', - 'allauth.socialaccount.providers.nextcloud', - 'allauth.socialaccount.providers.notion', - 'allauth.socialaccount.providers.odnoklassniki', - 'allauth.socialaccount.providers.openid', - 'allauth.socialaccount.providers.openid_connect', - 'allauth.socialaccount.providers.openstreetmap', - 'allauth.socialaccount.providers.orcid', - 'allauth.socialaccount.providers.patreon', - 'allauth.socialaccount.providers.paypal', - 'allauth.socialaccount.providers.persona', - 'allauth.socialaccount.providers.pinterest', - 'allauth.socialaccount.providers.pocket', - "allauth.socialaccount.providers.questrade", - 'allauth.socialaccount.providers.quickbooks', - 'allauth.socialaccount.providers.reddit', - 'allauth.socialaccount.providers.robinhood', - 'allauth.socialaccount.providers.salesforce', - 'allauth.socialaccount.providers.sharefile', - 'allauth.socialaccount.providers.shopify', - 'allauth.socialaccount.providers.slack', - 'allauth.socialaccount.providers.snapchat', - 'allauth.socialaccount.providers.soundcloud', - 'allauth.socialaccount.providers.spotify', - 'allauth.socialaccount.providers.stackexchange', - 'allauth.socialaccount.providers.steam', - 'allauth.socialaccount.providers.stocktwits', - 'allauth.socialaccount.providers.strava', - 'allauth.socialaccount.providers.stripe', + # 'allauth.socialaccount.providers.mailru', 'allauth.socialaccount.providers.telegram', - 'allauth.socialaccount.providers.trainingpeaks', - 'allauth.socialaccount.providers.trello', - 'allauth.socialaccount.providers.tumblr', - 'allauth.socialaccount.providers.twentythreeandme', - 'allauth.socialaccount.providers.twitch', - 'allauth.socialaccount.providers.twitter', - 'allauth.socialaccount.providers.twitter_oauth2', - 'allauth.socialaccount.providers.untappd', - 'allauth.socialaccount.providers.vimeo', - 'allauth.socialaccount.providers.vimeo_oauth2', 'allauth.socialaccount.providers.vk', - 'allauth.socialaccount.providers.wahoo', - 'allauth.socialaccount.providers.weibo', - 'allauth.socialaccount.providers.weixin', - 'allauth.socialaccount.providers.windowslive', - 'allauth.socialaccount.providers.xing', - 'allauth.socialaccount.providers.yahoo', 'allauth.socialaccount.providers.yandex', - 'allauth.socialaccount.providers.ynab', - 'allauth.socialaccount.providers.zoho', - 'allauth.socialaccount.providers.zoom', - 'allauth.socialaccount.providers.okta', - 'allauth.socialaccount.providers.feishu', ] MIDDLEWARE = [