mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Merge branch 'paperless-ngx:dev' into dev
This commit is contained in:
		| @@ -17,3 +17,5 @@ | ||||
| **/htmlcov | ||||
| /src/.pytest_cache | ||||
| .idea | ||||
| .venv/ | ||||
| .vscode/ | ||||
|   | ||||
| @@ -32,3 +32,6 @@ indent_style = space | ||||
| # violate it. | ||||
| [**/test_*.py] | ||||
| max_line_length = off | ||||
|  | ||||
| [Dockerfile] | ||||
| indent_style = space | ||||
|   | ||||
							
								
								
									
										79
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										79
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @@ -18,13 +18,13 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Install pipenv | ||||
|         run: pipx install pipenv | ||||
|       - | ||||
|         name: Set up Python | ||||
|         uses: actions/setup-python@v2 | ||||
|         uses: actions/setup-python@v3 | ||||
|         with: | ||||
|           python-version: 3.9 | ||||
|           cache: "pipenv" | ||||
| @@ -40,7 +40,7 @@ jobs: | ||||
|           pipenv run make html | ||||
|       - | ||||
|         name: Upload artifact | ||||
|         uses: actions/upload-artifact@v2 | ||||
|         uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           name: documentation | ||||
|           path: docs/_build/html/ | ||||
| @@ -51,7 +51,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Install checkers | ||||
|         run: | | ||||
| @@ -91,8 +91,8 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|       - uses: actions/setup-node@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: '16' | ||||
|       - | ||||
| @@ -115,7 +115,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           fetch-depth: 2 | ||||
|       - | ||||
| @@ -123,7 +123,7 @@ jobs: | ||||
|         run: pipx install pipenv | ||||
|       - | ||||
|         name: Set up Python | ||||
|         uses: actions/setup-python@v2 | ||||
|         uses: actions/setup-python@v3 | ||||
|         with: | ||||
|           python-version: "${{ matrix.python-version }}" | ||||
|           cache: "pipenv" | ||||
| @@ -168,14 +168,14 @@ jobs: | ||||
|   tests-frontend: | ||||
|     needs: [code-checks-frontend] | ||||
|     name: "Frontend Tests" | ||||
|     runs-on: ubuntu-latest | ||||
|     runs-on: ubuntu-20.04 | ||||
|     strategy: | ||||
|       matrix: | ||||
|         node-version: [16.x] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v2 | ||||
|       - uses: actions/checkout@v3 | ||||
|       - name: Use Node.js ${{ matrix.node-version }} | ||||
|         uses: actions/setup-node@v1 | ||||
|         uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: ${{ matrix.node-version }} | ||||
|       - run: cd src-ui && npm ci | ||||
| @@ -185,31 +185,23 @@ jobs: | ||||
|   # build and push image to docker hub. | ||||
|   build-docker-image: | ||||
|     if: github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/feature-') || github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/beta' || startsWith(github.ref, 'refs/tags/ngx-') || startsWith(github.ref, 'refs/tags/beta-')) | ||||
|     runs-on: ubuntu-latest | ||||
|     runs-on: ubuntu-20.04 | ||||
|     needs: [tests-backend, tests-frontend] | ||||
|     steps: | ||||
|       - | ||||
|         name: Prepare | ||||
|         id: prepare | ||||
|         run: | | ||||
|           IMAGE_NAME=ghcr.io/${{ github.repository }} | ||||
|           if [[ $GITHUB_REF == refs/tags/ngx-* ]]; then | ||||
|             TAGS=${IMAGE_NAME}:${GITHUB_REF#refs/tags/ngx-},${IMAGE_NAME}:latest | ||||
|             INSPECT_TAG=${IMAGE_NAME}:latest | ||||
|           elif [[ $GITHUB_REF == refs/tags/beta-* ]]; then | ||||
|             TAGS=${IMAGE_NAME}:beta | ||||
|             INSPECT_TAG=${TAGS} | ||||
|           elif [[ $GITHUB_REF == refs/heads/* ]]; then | ||||
|             TAGS=${IMAGE_NAME}:${GITHUB_REF#refs/heads/} | ||||
|             INSPECT_TAG=${TAGS} | ||||
|           else | ||||
|             exit 1 | ||||
|           fi | ||||
|           echo ::set-output name=tags::${TAGS} | ||||
|           echo ::set-output name=inspect_tag::${INSPECT_TAG} | ||||
|         name: Gather Docker metadata | ||||
|         id: docker-meta | ||||
|         uses: docker/metadata-action@v3 | ||||
|         with: | ||||
|           images: ghcr.io/${{ github.repository }} | ||||
|           tags: | | ||||
|             type=match,pattern=ngx-(\d.\d.\d),group=1 | ||||
|             type=semver,pattern=ngx-{{version}} | ||||
|             type=semver,pattern=ngx-{{major}}.{{minor}} | ||||
|             type=ref | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
| @@ -230,22 +222,23 @@ jobs: | ||||
|           context: . | ||||
|           file: ./Dockerfile | ||||
|           platforms: linux/amd64,linux/arm/v7,linux/arm64 | ||||
|           push: true | ||||
|           tags: ${{ steps.prepare.outputs.tags }} | ||||
|           push: ${{ github.event_name != 'pull_request' }} | ||||
|           tags: ${{ steps.docker-meta.outputs.tags }} | ||||
|           labels: ${{ steps.docker-meta.outputs.labels }} | ||||
|           cache-from: type=gha | ||||
|           cache-to: type=gha,mode=max | ||||
|       - | ||||
|         name: Inspect image | ||||
|         run: | | ||||
|           docker buildx imagetools inspect ${{ steps.prepare.outputs.inspect_tag }} | ||||
|           docker buildx imagetools inspect ${{ fromJSON(steps.docker-meta.outputs.json).tags[0] }} | ||||
|       - | ||||
|         name: Export frontend artifact from docker | ||||
|         run: | | ||||
|           docker run -d --name frontend-extract ${{ steps.prepare.outputs.inspect_tag }} | ||||
|           docker create --name frontend-extract ${{ fromJSON(steps.docker-meta.outputs.json).tags[0] }} | ||||
|           docker cp frontend-extract:/usr/src/paperless/src/documents/static/frontend src/documents/static/frontend/ | ||||
|       - | ||||
|         name: Upload frontend artifact | ||||
|         uses: actions/upload-artifact@v2 | ||||
|         uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           name: frontend-compiled | ||||
|           path: src/documents/static/frontend/ | ||||
| @@ -256,10 +249,10 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up Python | ||||
|         uses: actions/setup-python@v2 | ||||
|         uses: actions/setup-python@v3 | ||||
|         with: | ||||
|           python-version: 3.9 | ||||
|       - | ||||
| @@ -271,13 +264,13 @@ jobs: | ||||
|           pip3 install -r requirements.txt | ||||
|       - | ||||
|         name: Download frontend artifact | ||||
|         uses: actions/download-artifact@v2 | ||||
|         uses: actions/download-artifact@v3 | ||||
|         with: | ||||
|           name: frontend-compiled | ||||
|           path: src/documents/static/frontend/ | ||||
|       - | ||||
|         name: Download documentation artifact | ||||
|         uses: actions/download-artifact@v2 | ||||
|         uses: actions/download-artifact@v3 | ||||
|         with: | ||||
|           name: documentation | ||||
|           path: docs/_build/html/ | ||||
| @@ -312,19 +305,19 @@ jobs: | ||||
|           tar -cJf paperless-ngx.tar.xz paperless-ngx/ | ||||
|       - | ||||
|         name: Upload release artifact | ||||
|         uses: actions/upload-artifact@v2 | ||||
|         uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           name: release | ||||
|           path: dist/paperless-ngx.tar.xz | ||||
|  | ||||
|   publish-release: | ||||
|     runs-on: ubuntu-latest | ||||
|     runs-on: ubuntu-20.04 | ||||
|     needs: build-release | ||||
|     if: contains(github.ref, 'refs/tags/ngx-') || contains(github.ref, 'refs/tags/beta-') | ||||
|     steps: | ||||
|       - | ||||
|         name: Download release artifact | ||||
|         uses: actions/download-artifact@v2 | ||||
|         uses: actions/download-artifact@v3 | ||||
|         with: | ||||
|           name: release | ||||
|           path: ./ | ||||
|   | ||||
							
								
								
									
										114
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										114
									
								
								Dockerfile
									
									
									
									
									
								
							| @@ -6,69 +6,13 @@ WORKDIR /src/src-ui | ||||
| RUN npm update npm -g && npm ci --no-optional | ||||
| RUN ./node_modules/.bin/ng build --configuration production | ||||
|  | ||||
| FROM ghcr.io/paperless-ngx/builder/ngx-base:1.0 as main-app | ||||
|  | ||||
| FROM ubuntu:20.04 AS jbig2enc | ||||
|  | ||||
| WORKDIR /usr/src/jbig2enc | ||||
|  | ||||
| RUN apt-get update \ | ||||
|   && apt-get install -y --no-install-recommends build-essential \ | ||||
|     automake \ | ||||
|     libtool \ | ||||
|     libleptonica-dev \ | ||||
|     zlib1g-dev \ | ||||
|     git \ | ||||
|     ca-certificates \ | ||||
|   && rm -rf /var/lib/apt/lists/* | ||||
|  | ||||
| RUN git clone https://github.com/agl/jbig2enc . | ||||
| RUN ./autogen.sh | ||||
| RUN ./configure && make | ||||
|  | ||||
|  | ||||
| FROM python:3.9-slim-bullseye | ||||
|  | ||||
| # Binary dependencies | ||||
| RUN apt-get update \ | ||||
| 	&& apt-get -y --no-install-recommends install \ | ||||
|   	# Basic dependencies | ||||
| 		curl \ | ||||
| 		gnupg \ | ||||
| 		imagemagick \ | ||||
| 		gettext \ | ||||
| 		tzdata \ | ||||
| 		gosu \ | ||||
| 		# fonts for text file thumbnail generation | ||||
| 		fonts-liberation \ | ||||
| 		# for Numpy | ||||
| 		libatlas-base-dev \ | ||||
| 		libxslt1-dev \ | ||||
| 		# thumbnail size reduction | ||||
| 		optipng \ | ||||
| 		libxml2 \ | ||||
| 		pngquant \ | ||||
| 		unpaper \ | ||||
| 		zlib1g \ | ||||
| 		ghostscript \ | ||||
| 		icc-profiles-free \ | ||||
|   	# Mime type detection | ||||
| 		file \ | ||||
| 		libmagic-dev \ | ||||
| 		media-types \ | ||||
| 		# OCRmyPDF dependencies | ||||
| 		liblept5 \ | ||||
| 		tesseract-ocr \ | ||||
| 		tesseract-ocr-eng \ | ||||
| 		tesseract-ocr-deu \ | ||||
| 		tesseract-ocr-fra \ | ||||
| 		tesseract-ocr-ita \ | ||||
| 		tesseract-ocr-spa \ | ||||
|   && rm -rf /var/lib/apt/lists/* | ||||
|  | ||||
| # copy jbig2enc | ||||
| COPY --from=jbig2enc /usr/src/jbig2enc/src/.libs/libjbig2enc* /usr/local/lib/ | ||||
| COPY --from=jbig2enc /usr/src/jbig2enc/src/jbig2 /usr/local/bin/ | ||||
| COPY --from=jbig2enc /usr/src/jbig2enc/src/*.h /usr/local/include/ | ||||
| LABEL org.opencontainers.image.authors="paperless-ngx team <hello@paperless-ngx.com>" | ||||
| LABEL org.opencontainers.image.documentation="https://paperless-ngx.readthedocs.io/en/latest/" | ||||
| LABEL org.opencontainers.image.source="https://github.com/paperless-ngx/paperless-ngx" | ||||
| LABEL org.opencontainers.image.url="https://github.com/paperless-ngx/paperless-ngx" | ||||
| LABEL org.opencontainers.image.licenses="GPL-3.0-only" | ||||
|  | ||||
| WORKDIR /usr/src/paperless/src/ | ||||
|  | ||||
| @@ -76,30 +20,13 @@ COPY requirements.txt ../ | ||||
|  | ||||
| # Python dependencies | ||||
| RUN apt-get update \ | ||||
|   # python-Levenshtein still needs to be compiled here | ||||
|   && apt-get -y --no-install-recommends install \ | ||||
|     build-essential \ | ||||
| 		libpq-dev \ | ||||
| 		git \ | ||||
| 		zlib1g-dev \ | ||||
| 		libjpeg62-turbo-dev \ | ||||
| 	&& if [ "$(uname -m)" = "armv7l" ] || [ "$(uname -m)" = "aarch64" ]; \ | ||||
| 	  then echo "Building qpdf" \ | ||||
| 	  && mkdir -p /usr/src/qpdf \ | ||||
| 	  && cd /usr/src/qpdf \ | ||||
| 	  && git clone https://github.com/qpdf/qpdf.git . \ | ||||
| 	  && git checkout --quiet release-qpdf-10.6.2 \ | ||||
| 	  && ./configure \ | ||||
| 	  && make \ | ||||
| 	  && make install \ | ||||
| 	  && cd /usr/src/paperless/src/ \ | ||||
| 	  && rm -rf /usr/src/qpdf; \ | ||||
| 	else \ | ||||
| 	  echo "Skipping qpdf build because pikepdf binary wheels are available."; \ | ||||
| 	fi \ | ||||
|     && python3 -m pip install --upgrade pip wheel \ | ||||
|     && python3 -m pip install --upgrade --no-cache-dir pip wheel \ | ||||
|   && python3 -m pip install --default-timeout=1000 --upgrade --no-cache-dir supervisor \ | ||||
|   && python3 -m pip install --default-timeout=1000 --no-cache-dir -r ../requirements.txt \ | ||||
| 	&& apt-get -y purge build-essential git zlib1g-dev libjpeg62-turbo-dev \ | ||||
|   && apt-get -y purge build-essential \ | ||||
|   && apt-get -y autoremove --purge \ | ||||
|   && rm -rf /var/lib/apt/lists/* | ||||
|  | ||||
| @@ -111,12 +38,13 @@ RUN cd docker \ | ||||
|   && mkdir /var/log/supervisord /var/run/supervisord \ | ||||
|   && cp supervisord.conf /etc/supervisord.conf \ | ||||
|   && cp docker-entrypoint.sh /sbin/docker-entrypoint.sh \ | ||||
| 	&& cp docker-prepare.sh /sbin/docker-prepare.sh \ | ||||
|   && chmod 755 /sbin/docker-entrypoint.sh \ | ||||
|   && cp docker-prepare.sh /sbin/docker-prepare.sh \ | ||||
|   && chmod 755 /sbin/docker-prepare.sh \ | ||||
|   && chmod +x install_management_commands.sh \ | ||||
|   && ./install_management_commands.sh \ | ||||
|   && cd .. \ | ||||
| 	&& rm docker -rf | ||||
|   && rm -rf docker/ | ||||
|  | ||||
| COPY gunicorn.conf.py ../ | ||||
|  | ||||
| @@ -130,13 +58,13 @@ RUN addgroup --gid 1000 paperless \ | ||||
|   && gosu paperless python3 manage.py collectstatic --clear --no-input \ | ||||
|   && gosu paperless python3 manage.py compilemessages | ||||
|  | ||||
| VOLUME ["/usr/src/paperless/data", "/usr/src/paperless/media", "/usr/src/paperless/consume", "/usr/src/paperless/export"] | ||||
| ENTRYPOINT ["/sbin/docker-entrypoint.sh"] | ||||
| EXPOSE 8000 | ||||
| CMD ["/usr/local/bin/supervisord", "-c", "/etc/supervisord.conf"] | ||||
| VOLUME ["/usr/src/paperless/data", \ | ||||
|         "/usr/src/paperless/media", \ | ||||
|         "/usr/src/paperless/consume", \ | ||||
|         "/usr/src/paperless/export"] | ||||
|  | ||||
| LABEL org.opencontainers.image.authors="paperless-ngx team <hello@paperless-ngx.com>" | ||||
| LABEL org.opencontainers.image.documentation="https://paperless-ngx.readthedocs.io/en/latest/" | ||||
| LABEL org.opencontainers.image.source="https://github.com/paperless-ngx/paperless-ngx" | ||||
| LABEL org.opencontainers.image.url="https://github.com/paperless-ngx/paperless-ngx" | ||||
| LABEL org.opencontainers.image.licenses="GPL-3.0-only" | ||||
| ENTRYPOINT ["/sbin/docker-entrypoint.sh"] | ||||
|  | ||||
| EXPOSE 8000 | ||||
|  | ||||
| CMD ["/usr/local/bin/supervisord", "-c", "/etc/supervisord.conf"] | ||||
|   | ||||
							
								
								
									
										4
									
								
								Pipfile
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Pipfile
									
									
									
									
									
								
							| @@ -23,12 +23,14 @@ imap-tools = "*" | ||||
| langdetect = "*" | ||||
| pathvalidate = "*" | ||||
| pillow = "~=9.0" | ||||
| # Any version update to pikepdf requires a base image update | ||||
| pikepdf = "~=5.1" | ||||
| python-gnupg = "*" | ||||
| python-dotenv = "*" | ||||
| python-dateutil = "*" | ||||
| python-magic = "*" | ||||
| psycopg2-binary = "*" | ||||
| # Any version update to psycopg2 requires a base image update | ||||
| psycopg2 = "*" | ||||
| redis = "*" | ||||
| # Pinned because aarch64 wheels and updates cause warnings when loading the classifier model. | ||||
| scikit-learn="==1.0.2" | ||||
|   | ||||
							
								
								
									
										240
									
								
								Pipfile.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										240
									
								
								Pipfile.lock
									
									
									
										generated
									
									
									
								
							| @@ -1,7 +1,7 @@ | ||||
| { | ||||
|     "_meta": { | ||||
|         "hash": { | ||||
|             "sha256": "7e76d6b807f96506f56c1bddb36b44deda6745014e5ed7c94f047fc1eb972eb8" | ||||
|             "sha256": "f33c0aeb0cb880b444efd367ad5b47358dde2a9b18b55dcd6943dd81f6c7e2a6" | ||||
|         }, | ||||
|         "pipfile-spec": 6, | ||||
|         "requires": {}, | ||||
| @@ -494,12 +494,12 @@ | ||||
|         }, | ||||
|         "importlib-resources": { | ||||
|             "hashes": [ | ||||
|                 "sha256:33a95faed5fc19b4bc16b29a6eeae248a3fe69dd55d4d229d2b480e23eeaad45", | ||||
|                 "sha256:d756e2f85dd4de2ba89be0b21dba2a3bbec2e871a42a3a16719258a11f87506b" | ||||
|                 "sha256:1b93238cbf23b4cde34240dd8321d99e9bf2eb4bc91c0c99b2886283e7baad85", | ||||
|                 "sha256:a9dd72f6cc106aeb50f6e66b86b69b454766dd6e39b69ac68450253058706bcc" | ||||
|             ], | ||||
|             "index": "pypi", | ||||
|             "markers": "python_version < '3.9'", | ||||
|             "version": "==5.4.0" | ||||
|             "version": "==5.6.0" | ||||
|         }, | ||||
|         "incremental": { | ||||
|             "hashes": [ | ||||
| @@ -793,64 +793,19 @@ | ||||
|             "markers": "python_version >= '3'", | ||||
|             "version": "==2.4.0" | ||||
|         }, | ||||
|         "psycopg2-binary": { | ||||
|         "psycopg2": { | ||||
|             "hashes": [ | ||||
|                 "sha256:01310cf4cf26db9aea5158c217caa92d291f0500051a6469ac52166e1a16f5b7", | ||||
|                 "sha256:083a55275f09a62b8ca4902dd11f4b33075b743cf0d360419e2051a8a5d5ff76", | ||||
|                 "sha256:090f3348c0ab2cceb6dfbe6bf721ef61262ddf518cd6cc6ecc7d334996d64efa", | ||||
|                 "sha256:0a29729145aaaf1ad8bafe663131890e2111f13416b60e460dae0a96af5905c9", | ||||
|                 "sha256:0c9d5450c566c80c396b7402895c4369a410cab5a82707b11aee1e624da7d004", | ||||
|                 "sha256:10bb90fb4d523a2aa67773d4ff2b833ec00857f5912bafcfd5f5414e45280fb1", | ||||
|                 "sha256:12b11322ea00ad8db8c46f18b7dfc47ae215e4df55b46c67a94b4effbaec7094", | ||||
|                 "sha256:152f09f57417b831418304c7f30d727dc83a12761627bb826951692cc6491e57", | ||||
|                 "sha256:15803fa813ea05bef089fa78835118b5434204f3a17cb9f1e5dbfd0b9deea5af", | ||||
|                 "sha256:15c4e4cfa45f5a60599d9cec5f46cd7b1b29d86a6390ec23e8eebaae84e64554", | ||||
|                 "sha256:183a517a3a63503f70f808b58bfbf962f23d73b6dccddae5aa56152ef2bcb232", | ||||
|                 "sha256:1f14c8b0942714eb3c74e1e71700cbbcb415acbc311c730370e70c578a44a25c", | ||||
|                 "sha256:1f6b813106a3abdf7b03640d36e24669234120c72e91d5cbaeb87c5f7c36c65b", | ||||
|                 "sha256:280b0bb5cbfe8039205c7981cceb006156a675362a00fe29b16fbc264e242834", | ||||
|                 "sha256:2d872e3c9d5d075a2e104540965a1cf898b52274a5923936e5bfddb58c59c7c2", | ||||
|                 "sha256:2f9ffd643bc7349eeb664eba8864d9e01f057880f510e4681ba40a6532f93c71", | ||||
|                 "sha256:3303f8807f342641851578ee7ed1f3efc9802d00a6f83c101d21c608cb864460", | ||||
|                 "sha256:35168209c9d51b145e459e05c31a9eaeffa9a6b0fd61689b48e07464ffd1a83e", | ||||
|                 "sha256:3a79d622f5206d695d7824cbf609a4f5b88ea6d6dab5f7c147fc6d333a8787e4", | ||||
|                 "sha256:404224e5fef3b193f892abdbf8961ce20e0b6642886cfe1fe1923f41aaa75c9d", | ||||
|                 "sha256:46f0e0a6b5fa5851bbd9ab1bc805eef362d3a230fbdfbc209f4a236d0a7a990d", | ||||
|                 "sha256:47133f3f872faf28c1e87d4357220e809dfd3fa7c64295a4a148bcd1e6e34ec9", | ||||
|                 "sha256:526ea0378246d9b080148f2d6681229f4b5964543c170dd10bf4faaab6e0d27f", | ||||
|                 "sha256:53293533fcbb94c202b7c800a12c873cfe24599656b341f56e71dd2b557be063", | ||||
|                 "sha256:539b28661b71da7c0e428692438efbcd048ca21ea81af618d845e06ebfd29478", | ||||
|                 "sha256:57804fc02ca3ce0dbfbef35c4b3a4a774da66d66ea20f4bda601294ad2ea6092", | ||||
|                 "sha256:63638d875be8c2784cfc952c9ac34e2b50e43f9f0a0660b65e2a87d656b3116c", | ||||
|                 "sha256:6472a178e291b59e7f16ab49ec8b4f3bdada0a879c68d3817ff0963e722a82ce", | ||||
|                 "sha256:68641a34023d306be959101b345732360fc2ea4938982309b786f7be1b43a4a1", | ||||
|                 "sha256:6e82d38390a03da28c7985b394ec3f56873174e2c88130e6966cb1c946508e65", | ||||
|                 "sha256:761df5313dc15da1502b21453642d7599d26be88bff659382f8f9747c7ebea4e", | ||||
|                 "sha256:7af0dd86ddb2f8af5da57a976d27cd2cd15510518d582b478fbb2292428710b4", | ||||
|                 "sha256:7b1e9b80afca7b7a386ef087db614faebbf8839b7f4db5eb107d0f1a53225029", | ||||
|                 "sha256:874a52ecab70af13e899f7847b3e074eeb16ebac5615665db33bce8a1009cf33", | ||||
|                 "sha256:887dd9aac71765ac0d0bac1d0d4b4f2c99d5f5c1382d8b770404f0f3d0ce8a39", | ||||
|                 "sha256:8b344adbb9a862de0c635f4f0425b7958bf5a4b927c8594e6e8d261775796d53", | ||||
|                 "sha256:8fc53f9af09426a61db9ba357865c77f26076d48669f2e1bb24d85a22fb52307", | ||||
|                 "sha256:91920527dea30175cc02a1099f331aa8c1ba39bf8b7762b7b56cbf54bc5cce42", | ||||
|                 "sha256:93cd1967a18aa0edd4b95b1dfd554cf15af657cb606280996d393dadc88c3c35", | ||||
|                 "sha256:99485cab9ba0fa9b84f1f9e1fef106f44a46ef6afdeec8885e0b88d0772b49e8", | ||||
|                 "sha256:9d29409b625a143649d03d0fd7b57e4b92e0ecad9726ba682244b73be91d2fdb", | ||||
|                 "sha256:a29b3ca4ec9defec6d42bf5feb36bb5817ba3c0230dd83b4edf4bf02684cd0ae", | ||||
|                 "sha256:a9e1f75f96ea388fbcef36c70640c4efbe4650658f3d6a2967b4cc70e907352e", | ||||
|                 "sha256:accfe7e982411da3178ec690baaceaad3c278652998b2c45828aaac66cd8285f", | ||||
|                 "sha256:adf20d9a67e0b6393eac162eb81fb10bc9130a80540f4df7e7355c2dd4af9fba", | ||||
|                 "sha256:af9813db73395fb1fc211bac696faea4ca9ef53f32dc0cfa27e4e7cf766dcf24", | ||||
|                 "sha256:b1c8068513f5b158cf7e29c43a77eb34b407db29aca749d3eb9293ee0d3103ca", | ||||
|                 "sha256:bda845b664bb6c91446ca9609fc69f7db6c334ec5e4adc87571c34e4f47b7ddb", | ||||
|                 "sha256:c381bda330ddf2fccbafab789d83ebc6c53db126e4383e73794c74eedce855ef", | ||||
|                 "sha256:c3ae8e75eb7160851e59adc77b3a19a976e50622e44fd4fd47b8b18208189d42", | ||||
|                 "sha256:d1c1b569ecafe3a69380a94e6ae09a4789bbb23666f3d3a08d06bbd2451f5ef1", | ||||
|                 "sha256:def68d7c21984b0f8218e8a15d514f714d96904265164f75f8d3a70f9c295667", | ||||
|                 "sha256:dffc08ca91c9ac09008870c9eb77b00a46b3378719584059c034b8945e26b272", | ||||
|                 "sha256:e3699852e22aa68c10de06524a3721ade969abf382da95884e6a10ff798f9281", | ||||
|                 "sha256:e847774f8ffd5b398a75bc1c18fbb56564cda3d629fe68fd81971fece2d3c67e", | ||||
|                 "sha256:ffb7a888a047696e7f8240d649b43fb3644f14f0ee229077e7f6b9f9081635bd" | ||||
|                 "sha256:06f32425949bd5fe8f625c49f17ebb9784e1e4fe928b7cce72edc36fb68e4c0c", | ||||
|                 "sha256:0762c27d018edbcb2d34d51596e4346c983bd27c330218c56c4dc25ef7e819bf", | ||||
|                 "sha256:083707a696e5e1c330af2508d8fab36f9700b26621ccbcb538abe22e15485362", | ||||
|                 "sha256:34b33e0162cfcaad151f249c2649fd1030010c16f4bbc40a604c1cb77173dcf7", | ||||
|                 "sha256:4295093a6ae3434d33ec6baab4ca5512a5082cc43c0505293087b8a46d108461", | ||||
|                 "sha256:8cf3878353cc04b053822896bc4922b194792df9df2f1ad8da01fb3043602126", | ||||
|                 "sha256:8e841d1bf3434da985cc5ef13e6f75c8981ced601fd70cc6bf33351b91562981", | ||||
|                 "sha256:9572e08b50aed176ef6d66f15a21d823bb6f6d23152d35e8451d7d2d18fdac56", | ||||
|                 "sha256:a81e3866f99382dfe8c15a151f1ca5fde5815fde879348fe5a9884a7c092a305", | ||||
|                 "sha256:cb10d44e6694d763fa1078a26f7f6137d69f555a78ec85dc2ef716c37447e4b2", | ||||
|                 "sha256:d3ca6421b942f60c008f81a3541e8faf6865a28d5a9b48544b0ee4f40cac7fca" | ||||
|             ], | ||||
|             "index": "pypi", | ||||
|             "version": "==2.9.3" | ||||
| @@ -923,11 +878,11 @@ | ||||
|         }, | ||||
|         "python-dotenv": { | ||||
|             "hashes": [ | ||||
|                 "sha256:32b2bdc1873fd3a3c346da1c6db83d0053c3c62f28f1f38516070c4c8971b1d3", | ||||
|                 "sha256:a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f" | ||||
|                 "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f", | ||||
|                 "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938" | ||||
|             ], | ||||
|             "index": "pypi", | ||||
|             "version": "==0.19.2" | ||||
|             "version": "==0.20.0" | ||||
|         }, | ||||
|         "python-gnupg": { | ||||
|             "hashes": [ | ||||
| @@ -1094,45 +1049,45 @@ | ||||
|         }, | ||||
|         "reportlab": { | ||||
|             "hashes": [ | ||||
|                 "sha256:02a67c8caaf669c63f0c410525137b162d2ade43b43e10bf1ac19b1919f6aa95", | ||||
|                 "sha256:03f2612f2213b78e31a2f1d580881eca89267874ae61e432a33f64df50f590a7", | ||||
|                 "sha256:05627acc324ce213c79fbbcc012d0a576bef8bc540fe0a875a6491c78612b6f4", | ||||
|                 "sha256:068000debb926a4dec6442de6e1fff831f5a6cecfe830d715926c82d8f4eeb0b", | ||||
|                 "sha256:088359b44b418be27b8fb38dd733ac6c3dd611fad10e6dbba3876027ef216e58", | ||||
|                 "sha256:0aabf425f215dc297052194166f951e940c077271d0133bfdd3a08bb56022d6c", | ||||
|                 "sha256:12d9582d9a6cd18bf3f61b355c13261baeb22bc0e994f385750eae9d89ce6846", | ||||
|                 "sha256:1aad24ddfdfcd89f2db7cd10298de55a6e3a6dfc482b2aabf98880986c550fcc", | ||||
|                 "sha256:1be429316812a4c3aacfbee0ef9a84def4a3a0cba37d6c9155563ff8a8a04c8b", | ||||
|                 "sha256:1c32ed1c42bbce03faa02e33d1949cc2ca5eda42c52267cacce28f69cb087663", | ||||
|                 "sha256:1c51729484e0e1784812746c84c8c97215b95b02ba75057bb5dbe4f206a93c64", | ||||
|                 "sha256:1cc100be35dba31ee6865de26d460ade8a4aef451b90c0ec2cc6b7cc5f293440", | ||||
|                 "sha256:244b17fc544d0cd41f61648b247fa2fa8c4e1d47602f5fd6ff4ddd7b29f35642", | ||||
|                 "sha256:25ca368637467d617cd73fd5e68b31f3ceed2db42a175b76951e32bc97345ed7", | ||||
|                 "sha256:31ebc2997c1e57df0cc6a55a83c63e629c8420482bf994e0665e289c4b603c63", | ||||
|                 "sha256:3842f9e815924f9880e4a127afd9b22607f701b352513880b9dd6bcf3a651bb4", | ||||
|                 "sha256:53ec9fbd6e0c5ac9ee3f349700af8f1bb886878c802086b4d9d0b981def239a9", | ||||
|                 "sha256:5da9b84b645e7e7b8f4a219e4d3b5bfce771d0e11f34f861bde4ef5c4b4fc4e6", | ||||
|                 "sha256:603e9980f99cdf1a3325a49c092ad0847e3fe032aa59d9f69421f81b4e2199de", | ||||
|                 "sha256:60bf28718e50f6d28b3e784c64b29bf73477773537ed7b4177aa90e4a54c2323", | ||||
|                 "sha256:6415f16e64c0179ecb2f6231e3433014c5c837ce589661aa8b954944764a8d31", | ||||
|                 "sha256:6566fa308633661ec9053ce4dcd145fb10b6f9cc0cf7aa2fee84e9e8f2c77d2d", | ||||
|                 "sha256:662ee549793e9b38ecb5dae2521352ff73f05c2816665327835a3a12abe36edc", | ||||
|                 "sha256:71617eac54a207ae24e6ac78feee02aca61d5954844ada786c186748c9517565", | ||||
|                 "sha256:76257019f254b655b95e88df7ebd1c39ac90543987e968f6e5bdf91797d012f3", | ||||
|                 "sha256:7c730dc5421b1b39cbaa39098ef9c7a79f216ab479718eb27bbd0fc3947ddea0", | ||||
|                 "sha256:9aa2a746bfbd7878af74d22ed3c2cfc7b920dedf47d943146a20a6e196ab4fcd", | ||||
|                 "sha256:9b2b28fe14de1124c310cc349dcb71bb3018ffa11d9eeb4ed7e8acd2570fb8b0", | ||||
|                 "sha256:a12dd3ddc2950adbe47d874fd0b675f67d724600eb96da8ab72dc37f9d4d71b2", | ||||
|                 "sha256:a8d071c30166deb03c4f99af1d8f48355f8acbe4d05b7b5c3a616a41b2bae3ad", | ||||
|                 "sha256:a9218f499ac42133090f16e33a622eff69248753b5c6738c0ee7b916fa084752", | ||||
|                 "sha256:b41ed7754de6d1702065c53e5e6f266571eca4139f875bc127849d9c8238a704", | ||||
|                 "sha256:b4efd9b1b9bcc95e41e80130be00e89b1ea56b816a362d5f2eb2f141df624ad9", | ||||
|                 "sha256:cd0f0cd614a6fdc3b5a76351e9462956fd4d9b62b0e3ca5e7767259768905818", | ||||
|                 "sha256:dc7657fcb0bc3e485c3c869a44dddb52d711356a01a456664b7bef827222c982", | ||||
|                 "sha256:fdfc56c20b77f0a8ddcdfd13e4dec916dc9c8f1dc59c27611fa7d69e2cfb9a4a" | ||||
|                 "sha256:09b2ca175129a34292399fc4c6a8b1739f6c5946368fcaa6f931d69385b2f720", | ||||
|                 "sha256:0a7f2b7232c3ffb451b649d55c51a6dd0c8104ad7bbcfe355addf7619705e7fa", | ||||
|                 "sha256:0e767cf4507ca8eed7dde8511f0889b0f19f160a2bdf9ef07742b2aaeceed9f2", | ||||
|                 "sha256:10681d89a0ca37bb4036283fb8c0efac9ac1b22265dbdf350bda0448be33e00c", | ||||
|                 "sha256:15294435f786968bcdf1a7a67bcc23a136470b6ea26919497f5c76ff0f653041", | ||||
|                 "sha256:193671445b4885128d8800d3e416eb2fa4fd89bafae08cc9889c0752fe5ad8c2", | ||||
|                 "sha256:1967dbc9930917d75c39784712a137d432dbc2e5ca9e132a2453319c2619ccff", | ||||
|                 "sha256:1ec84055cf2c83783958b74eadf0e577eb0cd9088c8b5d536e9ddc0f4a9f8c70", | ||||
|                 "sha256:23f5aed2d212096f2fe95d56f868d63f839a08bf7e389237e644d93981274222", | ||||
|                 "sha256:32a5c5cd9625a40feec956f460355b4813bc3187c4f8dc9efd9f1a7f8f854e34", | ||||
|                 "sha256:37dda88dbe16dd3f4f9039464637cce66e462c0b95e5763dbd45ac5799136d3a", | ||||
|                 "sha256:496f42840604255ce06777bc129048b3bab966213bbac4f07fbe4ceb6a2e0482", | ||||
|                 "sha256:4ba8eebfa4383e4680d6e7e6dba9c45c1fe19bbc0a754db4d84823f1a9511e56", | ||||
|                 "sha256:4fbe23ac870adf90544d2014c572dba6ec4d772afad6505bb91f171ddad12839", | ||||
|                 "sha256:50f8e30f5410efc69b0217261b1f21912888da392a4549e79c7aaaac85f01bfa", | ||||
|                 "sha256:5d0cc3682456ad213150f6dbffe7d47eab737d809e517c316103376be548fb84", | ||||
|                 "sha256:6a114761ad3ba6e0cdfacf14a8fb2cb8f5713b115ca1f0c17f3cd638d0a5b4bd", | ||||
|                 "sha256:713574da534b6ce73d884f1574c35a565e438af4888fcc75e752f1de02e356a7", | ||||
|                 "sha256:8cb82b6d14ad4bd915acacc8f114c6a7bab8b9b1503cabb930e433ebd320f90c", | ||||
|                 "sha256:90f74627cafecf3924741ab8b0690a19df4214eb56b1cfce2dc74a15c9744034", | ||||
|                 "sha256:92a6613af9877e3ad2a1c5a16a122514a4f9f8d9b91b1f22e7fa0fa796617b36", | ||||
|                 "sha256:a441afdfe31870b964bccde042d7172ed3c0077f519bbf3ed7d9d34c406b6b91", | ||||
|                 "sha256:ab1ffe4ec7be99ad348791116d436610afdc7a9a02a968997f31eaa62eaadad8", | ||||
|                 "sha256:b2c2fd861f10b2cd49ccf29a31da9ad5c3b95aa437804e4fd0351ed4eb695f74", | ||||
|                 "sha256:bbaab798991863952c593c0459dcb82e0aade837675593310e13cba2ce7fb45a", | ||||
|                 "sha256:c9a5f63bc381c0f945402ef4c1bccc74a8eed28f6be6596704b1db7d82ec89fe", | ||||
|                 "sha256:cb21666fc9edec9716553bfcfe0c30d1bbbe2731910a96f07ec65652974e5f83", | ||||
|                 "sha256:ce3a3aad287c8532f62223f5720b5504e31abe3dce52a27bd2a25f508c0d846e", | ||||
|                 "sha256:cebd0b28a0e875a9ce789514700f80659269ecf2a8fcef0aa10b8ae52b40474a", | ||||
|                 "sha256:d1bf9455aff37beb421a4447d89d6dd77bb46f677c0bab4eb0272cdb79faad2f", | ||||
|                 "sha256:d927bf802bf53c1b5a3878a22e9be310900877984e7c436a3a99bdd19cfec4c3", | ||||
|                 "sha256:de724c78f4eb1363b1195dce85a2a8806e7509b69ac5c842a714d942ea534d63", | ||||
|                 "sha256:e1fc1b1f5d9d1c2e18b5e60602dfa7854b2330ba0efc312ef605abf588abea9c", | ||||
|                 "sha256:e492e87886423192af1fafde23907bcd9d2fdccfc22f67e18aa5c73db3a380a3", | ||||
|                 "sha256:e9b5e9115363545a727d8ebe7e4b94f7cf6f26113261a269d50d88b8db4eb726", | ||||
|                 "sha256:ff0e014a3a3fe286c642ef51213c41684a156b9ed293ef205e8890bc1dbbfdc7" | ||||
|             ], | ||||
|             "markers": "python_version >= '3.6' and python_version < '4'", | ||||
|             "version": "==3.6.8" | ||||
|             "markers": "python_version >= '3.7' and python_version < '4'", | ||||
|             "version": "==3.6.9" | ||||
|         }, | ||||
|         "requests": { | ||||
|             "hashes": [ | ||||
| @@ -1218,11 +1173,11 @@ | ||||
|         }, | ||||
|         "setuptools": { | ||||
|             "hashes": [ | ||||
|                 "sha256:6599055eeb23bfef457d5605d33a4d68804266e6cb430b0fb12417c5efeae36c", | ||||
|                 "sha256:782ef48d58982ddb49920c11a0c5c9c0b02e7d7d1c2ad0aa44e1a1e133051c96" | ||||
|                 "sha256:89eef7b71423ab7fccc7dfafdc145410ef170c4a89567427f932448135e08cdf", | ||||
|                 "sha256:92b15f45ab164eb0c410d2bf661a6e9d15e3b78c0dffb0325f2bf0f313071cae" | ||||
|             ], | ||||
|             "markers": "python_version >= '3.7'", | ||||
|             "version": "==60.10.0" | ||||
|             "version": "==61.1.1" | ||||
|         }, | ||||
|         "six": { | ||||
|             "hashes": [ | ||||
| @@ -1265,11 +1220,11 @@ | ||||
|         }, | ||||
|         "tqdm": { | ||||
|             "hashes": [ | ||||
|                 "sha256:1d9835ede8e394bb8c9dcbffbca02d717217113adc679236873eeaac5bc0b3cd", | ||||
|                 "sha256:e643e071046f17139dea55b880dc9b33822ce21613b4a4f5ea57f202833dbc29" | ||||
|                 "sha256:4230a49119a416c88cc47d0d2d32d5d90f1a282d5e497d49801950704e49863d", | ||||
|                 "sha256:6461b009d6792008d0000e1b0c7ca50195ec78c0e808a3a6b668a56a3236c3a5" | ||||
|             ], | ||||
|             "index": "pypi", | ||||
|             "version": "==4.63.0" | ||||
|             "version": "==4.63.1" | ||||
|         }, | ||||
|         "twisted": { | ||||
|             "extras": [ | ||||
| @@ -1356,32 +1311,33 @@ | ||||
|         }, | ||||
|         "watchdog": { | ||||
|             "hashes": [ | ||||
|                 "sha256:25fb5240b195d17de949588628fdf93032ebf163524ef08933db0ea1f99bd685", | ||||
|                 "sha256:3386b367e950a11b0568062b70cc026c6f645428a698d33d39e013aaeda4cc04", | ||||
|                 "sha256:3becdb380d8916c873ad512f1701f8a92ce79ec6978ffde92919fd18d41da7fb", | ||||
|                 "sha256:4ae38bf8ba6f39d5b83f78661273216e7db5b00f08be7592062cb1fc8b8ba542", | ||||
|                 "sha256:8047da932432aa32c515ec1447ea79ce578d0559362ca3605f8e9568f844e3c6", | ||||
|                 "sha256:8f1c00aa35f504197561060ca4c21d3cc079ba29cf6dd2fe61024c70160c990b", | ||||
|                 "sha256:922a69fa533cb0c793b483becaaa0845f655151e7256ec73630a1b2e9ebcb660", | ||||
|                 "sha256:9693f35162dc6208d10b10ddf0458cc09ad70c30ba689d9206e02cd836ce28a3", | ||||
|                 "sha256:a0f1c7edf116a12f7245be06120b1852275f9506a7d90227648b250755a03923", | ||||
|                 "sha256:a36e75df6c767cbf46f61a91c70b3ba71811dfa0aca4a324d9407a06a8b7a2e7", | ||||
|                 "sha256:aba5c812f8ee8a3ff3be51887ca2d55fb8e268439ed44110d3846e4229eb0e8b", | ||||
|                 "sha256:ad6f1796e37db2223d2a3f302f586f74c72c630b48a9872c1e7ae8e92e0ab669", | ||||
|                 "sha256:ae67501c95606072aafa865b6ed47343ac6484472a2f95490ba151f6347acfc2", | ||||
|                 "sha256:b2fcf9402fde2672545b139694284dc3b665fd1be660d73eca6805197ef776a3", | ||||
|                 "sha256:b52b88021b9541a60531142b0a451baca08d28b74a723d0c99b13c8c8d48d604", | ||||
|                 "sha256:b7d336912853d7b77f9b2c24eeed6a5065d0a0cc0d3b6a5a45ad6d1d05fb8cd8", | ||||
|                 "sha256:bd9ba4f332cf57b2c1f698be0728c020399ef3040577cde2939f2e045b39c1e5", | ||||
|                 "sha256:be9be735f827820a06340dff2ddea1fb7234561fa5e6300a62fe7f54d40546a0", | ||||
|                 "sha256:cca7741c0fcc765568350cb139e92b7f9f3c9a08c4f32591d18ab0a6ac9e71b6", | ||||
|                 "sha256:d0d19fb2441947b58fbf91336638c2b9f4cc98e05e1045404d7a4cb7cddc7a65", | ||||
|                 "sha256:e02794ac791662a5eafc6ffeaf9bcc149035a0e48eb0a9d40a8feb4622605a3d", | ||||
|                 "sha256:e0f30db709c939cabf64a6dc5babb276e6d823fd84464ab916f9b9ba5623ca15", | ||||
|                 "sha256:e92c2d33858c8f560671b448205a268096e17870dcf60a9bb3ac7bfbafb7f5f9" | ||||
|                 "sha256:03b43d583df0f18782a0431b6e9e9965c5b3f7cf8ec36a00b930def67942c385", | ||||
|                 "sha256:0908bb50f6f7de54d5d31ec3da1654cb7287c6b87bce371954561e6de379d690", | ||||
|                 "sha256:0b4a1fe6201c6e5a1926f5767b8664b45f0fcb429b62564a41f490ff1ce1dc7a", | ||||
|                 "sha256:177bae28ca723bc00846466016d34f8c1d6a621383b6caca86745918d55c7383", | ||||
|                 "sha256:19b36d436578eb437e029c6b838e732ed08054956366f6dd11875434a62d2b99", | ||||
|                 "sha256:1d1cf7dfd747dec519486a98ef16097e6c480934ef115b16f18adb341df747a4", | ||||
|                 "sha256:1e877c70245424b06c41ac258023ea4bd0c8e4ff15d7c1368f17cd0ae6e351dd", | ||||
|                 "sha256:340b875aecf4b0e6672076a6f05cfce6686935559bb6d34cebedee04126a9566", | ||||
|                 "sha256:351e09b6d9374d5bcb947e6ac47a608ec25b9d70583e9db00b2fcdb97b00b572", | ||||
|                 "sha256:3fd47815353be9c44eebc94cc28fe26b2b0c5bd889dafc4a5a7cbdf924143480", | ||||
|                 "sha256:49639865e3db4be032a96695c98ac09eed39bbb43fe876bb217da8f8101689a6", | ||||
|                 "sha256:4d0e98ac2e8dd803a56f4e10438b33a2d40390a72750cff4939b4b274e7906fa", | ||||
|                 "sha256:6e6ae29b72977f2e1ee3d0b760d7ee47896cb53e831cbeede3e64485e5633cc8", | ||||
|                 "sha256:7f14ce6adea2af1bba495acdde0e510aecaeb13b33f7bd2f6324e551b26688ca", | ||||
|                 "sha256:81982c7884aac75017a6ecc72f1a4fedbae04181a8665a34afce9539fc1b3fab", | ||||
|                 "sha256:81a5861d0158a7e55fe149335fb2bbfa6f48cbcbd149b52dbe2cd9a544034bbd", | ||||
|                 "sha256:ae934e34c11aa8296c18f70bf66ed60e9870fcdb4cc19129a04ca83ab23e7055", | ||||
|                 "sha256:b26e13e8008dcaea6a909e91d39b629a39635d1a8a7239dd35327c74f4388601", | ||||
|                 "sha256:b3750ee5399e6e9c69eae8b125092b871ee9e2fcbd657a92747aea28f9056a5c", | ||||
|                 "sha256:b61acffaf5cd5d664af555c0850f9747cc5f2baf71e54bbac164c58398d6ca7b", | ||||
|                 "sha256:b9777664848160449e5b4260e0b7bc1ae0f6f4992a8b285db4ec1ef119ffa0e2", | ||||
|                 "sha256:bdcbf75580bf4b960fb659bbccd00123d83119619195f42d721e002c1621602f", | ||||
|                 "sha256:d802d65262a560278cf1a65ef7cae4e2bc7ecfe19e5451349e4c67e23c9dc420", | ||||
|                 "sha256:ed6d9aad09a2a948572224663ab00f8975fae242aa540509737bb4507133fa2d" | ||||
|             ], | ||||
|             "index": "pypi", | ||||
|             "version": "==2.1.6" | ||||
|             "version": "==2.1.7" | ||||
|         }, | ||||
|         "watchgod": { | ||||
|             "hashes": [ | ||||
| @@ -1715,11 +1671,11 @@ | ||||
|         }, | ||||
|         "faker": { | ||||
|             "hashes": [ | ||||
|                 "sha256:66db859b6abe376d02e805ad81eb8dcfce38f0945f17ee7cdf74ed349985ea52", | ||||
|                 "sha256:fe969607836ce7100e38b88dcb598aacb733d895e6e9401894dd603e35623000" | ||||
|                 "sha256:5536ceb63380f0d598c026b7c330c17d719a19d1a495e9397ee8f5259420a696", | ||||
|                 "sha256:85ed0cb379e3b7414bdb6b484994beaf9bddc74472c8c35f743c16cf5fc0c314" | ||||
|             ], | ||||
|             "markers": "python_version >= '3.6'", | ||||
|             "version": "==13.3.2" | ||||
|             "version": "==13.3.3" | ||||
|         }, | ||||
|         "filelock": { | ||||
|             "hashes": [ | ||||
| @@ -1770,11 +1726,11 @@ | ||||
|         }, | ||||
|         "jinja2": { | ||||
|             "hashes": [ | ||||
|                 "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8", | ||||
|                 "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7" | ||||
|                 "sha256:539835f51a74a69f41b848a9645dbdc35b4f20a3b601e2d9a7e22947b15ff119", | ||||
|                 "sha256:640bed4bb501cbd17194b3cace1dc2126f5b619cf068a726b98192a0fde74ae9" | ||||
|             ], | ||||
|             "markers": "python_version >= '3.6'", | ||||
|             "version": "==3.0.3" | ||||
|             "markers": "python_version >= '3.7'", | ||||
|             "version": "==3.1.1" | ||||
|         }, | ||||
|         "markupsafe": { | ||||
|             "hashes": [ | ||||
| @@ -2149,11 +2105,11 @@ | ||||
|         }, | ||||
|         "virtualenv": { | ||||
|             "hashes": [ | ||||
|                 "sha256:c3e01300fb8495bc00ed70741f5271fc95fed067eb7106297be73d30879af60c", | ||||
|                 "sha256:ce8901d3bbf3b90393498187f2d56797a8a452fb2d0d7efc6fd837554d6f679c" | ||||
|                 "sha256:1e8588f35e8b42c6ec6841a13c5e88239de1e6e4e4cedfd3916b306dc826ec66", | ||||
|                 "sha256:8e5b402037287126e81ccde9432b95a8be5b19d36584f64957060a3488c11ca8" | ||||
|             ], | ||||
|             "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", | ||||
|             "version": "==20.13.4" | ||||
|             "version": "==20.14.0" | ||||
|         }, | ||||
|         "zipp": { | ||||
|             "hashes": [ | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| #!/bin/bash | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| set -e | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| #!/bin/bash | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| set -e | ||||
|  | ||||
|   | ||||
| @@ -48,7 +48,7 @@ hyperlink==21.0.0 | ||||
| idna==3.3; python_version >= '3.5' | ||||
| imap-tools==0.53.0 | ||||
| img2pdf==0.4.3 | ||||
| importlib-resources==5.4.0; python_version < '3.9' | ||||
| importlib-resources==5.6.0; python_version < '3.9' | ||||
| incremental==21.3.0 | ||||
| inotify-simple==1.3.5; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' | ||||
| inotifyrecursive==0.3.5 | ||||
| @@ -65,14 +65,14 @@ pikepdf==5.1.0 | ||||
| pillow==9.0.1 | ||||
| pluggy==1.0.0; python_version >= '3.6' | ||||
| portalocker==2.4.0; python_version >= '3' | ||||
| psycopg2-binary==2.9.3 | ||||
| psycopg2==2.9.3 | ||||
| pyasn1-modules==0.2.8 | ||||
| pyasn1==0.4.8 | ||||
| pycparser==2.21 | ||||
| pyopenssl==22.0.0 | ||||
| pyparsing==3.0.7; python_version >= '3.6' | ||||
| python-dateutil==2.8.2 | ||||
| python-dotenv==0.19.2 | ||||
| python-dotenv==0.20.0 | ||||
| python-gnupg==0.4.8 | ||||
| python-levenshtein==0.12.2 | ||||
| python-magic==0.4.25 | ||||
| @@ -81,18 +81,18 @@ pytz==2022.1 | ||||
| pyyaml==6.0 | ||||
| redis==3.5.3 | ||||
| regex==2022.3.2; python_version >= '3.6' | ||||
| reportlab==3.6.8; python_version >= '3.6' and python_version < '4' | ||||
| reportlab==3.6.9; python_version >= '3.7' and python_version < '4' | ||||
| requests==2.27.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' | ||||
| scikit-learn==1.0.2 | ||||
| scipy==1.8.0; python_version < '3.11' and python_version >= '3.8' | ||||
| service-identity==21.1.0 | ||||
| setuptools==60.10.0; python_version >= '3.7' | ||||
| setuptools==61.1.1; python_version >= '3.7' | ||||
| six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' | ||||
| sniffio==1.2.0; python_version >= '3.5' | ||||
| sqlparse==0.4.2; python_version >= '3.5' | ||||
| threadpoolctl==3.1.0; python_version >= '3.6' | ||||
| tika==1.24 | ||||
| tqdm==4.63.0 | ||||
| tqdm==4.63.1 | ||||
| twisted[tls]==22.2.0; python_full_version >= '3.6.7' | ||||
| txaio==22.2.1; python_version >= '3.6' | ||||
| typing-extensions==4.1.1; python_version >= '3.6' | ||||
| @@ -101,7 +101,7 @@ tzlocal==4.1; python_version >= '3.6' | ||||
| urllib3==1.26.9; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' | ||||
| uvicorn[standard]==0.17.6 | ||||
| uvloop==0.16.0 | ||||
| watchdog==2.1.6 | ||||
| watchdog==2.1.7 | ||||
| watchgod==0.8.1 | ||||
| wcwidth==0.2.5 | ||||
| websockets==10.2 | ||||
|   | ||||
| @@ -88,14 +88,4 @@ describe('settings', () => { | ||||
|     cy.visit('/dashboard') | ||||
|     cy.get('app-saved-view-widget').contains('Inbox').should('not.exist') | ||||
|   }) | ||||
|  | ||||
|   it('should change the pdf viewer type', () => { | ||||
|     cy.visit('/documents/1') | ||||
|     cy.get('object[data*="/api/documents/1/preview/"]').should('not.exist') | ||||
|     cy.visit('/settings') | ||||
|     cy.contains('Use PDF viewer provided by the browser').click() | ||||
|     cy.contains('button', 'Save').click().wait('@savedViews').wait(1000) | ||||
|     cy.visit('/documents/1') | ||||
|     cy.get('object[data*="/api/documents/1/preview/"]') | ||||
|   }) | ||||
| }) | ||||
|   | ||||
							
								
								
									
										5896
									
								
								src-ui/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5896
									
								
								src-ui/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -13,26 +13,24 @@ | ||||
|   }, | ||||
|   "private": true, | ||||
|   "dependencies": { | ||||
|     "@angular/animations": "~13.2.6", | ||||
|     "@angular/common": "~13.2.6", | ||||
|     "@angular/compiler": "~13.3.0", | ||||
|     "@angular/core": "~13.3.0", | ||||
|     "@angular/forms": "~13.2.6", | ||||
|     "@angular/localize": "~13.2.6", | ||||
|     "@angular/platform-browser": "~13.3.0", | ||||
|     "@angular/platform-browser-dynamic": "~13.3.0", | ||||
|     "@angular/router": "~13.2.6", | ||||
|     "@angular/common": "~13.3.1", | ||||
|     "@angular/compiler": "~13.3.1", | ||||
|     "@angular/core": "~13.3.1", | ||||
|     "@angular/forms": "~13.3.1", | ||||
|     "@angular/localize": "~13.3.1", | ||||
|     "@angular/platform-browser": "~13.3.1", | ||||
|     "@angular/platform-browser-dynamic": "~13.3.1", | ||||
|     "@angular/router": "~13.3.1", | ||||
|     "@ng-bootstrap/ng-bootstrap": "^12.0.1", | ||||
|     "@ng-select/ng-select": "^8.1.1", | ||||
|     "@ngneat/dirty-check-forms": "^2.0.0", | ||||
|     "@ngneat/dirty-check-forms": "^3.0.2", | ||||
|     "@popperjs/core": "^2.11.4", | ||||
|     "bootstrap": "^5.1.3", | ||||
|     "file-saver": "^2.0.5", | ||||
|     "ng2-pdf-viewer": "^8.0.1", | ||||
|     "ng2-pdf-viewer": "^9.0.0", | ||||
|     "ngx-color": "^7.3.3", | ||||
|     "ngx-cookie-service": "^13.1.2", | ||||
|     "ngx-file-drop": "^13.0.0", | ||||
|     "ngx-infinite-scroll": "^10.0.1", | ||||
|     "rxjs": "~7.5.5", | ||||
|     "tslib": "^2.3.1", | ||||
|     "uuid": "^8.3.1", | ||||
| @@ -40,21 +38,21 @@ | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@angular-builders/jest": "13.0.3", | ||||
|     "@angular-devkit/build-angular": "~13.2.5", | ||||
|     "@angular/cli": "~13.2.5", | ||||
|     "@angular/compiler-cli": "~13.2.4", | ||||
|     "@angular-devkit/build-angular": "~13.3.1", | ||||
|     "@angular/cli": "~13.3.1", | ||||
|     "@angular/compiler-cli": "~13.3.1", | ||||
|     "@types/jest": "27.4.1", | ||||
|     "@types/node": "^17.0.21", | ||||
|     "@types/node": "^17.0.23", | ||||
|     "codelyzer": "^6.0.2", | ||||
|     "concurrently": "7.0.0", | ||||
|     "jest": "27.5.1", | ||||
|     "ts-node": "~10.7.0", | ||||
|     "tslint": "~6.1.3", | ||||
|     "typescript": "~4.5.5", | ||||
|     "typescript": "~4.6.3", | ||||
|     "wait-on": "~6.0.1" | ||||
|   }, | ||||
|   "optionalDependencies": { | ||||
|     "cypress": "~9.5.2", | ||||
|     "cypress": "~9.5.3", | ||||
|     "@cypress/schematic": "^1.6.0" | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -39,7 +39,6 @@ import { TextComponent } from './components/common/input/text/text.component' | ||||
| import { SelectComponent } from './components/common/input/select/select.component' | ||||
| import { CheckComponent } from './components/common/input/check/check.component' | ||||
| import { SaveViewConfigDialogComponent } from './components/document-list/save-view-config-dialog/save-view-config-dialog.component' | ||||
| import { InfiniteScrollModule } from 'ngx-infinite-scroll' | ||||
| import { TagsComponent } from './components/common/input/tags/tags.component' | ||||
| import { SortableDirective } from './directives/sortable.directive' | ||||
| import { CookieService } from 'ngx-cookie-service' | ||||
| @@ -170,7 +169,6 @@ registerLocaleData(localeZh) | ||||
|     FormsModule, | ||||
|     ReactiveFormsModule, | ||||
|     NgxFileDropModule, | ||||
|     InfiniteScrollModule, | ||||
|     PdfViewerModule, | ||||
|     NgSelectModule, | ||||
|     ColorSliderModule, | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| import logging | ||||
| import os | ||||
| import shutil | ||||
|  | ||||
| from django.conf import settings | ||||
| from django.contrib.admin.models import ADDITION | ||||
| @@ -252,7 +253,7 @@ def cleanup_document_deletion(sender, instance, using, **kwargs): | ||||
|  | ||||
|             logger.debug(f"Moving {instance.source_path} to trash at {new_file_path}") | ||||
|             try: | ||||
|                 os.rename(instance.source_path, new_file_path) | ||||
|                 shutil.move(instance.source_path, new_file_path) | ||||
|             except OSError as e: | ||||
|                 logger.error( | ||||
|                     f"Failed to move {instance.source_path} to trash at " | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 fantasticle
					fantasticle