diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 29f97c288..2d400187c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ on: env: # This is the version of pipenv all the steps will use # If changing this, change Dockerfile - DEFAULT_PIP_ENV_VERSION: "2022.11.30" + DEFAULT_PIP_ENV_VERSION: "2023.3.20" # This is the default version of Python to use in most steps # If changing this, change Dockerfile DEFAULT_PYTHON_VERSION: "3.9" diff --git a/Dockerfile b/Dockerfile index cffde0ed8..1d3def67a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,7 +29,7 @@ COPY Pipfile* ./ RUN set -eux \ && echo "Installing pipenv" \ - && python3 -m pip install --no-cache-dir --upgrade pipenv==2022.11.30 \ + && python3 -m pip install --no-cache-dir --upgrade pipenv==2023.3.20 \ && echo "Generating requirement.txt" \ && pipenv requirements > requirements.txt @@ -46,15 +46,6 @@ LABEL org.opencontainers.image.url="https://github.com/paperless-ngx/paperless-n LABEL org.opencontainers.image.licenses="GPL-3.0-only" ARG DEBIAN_FRONTEND=noninteractive -# Buildx provided, must be defined to use though -ARG TARGETARCH -ARG TARGETVARIANT - -# Workflow provided -ARG JBIG2ENC_VERSION -ARG QPDF_VERSION -ARG PIKEPDF_VERSION -ARG PSYCOPG2_VERSION # # Begin installation and configuration @@ -175,12 +166,22 @@ RUN set -eux \ && chmod +x install_management_commands.sh \ && ./install_management_commands.sh +# Buildx provided, must be defined to use though +ARG TARGETARCH +ARG TARGETVARIANT + +# Workflow provided, defaults set for manual building +ARG JBIG2ENC_VERSION=0.29 +ARG QPDF_VERSION=11.3.0 +ARG PIKEPDF_VERSION=7.1.1 +ARG PSYCOPG2_VERSION=2.9.5 + # Install the built packages from the installer library images # These change sometimes RUN set -eux \ && echo "Getting binaries" \ && mkdir paperless-ngx \ - && curl --fail --silent --show-error --output paperless-ngx.tar.gz --location https://github.com/paperless-ngx/paperless-ngx/archive/40895f1cdb7702d8cd4b9c3b1d1d7a886018ccd2.tar.gz \ + && curl --fail --silent --show-error --output paperless-ngx.tar.gz --location https://github.com/paperless-ngx/paperless-ngx/archive/ba28a1e16c27d121b644b4f6bdb78855a2850561.tar.gz \ && tar -xf paperless-ngx.tar.gz --directory paperless-ngx --strip-components=1 \ && cd paperless-ngx \ # Setting a specific revision ensures we know what this installed diff --git a/Pipfile b/Pipfile index cfc32071c..b89eff575 100644 --- a/Pipfile +++ b/Pipfile @@ -46,6 +46,7 @@ tika = "*" # TODO: This will sadly also install daphne+dependencies, # which an ASGI server we don't need. Adds about 15MB image size. channels = "~=3.0" +channels-redis = "*" uvicorn = {extras = ["standard"], version = "*"} concurrent-log-handler = "*" "pdfminer.six" = "*" @@ -57,15 +58,12 @@ nltk = "*" pdf2image = "*" flower = "*" bleach = "*" +zxing-cpp = {version = "*", platform_machine = "== 'x86_64'"} # # Packages locked due to issues (try to check if these are fixed in a release every so often) # # Pin this until piwheels is building 1.9 (see https://www.piwheels.org/project/scipy/) scipy = "==1.8.1" -# Locked version until https://github.com/django/channels_redis/issues/332 -# is resolved -channels-redis = "==3.4.1" -zxing-cpp = {version = "*", platform_machine = "== 'x86_64'"} [dev-packages] coveralls = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 219691925..5ab143b34 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "d813537b3e32ac288b7a89f85041b1b52b4bf69b349dd0df4a1283dc17ce2275" + "sha256": "8395f25f876a71a7307a55dd542e69a4cdcb3be3be38c4e89ed06ce3d52a5345" }, "pipfile-spec": 6, "requires": {}, @@ -19,13 +19,6 @@ ] }, "default": { - "aioredis": { - "hashes": [ - "sha256:15f8af30b044c771aee6787e5ec24694c048184c7b9e54c3b60c750a4b93273a", - "sha256:b61808d7e97b7cd5a92ed574937a079c9387fdadd22bfbfa7ad2fd319ecc26e3" - ], - "version": "==1.3.1" - }, "amqp": { "hashes": [ "sha256:2c1b13fecc0893e946c65cbd5f36427861cffa4ea2201d8f6fca22e2a373b5e2", @@ -55,7 +48,7 @@ "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" ], - "markers": "python_version >= '3.6'", + "markers": "python_full_version <= '3.11.2'", "version": "==4.0.2" }, "attrs": { @@ -302,11 +295,11 @@ }, "channels-redis": { "hashes": [ - "sha256:78e4a2f2b2a744fe5a87848ec36b5ee49f522c6808cefe6c583663d0d531faa8", - "sha256:ba7e2ad170f273c372812dd32aaac102d68d4e508172abb1cfda3160b7333890" + "sha256:122414f29f525f7b9e0c9d59cdcfc4dc1b0eecba16fbb6a1c23f1d9b58f49dcb", + "sha256:81b59d68f53313e1aa891f23591841b684abb936b42e4d1a966d9e4dc63a95ec" ], "index": "pypi", - "version": "==3.4.1" + "version": "==4.0.0" }, "charset-normalizer": { "hashes": [ @@ -481,11 +474,11 @@ }, "dateparser": { "hashes": [ - "sha256:fbed8b738a24c9cd7f47c4f2089527926566fe539e1a06125eddba75917b1eef", - "sha256:ff047d9cffad4d3113ead8ec0faf8a7fc43bab7d853ac8715e071312b53c465a" + "sha256:070b29b5bbf4b1ec2cd51c96ea040dc68a614de703910a91ad1abba18f9f379f", + "sha256:86b8b7517efcc558f085a142cdb7620f0921543fcabdb538c8a4c4001d8178e3" ], "index": "pypi", - "version": "==1.1.7" + "version": "==1.1.8" }, "deprecation": { "hashes": [ @@ -576,11 +569,11 @@ }, "filelock": { "hashes": [ - "sha256:4427cdda14a1c68e264845142842d6de2d0fa2c15ba31571a3d9c9a1ec9d191c", - "sha256:e393782f76abea324dee598d2ea145b857a20df0e0ee4f80fcf35e72a341d2c7" + "sha256:75997740323c5f12e18f10b494bc11c03e42843129f980f17c04352cc7b09d40", + "sha256:eb8f0f2d37ed68223ea63e3bddf2fac99667e4362c88b3f762e434d160190d18" ], "index": "pypi", - "version": "==3.9.1" + "version": "==3.10.2" }, "flower": { "hashes": [ @@ -1053,11 +1046,11 @@ }, "ocrmypdf": { "hashes": [ - "sha256:8fab75052bf77c3488acd9c3054423d9f1f7650e302960a1fa2e991f36c2a66a", - "sha256:db03cdd1a5d277fa038b0420ba05fcf7b1f92729ba85431344844ebf01035160" + "sha256:779b6f77ece5836b4ac703ba02a4bb0ccb758dbb9b4dad1feab3fccd4dba33cf", + "sha256:c731bd3b6bfd67dc495edc97946f159ba99631854bf7671c2d35c36f30b3ffa8" ], "index": "pypi", - "version": "==14.0.3" + "version": "==14.0.4" }, "packaging": { "hashes": [ @@ -1515,105 +1508,77 @@ "hiredis" ], "hashes": [ - "sha256:1eec3741cda408d3a5f84b78d089c8b8d895f21b3b050988351e925faf202864", - "sha256:5deb072d26e67d2be1712603bfb7947ec3431fb0eec9c578994052e33035af6d" + "sha256:56732e156fe31801c4f43396bd3ca0c2a7f6f83d7936798531b9848d103381aa", + "sha256:7df17a0a2b72a4c8895b462dd07616c51b1dcb48fdd7ecb7b6f4bf39ecb2e94e" ], "index": "pypi", - "version": "==4.5.1" + "version": "==4.5.3" }, "regex": { "hashes": [ - "sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad", - "sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4", - "sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd", - "sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc", - "sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d", - "sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066", - "sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec", - "sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9", - "sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e", - "sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8", - "sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e", - "sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783", - "sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6", - "sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1", - "sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c", - "sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4", - "sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1", - "sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1", - "sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7", - "sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8", - "sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe", - "sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d", - "sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b", - "sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8", - "sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c", - "sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af", - "sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49", - "sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714", - "sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542", - "sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318", - "sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e", - "sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5", - "sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc", - "sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144", - "sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453", - "sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5", - "sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61", - "sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11", - "sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a", - "sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54", - "sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73", - "sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc", - "sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347", - "sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c", - "sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66", - "sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c", - "sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93", - "sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443", - "sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc", - "sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1", - "sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892", - "sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8", - "sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001", - "sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa", - "sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90", - "sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c", - "sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0", - "sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692", - "sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4", - "sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5", - "sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690", - "sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83", - "sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66", - "sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f", - "sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f", - "sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4", - "sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee", - "sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81", - "sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95", - "sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9", - "sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff", - "sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e", - "sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5", - "sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6", - "sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7", - "sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1", - "sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394", - "sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6", - "sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742", - "sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57", - "sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b", - "sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7", - "sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b", - "sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244", - "sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af", - "sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185", - "sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8", - "sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5" + "sha256:0a2a851d0548a4e298d88e3ceeb4bad4aab751cf1883edf6150f25718ce0207a", + "sha256:148ad520f41021b97870e9c80420e6cdaadcc5e4306e613aed84cd5d53f8a7ca", + "sha256:159c7b83488a056365119ada0bceddc06a455d3db7a7aa3cf07f13b2878b885f", + "sha256:1937946dd03818845bd9c1713dfd3173a7b9a324e6593a235fc8c51c9cd460eb", + "sha256:20ce96da2093e72e151d6af8217a629aeb5f48f1ac543c2fffd1d87c57699d7e", + "sha256:24242e5f26823e95edd64969bd206d4752c1a56a744d8cbcf58461f9788bc0c7", + "sha256:2e2e6baf4a1108f84966f44870b26766d8f6d104c9959aae329078327c677122", + "sha256:328a70e578f37f59eb54e8450b5042190bbadf2ef7f5c0b60829574b62955ed7", + "sha256:3371975b165c1e859e1990e5069e8606f00b25aed961cfd25b7bac626b1eb5a9", + "sha256:33bab9c9af936123b70b9874ce83f2bcd54be76b97637b33d31560fba8ad5d78", + "sha256:33c887b658afb144cdc8ce9156a0e1098453060c18b8bd5177f831ad58e0d60d", + "sha256:3582db55372eaee9e998d378109c4b9b15beb2c84624c767efe351363fada9c4", + "sha256:3b4da28d89527572f0d4a24814e353e1228a7aeda965e5d9265c1435a154b17a", + "sha256:3c4fa90fd91cc2957e66195ce374331bebbc816964864f64b42bd14bda773b53", + "sha256:3e66cfc915f5f7e2c8a0af8a27f87aa857f440de7521fd7f2682e23f082142a1", + "sha256:3f6f29cb134d782685f8eda01d72073c483c7f87b318b5101c7001faef7850f5", + "sha256:43469c22fcf705a7cb59c7e01d6d96975bdbc54c1138900f04d11496489a0054", + "sha256:4ad467524cb6879ce42107cf02a49cdb4a06f07fe0e5f1160d7db865a8d25d4b", + "sha256:4c9c3db90acd17e4231344a23616f33fd79837809584ce30e2450ca312fa47aa", + "sha256:533ba64d67d882286557106a1c5f12b4c2825f11b47a7c209a8c22922ca882be", + "sha256:548257463696daf919d2fdfc53ee4b98e29e3ffc5afddd713d83aa849d1fa178", + "sha256:55f907c4d18a5a40da0ceb339a0beda77c9df47c934adad987793632fb4318c3", + "sha256:5826e7fb443acb49f64f9648a2852efc8d9af2f4c67f6c3dca69dccd9e8e1d15", + "sha256:59a15c2803c20702d7f2077807d9a2b7d9a168034b87fd3f0d8361de60019a1e", + "sha256:59b3aab231c27cd754d6452c43b12498d34e7ab87d69a502bd0220f4b1c090c4", + "sha256:5da83c964aecb6c3f2a6c9a03f3d0fa579e1ad208e2c264ba826cecd19da11fa", + "sha256:60b545806a433cc752b9fa936f1c0a63bf96a3872965b958b35bd0d5d788d411", + "sha256:60fcef5c3144d861b623456d87ca7fff7af59a4a918e1364cdd0687b48285285", + "sha256:617d101b95151d827d5366e9c4225a68c64d56065e41ab9c7ef51bb87f347a8a", + "sha256:68e9add923bda8357e6fe65a568766feae369063cb7210297067675cce65272f", + "sha256:7798b3d662f70cea425637c54da30ef1894d426cab24ee7ffaaccb24a8b17bb8", + "sha256:80a288b21b17e39fb3630cf1d14fd704499bb11d9c8fc110662a0c57758d3d3e", + "sha256:81291006a934052161eae8340e7731ea6b8595b0c27dd4927c4e8a489e1760e2", + "sha256:8527ea0978ed6dc58ccb3935bd2883537b455c97ec44b5d8084677dfa817f96b", + "sha256:87016850c13082747bd120558e6750746177bd492b103b2fca761c8a1c43fba9", + "sha256:88552925fd22320600c59ee80342d6eb06bfa9503c3a402d7327983f5fa999d9", + "sha256:8d7477ebaf5d3621c763702e1ec0daeede8863fb22459c5e26ddfd17e9b1999c", + "sha256:97326d62255203c6026896d4b1ad6b5a0141ba097cae00ed3a508fe454e96baf", + "sha256:a4c7b8c5a3a186b49415af3be18e4b8f93b33d6853216c0a1d7401736b703bce", + "sha256:aff7c778d9229d66f716ad98a701fa91cf97935ae4a32a145ae9e61619906aaa", + "sha256:b280cb303fed94199f0b976595af71ebdcd388fb5e377a8198790f1016a23476", + "sha256:b59233cb8df6b60fff5f3056f6f342a8f5f04107a11936bf49ebff87dd4ace34", + "sha256:bdab2c90665b88faf5cc5e11bf835d548f4b8d8060c89fc70782b6020850aa1c", + "sha256:c00c357a4914f58398503c7f716cf1646b1e36b8176efa35255f5ebfacedfa46", + "sha256:c95a977cfdccb8ddef95ddd77cf586fe9dc327c7c93cf712983cece70cdaa1be", + "sha256:cdd3d2df486c9a8c6d08f78bdfa8ea7cf6191e037fde38c2cf6f5f0559e9d353", + "sha256:d15a0cc48f7a3055e89df1bd6623a907c407d1f58f67ff47064e598d4a550de4", + "sha256:d40cecf4bcb2cb37c59e3c79e5bbc45d47e3f3e07edf24e35fc5775db2570058", + "sha256:d4d3571c8eb21f0fbe9f0b21b49092c24d442f9a295f079949df3551b2886f29", + "sha256:d94a0d25e517c76c9ce9e2e2635d9d1a644b894f466a66a10061f4e599cdc019", + "sha256:dcc5b0d6a94637c071a427dc4469efd0ae4fda8ff384790bc8b5baaf9308dc3e", + "sha256:e00b046000b313ffaa2f6e8d7290b33b08d2005150eff4c8cf3ad74d011888d1", + "sha256:e1b56dac5e86ab52e0443d63b02796357202a8f8c5966b69f8d4c03a94778e98", + "sha256:e30d9a6fd7a7a6a4da6f80d167ce8eda4a993ff24282cbc73f34186c46a498db", + "sha256:f1977c1fe28173f2349d42c59f80f10a97ce34f2bedb7b7f55e2e8a8de9b7dfb", + "sha256:f2bc8a9076ea7add860d57dbee0554a212962ecf2a900344f2fc7c56a02463b0", + "sha256:f311ca33fcb9f8fb060c1fa76238d8d029f33b71a2021bafa5d423cc25965b54", + "sha256:f579a202b90c1110d0894a86b32a89bf550fdb34bdd3f9f550115706be462e19", + "sha256:fa41a427d4f03ec6d6da2fd8a230f4f388f336cd7ca46b46c4d2a1bca3ead85a", + "sha256:fd47362e03acc780aad5a5bc4624d495594261b55a1f79a5b775b6be865a5911" ], - "markers": "python_version >= '3.6'", - "version": "==2022.10.31" + "markers": "python_version >= '3.8'", + "version": "==2023.3.22" }, "reportlab": { "hashes": [ @@ -1925,11 +1890,11 @@ }, "tzlocal": { "hashes": [ - "sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745", - "sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7" + "sha256:3f21d09e1b2aa9f2dacca12da240ca37de3ba5237a93addfd6d593afe9073355", + "sha256:b44c4388f3d34f25862cfbb387578a4d70fec417649da694a132f628a23367e2" ], - "markers": "python_version >= '3.6'", - "version": "==4.2" + "markers": "python_version >= '3.7'", + "version": "==4.3" }, "urllib3": { "hashes": [ @@ -1944,11 +1909,11 @@ "standard" ], "hashes": [ - "sha256:8635a388062222082f4b06225b867b74a7e4ef942124453d4d1d1a5cb3750932", - "sha256:e69e955cb621ae7b75f5590a814a4fcbfb14cb8f44a36dfe3c5c75ab8aee3ad5" + "sha256:0fac9cb342ba099e0d582966005f3fdba5b0290579fed4a6266dc702ca7bb032", + "sha256:e47cac98a6da10cd41e6fd036d472c6f58ede6c5dbee3dbee3ef7a100ed97742" ], "index": "pypi", - "version": "==0.21.0" + "version": "==0.21.1" }, "uvloop": { "hashes": [ @@ -2165,45 +2130,39 @@ }, "zope.interface": { "hashes": [ - "sha256:008b0b65c05993bb08912f644d140530e775cf1c62a072bf9340c2249e613c32", - "sha256:0217a9615531c83aeedb12e126611b1b1a3175013bbafe57c702ce40000eb9a0", - "sha256:0fb497c6b088818e3395e302e426850f8236d8d9f4ef5b2836feae812a8f699c", - "sha256:17ebf6e0b1d07ed009738016abf0d0a0f80388e009d0ac6e0ead26fc162b3b9c", - "sha256:311196634bb9333aa06f00fc94f59d3a9fddd2305c2c425d86e406ddc6f2260d", - "sha256:3218ab1a7748327e08ef83cca63eea7cf20ea7e2ebcb2522072896e5e2fceedf", - "sha256:404d1e284eda9e233c90128697c71acffd55e183d70628aa0bbb0e7a3084ed8b", - "sha256:4087e253bd3bbbc3e615ecd0b6dd03c4e6a1e46d152d3be6d2ad08fbad742dcc", - "sha256:40f4065745e2c2fa0dff0e7ccd7c166a8ac9748974f960cd39f63d2c19f9231f", - "sha256:5334e2ef60d3d9439c08baedaf8b84dc9bb9522d0dacbc10572ef5609ef8db6d", - "sha256:604cdba8f1983d0ab78edc29aa71c8df0ada06fb147cea436dc37093a0100a4e", - "sha256:6373d7eb813a143cb7795d3e42bd8ed857c82a90571567e681e1b3841a390d16", - "sha256:655796a906fa3ca67273011c9805c1e1baa047781fca80feeb710328cdbed87f", - "sha256:65c3c06afee96c654e590e046c4a24559e65b0a87dbff256cd4bd6f77e1a33f9", - "sha256:696f3d5493eae7359887da55c2afa05acc3db5fc625c49529e84bd9992313296", - "sha256:6e972493cdfe4ad0411fd9abfab7d4d800a7317a93928217f1a5de2bb0f0d87a", - "sha256:7579960be23d1fddecb53898035a0d112ac858c3554018ce615cefc03024e46d", - "sha256:765d703096ca47aa5d93044bf701b00bbce4d903a95b41fff7c3796e747b1f1d", - "sha256:7e66f60b0067a10dd289b29dceabd3d0e6d68be1504fc9d0bc209cf07f56d189", - "sha256:8a2ffadefd0e7206adc86e492ccc60395f7edb5680adedf17a7ee4205c530df4", - "sha256:959697ef2757406bff71467a09d940ca364e724c534efbf3786e86eee8591452", - "sha256:9d783213fab61832dbb10d385a319cb0e45451088abd45f95b5bb88ed0acca1a", - "sha256:a16025df73d24795a0bde05504911d306307c24a64187752685ff6ea23897cb0", - "sha256:a2ad597c8c9e038a5912ac3cf166f82926feff2f6e0dabdab956768de0a258f5", - "sha256:bfee1f3ff62143819499e348f5b8a7f3aa0259f9aca5e0ddae7391d059dce671", - "sha256:d169ccd0756c15bbb2f1acc012f5aab279dffc334d733ca0d9362c5beaebe88e", - "sha256:d514c269d1f9f5cd05ddfed15298d6c418129f3f064765295659798349c43e6f", - "sha256:d692374b578360d36568dd05efb8a5a67ab6d1878c29c582e37ddba80e66c396", - "sha256:dbaeb9cf0ea0b3bc4b36fae54a016933d64c6d52a94810a63c00f440ecb37dd7", - "sha256:dc26c8d44472e035d59d6f1177eb712888447f5799743da9c398b0339ed90b1b", - "sha256:e1574980b48c8c74f83578d1e77e701f8439a5d93f36a5a0af31337467c08fcf", - "sha256:e74a578172525c20d7223eac5f8ad187f10940dac06e40113d62f14f3adb1e8f", - "sha256:e945de62917acbf853ab968d8916290548df18dd62c739d862f359ecd25842a6", - "sha256:f0980d44b8aded808bec5059018d64692f0127f10510eca71f2f0ace8fb11188", - "sha256:f98d4bd7bbb15ca701d19b93263cc5edfd480c3475d163f137385f49e5b3a3a7", - "sha256:fb68d212efd057596dee9e6582daded9f8ef776538afdf5feceb3059df2d2e7b" + "sha256:042f2381118b093714081fd82c98e3b189b68db38ee7d35b63c327c470ef8373", + "sha256:0ec9653825f837fbddc4e4b603d90269b501486c11800d7c761eee7ce46d1bbb", + "sha256:12175ca6b4db7621aedd7c30aa7cfa0a2d65ea3a0105393e05482d7a2d367446", + "sha256:1592f68ae11e557b9ff2bc96ac8fc30b187e77c45a3c9cd876e3368c53dc5ba8", + "sha256:23ac41d52fd15dd8be77e3257bc51bbb82469cf7f5e9a30b75e903e21439d16c", + "sha256:424d23b97fa1542d7be882eae0c0fc3d6827784105264a8169a26ce16db260d8", + "sha256:4407b1435572e3e1610797c9203ad2753666c62883b921318c5403fb7139dec2", + "sha256:48f4d38cf4b462e75fac78b6f11ad47b06b1c568eb59896db5b6ec1094eb467f", + "sha256:4c3d7dfd897a588ec27e391edbe3dd320a03684457470415870254e714126b1f", + "sha256:5171eb073474a5038321409a630904fd61f12dd1856dd7e9d19cd6fe092cbbc5", + "sha256:5a158846d0fca0a908c1afb281ddba88744d403f2550dc34405c3691769cdd85", + "sha256:6ee934f023f875ec2cfd2b05a937bd817efcc6c4c3f55c5778cbf78e58362ddc", + "sha256:790c1d9d8f9c92819c31ea660cd43c3d5451df1df61e2e814a6f99cebb292788", + "sha256:809fe3bf1a91393abc7e92d607976bbb8586512913a79f2bf7d7ec15bd8ea518", + "sha256:87b690bbee9876163210fd3f500ee59f5803e4a6607d1b1238833b8885ebd410", + "sha256:89086c9d3490a0f265a3c4b794037a84541ff5ffa28bb9c24cc9f66566968464", + "sha256:99856d6c98a326abbcc2363827e16bd6044f70f2ef42f453c0bd5440c4ce24e5", + "sha256:aab584725afd10c710b8f1e6e208dbee2d0ad009f57d674cb9d1b3964037275d", + "sha256:af169ba897692e9cd984a81cb0f02e46dacdc07d6cf9fd5c91e81f8efaf93d52", + "sha256:b39b8711578dcfd45fc0140993403b8a81e879ec25d53189f3faa1f006087dca", + "sha256:b3f543ae9d3408549a9900720f18c0194ac0fe810cecda2a584fd4dca2eb3bb8", + "sha256:d0583b75f2e70ec93f100931660328965bb9ff65ae54695fb3fa0a1255daa6f2", + "sha256:dfbbbf0809a3606046a41f8561c3eada9db811be94138f42d9135a5c47e75f6f", + "sha256:e538f2d4a6ffb6edfb303ce70ae7e88629ac6e5581870e66c306d9ad7b564a58", + "sha256:eba51599370c87088d8882ab74f637de0c4f04a6d08a312dce49368ba9ed5c2a", + "sha256:ee4b43f35f5dc15e1fec55ccb53c130adb1d11e8ad8263d68b1284b66a04190d", + "sha256:f2363e5fd81afb650085c6686f2ee3706975c54f331b426800b53531191fdf28", + "sha256:f299c020c6679cb389814a3b81200fe55d428012c5e76da7e722491f5d205990", + "sha256:f72f23bab1848edb7472309e9898603141644faec9fd57a823ea6b4d1c4c8995", + "sha256:fa90bac61c9dc3e1a563e5babb3fd2c0c1c80567e815442ddbe561eadc803b30" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==5.5.2" + "markers": "python_version >= '3.7'", + "version": "==6.0" }, "zstandard": { "hashes": [ @@ -2542,19 +2501,19 @@ }, "faker": { "hashes": [ - "sha256:51f37ff9df710159d6d736d0ba1c75e063430a8c806b91334d7794305b5a6114", - "sha256:5aaa16fa9cfde7d117eef70b6b293a705021e57158f3fa6b44ed1b70202d2065" + "sha256:2deeee8fed3d1b8ae5f87d172d4569ddc859aab8693f7cd68eddc5d20400563a", + "sha256:e7c058e1f360f245f265625b32d3189d7229398ad80a8b6bac459891745de052" ], "markers": "python_version >= '3.7'", - "version": "==17.6.0" + "version": "==18.3.0" }, "filelock": { "hashes": [ - "sha256:4427cdda14a1c68e264845142842d6de2d0fa2c15ba31571a3d9c9a1ec9d191c", - "sha256:e393782f76abea324dee598d2ea145b857a20df0e0ee4f80fcf35e72a341d2c7" + "sha256:75997740323c5f12e18f10b494bc11c03e42843129f980f17c04352cc7b09d40", + "sha256:eb8f0f2d37ed68223ea63e3bddf2fac99667e4362c88b3f762e434d160190d18" ], "index": "pypi", - "version": "==3.9.1" + "version": "==3.10.2" }, "ghp-import": { "hashes": [ @@ -2565,11 +2524,11 @@ }, "identify": { "hashes": [ - "sha256:5dfef8a745ca4f2c95f27e9db74cb4c8b6d9916383988e8791f3595868f78a33", - "sha256:c8b288552bc5f05a08aff09af2f58e6976bf8ac87beb38498a0e3d98ba64eb18" + "sha256:69edcaffa8e91ae0f77d397af60f148b6b45a8044b2cc6d99cafa5b04793ff00", + "sha256:7671a05ef9cfaf8ff63b15d45a91a1147a03aaccb2976d4e9bd047cbbc508471" ], "markers": "python_version >= '3.7'", - "version": "==2.5.20" + "version": "==2.5.21" }, "idna": { "hashes": [ @@ -2589,11 +2548,11 @@ }, "importlib-metadata": { "hashes": [ - "sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad", - "sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d" + "sha256:43ce9281e097583d758c2c708c4376371261a02c34682491a8e98352365aad20", + "sha256:ff80f3b5394912eb1b108fcfd444dc78b7f1f3e16b16188054bd01cb9cb86f09" ], "markers": "python_version < '3.10'", - "version": "==6.0.0" + "version": "==6.1.0" }, "iniconfig": { "hashes": [ @@ -2767,11 +2726,11 @@ }, "pathspec": { "hashes": [ - "sha256:3a66eb970cbac598f9e5ccb5b2cf58930cd8e3ed86d393d541eaf2d8b1705229", - "sha256:64d338d4e0914e91c1792321e6907b5a593f1ab1851de7fc269557a21b30ebbc" + "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687", + "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293" ], "markers": "python_version >= '3.7'", - "version": "==0.11.0" + "version": "==0.11.1" }, "pillow": { "hashes": [ @@ -2874,11 +2833,11 @@ }, "pre-commit": { "hashes": [ - "sha256:b80254e60668e1dd1f5c03a1c9e0413941d61f568a57d745add265945f65bfe8", - "sha256:d63e6537f9252d99f65755ae5b79c989b462d511ebbc481b561db6a297e1e865" + "sha256:818f0d998059934d0f81bb3667e3ccdc32da6ed7ccaac33e43dc231561ddaaa9", + "sha256:f712d3688102e13c8e66b7d7dbd8934a6dda157e58635d89f7d6fecdca39ce8a" ], "index": "pypi", - "version": "==3.1.1" + "version": "==3.2.0" }, "pygments": { "hashes": [ @@ -3038,97 +2997,69 @@ }, "regex": { "hashes": [ - "sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad", - "sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4", - "sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd", - "sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc", - "sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d", - "sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066", - "sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec", - "sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9", - "sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e", - "sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8", - "sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e", - "sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783", - "sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6", - "sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1", - "sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c", - "sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4", - "sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1", - "sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1", - "sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7", - "sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8", - "sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe", - "sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d", - "sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b", - "sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8", - "sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c", - "sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af", - "sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49", - "sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714", - "sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542", - "sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318", - "sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e", - "sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5", - "sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc", - "sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144", - "sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453", - "sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5", - "sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61", - "sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11", - "sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a", - "sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54", - "sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73", - "sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc", - "sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347", - "sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c", - "sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66", - "sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c", - "sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93", - "sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443", - "sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc", - "sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1", - "sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892", - "sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8", - "sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001", - "sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa", - "sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90", - "sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c", - "sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0", - "sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692", - "sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4", - "sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5", - "sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690", - "sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83", - "sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66", - "sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f", - "sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f", - "sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4", - "sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee", - "sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81", - "sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95", - "sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9", - "sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff", - "sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e", - "sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5", - "sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6", - "sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7", - "sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1", - "sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394", - "sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6", - "sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742", - "sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57", - "sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b", - "sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7", - "sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b", - "sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244", - "sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af", - "sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185", - "sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8", - "sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5" + "sha256:0a2a851d0548a4e298d88e3ceeb4bad4aab751cf1883edf6150f25718ce0207a", + "sha256:148ad520f41021b97870e9c80420e6cdaadcc5e4306e613aed84cd5d53f8a7ca", + "sha256:159c7b83488a056365119ada0bceddc06a455d3db7a7aa3cf07f13b2878b885f", + "sha256:1937946dd03818845bd9c1713dfd3173a7b9a324e6593a235fc8c51c9cd460eb", + "sha256:20ce96da2093e72e151d6af8217a629aeb5f48f1ac543c2fffd1d87c57699d7e", + "sha256:24242e5f26823e95edd64969bd206d4752c1a56a744d8cbcf58461f9788bc0c7", + "sha256:2e2e6baf4a1108f84966f44870b26766d8f6d104c9959aae329078327c677122", + "sha256:328a70e578f37f59eb54e8450b5042190bbadf2ef7f5c0b60829574b62955ed7", + "sha256:3371975b165c1e859e1990e5069e8606f00b25aed961cfd25b7bac626b1eb5a9", + "sha256:33bab9c9af936123b70b9874ce83f2bcd54be76b97637b33d31560fba8ad5d78", + "sha256:33c887b658afb144cdc8ce9156a0e1098453060c18b8bd5177f831ad58e0d60d", + "sha256:3582db55372eaee9e998d378109c4b9b15beb2c84624c767efe351363fada9c4", + "sha256:3b4da28d89527572f0d4a24814e353e1228a7aeda965e5d9265c1435a154b17a", + "sha256:3c4fa90fd91cc2957e66195ce374331bebbc816964864f64b42bd14bda773b53", + "sha256:3e66cfc915f5f7e2c8a0af8a27f87aa857f440de7521fd7f2682e23f082142a1", + "sha256:3f6f29cb134d782685f8eda01d72073c483c7f87b318b5101c7001faef7850f5", + "sha256:43469c22fcf705a7cb59c7e01d6d96975bdbc54c1138900f04d11496489a0054", + "sha256:4ad467524cb6879ce42107cf02a49cdb4a06f07fe0e5f1160d7db865a8d25d4b", + "sha256:4c9c3db90acd17e4231344a23616f33fd79837809584ce30e2450ca312fa47aa", + "sha256:533ba64d67d882286557106a1c5f12b4c2825f11b47a7c209a8c22922ca882be", + "sha256:548257463696daf919d2fdfc53ee4b98e29e3ffc5afddd713d83aa849d1fa178", + "sha256:55f907c4d18a5a40da0ceb339a0beda77c9df47c934adad987793632fb4318c3", + "sha256:5826e7fb443acb49f64f9648a2852efc8d9af2f4c67f6c3dca69dccd9e8e1d15", + "sha256:59a15c2803c20702d7f2077807d9a2b7d9a168034b87fd3f0d8361de60019a1e", + "sha256:59b3aab231c27cd754d6452c43b12498d34e7ab87d69a502bd0220f4b1c090c4", + "sha256:5da83c964aecb6c3f2a6c9a03f3d0fa579e1ad208e2c264ba826cecd19da11fa", + "sha256:60b545806a433cc752b9fa936f1c0a63bf96a3872965b958b35bd0d5d788d411", + "sha256:60fcef5c3144d861b623456d87ca7fff7af59a4a918e1364cdd0687b48285285", + "sha256:617d101b95151d827d5366e9c4225a68c64d56065e41ab9c7ef51bb87f347a8a", + "sha256:68e9add923bda8357e6fe65a568766feae369063cb7210297067675cce65272f", + "sha256:7798b3d662f70cea425637c54da30ef1894d426cab24ee7ffaaccb24a8b17bb8", + "sha256:80a288b21b17e39fb3630cf1d14fd704499bb11d9c8fc110662a0c57758d3d3e", + "sha256:81291006a934052161eae8340e7731ea6b8595b0c27dd4927c4e8a489e1760e2", + "sha256:8527ea0978ed6dc58ccb3935bd2883537b455c97ec44b5d8084677dfa817f96b", + "sha256:87016850c13082747bd120558e6750746177bd492b103b2fca761c8a1c43fba9", + "sha256:88552925fd22320600c59ee80342d6eb06bfa9503c3a402d7327983f5fa999d9", + "sha256:8d7477ebaf5d3621c763702e1ec0daeede8863fb22459c5e26ddfd17e9b1999c", + "sha256:97326d62255203c6026896d4b1ad6b5a0141ba097cae00ed3a508fe454e96baf", + "sha256:a4c7b8c5a3a186b49415af3be18e4b8f93b33d6853216c0a1d7401736b703bce", + "sha256:aff7c778d9229d66f716ad98a701fa91cf97935ae4a32a145ae9e61619906aaa", + "sha256:b280cb303fed94199f0b976595af71ebdcd388fb5e377a8198790f1016a23476", + "sha256:b59233cb8df6b60fff5f3056f6f342a8f5f04107a11936bf49ebff87dd4ace34", + "sha256:bdab2c90665b88faf5cc5e11bf835d548f4b8d8060c89fc70782b6020850aa1c", + "sha256:c00c357a4914f58398503c7f716cf1646b1e36b8176efa35255f5ebfacedfa46", + "sha256:c95a977cfdccb8ddef95ddd77cf586fe9dc327c7c93cf712983cece70cdaa1be", + "sha256:cdd3d2df486c9a8c6d08f78bdfa8ea7cf6191e037fde38c2cf6f5f0559e9d353", + "sha256:d15a0cc48f7a3055e89df1bd6623a907c407d1f58f67ff47064e598d4a550de4", + "sha256:d40cecf4bcb2cb37c59e3c79e5bbc45d47e3f3e07edf24e35fc5775db2570058", + "sha256:d4d3571c8eb21f0fbe9f0b21b49092c24d442f9a295f079949df3551b2886f29", + "sha256:d94a0d25e517c76c9ce9e2e2635d9d1a644b894f466a66a10061f4e599cdc019", + "sha256:dcc5b0d6a94637c071a427dc4469efd0ae4fda8ff384790bc8b5baaf9308dc3e", + "sha256:e00b046000b313ffaa2f6e8d7290b33b08d2005150eff4c8cf3ad74d011888d1", + "sha256:e1b56dac5e86ab52e0443d63b02796357202a8f8c5966b69f8d4c03a94778e98", + "sha256:e30d9a6fd7a7a6a4da6f80d167ce8eda4a993ff24282cbc73f34186c46a498db", + "sha256:f1977c1fe28173f2349d42c59f80f10a97ce34f2bedb7b7f55e2e8a8de9b7dfb", + "sha256:f2bc8a9076ea7add860d57dbee0554a212962ecf2a900344f2fc7c56a02463b0", + "sha256:f311ca33fcb9f8fb060c1fa76238d8d029f33b71a2021bafa5d423cc25965b54", + "sha256:f579a202b90c1110d0894a86b32a89bf550fdb34bdd3f9f550115706be462e19", + "sha256:fa41a427d4f03ec6d6da2fd8a230f4f388f336cd7ca46b46c4d2a1bca3ead85a", + "sha256:fd47362e03acc780aad5a5bc4624d495594261b55a1f79a5b775b6be865a5911" ], - "markers": "python_version >= '3.6'", - "version": "==2022.10.31" + "markers": "python_version >= '3.8'", + "version": "==2023.3.22" }, "requests": { "hashes": [ @@ -3513,30 +3444,30 @@ "compatible-mypy" ], "hashes": [ - "sha256:0bbf9eb172c5b06eccff2d704c7c3906e4a2c6146df8c32ee9f3a51e29265581", - "sha256:25010658acac0ce4a69211b55dd719fd16dbfe54fcfe5c878d0c8db07bdd5482" + "sha256:1bd96207576cd220221a0e615f0259f13d453d515a80f576c1246e0fb547f561", + "sha256:c95f948e2bfc565f3147e969ff361ef033841a0b8a51cac974a6cc6d0486732c" ], "index": "pypi", - "version": "==1.15.0" + "version": "==1.16.0" }, "django-stubs-ext": { "hashes": [ - "sha256:4fd8cdbc68d1a421f21bb7e0d9e76d50f6a4b504d350ba786405daf536e90c21", - "sha256:d729fbc7fe8970a7e26b35956c35b48502516f011d523c0577bdfb02ed956284" + "sha256:9a9ba9e2808737949de96a0fce8b054f12d38e461011d77ebc074ffe8c43dfcb", + "sha256:a454d349d19c26d6c50c4c6dbc1e8af4a9cda4ce1dc4104e3dd4c0330510cc56" ], "markers": "python_version >= '3.7'", - "version": "==0.7.0" + "version": "==0.8.0" }, "djangorestframework-stubs": { "extras": [ "compatible-mypy" ], "hashes": [ - "sha256:89f6c2add193cb5ab61b9e47187b33a93cc099376a8df5e4d6c3fc8ecb992d3b", - "sha256:9475e1374b057ffbdcaaa84a060fe5f01476d8b9014d82a83b4153f57fbcbc1f" + "sha256:433edd7f10786914138b300b9be5aba1ebc80c471b5156934664afd7e9df9fd6", + "sha256:69e8a1ea7eb815cbe35155c27eee72522d7c8666d3cbdacb9997ab88c7b4202c" ], "index": "pypi", - "version": "==1.9.1" + "version": "==1.10.0" }, "idna": { "hashes": [ @@ -3548,35 +3479,35 @@ }, "mypy": { "hashes": [ - "sha256:0af4f0e20706aadf4e6f8f8dc5ab739089146b83fd53cb4a7e0e850ef3de0bb6", - "sha256:15b5a824b58c7c822c51bc66308e759243c32631896743f030daf449fe3677f3", - "sha256:17455cda53eeee0a4adb6371a21dd3dbf465897de82843751cf822605d152c8c", - "sha256:2013226d17f20468f34feddd6aae4635a55f79626549099354ce641bc7d40262", - "sha256:24189f23dc66f83b839bd1cce2dfc356020dfc9a8bae03978477b15be61b062e", - "sha256:27a0f74a298769d9fdc8498fcb4f2beb86f0564bcdb1a37b58cbbe78e55cf8c0", - "sha256:28cea5a6392bb43d266782983b5a4216c25544cd7d80be681a155ddcdafd152d", - "sha256:448de661536d270ce04f2d7dddaa49b2fdba6e3bd8a83212164d4174ff43aa65", - "sha256:48525aec92b47baed9b3380371ab8ab6e63a5aab317347dfe9e55e02aaad22e8", - "sha256:5bc8d6bd3b274dd3846597855d96d38d947aedba18776aa998a8d46fabdaed76", - "sha256:5deb252fd42a77add936b463033a59b8e48eb2eaec2976d76b6878d031933fe4", - "sha256:5f546ac34093c6ce33f6278f7c88f0f147a4849386d3bf3ae193702f4fe31407", - "sha256:5fdd63e4f50e3538617887e9aee91855368d9fc1dea30da743837b0df7373bc4", - "sha256:65b122a993d9c81ea0bfde7689b3365318a88bde952e4dfa1b3a8b4ac05d168b", - "sha256:71a808334d3f41ef011faa5a5cd8153606df5fc0b56de5b2e89566c8093a0c9a", - "sha256:920169f0184215eef19294fa86ea49ffd4635dedfdea2b57e45cb4ee85d5ccaf", - "sha256:93a85495fb13dc484251b4c1fd7a5ac370cd0d812bbfc3b39c1bafefe95275d5", - "sha256:a2948c40a7dd46c1c33765718936669dc1f628f134013b02ff5ac6c7ef6942bf", - "sha256:c6c2ccb7af7154673c591189c3687b013122c5a891bb5651eca3db8e6c6c55bd", - "sha256:c96b8a0c019fe29040d520d9257d8c8f122a7343a8307bf8d6d4a43f5c5bfcc8", - "sha256:d42a98e76070a365a1d1c220fcac8aa4ada12ae0db679cb4d910fabefc88b994", - "sha256:dbeb24514c4acbc78d205f85dd0e800f34062efcc1f4a4857c57e4b4b8712bff", - "sha256:e60d0b09f62ae97a94605c3f73fd952395286cf3e3b9e7b97f60b01ddfbbda88", - "sha256:e64f48c6176e243ad015e995de05af7f22bbe370dbb5b32bd6988438ec873919", - "sha256:e831662208055b006eef68392a768ff83596035ffd6d846786578ba1714ba8f6", - "sha256:eda5c8b9949ed411ff752b9a01adda31afe7eae1e53e946dbdf9db23865e66c4" + "sha256:0a28a76785bf57655a8ea5eb0540a15b0e781c807b5aa798bd463779988fa1d5", + "sha256:19ba15f9627a5723e522d007fe708007bae52b93faab00f95d72f03e1afa9598", + "sha256:21b437be1c02712a605591e1ed1d858aba681757a1e55fe678a15c2244cd68a5", + "sha256:26cdd6a22b9b40b2fd71881a8a4f34b4d7914c679f154f43385ca878a8297389", + "sha256:2888ce4fe5aae5a673386fa232473014056967f3904f5abfcf6367b5af1f612a", + "sha256:2b0c373d071593deefbcdd87ec8db91ea13bd8f1328d44947e88beae21e8d5e9", + "sha256:315ac73cc1cce4771c27d426b7ea558fb4e2836f89cb0296cbe056894e3a1f78", + "sha256:39c7119335be05630611ee798cc982623b9e8f0cff04a0b48dfc26100e0b97af", + "sha256:4b398d8b1f4fba0e3c6463e02f8ad3346f71956b92287af22c9b12c3ec965a9f", + "sha256:4e4e8b362cdf99ba00c2b218036002bdcdf1e0de085cdb296a49df03fb31dfc4", + "sha256:59bbd71e5c58eed2e992ce6523180e03c221dcd92b52f0e792f291d67b15a71c", + "sha256:5b5f81b40d94c785f288948c16e1f2da37203c6006546c5d947aab6f90aefef2", + "sha256:5cb14ff9919b7df3538590fc4d4c49a0f84392237cbf5f7a816b4161c061829e", + "sha256:61bf08362e93b6b12fad3eab68c4ea903a077b87c90ac06c11e3d7a09b56b9c1", + "sha256:64cc3afb3e9e71a79d06e3ed24bb508a6d66f782aff7e56f628bf35ba2e0ba51", + "sha256:69b35d1dcb5707382810765ed34da9db47e7f95b3528334a3c999b0c90fe523f", + "sha256:9401e33814cec6aec8c03a9548e9385e0e228fc1b8b0a37b9ea21038e64cdd8a", + "sha256:a380c041db500e1410bb5b16b3c1c35e61e773a5c3517926b81dfdab7582be54", + "sha256:ae9ceae0f5b9059f33dbc62dea087e942c0ccab4b7a003719cb70f9b8abfa32f", + "sha256:b7c7b708fe9a871a96626d61912e3f4ddd365bf7f39128362bc50cbd74a634d5", + "sha256:c1c10fa12df1232c936830839e2e935d090fc9ee315744ac33b8a32216b93707", + "sha256:ce61663faf7a8e5ec6f456857bfbcec2901fbdb3ad958b778403f63b9e606a1b", + "sha256:d64c28e03ce40d5303450f547e07418c64c241669ab20610f273c9e6290b4b0b", + "sha256:d809f88734f44a0d44959d795b1e6f64b2bbe0ea4d9cc4776aa588bb4229fc1c", + "sha256:dbb19c9f662e41e474e0cff502b7064a7edc6764f5262b6cd91d698163196799", + "sha256:ef6a01e563ec6a4940784c574d33f6ac1943864634517984471642908b30b6f7" ], "index": "pypi", - "version": "==1.0.1" + "version": "==1.1.1" }, "mypy-extensions": { "hashes": [ @@ -3727,26 +3658,26 @@ }, "types-redis": { "hashes": [ - "sha256:43d92b4d6315a45bb0e9a790683ba4448ada88cd1233f3f9886fa6f783f53956", - "sha256:f516254bd593023110a38b77e80d5a76a7f033f1d94c53bee09a7d5d0433f34d" + "sha256:7c1d5fdb0a2d5fd92eac37ce382fdb47d99a69889e7d6c2bc4479148ac646c73", + "sha256:f23415e448ca25ec5028c24fdf3717a13f0c905eb1933733e8a8a7d4952f6908" ], "index": "pypi", - "version": "==4.5.1.5" + "version": "==4.5.3.0" }, "types-requests": { "hashes": [ - "sha256:a05e4c7bc967518fba5789c341ea8b0c942776ee474c7873129a61161978e586", - "sha256:fc8eaa09cc014699c6b63c60c2e3add0c8b09a410c818b5ac6e65f92a26dde09" + "sha256:9d4002056df7ebc4ec1f28fd701fba82c5c22549c4477116cb2656aa30ace6db", + "sha256:a86921028335fdcc3aaf676c9d3463f867db6af2303fc65aa309b13ae1e6dd53" ], - "version": "==2.28.11.15" + "version": "==2.28.11.16" }, "types-setuptools": { "hashes": [ - "sha256:70b5e6a379e9fccf6579871a93ca3301a46252e3ae66957ec64281a2b6a812d9", - "sha256:d669a80ee8e37eb1697dc31a23d41ea2c48a635464e2c7e6370dda811459b466" + "sha256:3a708e66c7bdc620e4d0439f344c750c57a4340c895a4c3ed2d0fc4ae8eb9962", + "sha256:dae5a4a659dbb6dba57773440f6e2dbdd8ef282dc136a174a8a59bd33d949945" ], "index": "pypi", - "version": "==67.6.0.0" + "version": "==67.6.0.5" }, "types-tqdm": { "hashes": [ diff --git a/docker/docker-prepare.sh b/docker/docker-prepare.sh index b088cef40..d6eab4281 100755 --- a/docker/docker-prepare.sh +++ b/docker/docker-prepare.sh @@ -80,7 +80,7 @@ django_checks() { search_index() { - local -r index_version=3 + local -r index_version=4 local -r index_version_file=${DATA_DIR}/.index_version if [[ (! -f "${index_version_file}") || $(<"${index_version_file}") != "$index_version" ]]; then diff --git a/docker/supervisord.conf b/docker/supervisord.conf index bfb78330a..69b7879b9 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -28,7 +28,7 @@ stderr_logfile_maxbytes=0 [program:celery] -command = celery --app paperless worker --loglevel INFO +command = celery --app paperless worker --loglevel INFO --without-mingle --without-gossip user=paperless stopasgroup = true stopwaitsecs = 60 diff --git a/docs/administration.md b/docs/administration.md index aba22cd56..46d6aaaaa 100644 --- a/docs/administration.md +++ b/docs/administration.md @@ -475,12 +475,13 @@ mail_fetcher The command takes no arguments and processes all your mail accounts and rules. -!!! note +!!! tip - As of October 2022 Microsoft no longer supports IMAP authentication - for Exchange servers, thus Exchange is no longer supported until a - solution is implemented in the Python IMAP library used by Paperless. - See [learn.microsoft.com](https://learn.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/deprecation-of-basic-authentication-exchange-online) + To use OAuth access tokens for mail fetching, + select the box to indicate the password is actually + a token when creating or editing a mail account. The + details for creating a token depend on your email + provider. ### Creating archived documents {#archiver} diff --git a/docs/assets/screenshots/dashboard.png b/docs/assets/screenshots/dashboard.png index 41fe23ffc..eded2135f 100644 Binary files a/docs/assets/screenshots/dashboard.png and b/docs/assets/screenshots/dashboard.png differ diff --git a/docs/configuration.md b/docs/configuration.md index 98d7ee135..e07071b05 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -86,6 +86,36 @@ changed here. Default is `prefer`. +`PAPERLESS_DBSSLROOTCERT=` + +: SSL root certificate path + + See [the official documentation about + sslmode](https://www.postgresql.org/docs/current/libpq-ssl.html). + Changes path of `root.crt`. + + Defaults to unset, using the documented path in the home directory. + +`PAPERLESS_DBSSLCERT=` + +: SSL client certificate path + + See [the official documentation about + sslmode](https://www.postgresql.org/docs/current/libpq-ssl.html). + Changes path of `postgresql.crt`. + + Defaults to unset, using the documented path in the home directory. + +`PAPERLESS_DBSSLKEY=` + +: SSL client key path + + See [the official documentation about + sslmode](https://www.postgresql.org/docs/current/libpq-ssl.html). + Changes path of `postgresql.key`. + + Defaults to unset, using the documented path in the home directory. + `PAPERLESS_DB_TIMEOUT=` : Amount of time for a database connection to wait for the database to diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 1ff020d4f..63e37a10f 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -332,3 +332,16 @@ change the port gunicorn listens on. To fix this, set `PAPERLESS_PORT` again to your desired port, or the default of 8000. + +## Database Warns about unique constraint "documents_tag_name_uniq + +You may see database log lines like: + +``` +ERROR: duplicate key value violates unique constraint "documents_tag_name_uniq" +DETAIL: Key (name)=(NameF) already exists. +STATEMENT: INSERT INTO "documents_tag" ("owner_id", "name", "match", "matching_algorithm", "is_insensitive", "color", "is_inbox_tag") VALUES (NULL, 'NameF', '', 1, true, '#a6cee3', false) RETURNING "documents_tag"."id" +``` + +This can happen during heavy consumption when using polling. Paperless will handle it correctly and the file +will still be consumed diff --git a/src-ui/cypress/e2e/documents/document-detail.cy.ts b/src-ui/cypress/e2e/documents/document-detail.cy.ts index 0cacbd81f..dd5f8fac8 100644 --- a/src-ui/cypress/e2e/documents/document-detail.cy.ts +++ b/src-ui/cypress/e2e/documents/document-detail.cy.ts @@ -17,28 +17,28 @@ describe('document-detail', () => { req.reply({ result: 'OK' }) }).as('saveDoc') - cy.fixture('documents/1/comments.json').then((commentsJson) => { + cy.fixture('documents/1/notes.json').then((notesJson) => { cy.intercept( 'GET', - 'http://localhost:8000/api/documents/1/comments/', + 'http://localhost:8000/api/documents/1/notes/', (req) => { - req.reply(commentsJson.filter((c) => c.id != 10)) // 3 + req.reply(notesJson.filter((c) => c.id != 10)) // 3 } ) cy.intercept( 'DELETE', - 'http://localhost:8000/api/documents/1/comments/?id=9', + 'http://localhost:8000/api/documents/1/notes/?id=9', (req) => { - req.reply(commentsJson.filter((c) => c.id != 9 && c.id != 10)) // 2 + req.reply(notesJson.filter((c) => c.id != 9 && c.id != 10)) // 2 } ) cy.intercept( 'POST', - 'http://localhost:8000/api/documents/1/comments/', + 'http://localhost:8000/api/documents/1/notes/', (req) => { - req.reply(commentsJson) // 4 + req.reply(notesJson) // 4 } ) }) @@ -75,33 +75,40 @@ describe('document-detail', () => { cy.get('pdf-viewer').should('be.visible') }) - it('should show a list of comments', () => { - cy.wait(1000) - .get('a') - .contains('Comments') - .click({ force: true }) - .wait(1000) - cy.get('app-document-comments').find('.card').its('length').should('eq', 3) + it('should show a list of notes', () => { + cy.wait(1000).get('a').contains('Notes').click({ force: true }).wait(1000) + cy.get('app-document-notes').find('.card').its('length').should('eq', 3) }) - it('should support comment deletion', () => { - cy.wait(1000).get('a').contains('Comments').click().wait(1000) - cy.get('app-document-comments') + it('should support note deletion', () => { + cy.wait(1000).get('a').contains('Notes').click().wait(1000) + cy.get('app-document-notes') .find('.card') .first() .find('button') .click({ force: true }) .wait(500) - cy.get('app-document-comments').find('.card').its('length').should('eq', 2) + cy.get('app-document-notes').find('.card').its('length').should('eq', 2) }) - it('should support comment insertion', () => { - cy.wait(1000).get('a').contains('Comments').click().wait(1000) - cy.get('app-document-comments') + it('should support note insertion', () => { + cy.wait(1000).get('a').contains('Notes').click().wait(1000) + cy.get('app-document-notes') .find('form textarea') - .type('Testing new comment') + .type('Testing new note') .wait(500) - cy.get('app-document-comments').find('form button').click().wait(1500) - cy.get('app-document-comments').find('.card').its('length').should('eq', 4) + cy.get('app-document-notes').find('form button').click().wait(1500) + cy.get('app-document-notes').find('.card').its('length').should('eq', 4) + }) + + it('should support navigation to notes tab by url', () => { + cy.visit('/documents/1/notes') + cy.get('app-document-notes').should('exist') + }) + + it('should dynamically update note counts', () => { + cy.visit('/documents/1/notes') + cy.get('app-document-notes').within(() => cy.contains('Delete').click()) + cy.get('ul.nav').find('li').contains('Notes').find('.badge').contains('2') }) }) diff --git a/src-ui/cypress/e2e/documents/documents-list.cy.ts b/src-ui/cypress/e2e/documents/documents-list.cy.ts index 84b396625..5c17ef5d9 100644 --- a/src-ui/cypress/e2e/documents/documents-list.cy.ts +++ b/src-ui/cypress/e2e/documents/documents-list.cy.ts @@ -48,6 +48,26 @@ describe('documents-list', () => { (d.tags as Array).includes(tag_id) ) response.count = response.results.length + } else if (req.query.hasOwnProperty('correspondent__id__in')) { + // filtering e.g. http://localhost:8000/api/documents/?page=1&page_size=50&ordering=-created&correspondent__id__in=9,14 + const correspondent_ids = req.query['correspondent__id__in'] + .toString() + .split(',') + .map((c) => +c) + response.results = (documentsJson.results as Array).filter((d) => + correspondent_ids.includes(d.correspondent) + ) + response.count = response.results.length + } else if (req.query.hasOwnProperty('correspondent__id__none')) { + // filtering e.g. http://localhost:8000/api/documents/?page=1&page_size=50&ordering=-created&correspondent__id__none=9,14 + const correspondent_ids = req.query['correspondent__id__none'] + .toString() + .split(',') + .map((c) => +c) + response.results = (documentsJson.results as Array).filter( + (d) => !correspondent_ids.includes(d.correspondent) + ) + response.count = response.results.length } req.reply(response) @@ -112,6 +132,27 @@ describe('documents-list', () => { cy.contains('One document') }) + it('should filter including multiple correspondents', () => { + cy.get('app-filter-editor app-filterable-dropdown[title="Correspondent"]') + .click() + .within(() => { + cy.contains('button', 'ABC Test Correspondent').click() + cy.contains('button', 'Corresp 11').click() + }) + cy.contains('3 documents') + }) + + it('should filter excluding multiple correspondents', () => { + cy.get('app-filter-editor app-filterable-dropdown[title="Correspondent"]') + .click() + .within(() => { + cy.contains('button', 'ABC Test Correspondent').click() + cy.contains('button', 'Corresp 11').click() + cy.contains('label', 'Exclude').click() + }) + cy.contains('One document') + }) + it('should apply tags', () => { cy.get('app-document-card-small:first-of-type').click() cy.get('app-bulk-editor app-filterable-dropdown[title="Tags"]').within( diff --git a/src-ui/cypress/e2e/documents/query-params.cy.ts b/src-ui/cypress/e2e/documents/query-params.cy.ts index a31e43c8a..eb160e9de 100644 --- a/src-ui/cypress/e2e/documents/query-params.cy.ts +++ b/src-ui/cypress/e2e/documents/query-params.cy.ts @@ -232,6 +232,11 @@ describe('documents query params', () => { it('should show a list of documents filtered by document type', () => { cy.visit('/documents?sort=created&reverse=true&document_type__id=1') + cy.contains('2 documents') + }) + + it('should show a list of documents filtered by multiple correspondents', () => { + cy.visit('/documents?sort=created&reverse=true&document_type__id__in=1,2') cy.contains('3 documents') }) @@ -245,9 +250,14 @@ describe('documents query params', () => { cy.contains('2 documents') }) + it('should show a list of documents filtered by multiple correspondents', () => { + cy.visit('/documents?sort=created&reverse=true&correspondent__id__in=9,14') + cy.contains('3 documents') + }) + it('should show a list of documents filtered by no correspondent', () => { cy.visit('/documents?sort=created&reverse=true&correspondent__isnull=1') - cy.contains('2 documents') + cy.contains('One document') }) it('should show a list of documents filtered by storage path', () => { diff --git a/src-ui/cypress/fixtures/correspondents/correspondents.json b/src-ui/cypress/fixtures/correspondents/correspondents.json index fe9fa1d5f..d43ff6645 100644 --- a/src-ui/cypress/fixtures/correspondents/correspondents.json +++ b/src-ui/cypress/fixtures/correspondents/correspondents.json @@ -1 +1,257 @@ -{"count":27,"next":"http://localhost:8000/api/correspondents/?page=2","previous":null,"results":[{"id":9,"slug":"abc-test-correspondent","name":"ABC Test Correspondent","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":13,"slug":"corresp-10","name":"Corresp 10","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":14,"slug":"corresp-11","name":"Corresp 11","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":15,"slug":"corresp-12","name":"Corresp 12","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":16,"slug":"corresp-13","name":"Corresp 13","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":18,"slug":"corresp-15","name":"Corresp 15","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":19,"slug":"corresp-16","name":"Corresp 16","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":20,"slug":"corresp-17","name":"Corresp 17","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":21,"slug":"corresp-18","name":"Corresp 18","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":22,"slug":"corresp-19","name":"Corresp 19","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":23,"slug":"corresp-20","name":"Corresp 20","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":24,"slug":"corresp-21","name":"Corresp 21","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":25,"slug":"corresp-22","name":"Corresp 22","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":26,"slug":"corresp-23","name":"Corresp 23","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":5,"slug":"corresp-3","name":"Corresp 3","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":6,"slug":"corresp-4","name":"Corresp 4","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":7,"slug":"corresp-5","name":"Corresp 5","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":8,"slug":"corresp-6","name":"Corresp 6","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":10,"slug":"corresp-7","name":"Corresp 7","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":11,"slug":"corresp-8","name":"Corresp 8","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":12,"slug":"corresp-9","name":"Corresp 9","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":17,"slug":"correspondent-14","name":"Correspondent 14","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0,"last_correspondence":null},{"id":2,"slug":"correspondent-2","name":"Correspondent 2","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":7,"last_correspondence":"2021-01-20T23:37:58.204614Z"},{"id":27,"slug":"michael-shamoon","name":"Michael Shamoon","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":1,"last_correspondence":"2022-03-16T03:48:50.089624Z"},{"id":4,"slug":"newest-correspondent","name":"Newest Correspondent","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":1,"last_correspondence":"2021-02-07T08:00:00Z"}]} +{ + "count": 27, + "next": "http://localhost:8000/api/correspondents/?page=2", + "previous": null, + "results": [ + { + "id": 9, + "slug": "abc-test-correspondent", + "name": "ABC Test Correspondent", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 13, + "slug": "corresp-10", + "name": "Corresp 10", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 14, + "slug": "corresp-11", + "name": "Corresp 11", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 15, + "slug": "corresp-12", + "name": "Corresp 12", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 16, + "slug": "corresp-13", + "name": "Corresp 13", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 18, + "slug": "corresp-15", + "name": "Corresp 15", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 19, + "slug": "corresp-16", + "name": "Corresp 16", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 20, + "slug": "corresp-17", + "name": "Corresp 17", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 21, + "slug": "corresp-18", + "name": "Corresp 18", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 22, + "slug": "corresp-19", + "name": "Corresp 19", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 23, + "slug": "corresp-20", + "name": "Corresp 20", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 24, + "slug": "corresp-21", + "name": "Corresp 21", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 25, + "slug": "corresp-22", + "name": "Corresp 22", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 26, + "slug": "corresp-23", + "name": "Corresp 23", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 5, + "slug": "corresp-3", + "name": "Corresp 3", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 6, + "slug": "corresp-4", + "name": "Corresp 4", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 7, + "slug": "corresp-5", + "name": "Corresp 5", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 8, + "slug": "corresp-6", + "name": "Corresp 6", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 10, + "slug": "corresp-7", + "name": "Corresp 7", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 11, + "slug": "corresp-8", + "name": "Corresp 8", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 12, + "slug": "corresp-9", + "name": "Corresp 9", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 17, + "slug": "correspondent-14", + "name": "Correspondent 14", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 0, + "last_correspondence": null + }, + { + "id": 2, + "slug": "correspondent-2", + "name": "Correspondent 2", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 7, + "last_correspondence": "2021-01-20T23:37:58.204614Z" + }, + { + "id": 27, + "slug": "correspondent-slug", + "name": "Correspondent Slug", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 1, + "last_correspondence": "2022-03-16T03:48:50.089624Z" + }, + { + "id": 4, + "slug": "newest-correspondent", + "name": "Newest Correspondent", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 1, + "last_correspondence": "2021-02-07T08:00:00Z" + } + ] +} diff --git a/src-ui/cypress/fixtures/document_types/doctypes.json b/src-ui/cypress/fixtures/document_types/doctypes.json index 36c75f2ff..eb2d74a0e 100644 --- a/src-ui/cypress/fixtures/document_types/doctypes.json +++ b/src-ui/cypress/fixtures/document_types/doctypes.json @@ -1 +1,25 @@ -{"count":1,"next":null,"previous":null,"results":[{"id":1,"slug":"test","name":"Test Doc Type","match":"","matching_algorithm":1,"is_insensitive":true,"document_count":0}]} +{ + "count": 2, + "next": null, + "previous": null, + "results": [ + { + "id": 1, + "slug": "test", + "name": "Test Doc Type", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 1 + }, + { + "id": 2, + "slug": "test2", + "name": "Test Doc Type 2", + "match": "", + "matching_algorithm": 1, + "is_insensitive": true, + "document_count": 1 + } + ] +} diff --git a/src-ui/cypress/fixtures/documents/1/comments.json b/src-ui/cypress/fixtures/documents/1/comments.json deleted file mode 100644 index a6013b513..000000000 --- a/src-ui/cypress/fixtures/documents/1/comments.json +++ /dev/null @@ -1,46 +0,0 @@ -[ - { - "id": 10, - "comment": "Testing new comment", - "created": "2022-08-08T04:24:55.176008Z", - "user": { - "id": 1, - "username": "user2", - "first_name": "", - "last_name": "" - } - }, - { - "id": 9, - "comment": "Testing one more time", - "created": "2022-02-18T04:24:55.176008Z", - "user": { - "id": 2, - "username": "user1", - "first_name": "", - "last_name": "" - } - }, - { - "id": 8, - "comment": "Another comment", - "created": "2021-11-08T04:24:47.925042Z", - "user": { - "id": 2, - "username": "user33", - "first_name": "", - "last_name": "" - } - }, - { - "id": 7, - "comment": "Cupcake ipsum dolor sit amet cheesecake candy cookie tiramisu. Donut chocolate chupa chups macaroon brownie halvah pie cheesecake gummies. Sweet chocolate bar candy donut gummi bears bear claw liquorice bonbon shortbread.\n\nDonut chocolate bar candy wafer wafer tiramisu. Gummies chocolate cake muffin toffee carrot cake macaroon. Toffee toffee jelly beans danish lollipop cake.", - "created": "2021-02-08T02:37:49.724132Z", - "user": { - "id": 3, - "username": "admin", - "first_name": "", - "last_name": "" - } - } -] diff --git a/src-ui/cypress/fixtures/documents/1/notes.json b/src-ui/cypress/fixtures/documents/1/notes.json new file mode 100644 index 000000000..97c8e5ace --- /dev/null +++ b/src-ui/cypress/fixtures/documents/1/notes.json @@ -0,0 +1,26 @@ +[ + { + "id": 10, + "note": "Testing new note", + "created": "2022-08-08T04:24:55.176008Z", + "user": 3 + }, + { + "id": 9, + "note": "Testing one more time", + "created": "2022-02-18T04:24:55.176008Z", + "user": 15 + }, + { + "id": 8, + "note": "Another note", + "created": "2021-11-08T04:24:47.925042Z", + "user": 3 + }, + { + "id": 7, + "note": "Cupcake ipsum dolor sit amet cheesecake candy cookie tiramisu. Donut chocolate chupa chups macaroon brownie halvah pie cheesecake gummies. Sweet chocolate bar candy donut gummi bears bear claw liquorice bonbon shortbread.\n\nDonut chocolate bar candy wafer wafer tiramisu. Gummies chocolate cake muffin toffee carrot cake macaroon. Toffee toffee jelly beans danish lollipop cake.", + "created": "2021-02-08T02:37:49.724132Z", + "user": 3 + } +] diff --git a/src-ui/cypress/fixtures/documents/documents.json b/src-ui/cypress/fixtures/documents/documents.json index 211401b4b..be7640c8f 100644 --- a/src-ui/cypress/fixtures/documents/documents.json +++ b/src-ui/cypress/fixtures/documents/documents.json @@ -21,7 +21,27 @@ "original_file_name": "2022-03-22 no latin title.pdf", "archived_file_name": "2022-03-22 no latin title.pdf", "owner": null, - "permissions": [] + "permissions": [], + "notes": [ + { + "id": 9, + "note": "Testing one more time", + "created": "2022-02-18T04:24:55.176008Z", + "user": 15 + }, + { + "id": 8, + "note": "Another note", + "created": "2021-11-08T04:24:47.925042Z", + "user": 3 + }, + { + "id": 7, + "note": "Cupcake ipsum dolor sit amet cheesecake candy cookie tiramisu. Donut chocolate chupa chups macaroon brownie halvah pie cheesecake gummies. Sweet chocolate bar candy donut gummi bears bear claw liquorice bonbon shortbread.\n\nDonut chocolate bar candy wafer wafer tiramisu. Gummies chocolate cake muffin toffee carrot cake macaroon. Toffee toffee jelly beans danish lollipop cake.", + "created": "2021-02-08T02:37:49.724132Z", + "user": 3 + } + ] }, { "id": 2, @@ -39,11 +59,12 @@ "original_file_name": "2022-03-23 lorem ipsum dolor sit amet.pdf", "archived_file_name": "2022-03-23 llorem ipsum dolor sit amet.pdf", "owner": null, - "permissions": [] + "permissions": [], + "notes": [] }, { "id": 3, - "correspondent": null, + "correspondent": 14, "document_type": 1, "storage_path": null, "title": "dolor", @@ -59,12 +80,13 @@ "original_file_name": "2022-03-24 dolor.pdf", "archived_file_name": "2022-03-24 dolor.pdf", "owner": null, - "permissions": [] + "permissions": [], + "notes": [] }, { "id": 4, "correspondent": 9, - "document_type": 1, + "document_type": 2, "storage_path": null, "title": "sit amet", "content": "Test document PDF", @@ -79,7 +101,8 @@ "original_file_name": "2022-06-01 sit amet.pdf", "archived_file_name": "2022-06-01 sit amet.pdf", "owner": null, - "permissions": [] + "permissions": [], + "notes": [] } ] } diff --git a/src-ui/cypress/fixtures/groups/groups.json b/src-ui/cypress/fixtures/groups/groups.json index 0bf2655d9..f6051be90 100644 --- a/src-ui/cypress/fixtures/groups/groups.json +++ b/src-ui/cypress/fixtures/groups/groups.json @@ -11,10 +11,10 @@ "change_user", "delete_user", "view_user", - "add_comment", - "change_comment", - "delete_comment", - "view_comment" + "add_note", + "change_note", + "delete_note", + "view_note" ] }, { @@ -73,10 +73,10 @@ "change_task", "delete_task", "view_task", - "add_comment", - "change_comment", - "delete_comment", - "view_comment", + "add_note", + "change_note", + "delete_note", + "view_note", "add_correspondent", "change_correspondent", "delete_correspondent", diff --git a/src-ui/cypress/fixtures/ui_settings/settings.json b/src-ui/cypress/fixtures/ui_settings/settings.json index f552054df..3183943fe 100644 --- a/src-ui/cypress/fixtures/ui_settings/settings.json +++ b/src-ui/cypress/fixtures/ui_settings/settings.json @@ -94,10 +94,10 @@ "change_task", "delete_task", "view_task", - "add_comment", - "change_comment", - "delete_comment", - "view_comment", + "add_note", + "change_note", + "delete_note", + "view_note", "add_correspondent", "change_correspondent", "delete_correspondent", diff --git a/src-ui/cypress/fixtures/ui_settings/settings_restricted.json b/src-ui/cypress/fixtures/ui_settings/settings_restricted.json index 921d4274d..72ebe51b1 100644 --- a/src-ui/cypress/fixtures/ui_settings/settings_restricted.json +++ b/src-ui/cypress/fixtures/ui_settings/settings_restricted.json @@ -74,7 +74,7 @@ "change_task", "delete_task", "view_task", - "add_comment", + "add_note", "add_frontendsettings", "change_frontendsettings", "delete_frontendsettings", diff --git a/src-ui/cypress/fixtures/users/users.json b/src-ui/cypress/fixtures/users/users.json index ca477667a..a69a86b92 100644 --- a/src-ui/cypress/fixtures/users/users.json +++ b/src-ui/cypress/fixtures/users/users.json @@ -30,7 +30,7 @@ "django_celery_results.delete_taskresult", "paperless_mail.add_mailaccount", "auth.change_group", - "documents.add_comment", + "documents.add_note", "paperless_mail.delete_mailaccount", "authtoken.delete_tokenproxy", "guardian.delete_groupobjectpermission", @@ -44,7 +44,7 @@ "documents.add_documenttype", "django_q.change_success", "documents.delete_tag", - "documents.change_comment", + "documents.change_note", "django_q.delete_task", "documents.add_savedviewfilterrule", "django_q.view_task", @@ -59,7 +59,7 @@ "documents.add_savedview", "auth.delete_user", "documents.view_log", - "documents.view_comment", + "documents.view_note", "guardian.change_groupobjectpermission", "sessions.delete_session", "django_q.change_failure", @@ -139,7 +139,7 @@ "django_celery_results.view_taskresult", "contenttypes.add_contenttype", "django_q.delete_success", - "documents.delete_comment", + "documents.delete_note", "django_q.add_failure", "guardian.add_userobjectpermission", "sessions.view_session", @@ -216,10 +216,10 @@ "change_task", "delete_task", "view_task", - "add_comment", - "change_comment", - "delete_comment", - "view_comment", + "add_note", + "change_note", + "delete_note", + "view_note", "add_frontendsettings", "change_frontendsettings", "delete_frontendsettings", @@ -256,7 +256,7 @@ "django_celery_results.delete_taskresult", "authtoken.change_token", "auth.change_group", - "documents.add_comment", + "documents.add_note", "authtoken.delete_tokenproxy", "documents.view_documenttype", "contenttypes.delete_contenttype", @@ -285,7 +285,7 @@ "django_q.change_task", "sessions.add_session", "documents.change_taskattributes", - "documents.change_comment", + "documents.change_note", "django_q.delete_task", "django_q.delete_ormq", "auth.change_permission", @@ -311,7 +311,7 @@ "documents.view_document", "documents.add_savedview", "django_q.view_failure", - "documents.view_comment", + "documents.view_note", "documents.view_log", "documents.add_log", "documents.change_savedview", @@ -324,7 +324,7 @@ "django_celery_results.view_taskresult", "contenttypes.add_contenttype", "django_q.delete_success", - "documents.delete_comment", + "documents.delete_note", "django_q.add_failure", "sessions.view_session", "contenttypes.view_contenttype", @@ -373,7 +373,7 @@ "django_celery_results.delete_taskresult", "authtoken.change_token", "auth.change_group", - "documents.add_comment", + "documents.add_note", "authtoken.delete_tokenproxy", "documents.view_documenttype", "contenttypes.delete_contenttype", @@ -402,7 +402,7 @@ "django_q.change_task", "sessions.add_session", "documents.change_taskattributes", - "documents.change_comment", + "documents.change_note", "django_q.delete_task", "django_q.delete_ormq", "auth.change_permission", @@ -429,7 +429,7 @@ "documents.view_document", "documents.add_savedview", "django_q.view_failure", - "documents.view_comment", + "documents.view_note", "documents.view_log", "auth.delete_user", "documents.add_log", @@ -443,7 +443,7 @@ "django_celery_results.view_taskresult", "contenttypes.add_contenttype", "django_q.delete_success", - "documents.delete_comment", + "documents.delete_note", "django_q.add_failure", "sessions.view_session", "contenttypes.view_contenttype", diff --git a/src-ui/messages.xlf b/src-ui/messages.xlf index 4b173a5ee..f2ca61675 100644 --- a/src-ui/messages.xlf +++ b/src-ui/messages.xlf @@ -492,7 +492,7 @@ src/app/components/document-list/document-list.component.ts - 94 + 97 src/app/components/manage/management-list/management-list.component.html @@ -995,7 +995,7 @@ src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html - 23 + 34 src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html @@ -1046,7 +1046,7 @@ src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html - 24 + 35 src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html @@ -1210,12 +1210,76 @@ 12 + + Password is token + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 18 + + + + Check if the password above is a token used for authentication + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 18 + + Character Set src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 19 + + + + Loading... + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 30 + + + src/app/components/common/permissions-dialog/permissions-dialog.component.html 18 + + src/app/components/dashboard/dashboard.component.html + 26 + + + src/app/components/dashboard/widgets/widget-frame/widget-frame.component.html + 7 + + + src/app/components/document-list/document-list.component.html + 95 + + + src/app/components/manage/settings/settings.component.html + 230 + + + src/app/components/manage/settings/settings.component.html + 320 + + + src/app/components/manage/settings/settings.component.html + 406 + + + src/app/components/manage/tasks/tasks.component.html + 19 + + + src/app/components/manage/tasks/tasks.component.html + 27 + + + + Test + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 32 + No encryption @@ -1242,14 +1306,28 @@ Create new mail account src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts - 33 + 39 Edit mail account src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts - 37 + 43 + + + + Successfully connected to the mail server + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 88 + + + + Unable to connect to the mail server + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 89 @@ -1505,7 +1583,7 @@ src/app/components/manage/management-list/management-list.component.ts - 208 + 213 src/app/components/manage/settings/settings.component.html @@ -1794,25 +1872,39 @@ 18 + + Include + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 24 + + + + Exclude + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 26 + + Apply src/app/components/common/filterable-dropdown/filterable-dropdown.component.html - 32 + 40 Click again to exclude items. src/app/components/common/filterable-dropdown/filterable-dropdown.component.html - 38 + 46 Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 262 + 335 Filter drop down element to filter for documents with no correspondent/type/tag assigned @@ -1831,7 +1923,7 @@ src/app/components/common/input/select/select.component.html - 31 + 32 src/app/components/common/input/tags/tags.component.html @@ -1908,7 +2000,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html - 70 + 78 src/app/components/manage/management-list/management-list.component.html @@ -1970,10 +2062,25 @@ Add item src/app/components/common/input/select/select.component.html - 11 + 12 Used for both types, correspondents, storage paths + + Private + + src/app/components/common/input/select/select.component.ts + 36 + + + src/app/components/common/tag/tag.component.html + 7 + + + src/app/components/common/tag/tag.component.html + 8 + + Add tag @@ -1981,45 +2088,6 @@ 12 - - Loading... - - src/app/components/common/permissions-dialog/permissions-dialog.component.html - 18 - - - src/app/components/dashboard/dashboard.component.html - 26 - - - src/app/components/dashboard/widgets/widget-frame/widget-frame.component.html - 7 - - - src/app/components/document-list/document-list.component.html - 95 - - - src/app/components/manage/settings/settings.component.html - 230 - - - src/app/components/manage/settings/settings.component.html - 320 - - - src/app/components/manage/settings/settings.component.html - 406 - - - src/app/components/manage/tasks/tasks.component.html - 19 - - - src/app/components/manage/tasks/tasks.component.html - 27 - - Set Permissions @@ -2066,8 +2134,8 @@ 11 - - Inerhited from group + + Inherited from group src/app/components/common/permissions-select/permissions-select.component.ts 62 @@ -2128,7 +2196,7 @@ src/app/components/document-list/document-list.component.html - 159 + 172 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -2155,11 +2223,11 @@ src/app/components/document-list/document-list.component.html - 141 + 144 src/app/components/document-list/filter-editor/filter-editor.component.ts - 162 + 172 src/app/services/rest/document.service.ts @@ -2173,20 +2241,48 @@ 1 - - Documents in inbox: - - src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html - 3 - - - - Total documents: + + Go to inbox src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html 4 + + Documents in inbox + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 5 + + + + Go to documents + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 8 + + + + Total documents + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 9 + + + + Total characters + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 13 + + + + Other + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.ts + 55 + + Upload new documents @@ -2299,41 +2395,6 @@ 1 - - Enter comment - - src/app/components/document-comments/document-comments.component.html - 4 - - - - Please enter a comment. - - src/app/components/document-comments/document-comments.component.html - 5,7 - - - - Add comment - - src/app/components/document-comments/document-comments.component.html - 11 - - - - Error saving comment: - - src/app/components/document-comments/document-comments.component.ts - 71 - - - - Error deleting comment: - - src/app/components/document-comments/document-comments.component.ts - 86 - - Page @@ -2368,7 +2429,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html - 86 + 94 @@ -2451,7 +2512,7 @@ src/app/components/document-list/document-list.component.html - 135 + 137 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -2474,7 +2535,7 @@ src/app/components/document-list/document-list.component.html - 147 + 158 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -2497,7 +2558,7 @@ src/app/components/document-list/document-list.component.html - 153 + 165 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -2624,15 +2685,11 @@ 215 - - Comments + + Notes src/app/components/document-detail/document-detail.component.html - 175 - - - src/app/components/manage/settings/settings.component.html - 159 + 175,176 @@ -2653,71 +2710,71 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 305 + 341 Error retrieving suggestions src/app/components/document-detail/document-detail.component.ts - 325 + 361 Error saving document src/app/components/document-detail/document-detail.component.ts - 439 + 475 src/app/components/document-detail/document-detail.component.ts - 483 + 519 Confirm delete src/app/components/document-detail/document-detail.component.ts - 512 + 548 src/app/components/manage/management-list/management-list.component.ts - 204 + 209 Do you really want to delete document ""? src/app/components/document-detail/document-detail.component.ts - 513 + 549 The files for this document will be deleted permanently. This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 514 + 550 Delete document src/app/components/document-detail/document-detail.component.ts - 516 + 552 Error deleting document: src/app/components/document-detail/document-detail.component.ts - 532 + 568 Redo OCR confirm src/app/components/document-detail/document-detail.component.ts - 552 + 588 src/app/components/document-list/bulk-editor/bulk-editor.component.ts @@ -2728,14 +2785,14 @@ This operation will permanently redo OCR for this document. src/app/components/document-detail/document-detail.component.ts - 553 + 589 This operation cannot be undone. src/app/components/document-detail/document-detail.component.ts - 554 + 590 src/app/components/document-list/bulk-editor/bulk-editor.component.ts @@ -2766,7 +2823,7 @@ Proceed src/app/components/document-detail/document-detail.component.ts - 556 + 592 src/app/components/document-list/bulk-editor/bulk-editor.component.ts @@ -2793,7 +2850,7 @@ Redo OCR operation will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 564 + 600 @@ -2802,7 +2859,7 @@ )"/> src/app/components/document-detail/document-detail.component.ts - 575,577 + 611,613 @@ -3123,7 +3180,7 @@ src/app/components/document-list/document-list.component.html - 180 + 194 @@ -3134,69 +3191,83 @@ src/app/components/document-list/document-list.component.html - 185 + 199 + + + + View notes + + src/app/components/document-list/document-card-large/document-card-large.component.html + 70 + + + + Notes + + src/app/components/document-list/document-card-large/document-card-large.component.html + 74 Filter by document type src/app/components/document-list/document-card-large/document-card-large.component.html - 69 + 76 src/app/components/document-list/document-list.component.html - 189 + 212 Filter by storage path src/app/components/document-list/document-card-large/document-card-large.component.html - 76 + 83 src/app/components/document-list/document-list.component.html - 194 + 217 Created: src/app/components/document-list/document-card-large/document-card-large.component.html - 91,92 + 98,99 src/app/components/document-list/document-card-small/document-card-small.component.html - 48,49 + 56,57 Added: src/app/components/document-list/document-card-large/document-card-large.component.html - 92,93 + 99,100 src/app/components/document-list/document-card-small/document-card-small.component.html - 49,50 + 57,58 Modified: src/app/components/document-list/document-card-large/document-card-large.component.html - 93,94 + 100,101 src/app/components/document-list/document-card-small/document-card-small.component.html - 50,51 + 58,59 Score: src/app/components/document-list/document-card-large/document-card-large.component.html - 104 + 110 @@ -3210,21 +3281,21 @@ Toggle correspondent filter src/app/components/document-list/document-card-small/document-card-small.component.html - 24 + 32 Toggle document type filter src/app/components/document-list/document-card-small/document-card-small.component.html - 31 + 39 Toggle storage path filter src/app/components/document-list/document-card-small/document-card-small.component.html - 38 + 46 @@ -3308,26 +3379,97 @@ 112 + + Sort by ASN + + src/app/components/document-list/document-list.component.html + 126 + + ASN src/app/components/document-list/document-list.component.html - 130,129 + 131,130 src/app/components/document-list/filter-editor/filter-editor.component.ts - 167 + 177 src/app/services/rest/document.service.ts 18 + + Sort by correspondent + + src/app/components/document-list/document-list.component.html + 133 + + + + Sort by title + + src/app/components/document-list/document-list.component.html + 140 + + + + Sort by notes + + src/app/components/document-list/document-list.component.html + 147 + + + + Notes + + src/app/components/document-list/document-list.component.html + 151 + + + src/app/components/manage/settings/settings.component.html + 159 + + + src/app/services/rest/document.service.ts + 25 + + + + Sort by document type + + src/app/components/document-list/document-list.component.html + 154 + + + + Sort by storage path + + src/app/components/document-list/document-list.component.html + 161 + + + + Sort by created date + + src/app/components/document-list/document-list.component.html + 168 + + + + Sort by added date + + src/app/components/document-list/document-list.component.html + 175 + + Added src/app/components/document-list/document-list.component.html - 165 + 179 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3342,21 +3484,21 @@ Edit document src/app/components/document-list/document-list.component.html - 184 + 198 View "" saved successfully. src/app/components/document-list/document-list.component.ts - 202 + 205 View "" created successfully. src/app/components/document-list/document-list.component.ts - 243 + 246 @@ -3370,112 +3512,112 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 98,100 + 108,110 Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 102 + 112 Type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 107,109 + 117,119 Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 111 + 121 Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 115,117 + 125,127 Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 121 + 131 Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 125 + 135 ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 128 + 138 Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 165 + 175 Advanced search src/app/components/document-list/filter-editor/filter-editor.component.ts - 170 + 180 More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 176 + 186 equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 195 + 205 is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 199 + 209 is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 213 greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 217 less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 221 @@ -3521,6 +3663,52 @@ 13 + + Enter note + + src/app/components/document-notes/document-notes.component.html + 4 + + + + Please enter a note. + + src/app/components/document-notes/document-notes.component.html + 5,7 + + + + Add note + + src/app/components/document-notes/document-notes.component.html + 11 + + + + Delete note + + src/app/components/document-notes/document-notes.component.html + 21 + + + src/app/components/document-notes/document-notes.component.html + 25 + + + + Error saving note: + + src/app/components/document-notes/document-notes.component.ts + 65 + + + + Error deleting note: + + src/app/components/document-notes/document-notes.component.ts + 81 + + correspondent @@ -3724,36 +3912,39 @@ 147 - - Error occurred while saving : . + + Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 171 - - - src/app/components/manage/management-list/management-list.component.ts - 182,184 + 174,176 Successfully updated . src/app/components/manage/management-list/management-list.component.ts - 176 + 181 + + + + Error occurred while saving : . + + src/app/components/manage/management-list/management-list.component.ts + 187,189 Do you really want to delete the ? src/app/components/manage/management-list/management-list.component.ts - 191 + 196 Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 206 + 211 @@ -3762,7 +3953,7 @@ )"/> src/app/components/manage/management-list/management-list.component.ts - 219,221 + 224,226 @@ -3989,8 +4180,8 @@ 155 - - Enable comments + + Enable notes src/app/components/manage/settings/settings.component.html 163 @@ -4641,11 +4832,11 @@ src/app/services/open-documents.service.ts - 103 + 104 src/app/services/open-documents.service.ts - 130 + 131 @@ -4656,7 +4847,7 @@ src/app/services/open-documents.service.ts - 131 + 132 @@ -4828,35 +5019,35 @@ You have unsaved changes to the document src/app/services/open-documents.service.ts - 105 + 106 Are you sure you want to close this document? src/app/services/open-documents.service.ts - 109 + 110 Close document src/app/services/open-documents.service.ts - 111 + 112 Are you sure you want to close all documents? src/app/services/open-documents.service.ts - 132 + 133 Close documents src/app/services/open-documents.service.ts - 134 + 135 @@ -4870,7 +5061,7 @@ Search score src/app/services/rest/document.service.ts - 31 + 32 Score is a value returned by the full text search engine and specifies how well a result matches the given query diff --git a/src-ui/package-lock.json b/src-ui/package-lock.json index 38c6d0664..6df75ac5c 100644 --- a/src-ui/package-lock.json +++ b/src-ui/package-lock.json @@ -22,6 +22,7 @@ "@popperjs/core": "^2.11.6", "bootstrap": "^5.2.3", "file-saver": "^2.0.5", + "mime-names": "^1.0.0", "ng2-pdf-viewer": "^9.1.2", "ngx-color": "^8.0.3", "ngx-cookie-service": "^15.0.0", @@ -13766,6 +13767,11 @@ "node": ">= 0.6" } }, + "node_modules/mime-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mime-names/-/mime-names-1.0.0.tgz", + "integrity": "sha512-vLNEfYU63fz34panv/L3Lh3eW3+v0BlOB+bSGFdntv/gBNnokCbSsaNuHR9vH/NS5oWbL0HqMQf/3we4fRJyIQ==" + }, "node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", diff --git a/src-ui/package.json b/src-ui/package.json index 8ec1b80ab..934011a5b 100644 --- a/src-ui/package.json +++ b/src-ui/package.json @@ -27,6 +27,7 @@ "@popperjs/core": "^2.11.6", "bootstrap": "^5.2.3", "file-saver": "^2.0.5", + "mime-names": "^1.0.0", "ng2-pdf-viewer": "^9.1.2", "ngx-color": "^8.0.3", "ngx-cookie-service": "^15.0.0", diff --git a/src-ui/src/app/app-routing.module.ts b/src-ui/src/app/app-routing.module.ts index 6f26a81fd..4d12ee4f3 100644 --- a/src-ui/src/app/app-routing.module.ts +++ b/src-ui/src/app/app-routing.module.ts @@ -65,6 +65,17 @@ const routes: Routes = [ }, }, }, + { + path: 'documents/:id/:section', + component: DocumentDetailComponent, + canActivate: [PermissionsGuard], + data: { + requiredPermission: { + action: PermissionAction.View, + type: PermissionType.Document, + }, + }, + }, { path: 'asn/:id', component: DocumentAsnComponent, @@ -143,17 +154,6 @@ const routes: Routes = [ }, }, }, - { - path: 'tasks', - component: TasksComponent, - canActivate: [PermissionsGuard], - data: { - requiredPermission: { - action: PermissionAction.View, - type: PermissionType.PaperlessTask, - }, - }, - }, { path: 'settings/:section', component: SettingsComponent, @@ -171,6 +171,17 @@ const routes: Routes = [ component: SettingsComponent, canDeactivate: [DirtyFormGuard], }, + { + path: 'tasks', + component: TasksComponent, + canActivate: [PermissionsGuard], + data: { + requiredPermission: { + action: PermissionAction.View, + type: PermissionType.PaperlessTask, + }, + }, + }, { path: 'tasks', component: TasksComponent }, ], }, diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index beb3b0935..446f63254 100644 --- a/src-ui/src/app/app.module.ts +++ b/src-ui/src/app/app.module.ts @@ -70,7 +70,7 @@ import { ApiVersionInterceptor } from './interceptors/api-version.interceptor' import { ColorSliderModule } from 'ngx-color/slider' import { ColorComponent } from './components/common/input/color/color.component' import { DocumentAsnComponent } from './components/document-asn/document-asn.component' -import { DocumentCommentsComponent } from './components/document-comments/document-comments.component' +import { DocumentNotesComponent } from './components/document-notes/document-notes.component' import { PermissionsGuard } from './guards/permissions.guard' import { DirtyDocGuard } from './guards/dirty-doc.guard' import { DirtySavedViewGuard } from './guards/dirty-saved-view.guard' @@ -196,7 +196,7 @@ function initializeApp(settings: SettingsService) { DateComponent, ColorComponent, DocumentAsnComponent, - DocumentCommentsComponent, + DocumentNotesComponent, TasksComponent, UserEditDialogComponent, GroupEditDialogComponent, diff --git a/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts b/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts index 42221dfdd..a2612ccfd 100644 --- a/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts +++ b/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts @@ -20,7 +20,7 @@ export abstract class EditDialogComponent< > implements OnInit { constructor( - private service: AbstractPaperlessService, + protected service: AbstractPaperlessService, private activeModal: NgbActiveModal, private userService: UserService ) {} diff --git a/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html b/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html index 8164fca9a..dbdf57397 100644 --- a/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html +++ b/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html @@ -15,11 +15,22 @@
+
diff --git a/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.scss b/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.scss index e69de29bb..3e8a30fa5 100644 --- a/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.scss +++ b/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.scss @@ -0,0 +1,4 @@ +::ng-deep .alert-dismissible .btn-close { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; +} diff --git a/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts b/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts index 1c42ffeb0..9f3790623 100644 --- a/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts +++ b/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts @@ -1,6 +1,6 @@ -import { Component } from '@angular/core' +import { Component, ViewChild } from '@angular/core' import { FormControl, FormGroup } from '@angular/forms' -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' +import { NgbActiveModal, NgbAlert } from '@ng-bootstrap/ng-bootstrap' import { EditDialogComponent } from 'src/app/components/common/edit-dialog/edit-dialog.component' import { IMAPSecurity, @@ -21,6 +21,12 @@ const IMAP_SECURITY_OPTIONS = [ styleUrls: ['./mail-account-edit-dialog.component.scss'], }) export class MailAccountEditDialogComponent extends EditDialogComponent { + testActive: boolean = false + testResult: string + alertTimeout + + @ViewChild('testResultAlert', { static: false }) testResultAlert: NgbAlert + constructor( service: MailAccountService, activeModal: NgbActiveModal, @@ -45,6 +51,7 @@ export class MailAccountEditDialogComponent extends EditDialogComponent { + this.testActive = false + this.testResult = result.success ? 'success' : 'danger' + this.alertTimeout = setTimeout(() => this.testResultAlert.close(), 5000) + }, + error: (e) => { + this.testActive = false + this.testResult = 'danger' + this.alertTimeout = setTimeout(() => this.testResultAlert.close(), 5000) + }, + }) + } + + get testResultMessage() { + return this.testResult === 'success' + ? $localize`Successfully connected to the mail server` + : $localize`Unable to connect to the mail server` + } } diff --git a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.html b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.html index 48fe74ad7..5bf75d62d 100644 --- a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.html +++ b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -1,21 +1,29 @@
- -