Merge remote-tracking branch 'paperless/dev' into feature-consume-eml

This commit is contained in:
phail 2022-11-13 22:43:55 +01:00
commit 681eecc46e
43 changed files with 14372 additions and 8013 deletions

View File

@ -13,6 +13,7 @@ body:
- [The troubleshooting documentation](https://paperless-ngx.readthedocs.io/en/latest/troubleshooting.html).
- [The installation instructions](https://paperless-ngx.readthedocs.io/en/latest/setup.html#installation).
- [Existing issues and discussions](https://github.com/paperless-ngx/paperless-ngx/search?q=&type=issues).
- Disable any customer container initialization scripts, if using any
If you encounter issues while installing or configuring Paperless-ngx, please post in the ["Support" section of the discussions](https://github.com/paperless-ngx/paperless-ngx/discussions/new?category=support).
- type: textarea

View File

@ -10,11 +10,11 @@ name = "piwheels"
[packages]
dateparser = "~=1.1"
django = "~=4.0"
django = "~=4.1"
django-cors-headers = "*"
django-extensions = "*"
django-filter = "~=22.1"
djangorestframework = "~=3.13"
djangorestframework = "~=3.14"
filelock = "*"
gunicorn = "*"
imap-tools = "*"
@ -32,8 +32,7 @@ redis = {extras = ["hiredis"], version = "*"}
scikit-learn = "~=1.1"
# Pin this until piwheels is building 1.9 (see https://www.piwheels.org/project/scipy/)
scipy = "==1.8.1"
# https://github.com/paperless-ngx/paperless-ngx/issues/1364
numpy = "==1.22.3"
numpy = "*"
whitenoise = "~=6.2"
watchdog = "~=2.1"
whoosh="~=2.7"

514
Pipfile.lock generated
View File

@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
"sha256": "ebc09a2366e86169c02be7c5fa3dddcf2af3cc7c063daeeb68bfe7e6eac8aa7a"
"sha256": "9fefc737155e789ced61b41750b4273c7780ac7801c50cf36dc5925be3b85783"
},
"pipfile-spec": 6,
"requires": {},
@ -109,14 +109,6 @@
],
"version": "==3.6.4.0"
},
"bleach": {
"hashes": [
"sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a",
"sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c"
],
"index": "pypi",
"version": "==5.0.1"
},
"celery": {
"extras": [
"redis"
@ -284,35 +276,36 @@
},
"cryptography": {
"hashes": [
"sha256:068147f32fa662c81aebab95c74679b401b12b57494872886eb5c1139250ec5d",
"sha256:06fc3cc7b6f6cca87bd56ec80a580c88f1da5306f505876a71c8cfa7050257dd",
"sha256:25c1d1f19729fb09d42e06b4bf9895212292cb27bb50229f5aa64d039ab29146",
"sha256:402852a0aea73833d982cabb6d0c3bb582c15483d29fb7085ef2c42bfa7e38d7",
"sha256:4e269dcd9b102c5a3d72be3c45d8ce20377b8076a43cbed6f660a1afe365e436",
"sha256:5419a127426084933076132d317911e3c6eb77568a1ce23c3ac1e12d111e61e0",
"sha256:554bec92ee7d1e9d10ded2f7e92a5d70c1f74ba9524947c0ba0c850c7b011828",
"sha256:5e89468fbd2fcd733b5899333bc54d0d06c80e04cd23d8c6f3e0542358c6060b",
"sha256:65535bc550b70bd6271984d9863a37741352b4aad6fb1b3344a54e6950249b55",
"sha256:6ab9516b85bebe7aa83f309bacc5f44a61eeb90d0b4ec125d2d003ce41932d36",
"sha256:6addc3b6d593cd980989261dc1cce38263c76954d758c3c94de51f1e010c9a50",
"sha256:728f2694fa743a996d7784a6194da430f197d5c58e2f4e278612b359f455e4a2",
"sha256:785e4056b5a8b28f05a533fab69febf5004458e20dad7e2e13a3120d8ecec75a",
"sha256:78cf5eefac2b52c10398a42765bfa981ce2372cbc0457e6bf9658f41ec3c41d8",
"sha256:7f836217000342d448e1c9a342e9163149e45d5b5eca76a30e84503a5a96cab0",
"sha256:8d41a46251bf0634e21fac50ffd643216ccecfaf3701a063257fe0b2be1b6548",
"sha256:984fe150f350a3c91e84de405fe49e688aa6092b3525f407a18b9646f6612320",
"sha256:9b24bcff7853ed18a63cfb0c2b008936a9554af24af2fb146e16d8e1aed75748",
"sha256:b1b35d9d3a65542ed2e9d90115dfd16bbc027b3f07ee3304fc83580f26e43249",
"sha256:b1b52c9e5f8aa2b802d48bd693190341fae201ea51c7a167d69fc48b60e8a959",
"sha256:bbf203f1a814007ce24bd4d51362991d5cb90ba0c177a9c08825f2cc304d871f",
"sha256:be243c7e2bfcf6cc4cb350c0d5cdf15ca6383bbcb2a8ef51d3c9411a9d4386f0",
"sha256:bfbe6ee19615b07a98b1d2287d6a6073f734735b49ee45b11324d85efc4d5cbd",
"sha256:c46837ea467ed1efea562bbeb543994c2d1f6e800785bd5a2c98bc096f5cb220",
"sha256:dfb4f4dd568de1b6af9f4cda334adf7d72cf5bc052516e1b2608b683375dd95c",
"sha256:ed7b00096790213e09eb11c97cc6e2b757f15f3d2f85833cd2d3ec3fe37c1722"
"sha256:0297ffc478bdd237f5ca3a7dc96fc0d315670bfa099c04dc3a4a2172008a405a",
"sha256:10d1f29d6292fc95acb597bacefd5b9e812099d75a6469004fd38ba5471a977f",
"sha256:16fa61e7481f4b77ef53991075de29fc5bacb582a1244046d2e8b4bb72ef66d0",
"sha256:194044c6b89a2f9f169df475cc167f6157eb9151cc69af8a2a163481d45cc407",
"sha256:1db3d807a14931fa317f96435695d9ec386be7b84b618cc61cfa5d08b0ae33d7",
"sha256:3261725c0ef84e7592597606f6583385fed2a5ec3909f43bc475ade9729a41d6",
"sha256:3b72c360427889b40f36dc214630e688c2fe03e16c162ef0aa41da7ab1455153",
"sha256:3e3a2599e640927089f932295a9a247fc40a5bdf69b0484532f530471a382750",
"sha256:3fc26e22840b77326a764ceb5f02ca2d342305fba08f002a8c1f139540cdfaad",
"sha256:5067ee7f2bce36b11d0e334abcd1ccf8c541fc0bbdaf57cdd511fdee53e879b6",
"sha256:52e7bee800ec869b4031093875279f1ff2ed12c1e2f74923e8f49c916afd1d3b",
"sha256:64760ba5331e3f1794d0bcaabc0d0c39e8c60bf67d09c93dc0e54189dfd7cfe5",
"sha256:765fa194a0f3372d83005ab83ab35d7c5526c4e22951e46059b8ac678b44fa5a",
"sha256:79473cf8a5cbc471979bd9378c9f425384980fcf2ab6534b18ed7d0d9843987d",
"sha256:896dd3a66959d3a5ddcfc140a53391f69ff1e8f25d93f0e2e7830c6de90ceb9d",
"sha256:89ed49784ba88c221756ff4d4755dbc03b3c8d2c5103f6d6b4f83a0fb1e85294",
"sha256:ac7e48f7e7261207d750fa7e55eac2d45f720027d5703cd9007e9b37bbb59ac0",
"sha256:ad7353f6ddf285aeadfaf79e5a6829110106ff8189391704c1d8801aa0bae45a",
"sha256:b0163a849b6f315bf52815e238bc2b2346604413fa7c1601eea84bcddb5fb9ac",
"sha256:b6c9b706316d7b5a137c35e14f4103e2115b088c412140fdbd5f87c73284df61",
"sha256:c2e5856248a416767322c8668ef1845ad46ee62629266f84a8f007a317141013",
"sha256:ca9f6784ea96b55ff41708b92c3f6aeaebde4c560308e5fbbd3173fbc466e94e",
"sha256:d1a5bd52d684e49a36582193e0b89ff267704cd4025abefb9e26803adeb3e5fb",
"sha256:d3971e2749a723e9084dd507584e2a2761f78ad2c638aa31e80bc7a15c9db4f9",
"sha256:d4ef6cc305394ed669d4d9eebf10d3a101059bdcf2669c366ec1d14e4fb227bd",
"sha256:d9e69ae01f99abe6ad646947bba8941e896cb3aa805be2597a0400e0764b5818"
],
"index": "pypi",
"markers": "python_version >= '3.6'",
"version": "==38.0.3"
"version": "==38.0.1"
},
"daphne": {
"hashes": [
@ -469,7 +462,6 @@
"sha256:f52010e0a44e3d8530437e7da38d11fb822acfb0d5b12e9cd5ba655509937ca0",
"sha256:f8196f739092a78e4f6b1b2172679ed3343c39c61a3e9d722ce6fcf1dac2824a"
],
"markers": "python_version >= '3.6'",
"version": "==2.0.0"
},
"httptools": {
@ -551,8 +543,6 @@
},
"imap-tools": {
"hashes": [
"sha256:4fe4c07c4cc4aab83492d126e221c39118ff530268149b721296fc0fb87de3c2",
"sha256:56942853be2125d509365b84eacf0f3a87ae58ea8f82bca7a6943634a60cfb60",
"sha256:6f5572b2e747a81a607438e0ef61ff28f323f6697820493c8ca4467465baeb76",
"sha256:9e2658f267311051e04d437aca06d5b4c7c091fc4f411f7d13ca610e0cead5cb"
],
@ -775,57 +765,37 @@
},
"numpy": {
"hashes": [
"sha256:07a8c89a04997625236c5ecb7afe35a02af3896c8aa01890a849913a2309c676",
"sha256:08d9b008d0156c70dc392bb3ab3abb6e7a711383c3247b410b39962263576cd4",
"sha256:17e5226674f6ea79e14e3b91bfbc153fdf3ac13f5cc54ee7bc8fdbe820a32da0",
"sha256:201b4d0552831f7250a08d3b38de0d989d6f6e4658b709a02a73c524ccc6ffce",
"sha256:2bd879d3ca4b6f39b7770829f73278b7c5e248c91d538aab1e506c628353e47f",
"sha256:2c10a93606e0b4b95c9b04b77dc349b398fdfbda382d2a39ba5a822f669a0123",
"sha256:3ca688e1b9b95d80250bca34b11a05e389b1420d00e87a0d12dc45f131f704a1",
"sha256:48a3aecd3b997bf452a2dedb11f4e79bc5bfd21a1d4cc760e703c31d57c84b3e",
"sha256:4f41f5bf20d9a521f8cab3a34557cd77b6f205ab2116651f12959714494268b0",
"sha256:5593f67e66dea4e237f5af998d31a43e447786b2154ba1ad833676c788f37cde",
"sha256:568dfd16224abddafb1cbcce2ff14f522abe037268514dd7e42c6776a1c3f8e5",
"sha256:5bfb1bb598e8229c2d5d48db1860bcf4311337864ea3efdbe1171fb0c5da515d",
"sha256:5e28cd64624dc2354a349152599e55308eb6ca95a13ce6a7d5679ebff2962913",
"sha256:633679a472934b1c20a12ed0c9a6c9eb167fbb4cb89031939bfd03dd9dbc62b8",
"sha256:639b54cdf6aa4f82fe37ebf70401bbb74b8508fddcf4797f9fe59615b8c5813a",
"sha256:806970e69106556d1dd200e26647e9bee5e2b3f1814f9da104a943e8d548ca38",
"sha256:806cc25d5c43e240db709875e947076b2826f47c2c340a5a2f36da5bb10c58d6",
"sha256:8247f01c4721479e482cc2f9f7d973f3f47810cbc8c65e38fd1bbd3141cc9842",
"sha256:8251ed96f38b47b4295b1ae51631de7ffa8260b5b087808ef09a39a9d66c97ab",
"sha256:8ebf7e194b89bc66b78475bd3624d92980fca4e5bb86dda08d677d786fefc414",
"sha256:8ecb818231afe5f0f568c81f12ce50f2b828ff2b27487520d85eb44c71313b9e",
"sha256:8f9d84a24889ebb4c641a9b99e54adb8cab50972f0166a3abc14c3b93163f074",
"sha256:909c56c4d4341ec8315291a105169d8aae732cfb4c250fbc375a1efb7a844f8f",
"sha256:92bfa69cfbdf7dfc3040978ad09a48091143cffb778ec3b03fa170c494118d75",
"sha256:97098b95aa4e418529099c26558eeb8486e66bd1e53a6b606d684d0c3616b168",
"sha256:9b83d48e464f393d46e8dd8171687394d39bc5abfe2978896b77dc2604e8635d",
"sha256:a3bae1a2ed00e90b3ba5f7bd0a7c7999b55d609e0c54ceb2b076a25e345fa9f4",
"sha256:ac987b35df8c2a2eab495ee206658117e9ce867acf3ccb376a19e83070e69418",
"sha256:b78d00e48261fbbd04aa0d7427cf78d18401ee0abd89c7559bbf422e5b1c7d01",
"sha256:b8b97a8a87cadcd3f94659b4ef6ec056261fa1e1c3317f4193ac231d4df70215",
"sha256:bd5b7ccae24e3d8501ee5563e82febc1771e73bd268eef82a1e8d2b4d556ae66",
"sha256:bdc02c0235b261925102b1bd586579b7158e9d0d07ecb61148a1799214a4afd5",
"sha256:be6b350dfbc7f708d9d853663772a9310783ea58f6035eec649fb9c4371b5389",
"sha256:c34ea7e9d13a70bf2ab64a2532fe149a9aced424cd05a2c4ba662fd989e3e45f",
"sha256:c403c81bb8ffb1c993d0165a11493fd4bf1353d258f6997b3ee288b0a48fce77",
"sha256:cf8c6aed12a935abf2e290860af8e77b26a042eb7f2582ff83dc7ed5f963340c",
"sha256:d98addfd3c8728ee8b2c49126f3c44c703e2b005d4a95998e2167af176a9e722",
"sha256:dbc7601a3b7472d559dc7b933b18b4b66f9aa7452c120e87dfb33d02008c8a18",
"sha256:dc76bca1ca98f4b122114435f83f1fcf3c0fe48e4e6f660e07996abf2f53903c",
"sha256:dec198619b7dbd6db58603cd256e092bcadef22a796f778bf87f8592b468441d",
"sha256:df28dda02c9328e122661f399f7655cdcbcf22ea42daa3650a26bce08a187450",
"sha256:e603ca1fb47b913942f3e660a15e55a9ebca906857edfea476ae5f0fe9b457d5",
"sha256:e7927a589df200c5e23c57970bafbd0cd322459aa7b1ff73b7c2e84d6e3eae62",
"sha256:ecfdd68d334a6b97472ed032b5b37a30d8217c097acfff15e8452c710e775524",
"sha256:f8c1f39caad2c896bc0018f699882b345b2a63708008be29b1f355ebf6f933fe",
"sha256:f950f8845b480cffe522913d35567e29dd381b0dc7e4ce6a4a9f9156417d2430",
"sha256:fade0d4f4d292b6f39951b6836d7a3c7ef5b2347f3c420cd9820a1d90d794802",
"sha256:fdf3c08bce27132395d3c3ba1503cac12e17282358cb4bddc25cc46b0aca07aa"
"sha256:0fe563fc8ed9dc4474cbf70742673fc4391d70f4363f917599a7fa99f042d5a8",
"sha256:12ac457b63ec8ded85d85c1e17d85efd3c2b0967ca39560b307a35a6703a4735",
"sha256:2341f4ab6dba0834b685cce16dad5f9b6606ea8a00e6da154f5dbded70fdc4dd",
"sha256:296d17aed51161dbad3c67ed6d164e51fcd18dbcd5dd4f9d0a9c6055dce30810",
"sha256:488a66cb667359534bc70028d653ba1cf307bae88eab5929cd707c761ff037db",
"sha256:4d52914c88b4930dafb6c48ba5115a96cbab40f45740239d9f4159c4ba779962",
"sha256:5e13030f8793e9ee42f9c7d5777465a560eb78fa7e11b1c053427f2ccab90c79",
"sha256:61be02e3bf810b60ab74e81d6d0d36246dbfb644a462458bb53b595791251911",
"sha256:7607b598217745cc40f751da38ffd03512d33ec06f3523fb0b5f82e09f6f676d",
"sha256:7a70a7d3ce4c0e9284e92285cba91a4a3f5214d87ee0e95928f3614a256a1488",
"sha256:7ab46e4e7ec63c8a5e6dbf5c1b9e1c92ba23a7ebecc86c336cb7bf3bd2fb10e5",
"sha256:8981d9b5619569899666170c7c9748920f4a5005bf79c72c07d08c8a035757b0",
"sha256:8c053d7557a8f022ec823196d242464b6955a7e7e5015b719e76003f63f82d0f",
"sha256:926db372bc4ac1edf81cfb6c59e2a881606b409ddc0d0920b988174b2e2a767f",
"sha256:95d79ada05005f6f4f337d3bb9de8a7774f259341c70bc88047a1f7b96a4bcb2",
"sha256:95de7dc7dc47a312f6feddd3da2500826defdccbc41608d0031276a24181a2c0",
"sha256:a0882323e0ca4245eb0a3d0a74f88ce581cc33aedcfa396e415e5bba7bf05f68",
"sha256:a8365b942f9c1a7d0f0dc974747d99dd0a0cdfc5949a33119caf05cb314682d3",
"sha256:a8aae2fb3180940011b4862b2dd3756616841c53db9734b27bb93813cd79fce6",
"sha256:c237129f0e732885c9a6076a537e974160482eab8f10db6292e92154d4c67d71",
"sha256:c67b833dbccefe97cdd3f52798d430b9d3430396af7cdb2a0c32954c3ef73894",
"sha256:ce03305dd694c4873b9429274fd41fc7eb4e0e4dea07e0af97a933b079a5814f",
"sha256:d331afac87c92373826af83d2b2b435f57b17a5c74e6268b79355b970626e329",
"sha256:dada341ebb79619fe00a291185bba370c9803b1e1d7051610e01ed809ef3a4ba",
"sha256:ed2cc92af0efad20198638c69bb0fc2870a58dabfba6eb722c933b48556c686c",
"sha256:f260da502d7441a45695199b4e7fd8ca87db659ba1c78f2bbf31f934fe76ae0e",
"sha256:f2f390aa4da44454db40a1f0201401f9036e8d578a25f01a6e237cea238337ef",
"sha256:f76025acc8e2114bb664294a07ede0727aa75d63a06d2fae96bf29a81747e4a7"
],
"index": "pypi",
"version": "==1.22.3"
"version": "==1.23.4"
},
"ocrmypdf": {
"hashes": [
@ -861,51 +831,51 @@
},
"pdfminer.six": {
"hashes": [
"sha256:5a64c924410ac48501d6060b21638bf401db69f5b1bd57207df7fbc070ac8ae2",
"sha256:7e19b857ec76bcbd35665909ad8965a481ad48d9bdff6c45f8522ee66f8a7aab"
"sha256:1eaddd712d5b2732f8ac8486824533514f8ba12a0787b3d5fe1e686cd826532d",
"sha256:8448ab7b939d18b64820478ecac5394f482d7a79f5f7eaa7703c6c959c175e1d"
],
"index": "pypi",
"version": "==20220524"
"version": "==20221105"
},
"pikepdf": {
"hashes": [
"sha256:0fb4e028abc84fba49513c1759b78e2948eebabb23ec33e68f5beec9edc3b1e4",
"sha256:169fd0a1d1d15186f0e2ac4d31eba8b7b45a1a0e7c88be5e10358d6edd3387b3",
"sha256:178be221e8bee2282a1a36e32007365a959df7efd58cfd1f7139888aceb0afb8",
"sha256:18fc6bf7c189138c77f976fbef3f8679dd7a26254e869429879a0943dcfd0775",
"sha256:19e25bfa0b7cbb87620dcfaf5e22d235eba675aa0f2bb74acb08ff039cc8a771",
"sha256:215e6850c04ccf89aee37288aa34dfea151c5b8bd1e6fc75cd429e5ace2c8bec",
"sha256:28309830b84e1392949afe5dc8e02d635531b63ab41f0ed6ec05ca8a8cc384ee",
"sha256:28b808dd9cb588c2792b8c3f18e44549e8cf3df637d0a126fc16d7cb9651b704",
"sha256:4b14b7e47cb306719a3ade4a2caedf576912a78e569571a9bdae134679e1ad07",
"sha256:50dbeca36dc3ba04df3754845faad05c4c6fe35e8515a7ebb9ccdcf6d14672d3",
"sha256:55f35903308efc6148e11e7950950da6a188ef73f0c4912f60deb5665c13c3de",
"sha256:5b47df6d084a9f35d66f1166afc01588c51c55afcae1e3792f4a1b900fce95ae",
"sha256:5c656f518fd1eaf9613d39ad1eb437808494038a4c88fae44f40e1a5f57b32ed",
"sha256:6bb2041045aa9f40a47bae436cc24355918e88693db075d7526d194d56c53797",
"sha256:7704956b8a36aeb67b11191b7fc17c6918c9aa73a5d2ae5b102fc7f29eee043a",
"sha256:7a4240a128c26e44cade7a50c12380f38648db254752876fc8c2fd8921532e57",
"sha256:7faf78b668e86cafded3f269bfd602e7af33c1f22c2cad440f3c4a92b76a7254",
"sha256:905e5166954161b760c545bbae2bc4438292f1e487cf7c52991fdaef7d75aac6",
"sha256:93c258b15a0bbd9f061907bda558b289fbe66821fb2ddce19c8f456ed7c61df3",
"sha256:9f0685745f08c1d7d6769e367d14b74817a7fced75c1afca17034f4d6c04c00b",
"sha256:a1fd1968de6c2439008673edbc3e47c6a63858bea5d15baddd0c7e77d35eae0f",
"sha256:ab52590158b073643a8482105e4927356eef63345ae4e9ba59ba8f951193dd54",
"sha256:aeb9a442d384fa37f5e9c6364176b6c661fac9cfd427f7b537ead1a6a660aef1",
"sha256:b8b948febcca7b376c2474c83b80b98ea3bdc76d5dd74872c9fa6fb3b66e315c",
"sha256:c3acd73ca490cd81ca467eb4d24aa6ba63a7e1b6514e86fe1072388607d7f1ba",
"sha256:ddca7062db6fbcf5b7a7d07a031030a219d9eb4a90225c25c53318e2b2dd354d",
"sha256:dfa17513abeb5e9a4de4af5fb098fd0bac4708e961424be9750b16cd00af42c5",
"sha256:e4d7adb67d3c14f05ce3452d8e212c60ded743bb2977f28a28759dfc499ed3a5",
"sha256:e6e548a3a3ec18e790101f984da04f7c968525e1077a072ec8dc4769bbd1fc45",
"sha256:f4e0e86b104354eb1b5195bca51a13fb0c390e218f18544cd39d3ba2d07fc26a",
"sha256:f75ce310d36fe83aa075c78002c1cdcd1e08be594730d4a6f33b0c86670c637e",
"sha256:f80cc66c20b897fc4a4f1f15b8b34a2d20a9a83b421910f0bfacb405af95912a",
"sha256:f85231bcbe8a63feb29e42b2437b8e59d92ad9f9bfea294c345bab23e097a401",
"sha256:ff2adf043a85bca67ffcd3d235e48ce482f00875e3c54931dd9e98b49615868f"
"sha256:053911bc19fbc987ff32e8e2836693480bef4c400785f700e8645729aecc7dae",
"sha256:0b10914b14667b7de19c9b27437cd798afee82690e16763965c7f7a2ab4da90a",
"sha256:0bed47afb90c78e2262e5b2e0d4722245b50c28bdaa317bdd39c4ef125d59a2c",
"sha256:0e51db2d246d277e3b11f3341b42c737deea60a49c3d8666388bff466fe1c4d0",
"sha256:3b9037377d9ca2b91c47b50ef9edb2fd295b0bf963ba14ee732da52006600677",
"sha256:475ef831d47e0aacd1bbfc366090c645bdc881bfdcf682f2a789860f645a1bf1",
"sha256:5233f8f1dee1bed95379c1b67af926725fe6d8ba210c587406f51a6bae651132",
"sha256:52fda5f8b730489a10cc492249465d52b4f190f7eb9b6c0cf80e49d5be3d8652",
"sha256:6129a5277f850ae6cdfd2cfff7e2c4a0b24618aee942a99763c84791dfbbd067",
"sha256:73281beedc1c234d50fe11f8beb55cc5ea2d43625ad7aa88dcdea54ef019939c",
"sha256:7e7ef427346a8324c32e9e2dbd6d10b0c9acaeb30d646223418206ff33594d7e",
"sha256:8338786c9912703dee8a501c1dd3b5e1065c22628cc4f781a548e378ae0f9f0c",
"sha256:8ba102fe535677c54c2e6cca65c9e3742ff7abb03934590a06c77a17c9e86827",
"sha256:91faf319bae1f7a9a0665b1622680296e6ec351497e8b3da1f7b83c8c2fbbc9c",
"sha256:93450025948474b656a6bef0f64c91f5d2f18b4234d7470c4bb8b77e8eb36dc4",
"sha256:972c6a21c9e49fc53a36b9550616b9240fc3291e07990db0e93d2ea4bfd7f5cd",
"sha256:9b403d7b24a09a090ebeb7760890c5386c515b86a6cc6d4f9c7b36eefe94b52f",
"sha256:9b94b0bb3adf6be2407aaca8693bb1589fa5021c019ac05b1a87db299feefebe",
"sha256:a0645e34902fe51205048e982f30e78e2b1fe767203988dd4b1395f6326cc4d9",
"sha256:a7e6f4ac418092a48dbd1809905edd5c6640f271c49981558a1c3da3753c0524",
"sha256:ae5aa1fd18373fd96b8ea6610d78d1c12a43e105291e45ceaaa54637e76a6929",
"sha256:b6066f3bcdef27e255be8f3b6e299ec4c04b50688872f6cabe8e27908574563c",
"sha256:ba4db2e76fe4292c3ea47e39acb72f417e7b31f4fc594c91426b88e6e01d4940",
"sha256:bb7d56298d74e307f0ace8d8e02eb9cd2a1421993542566eb605367aa4886d58",
"sha256:bf5b505b4ac50332eb550ae61cf64854f774f5ddb10339f5dd8b20cfa44fa8e9",
"sha256:c892bfd06b69ab26732daa53c2d85f864bff0a9422b0c03004cfb58797406b2a",
"sha256:c9c46bcae66c8ea181aa3fd961e98b46bc656e40cc33df9794c63a0c84d719b2",
"sha256:cff08868ee479ffbaa64fb425260ddce14bffbc21bdd2a3b3de941589abab741",
"sha256:dba7ad05626a0768708c1dfa11b28b8461c6750994159a06f2ac58e0045a9685",
"sha256:e089f720703d5e8c419634b08fad466d540d081005e41b6382afd7728d327029",
"sha256:f02c4f10a645f43bcde681b31d90f6313d8edce3480729cc6d78c5411f3e9772",
"sha256:f0ff1e4bfbafbeea902a0bfc23e8017443a3be485d02c92cd7dab9c16d50543c",
"sha256:f4539bc4a586ec8dce7ceba474be726ca64135c48ad61c47dfba98139a7aebfb",
"sha256:fa397d5ee36f357f1ba60103004c32befc9aa7e3143ef3a9fbf6e3686b2fed99"
],
"index": "pypi",
"version": "==6.2.1"
"version": "==6.2.2"
},
"pillow": {
"hashes": [
@ -922,6 +892,7 @@
"sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3",
"sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1",
"sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c",
"sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa",
"sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32",
"sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502",
"sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4",
@ -966,6 +937,7 @@
"sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e",
"sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f",
"sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b",
"sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74",
"sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb",
"sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0"
],
@ -1006,11 +978,13 @@
},
"psycopg2": {
"hashes": [
"sha256:093e3894d2d3c592ab0945d9eba9d139c139664dcf83a1c440b8a7aa9bb21955",
"sha256:190d51e8c1b25a47484e52a79638a8182451d6f6dff99f26ad9bd81e5359a0fa",
"sha256:1a5c7d7d577e0eabfcf15eb87d1e19314c8c4f0e722a301f98e0e3a65e238b4e",
"sha256:1e5a38aa85bd660c53947bd28aeaafb6a97d70423606f1ccb044a03a1203fe4a",
"sha256:322fd5fca0b1113677089d4ebd5222c964b1760e361f151cbb2706c4912112c5",
"sha256:4cb9936316d88bfab614666eb9e32995e794ed0f8f6b3b718666c22819c1d7ee",
"sha256:920bf418000dd17669d2904472efeab2b20546efd0548139618f8fa305d1d7ad",
"sha256:922cc5f0b98a5f2b1ff481f5551b95cd04580fd6f0c72d9b22e6c0145a4840e0",
"sha256:a5246d2e683a972e2187a8714b5c2cf8156c064629f9a9b1a873c1730d9e245a",
"sha256:b9ac1b0d8ecc49e05e4e182694f418d27f3aedcfca854ebd6c05bb1cffa10d6d",
@ -1182,98 +1156,98 @@
},
"rapidfuzz": {
"hashes": [
"sha256:068dbbe59752f9eb8ec946df48af60669cd61bb722dfb89f48f142f9fbdc275d",
"sha256:0a9524a22db1d5cb386c0cfea8b533fb0c7f8bd196682579e559febdf34a8b8a",
"sha256:0e8db03317d4d61fc35a29a6fbcaab286d0f93f9430855ee690dee1f01c10d7d",
"sha256:0f2dd1fe2d1b614dc8ad65e76fd0cb58430a1029d371b1797fa353d9d1251e84",
"sha256:0fa9e82d73f64bdd1bcc85cdedd6aef3547c9edcffc55e413c28fbee128bbee7",
"sha256:1436fbaf695a05dd4d6b7a309605fdb738f14951a2d836cbc8e1b0d629891238",
"sha256:1548e3ca0b496286a21d7f0007e00931ba2cfd1bbce0a855237ecff80ff312d7",
"sha256:159fc6b4dd1a0e2b7873ca36307de61b385dfa0bb8fa8c8485b23bd40c5b99fe",
"sha256:17b733c64ea52ebae625459da348bb21788a6f74d63f6efc760c2d1fd98e6b25",
"sha256:1869e213378d187ced55ae45077c9613a37e59a6429d2431343f0b124f235e1e",
"sha256:187f97eb3b0b36447d20d80c5934a4a65cf0749a754029fedc1379c657f00bf5",
"sha256:1b8da9e0198ca4f16b84aaa0ef4227c1dfde17d1ffa6e33b01f2cd1a0becbfaf",
"sha256:1c82e9065add225968ac3b34820b0b91d26d88289102e2e34c817643ff1616c2",
"sha256:1f1ae125e6b89f83ba9fcfef9c9b9fc14ab81243522ee78009d302d138a695db",
"sha256:1ff41df445dd0903c2e2c5c943169deb616debc1ff26b19ddd4ab2974f6e2247",
"sha256:200363583476fb09e2db2809507e544809ec8b624ff5c0585d169e7497124f56",
"sha256:20634aa6571997391463ba07cd72294a296f22ffe8f6fccab2b78cba9efc796a",
"sha256:249b7d331f6940e11bdea0040c7251aa0ecb3a3f388f6b388efc9d7c951ff9d8",
"sha256:2d493cab218f9aeb177b043b0fca3cbcce60ed6116835dd50ef87eebb253e840",
"sha256:2e2af01a2d090f71eba16954536b2c3a713bf2f005f23b827ef62f0ffa83e310",
"sha256:317b1d986abe1261d6ffcc19345db64d13eb0b0975be4a45a5467a61f59c041a",
"sha256:3389a5113bf82fcb2a07ab73b3ff539a86a06df53c2bd979739e01a28521d2bb",
"sha256:33ae43add9871311aa0115db6e98577b10ee8250f8038ffadb24f3bae94ce217",
"sha256:38727c4b856c7b91a18abb9a58101886c34cf4f9098f0a76fc487582d32c5f93",
"sha256:3e65dbc81ecd8e799a79dc9a6d92c4dee5b8a81df5e0eccbbfa929e86b58c2c6",
"sha256:3f72c6e588f5e1617a7dcefc885efeb98ffae9c21d6703910a1d41cf7f86de27",
"sha256:4000ac171e904c3be46c20d2ff75bc087126d8994fab41891806a80c2cc077c0",
"sha256:43b09d7b1b91b6a438f8b28e6daa035d096867690d13601e79bdc91c42cfce78",
"sha256:45e532cb6851cac350898293e6f57ba41544a0aab956403427909139e8587fe9",
"sha256:470b79619f0bbb96308dd77f800297c02ee4af1d1f7a24f33dd54885492e5506",
"sha256:48d1404eb673275f90b4e725cf4ad33e7663b1f82fccf01fa51ebe11a93dfd20",
"sha256:4ad8d13dcacb2f31a61aa31d414f9101370d4ec9dd5b4a1d721e73ff047997be",
"sha256:4b3759b1f59118b9f54606da8fb23f775320172609f796a22badbe94cc5b9aba",
"sha256:4cbf24b94cbb4c40aacad8a542a9c016083a16262c79673599ed0c5a23700d25",
"sha256:4dc7baadba7478798a66e325789e6f7f19aba5e556caa9509a4f9cddf17ee5f8",
"sha256:51402ceb8747d13aca21ce76df70a4309e9e0fceaf9e594397748855ce5ab113",
"sha256:542b9e5c70a15cae3f182b7d2744dedde9d9f169b754e730790816f7dc51b730",
"sha256:599301048ef558a1de0f24e48be6b97d49b2eaecf66f6e8815ceaa18c78de45f",
"sha256:5c1c58fa810a9bf8cc27b5da720c6da6da08c3b736ab56c1fd0d53db724a3182",
"sha256:5d52b8c97f66a4a67ceee11f1e81959669c3fcd3008e65c6941ab326cda7d8a9",
"sha256:60687f534b46c2d216d51bc6bd886f3b7bb871d4c390012229169baf7f7e326c",
"sha256:60b9f30e24e73336644e5098f0b79fd164f54fedcdaf78c5c12ff30d668eb0cb",
"sha256:610db32a6ced2d2ffedc94d16cfc7762b1495727a5da6f31a84130a12c40921c",
"sha256:613982d09586087b24e0c850d7b3bb0dc1a3c7aed11dcf6fe5c4dcc9ac2d63c8",
"sha256:62180830ab02ba7163d59e723cdafee606908f001ad410694b41fe3d98acfd44",
"sha256:637cfcd7eb10eab0d02bf2ce3d478e403d9c86695100523300c6bfc67cd70452",
"sha256:682790babbe4234d06ff89116d523269c5e2f7c52af0efaca01959b2e33ff1ef",
"sha256:6d5c9690c717b884e031268238bfc2ef2afa32b033f4e3413a832802f427157d",
"sha256:6faa0d8c5d2506a665a6635823d13346ce91480802995eb2e306766b883ee307",
"sha256:717e1289cd6fbe182b287912e51b89a3841d07fd12e3ac58ea61a574efa82306",
"sha256:728790ed57682c4570e6637cacf3f1795ec786a184474703a53c431c5301b4d0",
"sha256:75cf7ed7370d2fd8a4151e9a5e5f1aa2315cc1910060e05ed03065e8f41e13dd",
"sha256:794858517ed8d3f17516ab85054bbfed5bdb9354fdba59d0643643b35a5ec4fb",
"sha256:7d474cb2b5e2b613c3c869ce9c0666d3a22551cfe1b49e4d3c344b83529454ec",
"sha256:86c9102e65a9b1e66ff15f42cd67ef7999b82c21ec402a41eb2216ec7046aeb2",
"sha256:89560a047cabd48703c38aa8108817c31cfd029109690474c7d52a6c1fa4cb4c",
"sha256:898f44a77d12e2d199096f5ed81805fd1b53d90ad1a47787c3108361600e6923",
"sha256:8db783fd4a874a45489ade1b78a7b8d2fbc45f01bf6d349d48d5511be36f592c",
"sha256:90fff8fc261a79698f5b4326db5e7a9442670ad84c83f421d985be54e2947074",
"sha256:9279eb1acbdb58a9864001a934d54976a6f7f3a2a1c1b5bcd10ef46557b9ade2",
"sha256:976a28d9651450086ea1666b4c5c6e4695623fae155b55b8da5bacc8edf1c7a8",
"sha256:99c685fce0a69e3c1b2238bb7a28c7ec746e16524d2225f64ad91825d87659e7",
"sha256:99f22fca5b0d9b3ce5a0cc6faad98caebd533356b5f786f46a2558369ea7bc58",
"sha256:9a2b974717613edbed2c74e45c1611a62711103555ab3ff6b4b18d16746713e8",
"sha256:9b92621ab63f0de61fa2bbe391cc38c1bb8a7998af65f58607120f8979e5266c",
"sha256:9fa33dc301eef34ef441a31327e027a14a18fd9d3b9f50369745d21e199a1f03",
"sha256:a52bb5781e4246579e01950c73b6c6c4963ca495063748b1b2641c756fdafb13",
"sha256:a603f05cb6a6f6590549300d807d35ce193db5a0054c9cba9e7725b89e0be2d5",
"sha256:a895173559fa33084a9a94ccecf9e1a6d455134bf680b84a26fb01aecdb4c89d",
"sha256:a8d124fe0b1942279fcea5b774c74ca48553da5407e904670fbd6c1e823bcf45",
"sha256:aba223a34d60f8a15701a38450dceabe646cda1caf64448d914087cdca8c0aa8",
"sha256:abec93183205a3e022eb40bd55b8d20f59b2bd26b46a5389ff9ebab375ca3570",
"sha256:aeb1a15984a6aaa3392a519dc1c9b1af98fbeb4b0a2a545806641ddb5f385631",
"sha256:b1a6165a3c1226760eb3c9f7605264ce24b5cb33907cab00025f6eca7c2b349f",
"sha256:c04921f442968e7c7760cb21bf4f897c1026840b97ad695c7c9c6caeddacea5f",
"sha256:c1947fa6ee4d4bd9c73091e0ef75079f8114c1564603bc42bb506575e0b48575",
"sha256:c2b1575d24f58d7337391dad32543a5dc2ebf3ee771df479e5d334b36ff30718",
"sha256:cb38bc3e49694bd568a48a81235e6e8e587b79e5f079fefbea4239dc609af713",
"sha256:cbfda5c6a10adc3ec18b0ed8b1aebcd8f1b63d4555ff352521d7be56a7fb19cc",
"sha256:ceb459c9df17b9b35e7302c4e0df992de46fab859a59b70eeb6f55e6c7e8221e",
"sha256:cee41d563a1fa0fbd0d9028cca10775189cdc69e47f845d2ee2d6343264f183d",
"sha256:d979e315e2bc5775a1e52d73e9a82e29844bf293be4f5491dae634c2c2d7a2f0",
"sha256:dffba251ed903b8741530fb296664a06ab32bae30d700359ec423dd546da785e",
"sha256:e4d371b057679000f00296caa827a885c3ed74fdf4b3eddb99e95385b73f120b",
"sha256:f4038e27f672983c7586a7d91d2c9039b8637490efc705bdc6b3432d0845cc82",
"sha256:f8d455f89ab9dfe95b516cdbfd5f946751f38309fe4f725c66620d7b1327e4da",
"sha256:faa9e3c531fa4e59c5297cbee178cae43201cdf1d150ab0e44b7d7d2620a2d8d",
"sha256:fae3e77478cabd3b5d772ffd50c29c871ee7aabdde0b8be4899a35a7d99fcd2a",
"sha256:fbdb56a12c6d218fb0c53b6e4327fcc1a7b3dea2923ec3fbd6d037a38b5222f0"
"sha256:026f6ecd8948e168a89fc015ef34b6bcb200f30ac33f1480554d722181b38bea",
"sha256:0c324d82871fe50471f7ba38a21c3e68167e868f541f57ac0ef23c053bbef6e6",
"sha256:0f186b3a32d78af7a805584a7e1c2fdf6f6fd62939936e4f3df869158c147a55",
"sha256:12ece1a4d024297afa4b76d2ce71c2c65fc7eaa487a9ae9f6e17c160253cfd23",
"sha256:13e175b1643306558a3d7604789c4a8c217a64406fe82bf1a9e52efb5dea53ae",
"sha256:1c67007161655c59e13bba130a2db29d7c9e5c81bcecb8846a3dd7386065eb24",
"sha256:1e1dd1a328464dd2ae70f0e31ec403593fbb1b254bab7ac9f0cd08ba71c797d0",
"sha256:1f363bf95d79dbafa8eac17697965e02e74da6f21b231b3fb808b2185bfed337",
"sha256:2345656b30d7e18d18a4df5b765e4059111860a69bf3a36608a7d625e92567e6",
"sha256:26e4b7f7941b92546a9b06ed75b40b5d7ceace8f3074d06cb3369349388d700d",
"sha256:27bbdee91718019e251d315c6e9b03aa5b7663b90e4228ac1ddb0a567ff3634b",
"sha256:2b491f2fac36718247070c3343f53aadbbe8684f3e0cf3b6cce1bd099e1d05cb",
"sha256:2c66f3b8e93cdc3063ffd7224cad84951834d9434ffd27fa3fabad2e942ddab7",
"sha256:31370273787dca851e2df6f32f1ec8c61f86e9bbeb1cc42787020b6dfff952fd",
"sha256:343fe1fcbbf55c994b22962bfb46f6b6903faeac5a2671b2f0fa5e3664de3e66",
"sha256:3479a2fd88504cc41eb707650e81fd7ce864f2418fee24f7224775b539536b39",
"sha256:352c920e166e838bc560014885ba979df656938fcc29a12c73ff06dc76b150d8",
"sha256:378554acdcf8370cc5c777b1312921a2a670f68888e999ea1305599c55b67f5d",
"sha256:37a9a8f5737b8e429291148be67d2dd8ba779a69a87ad95d2785bb3d80fd1df7",
"sha256:3a4e87aae287d757d9c5b045c819c985b02b38dea3f75630cc24d53826e640be",
"sha256:3aacc4eb58d6bccf6ec571619bee35861d4103961b9873d9b0829d347ca8a63e",
"sha256:3f93a6740fef239a8aca6521cc1891d448664115b53528a3dd7f95c1781a5fa6",
"sha256:41610c3a9be4febcbcac2b69b2f45d0da33e39d1194e5ffa3dd3a104d5a67a70",
"sha256:4291a8c02d32aa6ebdffe63cf91abc2846383de95ae04a275f036c4e7a27f9ba",
"sha256:47b5b227dc0bd53530dda55f344e1b24087fa99bb1bd7fceb6f5a2b1e2831ad4",
"sha256:4b785ffbc16795fca27c9e899993df7721d886249061689c48dbfe60fa7d02a1",
"sha256:4e5afd5477332ceeb960e2002d5bb0b04ad00b40037a0ab1de9916041badcf00",
"sha256:54fe1835f96c1033cdb7e4677497e784704c81d028c962d2222239ded93d978b",
"sha256:580f32cda7f911fef8266c7d811e580c18734cd12308d099b9975b914f33fcaf",
"sha256:5c065a83883af2a9a0303b6c06844a700af0db97ff6dc894324f656ad8efe405",
"sha256:68f2e23eec59fc77bef164157889a2f7fb9800c47d615c58ee3809e2be3c8509",
"sha256:6a4053d5b62cedec83ff67d55e50da35f7736bed0a3b2af51fa6143f5fef3785",
"sha256:6b68b6a12411cfacca16ace22d42ae8e9946315d79f49c6c97089789c235e795",
"sha256:6bee1065d55edfeabdb98211bb673cb44a8b118cded42d743f7d59c07b05a80d",
"sha256:773c60a5368a361253efea194552ff9ed6879756f6feb71b61b514723f8cb726",
"sha256:791d90aa1c68b5485f6340a8dc485aba7e9bcb729572449174ded0692e7e7ad0",
"sha256:7adb4327453c1550f51d6ba13d718a84091f82230c1d0daca6db628e57d0fa5a",
"sha256:80073e897af0669f496d23899583b5c2f0decc2ec06aa7c36a3b8fb16eda5e0e",
"sha256:83b1e8aca6c3fad058d8a2b7653b7496df0c4aca903d589bb0e4184868290767",
"sha256:83ff31d33c1391a0a6b23273b7f839dc8f7b5fb75ddca59ce4f334b83ca822bb",
"sha256:84fd3cfc1cb872019e60a3844b1deedb176de0b9ded11bf30147137ac65185f5",
"sha256:8d4f94b408c9f9218d61e8af55e43c8102f813eea2cf82de10906b032ddcb9aa",
"sha256:8d6d5ab0f12f2d7ae6aad77af67ae6253b6c1d54c320484f1acd2fce38b39ac2",
"sha256:8d9d081cd8e0110661c8a3e728d7b491a903bb54d34de40b17d19144563bd5f6",
"sha256:8f0574d5d97722cfaf51b7dd667c8c836fa9fdf5a7d8158a787b98ee2788f6c5",
"sha256:8f09a16ae84b1decb9df9a7e393ec84a0b2a11da6356c3eedcf86da8cabe3071",
"sha256:91c049f7591d9e9f8bcc3c556c0c4b448223f564ad04511a8719d28f5d38daed",
"sha256:94d8c65f48665f82064bea8a48ff185409a309ba396f5aec3a846831cbe36e6d",
"sha256:98be3e873c8f9d90a982891b2b061521ba4e5e49552ba2d3c1b0806dd5677f88",
"sha256:9a740ddd3f7725c80e500f16b1b02b83a58b47164c0f3ddd9379208629c8c4b5",
"sha256:9abdffc590ef08d27dfd14d32e571f4a0f5f797f433f00c5faf4cf56ab62792a",
"sha256:a0ec73e6d3ad9442cfb5b94c137cf4241fff2860d81a9ee8be8c3d987bb400c0",
"sha256:a181b6ef9b480b56b29bdc58dc50c198e93d33398d2f8e57da05cbddb095bd9e",
"sha256:a2eeee09ff716c8ff75942c1b93f0bca129590499f1127cbeb1b5cefbdc0c3d5",
"sha256:a599cc5cec196c0776faf65b74ac957354bd036f878905a16be9e20884870d02",
"sha256:aa96955f2878116239db55506fe825f574651a8893d07a83de7b3c76a2f0386e",
"sha256:ac6a8a34f858f3862798383f51012788df6be823e2874fa426667a4da94ded7e",
"sha256:ac95981911559c842e1e4532e2f89ca255531db1d87257e5e69cd8c0c0d585fc",
"sha256:ad78fb90540dc752b532345065146371acd3804a917c31fdd8a337951da9def2",
"sha256:aee5dce78e157e503269121ad6f886acab4b1ab3e3956bcdf0549d54596eab57",
"sha256:b27c3e2b1789a635b9df1d74838ae032dc2dbc596ece5d89f9de2c37ba0a6dfe",
"sha256:b4162b96d0908cb0ca218513eab559e9a77c8a1d9705c9133813634d9db27f4f",
"sha256:b4df886481ca27a6d53d30a73625fb86dd308cf7d6d99d32e0dfbfcc8e8a75b9",
"sha256:b51d45cb9ed81669206e338413ba224c06a8900ab0cc9106f4750ac73dc687bb",
"sha256:b6a0617ba60f81a8df3b9ddca09f591a0a0c8269402169825fcd50daa03e5c25",
"sha256:ba2a8fbd21079093118c40e8e80068750c1619a5988e54220ea0929de48e7d65",
"sha256:ba3f47a5b82de7304ae08e2a111ccc90a6ea06ecc3f25d7870d08be0973c94cb",
"sha256:c40acbadc965e72f1b44b3c665a59ec78a5e959757e52520bf73687c84ce6854",
"sha256:cb4bd75518838b141dab8fe663de988c4d08502999068dc0b3949d43bd86ace6",
"sha256:ce40c2a68fe28e05a4f66229c11885ef928086fbcd2eff086decdacfe5254da9",
"sha256:d6cb51a8459e7160366c6c7b31e8f9a671f7d617591c0ad305f2697707061da2",
"sha256:da5b7f35fc824cff36a2baa62486d5b427bf0fd7714c19704b5a7df82c2950b4",
"sha256:daf5e4f6b048c225a494c941a21463a0d397c39a080db8fece9b3136297ed240",
"sha256:dbad2b7dad98b854a468d2c6a0b11464f68ce841428aded2f24f201a17a144eb",
"sha256:dd268701bf930bbb2d12f6f7f75c681e16fee646ea1663d258e825bf919ca7a1",
"sha256:de707808f1997574014d9ba87c2d9f8a619688d615520e3dce958bf4398514c7",
"sha256:de8ec700127b645b0e2e28e694a2bba6dcb6a305ef080ad312f3086d47fb6973",
"sha256:deaf26cc23cfbf90650993108de888533635b981a7157a0234b4753527ac6e5c",
"sha256:e038e187270cbb987cf7c5d4b574fce7a32bc3d9593e9346d129874a7dc08dc3",
"sha256:e1e569953a2abe945f116a6c22b71e8fc02d7c27068af2af40990115f25c93e4",
"sha256:e39ae60598ed533f513db6d0370755685666024ab187a144fc688dd16cfa2d33",
"sha256:e49f412fe58c793af61b04fb5536534dfc95000b6c2bf0bfa42fcf7eb1453d42",
"sha256:e8d71f1611431c445ced872b303cd61f215551a11df0c7171e5993bed84867d5",
"sha256:ed0f99e0037b7f9f7117493e8723851c9eece4629906b2d5da21d3ef124149a2",
"sha256:eead76c172ba08d49ea621016cf84031fff1ee33d7db751d7003e491e55e66af",
"sha256:f5d07dca69bf5a9f1e1cd5756ded6c197a27e8d8f2d8a3d99565add37a3bd1ec",
"sha256:f5d93e77881497f76e77056feea4c375732d27151151273d6e4cb8a1defbf17a",
"sha256:f7cfc25d8143a7570f5e4c9da072a1e1c335d81a6926eb10c1fd3f637fa3c022",
"sha256:fb896fafa206db4d55f4412135c3ae28fbc56b8afc476970d0c5f29d2ce50948"
],
"index": "pypi",
"version": "==2.13.1"
"version": "==2.13.2"
},
"redis": {
"extras": [
@ -1556,11 +1530,11 @@
},
"setuptools": {
"hashes": [
"sha256:512e5536220e38146176efb833d4a62aa726b7bbff82cfbc8ba9eaa3996e0b17",
"sha256:f62ea9da9ed6289bfe868cd6845968a2c854d1427f8548d52cae02a42b4f0356"
"sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31",
"sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f"
],
"markers": "python_version >= '3.7'",
"version": "==65.5.0"
"version": "==65.5.1"
},
"six": {
"hashes": [
@ -1650,7 +1624,7 @@
"sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa",
"sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"
],
"markers": "python_version < '3.10'",
"markers": "python_version >= '3.7'",
"version": "==4.4.0"
},
"tzdata": {
@ -1764,26 +1738,26 @@
},
"watchfiles": {
"hashes": [
"sha256:1686bc4ac40ffde7256b6543b0f9a2cc8b531ae45243786f1d3f1dda2fe39e24",
"sha256:184799818c4fa7dbc6a1e4ca20bcbc6b85e4e0db07ce4554ea2f29b75ccd0cdc",
"sha256:27d64a6ed5e0aebef97c70fa3899a6958d4f7f049effc659e7dc3e81f3170a7b",
"sha256:320bcde0adaa972403ed3b70f784409437325a1a4df2de54ba0672203d8847e5",
"sha256:39b932b044fef6c43e813e0bef908e0edf185bf7b5d8d53246651cb7ac9efe79",
"sha256:4ba6d8c2f957cae3e888bc250bc60ed09fe869b3f55f09d020ed3fecbefb6a4c",
"sha256:4bbc8bfa0f3871b1867af42837a5635a9c1cbb2b68d039754b4750642c34aaee",
"sha256:76a4c4a8e25a2c9a4f7fa3d373bbaf5558c17b97b4cf8411d33de368fe6b68a9",
"sha256:78b1e7c29b92dfc8fc32f15949019232b493767d236c2bff31848df13fdb9e8a",
"sha256:7f39fcdac5d5b9815a0c2ab9005d39854296b11fa15386a9a69c09cbbc5dde2c",
"sha256:8eddc2d19bf6f49aee224072ec0f4f3258125a49f11b5dcff1448e68718a745e",
"sha256:9d3a12e4de5446fb6e286b720d0cb3a080811caf0ef43e556c2db5fe10ef0342",
"sha256:9e611a90482ac14ef3ec234c1604ed921d1b0c68970eba82f1cf0d59a3e4eb76",
"sha256:bbe10d134eef1666451382015e48f092c941a6d4562a98ffa1a288f79a897c46",
"sha256:be87c9b1fe2b02105a9ac6d9df7500a110652bbd97cf46b13964eeaef9a6c89c",
"sha256:cfdbfc4b6797c28dd1a8524581fed00ca333971b4111af8cd42fb7a92dcdc227",
"sha256:d5d799614d4c56d29c5ba56f4f619f967210dc10a0d6965b62d326b9e2f72c9e",
"sha256:fd4215badad1e3d1ad5fb79f21432dd5157e2e7b0765d27a19dc2a28580c6979"
"sha256:00ea0081eca5e8e695cffbc3a726bb90da77f4e3f78ce29b86f0d95db4e70ef7",
"sha256:0f9a22fff1745e2bb930b1e971c4c5b67ea3b38ae17a6adb9019371f80961219",
"sha256:1b8e6db99e49cd7125d8a4c9d33c0735eea7b75a942c6ad68b75be3e91c242fb",
"sha256:4ec0134a5e31797eb3c6c624dbe9354f2a8ee9c720e0b46fc5b7bab472b7c6d4",
"sha256:548d6b42303d40264118178053c78820533b683b20dfbb254a8706ca48467357",
"sha256:6e0d8fdfebc50ac7569358f5c75f2b98bb473befccf9498cf23b3e39993bb45a",
"sha256:7102342d60207fa635e24c02a51c6628bf0472e5fef067f78a612386840407fc",
"sha256:888db233e06907c555eccd10da99b9cd5ed45deca47e41766954292dc9f7b198",
"sha256:9891d3c94272108bcecf5597a592e61105279def1313521e637f2d5acbe08bc9",
"sha256:9a26272ef3e930330fc0c2c148cc29706cc2c40d25760c7ccea8d768a8feef8b",
"sha256:9fb12a5e2b42e0b53769455ff93546e6bc9ab14007fbd436978d827a95ca5bd1",
"sha256:a868ce2c7565137f852bd4c863a164dc81306cae7378dbdbe4e2aca51ddb8857",
"sha256:b02e7fa03cd4059dd61ff0600080a5a9e7a893a85cb8e5178943533656eec65e",
"sha256:bc7c726855f04f22ac79131b51bf0c9f728cb2117419ed830a43828b2c4a5fcb",
"sha256:c541e0f2c3e95e83e4f84561c893284ba984e9d0025352057396d96dceb09f44",
"sha256:cbaff354d12235002e62d9d3fa8bcf326a8490c1179aa5c17195a300a9e5952f",
"sha256:dde79930d1b28f15994ad6613aa2865fc7a403d2bb14585a8714a53233b15717",
"sha256:e2b2bdd26bf8d6ed90763e6020b475f7634f919dbd1730ea1b6f8cb88e21de5d"
],
"version": "==0.18.0"
"version": "==0.18.1"
},
"wcwidth": {
"hashes": [
@ -1792,13 +1766,6 @@
],
"version": "==0.2.5"
},
"webencodings": {
"hashes": [
"sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78",
"sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"
],
"version": "==0.5.1"
},
"websockets": {
"hashes": [
"sha256:00213676a2e46b6ebf6045bc11d0f529d9120baa6f58d122b4021ad92adabd41",
@ -2107,7 +2074,6 @@
"version": "==0.4.6"
},
"coverage": {
"extras": [],
"hashes": [
"sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79",
"sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a",
@ -2194,11 +2160,11 @@
},
"exceptiongroup": {
"hashes": [
"sha256:2ac84b496be68464a2da60da518af3785fff8b7ec0d090a581604bc870bdee41",
"sha256:affbabf13fb6e98988c38d9c5650e701569fe3c1de3233cfb61c5f33774690ad"
"sha256:4d6c0aa6dd825810941c792f53d7b8d71da26f5e5f84f20f9508e8f2d33b140a",
"sha256:73866f7f842ede6cb1daa42c4af078e2035e5f7607f0e2c762cc51bb31bbe7b2"
],
"markers": "python_version < '3.11'",
"version": "==1.0.0"
"version": "==1.0.1"
},
"execnet": {
"hashes": [
@ -2218,11 +2184,11 @@
},
"faker": {
"hashes": [
"sha256:1bfb1b447cd45169a74a09f821cee47f51548508b62a29f6dfdab1d001d448a4",
"sha256:bd922a6ad210bb96a5b31987e10918851131c9670429172d5bfb3a5ede238a79"
"sha256:4a3465624515a6807e8aa7e8eeb85bdd86a2fa53de4e258892dd6be95362462e",
"sha256:b9dd2fd9a9ac68a4e0c5040cd9e9bfaa099fa8dd15bae5f01f224a45431818d5"
],
"markers": "python_version >= '3.7'",
"version": "==15.1.3"
"version": "==15.3.1"
},
"filelock": {
"hashes": [
@ -2256,14 +2222,6 @@
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.4.1"
},
"importlib-metadata": {
"hashes": [
"sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab",
"sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43"
],
"markers": "python_version < '3.10'",
"version": "==5.0.0"
},
"iniconfig": {
"hashes": [
"sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3",
@ -2396,11 +2354,11 @@
},
"platformdirs": {
"hashes": [
"sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788",
"sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"
"sha256:0cb405749187a194f444c25c82ef7225232f11564721eabffc6ec70df83b11cb",
"sha256:6e52c21afff35cb659c6e52d8b4d61b9bd544557180440538f255d9382c8cbe0"
],
"markers": "python_version >= '3.7'",
"version": "==2.5.2"
"version": "==2.5.3"
},
"pluggy": {
"hashes": [
@ -2484,11 +2442,11 @@
},
"pytest-sugar": {
"hashes": [
"sha256:3da42de32ce4e1e95b448d61c92804433f5d4058c0a765096991c2e93d5a289f",
"sha256:eea78b6f15b635277d3d90280cd386d8feea1cab0f9be75947a626e8b02b477d"
"sha256:30e5225ed2b3cc988a8a672f8bda0fc37bcd92d62e9273937f061112b3f2186d",
"sha256:c4793495f3c32e114f0f5416290946c316eb96ad5a3684dcdadda9267e59b2b8"
],
"index": "pypi",
"version": "==0.9.5"
"version": "==0.9.6"
},
"pytest-xdist": {
"hashes": [
@ -2568,11 +2526,11 @@
},
"setuptools": {
"hashes": [
"sha256:512e5536220e38146176efb833d4a62aa726b7bbff82cfbc8ba9eaa3996e0b17",
"sha256:f62ea9da9ed6289bfe868cd6845968a2c854d1427f8548d52cae02a42b4f0356"
"sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31",
"sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f"
],
"markers": "python_version >= '3.7'",
"version": "==65.5.0"
"version": "==65.5.1"
},
"six": {
"hashes": [
@ -2607,11 +2565,11 @@
},
"sphinx-rtd-theme": {
"hashes": [
"sha256:36da4267c804b98197419df8aa415d245449b8945301fce8c961038e0ba79ec5",
"sha256:6e20f00f62b2c05434a33c5116bc3348a41ca94af03d3d7d1714c63457073bb3"
"sha256:31faa07d3e97c8955637fc3f1423a5ab2c44b74b8cc558a51498c202ce5cbda7",
"sha256:6146c845f1e1947b3c3dd4432c28998a1693ccc742b4f9ad7c63129f0757c103"
],
"index": "pypi",
"version": "==1.1.0"
"version": "==1.1.1"
},
"sphinxcontrib-applehelp": {
"hashes": [
@ -2715,7 +2673,7 @@
"sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa",
"sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"
],
"markers": "python_version < '3.10'",
"markers": "python_version >= '3.7'",
"version": "==4.4.0"
},
"urllib3": {
@ -2733,14 +2691,6 @@
],
"markers": "python_version >= '3.6'",
"version": "==20.16.6"
},
"zipp": {
"hashes": [
"sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1",
"sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8"
],
"markers": "python_version < '3.9'",
"version": "==3.10.0"
}
}
}

View File

@ -9,8 +9,8 @@ set -e
# fill in the value of "$XYZ_DB_PASSWORD" from a file, especially for Docker's
# secrets feature
file_env() {
local var="$1"
local fileVar="${var}_FILE"
local -r var="$1"
local -r fileVar="${var}_FILE"
# Basic validation
if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then
@ -35,14 +35,14 @@ file_env() {
# Source: https://github.com/sameersbn/docker-gitlab/
map_uidgid() {
USERMAP_ORIG_UID=$(id -u paperless)
USERMAP_ORIG_GID=$(id -g paperless)
USERMAP_NEW_UID=${USERMAP_UID:-$USERMAP_ORIG_UID}
USERMAP_NEW_GID=${USERMAP_GID:-${USERMAP_ORIG_GID:-$USERMAP_NEW_UID}}
if [[ ${USERMAP_NEW_UID} != "${USERMAP_ORIG_UID}" || ${USERMAP_NEW_GID} != "${USERMAP_ORIG_GID}" ]]; then
echo "Mapping UID and GID for paperless:paperless to $USERMAP_NEW_UID:$USERMAP_NEW_GID"
usermod -o -u "${USERMAP_NEW_UID}" paperless
groupmod -o -g "${USERMAP_NEW_GID}" paperless
local -r usermap_original_uid=$(id -u paperless)
local -r usermap_original_gid=$(id -g paperless)
local -r usermap_new_uid=${USERMAP_UID:-$usermap_original_uid}
local -r usermap_new_gid=${USERMAP_GID:-${usermap_original_gid:-$usermap_new_uid}}
if [[ ${usermap_new_uid} != "${usermap_original_uid}" || ${usermap_new_gid} != "${usermap_original_gid}" ]]; then
echo "Mapping UID and GID for paperless:paperless to $usermap_new_uid:$usermap_new_gid"
usermod -o -u "${usermap_new_uid}" paperless
groupmod -o -g "${usermap_new_gid}" paperless
fi
}
@ -55,8 +55,8 @@ map_folders() {
nltk_data () {
# Store the NLTK data outside the Docker container
local nltk_data_dir="${DATA_DIR}/nltk"
readonly truthy_things=("yes y 1 t true")
local -r nltk_data_dir="${DATA_DIR}/nltk"
local -r truthy_things=("yes y 1 t true")
# If not set, or it looks truthy
if [[ -z "${PAPERLESS_ENABLE_NLTK}" ]] || [[ "${truthy_things[*]}" =~ ${PAPERLESS_ENABLE_NLTK,} ]]; then
@ -100,7 +100,7 @@ initialize() {
# Check for overrides of certain folders
map_folders
local export_dir="/usr/src/paperless/export"
local -r export_dir="/usr/src/paperless/export"
for dir in \
"${export_dir}" \
@ -113,7 +113,7 @@ initialize() {
fi
done
local tmp_dir="/tmp/paperless"
local -r tmp_dir="/tmp/paperless"
echo "Creating directory ${tmp_dir}"
mkdir -p "${tmp_dir}"
@ -137,7 +137,7 @@ initialize() {
install_languages() {
echo "Installing languages..."
local langs="$1"
local -r langs="$1"
read -ra langs <<<"$langs"
# Check that it is not empty

View File

@ -4,12 +4,12 @@ set -e
wait_for_postgres() {
local attempt_num=1
local max_attempts=5
local -r max_attempts=5
echo "Waiting for PostgreSQL to start..."
local host="${PAPERLESS_DBHOST:-localhost}"
local port="${PAPERLESS_DBPORT:-5432}"
local -r host="${PAPERLESS_DBHOST:-localhost}"
local -r port="${PAPERLESS_DBPORT:-5432}"
# Disable warning, host and port can't have spaces
# shellcheck disable=SC2086
@ -31,11 +31,11 @@ wait_for_postgres() {
wait_for_mariadb() {
echo "Waiting for MariaDB to start..."
host="${PAPERLESS_DBHOST:=localhost}"
port="${PAPERLESS_DBPORT:=3306}"
local -r host="${PAPERLESS_DBHOST:=localhost}"
local -r port="${PAPERLESS_DBPORT:=3306}"
attempt_num=1
max_attempts=5
local attempt_num=1
local -r max_attempts=5
while ! true > /dev/tcp/$host/$port; do
@ -73,8 +73,8 @@ migrations() {
search_index() {
local index_version=1
local index_version_file=${DATA_DIR}/.index_version
local -r index_version=1
local -r index_version_file=${DATA_DIR}/.index_version
if [[ (! -f "${index_version_file}") || $(<"${index_version_file}") != "$index_version" ]]; then
echo "Search index out of date. Updating..."
@ -89,6 +89,46 @@ superuser() {
fi
}
custom_container_init() {
# Mostly borrowed from the LinuxServer.io base image
# https://github.com/linuxserver/docker-baseimage-ubuntu/tree/bionic/root/etc/cont-init.d
local -r custom_script_dir="/custom-cont-init.d"
# Tamper checking.
# Don't run files which are owned by anyone except root
# Don't run files which are writeable by others
if [ -d "${custom_script_dir}" ]; then
if [ -n "$(/usr/bin/find "${custom_script_dir}" -maxdepth 1 ! -user root)" ]; then
echo "**** Potential tampering with custom scripts detected ****"
echo "**** The folder '${custom_script_dir}' must be owned by root ****"
return 0
fi
if [ -n "$(/usr/bin/find "${custom_script_dir}" -maxdepth 1 -perm -o+w)" ]; then
echo "**** The folder '${custom_script_dir}' or some of contents have write permissions for others, which is a security risk. ****"
echo "**** Please review the permissions and their contents to make sure they are owned by root, and can only be modified by root. ****"
return 0
fi
# Make sure custom init directory has files in it
if [ -n "$(/bin/ls -A "${custom_script_dir}" 2>/dev/null)" ]; then
echo "[custom-init] files found in ${custom_script_dir} executing"
# Loop over files in the directory
for SCRIPT in "${custom_script_dir}"/*; do
NAME="$(basename "${SCRIPT}")"
if [ -f "${SCRIPT}" ]; then
echo "[custom-init] ${NAME}: executing..."
/bin/bash "${SCRIPT}"
echo "[custom-init] ${NAME}: exited $?"
elif [ ! -f "${SCRIPT}" ]; then
echo "[custom-init] ${NAME}: is not a file"
fi
done
else
echo "[custom-init] no custom files found exiting..."
fi
fi
}
do_work() {
if [[ "${PAPERLESS_DBENGINE}" == "mariadb" ]]; then
wait_for_mariadb
@ -104,6 +144,9 @@ do_work() {
superuser
# Leave this last thing
custom_container_init
}
do_work

View File

@ -392,3 +392,28 @@ a Docker installation, you can use volumes to accomplish this:
# ...
volumes:
- /path/to/my/flowerconfig.py:/usr/src/paperless/src/paperless/flowerconfig.py:ro
Custom Container Initialization
###############################
The Docker image includes the ability to run custom user scripts during startup. This could be
utilized for installing additional tools or Python packages, for example.
To utilize this, mount a folder containing your scripts to the custom initialization directory, `/custom-cont-init.d`
and place scripts you wish to run inside. For security, the folder and its contents must be owned by `root`.
Additionally, scripts must only be writable by `root`.
Your scripts will be run directly before the webserver completes startup. Scripts will be run by the `root` user.
This is an advanced functionality with which you could break functionality or lose data.
For example, using Docker Compose:
.. code:: yaml
services:
# ...
webserver:
# ...
volumes:
- /path/to/my/scripts:/custom-cont-init.d:ro

View File

@ -705,16 +705,6 @@ PAPERLESS_CONSUMER_ENABLE_BARCODES=<bool>
Defaults to false.
PAPERLESS_CONSUMER_USE_LEGACY_DETECTION=<bool>
Enables the legacy method of detecting barcodes. By default, images are
extracted directly from the PDF structure for barcode detection. If this
configuration value is set, images of the whole PDF page will be used instead.
This is a slower and more memory intensive process, but may be required for
certain files, depending on how it is produced and how images are encoded.
Defaults to false.
PAPERLESS_CONSUMER_BARCODE_TIFF_SUPPORT=<bool>
Whether TIFF image files should be scanned for barcodes.

View File

@ -298,95 +298,120 @@
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2501522447884928778" datatype="html">
<source>Prev</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">119</context>
</context-group>
</trans-unit>
<trans-unit id="3885497195825665706" datatype="html">
<source>Next</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">120</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">55</context>
</context-group>
</trans-unit>
<trans-unit id="1241348629231510663" datatype="html">
<source>End</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">121</context>
</context-group>
</trans-unit>
<trans-unit id="3909462337752654810" datatype="html">
<source>The dashboard can be used to show saved views, such as an &apos;Inbox&apos;. Those settings are found under Settings &gt; Saved Views once you have created some.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="9075755296812854717" datatype="html">
<source>Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">136</context>
</context-group>
</trans-unit>
<trans-unit id="7495498057594070122" datatype="html">
<source>The documents list shows all of your documents and allows for filtering as well as bulk-editing. There are three different view styles: list, small cards and large cards. A list of documents currently opened for editing is shown in the sidebar.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">135</context>
<context context-type="linenumber">145</context>
</context-group>
</trans-unit>
<trans-unit id="1334220418719920556" datatype="html">
<source>The filtering tools allow you to quickly find documents using various searches, dates, tags, etc.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">144</context>
<context context-type="linenumber">157</context>
</context-group>
</trans-unit>
<trans-unit id="5427326625898532358" datatype="html">
<source>Any combination of filters can be saved as a &apos;view&apos; which can then be displayed on the dashboard and / or sidebar.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="2804886236408698479" datatype="html">
<source>Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">157</context>
<context context-type="linenumber">176</context>
</context-group>
</trans-unit>
<trans-unit id="4680387114119209483" datatype="html">
<source>File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">163</context>
<context context-type="linenumber">185</context>
</context-group>
</trans-unit>
<trans-unit id="8625288184670954104" datatype="html">
<source>Check out the settings for various tweaks to the web app or to toggle settings for saved views.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="7643249460591212914" datatype="html">
<source>The Admin area contains more advanced controls as well as the settings for automatic e-mail fetching.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">175</context>
<context context-type="linenumber">203</context>
</context-group>
</trans-unit>
<trans-unit id="7172877665285340082" datatype="html">
<source>Thank you! 🙏</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">211</context>
</context-group>
</trans-unit>
<trans-unit id="7354947513482088740" datatype="html">
<source>There are &lt;em&gt;tons&lt;/em&gt; more features and info we didn&apos;t cover here, but this should get you started. Check out the documentation or visit the project on GitHub to learn more or to report issues.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">182</context>
<context context-type="linenumber">213</context>
</context-group>
</trans-unit>
<trans-unit id="4270528545616947218" datatype="html">
<source>Lastly, on behalf of every contributor to this community-supported project, thank you for using Paperless-ngx!</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">215</context>
</context-group>
</trans-unit>
<trans-unit id="5749300816154614125" datatype="html">
<source>Initiating upload...</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">230</context>
<context context-type="linenumber">264</context>
</context-group>
</trans-unit>
<trans-unit id="2173456130768795374" datatype="html">
@ -408,22 +433,22 @@
<source>Logged in as <x id="INTERPOLATION" equiv-text="{{this.settingsService.displayName}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">39</context>
</context-group>
</trans-unit>
<trans-unit id="4930506384627295710" datatype="html">
<source>Settings</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">45</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">166</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">174</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/settings/settings.component.html</context>
@ -434,18 +459,18 @@
<source>Logout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">45</context>
<context context-type="linenumber">50</context>
</context-group>
</trans-unit>
<trans-unit id="6570363013146073520" datatype="html">
<source>Dashboard</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">64</context>
<context context-type="linenumber">69</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">67</context>
<context context-type="linenumber">72</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/dashboard/dashboard.component.html</context>
@ -456,11 +481,11 @@
<source>Documents</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">76</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">74</context>
<context context-type="linenumber">79</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
@ -487,7 +512,7 @@
<source>Saved views</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">80</context>
<context context-type="linenumber">85</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/settings/settings.component.html</context>
@ -498,47 +523,47 @@
<source>Open documents</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">94</context>
<context context-type="linenumber">99</context>
</context-group>
</trans-unit>
<trans-unit id="5687256342387781369" datatype="html">
<source>Close all</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">115</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">118</context>
</context-group>
</trans-unit>
<trans-unit id="3897348120591552265" datatype="html">
<source>Manage</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">119</context>
<context context-type="linenumber">124</context>
</context-group>
</trans-unit>
<trans-unit id="7437910965833684826" datatype="html">
<source>Correspondents</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">123</context>
<context context-type="linenumber">128</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">126</context>
<context context-type="linenumber">131</context>
</context-group>
</trans-unit>
<trans-unit id="7886570921510760899" datatype="html">
<source>Tags</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">130</context>
<context context-type="linenumber">135</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">133</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
@ -550,36 +575,36 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.html</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="3079652255369035" datatype="html">
<source>Document types</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">142</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">140</context>
<context context-type="linenumber">145</context>
</context-group>
</trans-unit>
<trans-unit id="8835528846812581148" datatype="html">
<source>Storage paths</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">144</context>
<context context-type="linenumber">149</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">147</context>
<context context-type="linenumber">152</context>
</context-group>
</trans-unit>
<trans-unit id="2991443309752293110" datatype="html">
<source>File Tasks</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">156</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/tasks/tasks.component.html</context>
@ -590,18 +615,18 @@
<source>File Tasks<x id="START_TAG_SPAN_1" ctype="x-span_1" equiv-text="&lt;span *ngIf=&quot;tasksService.failedFileTasks.length &gt; 0&quot;&gt;"/><x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;badge bg-danger ms-2&quot;&gt;"/><x id="INTERPOLATION" equiv-text="{{tasksService.failedFileTasks.length}}"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">155</context>
<context context-type="linenumber">160</context>
</context-group>
</trans-unit>
<trans-unit id="4804785061014590286" datatype="html">
<source>Logs</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">164</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">162</context>
<context context-type="linenumber">167</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/logs/logs.component.html</context>
@ -612,18 +637,18 @@
<source>Admin</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">173</context>
<context context-type="linenumber">178</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">181</context>
</context-group>
</trans-unit>
<trans-unit id="314315645942131479" datatype="html">
<source>Info</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">182</context>
<context context-type="linenumber">187</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/tasks/tasks.component.html</context>
@ -634,68 +659,68 @@
<source>Documentation</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">186</context>
<context context-type="linenumber">191</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">189</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="1534029177398918729" datatype="html">
<source>GitHub</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">194</context>
<context context-type="linenumber">199</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">202</context>
</context-group>
</trans-unit>
<trans-unit id="5612903193691847840" datatype="html">
<source>Suggest an idea</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">199</context>
<context context-type="linenumber">204</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">203</context>
<context context-type="linenumber">208</context>
</context-group>
</trans-unit>
<trans-unit id="4112664765954374539" datatype="html">
<source>is available.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">212</context>
<context context-type="linenumber">217</context>
</context-group>
</trans-unit>
<trans-unit id="1175891574282637937" datatype="html">
<source>Click to view.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">212</context>
<context context-type="linenumber">217</context>
</context-group>
</trans-unit>
<trans-unit id="9811291095862612" datatype="html">
<source>Paperless-ngx can automatically check for updates</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">216</context>
<context context-type="linenumber">221</context>
</context-group>
</trans-unit>
<trans-unit id="894819944961861800" datatype="html">
<source> How does this work? </source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">223,225</context>
<context context-type="linenumber">228,230</context>
</context-group>
</trans-unit>
<trans-unit id="509090351011426949" datatype="html">
<source>Update available</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">234</context>
<context context-type="linenumber">239</context>
</context-group>
</trans-unit>
<trans-unit id="3011185103048412841" datatype="html">
@ -713,7 +738,22 @@
<source>An error occurred while saving update checking settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.ts</context>
<context context-type="linenumber">202</context>
<context context-type="linenumber">216</context>
</context-group>
</trans-unit>
<trans-unit id="8700121026680200191" datatype="html">
<source>Clear</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/clearable-badge/clearable-badge.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.html</context>
<context context-type="linenumber">24</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.html</context>
<context context-type="linenumber">47</context>
</context-group>
</trans-unit>
<trans-unit id="5000042972069710005" datatype="html">
@ -757,25 +797,14 @@
<source>After</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.html</context>
<context context-type="linenumber">21</context>
</context-group>
</trans-unit>
<trans-unit id="8700121026680200191" datatype="html">
<source>Clear</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.html</context>
<context context-type="linenumber">26</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.html</context>
<context context-type="linenumber">49</context>
<context context-type="linenumber">19</context>
</context-group>
</trans-unit>
<trans-unit id="1218334388194408974" datatype="html">
<source>Before</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="4873149362496451858" datatype="html">
@ -1133,7 +1162,7 @@
<source>All</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/filterable-dropdown/filterable-dropdown.component.html</context>
<context context-type="linenumber">21</context>
<context context-type="linenumber">16</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.html</context>
@ -1144,21 +1173,21 @@
<source>Any</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/filterable-dropdown/filterable-dropdown.component.html</context>
<context context-type="linenumber">23</context>
<context context-type="linenumber">18</context>
</context-group>
</trans-unit>
<trans-unit id="4391289919356861627" datatype="html">
<source>Apply</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/filterable-dropdown/filterable-dropdown.component.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="7780041345210191160" datatype="html">
<source>Click again to exclude items.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/filterable-dropdown/filterable-dropdown.component.html</context>
<context context-type="linenumber">43</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="7593728289020204896" datatype="html">
@ -1288,7 +1317,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.html</context>
<context context-type="linenumber">54</context>
<context context-type="linenumber">59</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/tasks/tasks.component.html</context>
@ -1621,13 +1650,6 @@
<context context-type="linenumber">50</context>
</context-group>
</trans-unit>
<trans-unit id="3885497195825665706" datatype="html">
<source>Next</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">55</context>
</context-group>
</trans-unit>
<trans-unit id="5028777105388019087" datatype="html">
<source>Details</source>
<context-group purpose="location">
@ -1665,7 +1687,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.html</context>
<context context-type="linenumber">30</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
@ -1688,7 +1710,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">42</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
@ -1711,7 +1733,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.html</context>
<context context-type="linenumber">44</context>
<context context-type="linenumber">49</context>
</context-group>
</trans-unit>
<trans-unit id="5607669932062416162" datatype="html">
@ -1973,7 +1995,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.html</context>
<context context-type="linenumber">23</context>
<context context-type="linenumber">28</context>
</context-group>
</trans-unit>
<trans-unit id="184185893993764098" datatype="html">
@ -1984,7 +2006,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.html</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">36</context>
</context-group>
</trans-unit>
<trans-unit id="2947613869920454977" datatype="html">
@ -1995,7 +2017,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.html</context>
<context context-type="linenumber">38</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="8816999377397522522" datatype="html">
@ -2006,7 +2028,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.html</context>
<context context-type="linenumber">45</context>
<context context-type="linenumber">50</context>
</context-group>
</trans-unit>
<trans-unit id="3193976279273491157" datatype="html">
@ -2493,7 +2515,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.html</context>
<context context-type="linenumber">60</context>
<context context-type="linenumber">65</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
@ -2525,7 +2547,7 @@
<source>Reset filters</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.html</context>
<context context-type="linenumber">73</context>
<context context-type="linenumber">78</context>
</context-group>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html">

View File

@ -116,6 +116,10 @@ export class AppComponent implements OnInit, OnDestroy {
}
})
const prevBtnTitle = $localize`Prev`
const nextBtnTitle = $localize`Next`
const endBtnTitle = $localize`End`
this.tourService.initialize([
{
anchorId: 'tour.dashboard',
@ -123,12 +127,18 @@ export class AppComponent implements OnInit, OnDestroy {
route: '/dashboard',
enableBackdrop: true,
delayAfterNavigation: 500,
prevBtnTitle,
nextBtnTitle,
endBtnTitle,
},
{
anchorId: 'tour.upload-widget',
content: $localize`Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms.`,
route: '/dashboard',
enableBackdrop: true,
prevBtnTitle,
nextBtnTitle,
endBtnTitle,
},
{
anchorId: 'tour.documents',
@ -138,6 +148,9 @@ export class AppComponent implements OnInit, OnDestroy {
placement: 'bottom',
enableBackdrop: true,
disableScrollToAnchor: true,
prevBtnTitle,
nextBtnTitle,
endBtnTitle,
},
{
anchorId: 'tour.documents-filter-editor',
@ -145,35 +158,53 @@ export class AppComponent implements OnInit, OnDestroy {
route: '/documents?sort=created&reverse=1&page=1',
placement: 'bottom',
enableBackdrop: true,
prevBtnTitle,
nextBtnTitle,
endBtnTitle,
},
{
anchorId: 'tour.documents-views',
content: $localize`Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar.`,
route: '/documents?sort=created&reverse=1&page=1',
enableBackdrop: true,
prevBtnTitle,
nextBtnTitle,
endBtnTitle,
},
{
anchorId: 'tour.tags',
content: $localize`Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view.`,
route: '/tags',
enableBackdrop: true,
prevBtnTitle,
nextBtnTitle,
endBtnTitle,
},
{
anchorId: 'tour.file-tasks',
content: $localize`File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process.`,
route: '/tasks',
enableBackdrop: true,
prevBtnTitle,
nextBtnTitle,
endBtnTitle,
},
{
anchorId: 'tour.settings',
content: $localize`Check out the settings for various tweaks to the web app or to toggle settings for saved views.`,
route: '/settings',
enableBackdrop: true,
prevBtnTitle,
nextBtnTitle,
endBtnTitle,
},
{
anchorId: 'tour.admin',
content: $localize`The Admin area contains more advanced controls as well as the settings for automatic e-mail fetching.`,
enableBackdrop: true,
prevBtnTitle,
nextBtnTitle,
endBtnTitle,
},
{
anchorId: 'tour.outro',
@ -183,6 +214,9 @@ export class AppComponent implements OnInit, OnDestroy {
'<br/><br/>' +
$localize`Lastly, on behalf of every contributor to this community-supported project, thank you for using Paperless-ngx!`,
route: '/dashboard',
prevBtnTitle,
nextBtnTitle,
endBtnTitle,
},
])

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -10,12 +10,10 @@ from typing import Tuple
import magic
from django.conf import settings
from pdf2image import convert_from_path
from pdf2image.exceptions import PDFPageCountError
from pikepdf import Page
from pikepdf import PasswordError
from pikepdf import Pdf
from pikepdf import PdfImage
from pikepdf.models.image import HifiPrintImageNotTranscodableError
from PIL import Image
from PIL import ImageSequence
from pyzbar import pyzbar
@ -101,7 +99,7 @@ def convert_from_tiff_to_pdf(filepath: str) -> str:
images[0].save(newpath)
else:
images[0].save(newpath, save_all=True, append_images=images[1:])
except OSError as e:
except OSError as e: # pragma: no cover
logger.warning(
f"Could not save the file as pdf. Error: {str(e)}",
)
@ -122,13 +120,16 @@ def scan_file_for_separating_barcodes(filepath: str) -> Tuple[Optional[str], Lis
for image_key in page.images:
pdfimage = PdfImage(page.images[image_key])
# This type is known to have issues:
# https://github.com/pikepdf/pikepdf/issues/401
if "/CCITTFaxDecode" in pdfimage.filters:
raise BarcodeImageFormatError(
"Unable to decode CCITTFaxDecode images",
)
# Not all images can be transcoded to a PIL image, which
# is what pyzbar expects to receive
# is what pyzbar expects to receive, so this may
# raise an exception, triggering fallback
pillow_img = pdfimage.as_pil_image()
detected_barcodes = barcode_reader(pillow_img)
@ -155,29 +156,23 @@ def scan_file_for_separating_barcodes(filepath: str) -> Tuple[Optional[str], Lis
if mime_type == "image/tiff":
pdf_filepath = convert_from_tiff_to_pdf(filepath)
# Chose the scanner
if settings.CONSUMER_USE_LEGACY_DETECTION:
logger.debug("Using pdf2image for barcodes")
scanner_function = _pdf2image_barcode_scan
else:
logger.debug("Using pikepdf for barcodes")
scanner_function = _pikepdf_barcode_scan
# Run the scanner
# Always try pikepdf first, it's usually fine, faster and
# uses less memory
try:
scanner_function(pdf_filepath)
# Neither method can handle password protected PDFs without it being
# provided. Log it and continue
except (PasswordError, PDFPageCountError) as e:
_pikepdf_barcode_scan(pdf_filepath)
# Password protected files can't be checked
except PasswordError as e:
logger.warning(
f"File is likely password protected, not splitting: {e}",
f"File is likely password protected, not checking for barcodes: {e}",
)
# Handle pikepdf related image decoding issues with a fallback
except (BarcodeImageFormatError, HifiPrintImageNotTranscodableError) as e:
# Handle pikepdf related image decoding issues with a fallback to page
# by page conversion to images in a temporary directory
except Exception as e:
logger.warning(
f"Falling back to pdf2image because: {e}",
)
try:
# Clear the list in case some processing worked
separator_page_numbers = []
_pdf2image_barcode_scan(pdf_filepath)
# This file is really borked, allow the consumption to continue
@ -186,11 +181,6 @@ def scan_file_for_separating_barcodes(filepath: str) -> Tuple[Optional[str], Lis
logger.warning(
f"Exception during barcode scanning: {e}",
)
# We're not sure what happened, but allow the consumption to continue
except Exception as e: # pragma: no cover
logger.warning(
f"Exception during barcode scanning: {e}",
)
else:
logger.warning(

View File

@ -94,7 +94,7 @@ def _consume(filepath):
logger.info(f"Adding {filepath} to the task queue.")
consume_file.delay(
filepath,
override_tag_ids=tag_ids if tag_ids else None,
override_tag_ids=list(tag_ids) if tag_ids else None,
)
except Exception:
# Catch all so that the consumer won't crash.

View File

@ -468,41 +468,6 @@ class TestBarcode(DirectoriesMixin, TestCase):
self.assertTrue(os.path.isfile(target_file1))
self.assertTrue(os.path.isfile(target_file2))
@override_settings(CONSUMER_USE_LEGACY_DETECTION=True)
def test_barcode_splitter_legacy_fallback(self):
"""
GIVEN:
- File containing barcode
- Legacy method of detection is enabled
WHEN:
- File is scanned for barcodes
THEN:
- Barcodes are properly detected
"""
test_file = os.path.join(
self.BARCODE_SAMPLE_DIR,
"patch-code-t-middle.pdf",
)
tempdir = tempfile.mkdtemp(prefix="paperless-", dir=settings.SCRATCH_DIR)
pdf_file, separator_page_numbers = barcodes.scan_file_for_separating_barcodes(
test_file,
)
self.assertEqual(test_file, pdf_file)
self.assertTrue(len(separator_page_numbers) > 0)
document_list = barcodes.separate_pages(test_file, separator_page_numbers)
self.assertTrue(document_list)
for document in document_list:
barcodes.save_to_dir(document, target_dir=tempdir)
target_file1 = os.path.join(tempdir, "patch-code-t-middle_document_0.pdf")
target_file2 = os.path.join(tempdir, "patch-code-t-middle_document_1.pdf")
self.assertTrue(os.path.isfile(target_file1))
self.assertTrue(os.path.isfile(target_file2))
@override_settings(CONSUMER_ENABLE_BARCODES=True)
def test_consume_barcode_file(self):
test_file = os.path.join(
@ -586,7 +551,7 @@ class TestBarcode(DirectoriesMixin, TestCase):
with mock.patch("documents.tasks.async_to_sync"):
self.assertEqual(tasks.consume_file(dst), "File successfully split")
def test_scan_file_for_separating_barcodes_password_pikepdf(self):
def test_scan_file_for_separating_barcodes_password(self):
"""
GIVEN:
- Password protected PDF
@ -603,22 +568,3 @@ class TestBarcode(DirectoriesMixin, TestCase):
self.assertEqual(pdf_file, test_file)
self.assertListEqual(separator_page_numbers, [])
@override_settings(CONSUMER_USE_LEGACY_DETECTION=True)
def test_scan_file_for_separating_barcodes_password_pdf2image(self):
"""
GIVEN:
- Password protected PDF
- pdf2image based scanning
WHEN:
- File is scanned for barcode
THEN:
- Scanning handle the exception without exception
"""
test_file = os.path.join(self.SAMPLE_DIR, "password-is-test.pdf")
pdf_file, separator_page_numbers = barcodes.scan_file_for_separating_barcodes(
test_file,
)
self.assertEqual(pdf_file, test_file)
self.assertListEqual(separator_page_numbers, [])

View File

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-07-08 22:07\n"
"PO-Revision-Date: 2022-10-20 23:30\n"
"Last-Translator: \n"
"Language-Team: Arabic, Arabic\n"
"Language: ar_AR\n"

View File

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-07-29 20:44\n"
"PO-Revision-Date: 2022-10-16 13:46\n"
"Last-Translator: \n"
"Language-Team: Belarusian\n"
"Language: be_BY\n"
@ -104,11 +104,11 @@ msgstr "шлях"
#: documents/models.py:96 documents/models.py:124
msgid "storage path"
msgstr ""
msgstr "шлях захоўвання"
#: documents/models.py:97
msgid "storage paths"
msgstr ""
msgstr "шляхі захоўвання"
#: documents/models.py:105
msgid "Unencrypted"
@ -376,7 +376,7 @@ msgstr "правілы фільтрацыі"
#: documents/models.py:521
msgid "started"
msgstr ""
msgstr "пачата"
#: documents/serialisers.py:70
#, python-format
@ -394,7 +394,7 @@ msgstr "Тып файла %(type)s не падтрымліваецца"
#: documents/serialisers.py:596
msgid "Invalid variable detected."
msgstr ""
msgstr "Выяўлена няправільная зменная."
#: documents/templates/index.html:78
msgid "Paperless-ngx is loading..."
@ -402,11 +402,11 @@ msgstr "Paperless-ngx загружаецца..."
#: documents/templates/index.html:79
msgid "Still here?! Hmm, something might be wrong."
msgstr ""
msgstr "Яшчэ тут?! Хм, можа нешта не так."
#: documents/templates/index.html:79
msgid "Here's a link to the docs."
msgstr ""
msgstr "Вось спасылка на дакументы."
#: documents/templates/registration/logged_out.html:14
msgid "Paperless-ngx signed out"
@ -450,7 +450,7 @@ msgstr "Англійская (ЗША)"
#: paperless/settings.py:340
msgid "Belarusian"
msgstr ""
msgstr "Беларуская"
#: paperless/settings.py:341
msgid "Czech"
@ -510,11 +510,11 @@ msgstr "Руская"
#: paperless/settings.py:355
msgid "Slovenian"
msgstr ""
msgstr "Славенская"
#: paperless/settings.py:356
msgid "Serbian"
msgstr ""
msgstr "Сербская"
#: paperless/settings.py:357
msgid "Swedish"
@ -522,11 +522,11 @@ msgstr "Шведская"
#: paperless/settings.py:358
msgid "Turkish"
msgstr ""
msgstr "Турэцкая"
#: paperless/settings.py:359
msgid "Chinese Simplified"
msgstr ""
msgstr "Кітайская спрошчаная"
#: paperless/urls.py:161
msgid "Paperless-ngx administration"
@ -654,7 +654,7 @@ msgstr "Пазначыць пошту, не апрацоўваць пазнач
#: paperless_mail/models.py:68
msgid "Tag the mail with specified tag, don't process tagged mails"
msgstr ""
msgstr "Пазначце ліст указаным тэгам, не апрацоўвайце пазначаныя лісты"
#: paperless_mail/models.py:71
msgid "Use subject as title"
@ -694,7 +694,7 @@ msgstr "каталог"
#: paperless_mail/models.py:96
msgid "Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server."
msgstr ""
msgstr "Укладзеныя папкі павінны быць падзеленыя падзельнікам, часта кропкай ('.') або касой рысай ('/'), але гэта адрозніваецца ў залежнасці ад паштовага сервера."
#: paperless_mail/models.py:102
msgid "filter from"

View File

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-07-08 22:07\n"
"PO-Revision-Date: 2022-10-18 20:06\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@ -84,7 +84,7 @@ msgstr "Označí tento tag jako tag pro příchozí: Všechny nově zkonzumovan
#: documents/models.py:78
msgid "tag"
msgstr ""
msgstr "tagy"
#: documents/models.py:79 documents/models.py:153
msgid "tags"
@ -100,15 +100,15 @@ msgstr "typy dokumentu"
#: documents/models.py:90
msgid "path"
msgstr ""
msgstr "cesta"
#: documents/models.py:96 documents/models.py:124
msgid "storage path"
msgstr ""
msgstr "cesta k úložišti"
#: documents/models.py:97
msgid "storage paths"
msgstr ""
msgstr "cesta k úložišti"
#: documents/models.py:105
msgid "Unencrypted"
@ -200,7 +200,7 @@ msgstr "dokumenty"
#: documents/models.py:318
msgid "debug"
msgstr ""
msgstr "ladění"
#: documents/models.py:319
msgid "information"
@ -356,7 +356,7 @@ msgstr "Podobné"
#: documents/models.py:396
msgid "has tags in"
msgstr ""
msgstr "má značky v"
#: documents/models.py:406
msgid "rule type"
@ -376,7 +376,7 @@ msgstr "filtrovací pravidla"
#: documents/models.py:521
msgid "started"
msgstr ""
msgstr "zahájeno"
#: documents/serialisers.py:70
#, python-format
@ -394,23 +394,23 @@ msgstr "Typ souboru %(type)s není podporován"
#: documents/serialisers.py:596
msgid "Invalid variable detected."
msgstr ""
msgstr "Zjištěna neplatná proměnná."
#: documents/templates/index.html:78
msgid "Paperless-ngx is loading..."
msgstr ""
msgstr "Paperless-ngx se načítá..."
#: documents/templates/index.html:79
msgid "Still here?! Hmm, something might be wrong."
msgstr ""
msgstr "Stále tady?! Hmm, možná se něco pokazilo."
#: documents/templates/index.html:79
msgid "Here's a link to the docs."
msgstr ""
msgstr "Zde je odkaz na dokumenty."
#: documents/templates/registration/logged_out.html:14
msgid "Paperless-ngx signed out"
msgstr ""
msgstr "Odhlášeno z Paperless-ngx"
#: documents/templates/registration/logged_out.html:59
msgid "You have been successfully logged out. Bye!"
@ -422,7 +422,7 @@ msgstr "Přihlašte se znovu"
#: documents/templates/registration/login.html:15
msgid "Paperless-ngx sign in"
msgstr ""
msgstr "Paperless-ngx přihlášení"
#: documents/templates/registration/login.html:61
msgid "Please sign in."
@ -450,15 +450,15 @@ msgstr "Angličtina (US)"
#: paperless/settings.py:340
msgid "Belarusian"
msgstr ""
msgstr "Běloruština"
#: paperless/settings.py:341
msgid "Czech"
msgstr ""
msgstr "Čeština"
#: paperless/settings.py:342
msgid "Danish"
msgstr ""
msgstr "Dánština"
#: paperless/settings.py:343
msgid "German"
@ -482,7 +482,7 @@ msgstr "Italština"
#: paperless/settings.py:348
msgid "Luxembourgish"
msgstr ""
msgstr "Lucemburština"
#: paperless/settings.py:349
msgid "Dutch"
@ -510,11 +510,11 @@ msgstr "Ruština"
#: paperless/settings.py:355
msgid "Slovenian"
msgstr ""
msgstr "Slovinština"
#: paperless/settings.py:356
msgid "Serbian"
msgstr ""
msgstr "Srbština"
#: paperless/settings.py:357
msgid "Swedish"
@ -522,15 +522,15 @@ msgstr "Švédština"
#: paperless/settings.py:358
msgid "Turkish"
msgstr ""
msgstr "Turečtina"
#: paperless/settings.py:359
msgid "Chinese Simplified"
msgstr ""
msgstr "Čínština (zjednodušená)"
#: paperless/urls.py:161
msgid "Paperless-ngx administration"
msgstr ""
msgstr "Správa Paperless-ngx"
#: paperless_mail/admin.py:29
msgid "Authentication"
@ -558,7 +558,7 @@ msgstr "Akce provedena na emailu. Tato akce je provedena jen pokud byly dokument
#: paperless_mail/admin.py:75
msgid "Metadata"
msgstr ""
msgstr "Metadata"
#: paperless_mail/admin.py:78
msgid "Assign metadata to documents consumed from this rule automatically. If you do not assign tags, types or correspondents here, paperless will still process all matching rules that you have defined."
@ -590,11 +590,11 @@ msgstr "Používat STARTTLS"
#: paperless_mail/models.py:18
msgid "IMAP server"
msgstr ""
msgstr "IMAP server"
#: paperless_mail/models.py:21
msgid "IMAP port"
msgstr ""
msgstr "IMAP port"
#: paperless_mail/models.py:25
msgid "This is usually 143 for unencrypted and STARTTLS connections, and 993 for SSL connections."
@ -654,7 +654,7 @@ msgstr "Označit email, nezpracovávat označené emaily"
#: paperless_mail/models.py:68
msgid "Tag the mail with specified tag, don't process tagged mails"
msgstr ""
msgstr "Označit e-mail zadaným štítkem, nezpracovávat označené e-maily"
#: paperless_mail/models.py:71
msgid "Use subject as title"
@ -694,7 +694,7 @@ msgstr "složka"
#: paperless_mail/models.py:96
msgid "Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server."
msgstr ""
msgstr "Podsložky musí být odděleny oddělovačem, nejčastěji tečkou ('.') nebo lomítkem ('/'), ale závisí to na e-mailovém serveru."
#: paperless_mail/models.py:102
msgid "filter from"

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-02-17 04:17\n"
"Last-Translator: \n"
"Language-Team: English\n"
@ -21,382 +21,494 @@ msgstr ""
msgid "Documents"
msgstr ""
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr ""
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr ""
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr ""
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr ""
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr ""
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr ""
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr ""
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr ""
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr ""
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr ""
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr ""
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr ""
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr ""
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr ""
#: documents/models.py:72
#: documents/models.py:75
msgid ""
"Marks this tag as an inbox tag: All newly consumed documents will be tagged "
"with inbox tags."
msgstr ""
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr ""
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr ""
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr ""
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr ""
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr ""
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr ""
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr ""
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr ""
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr ""
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr ""
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr ""
#: documents/models.py:142
#: documents/models.py:145
msgid ""
"The raw, text-only data of the document. This field is primarily used for "
"searching."
msgstr ""
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr ""
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr ""
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr ""
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr ""
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr ""
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr ""
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr ""
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr ""
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr ""
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr ""
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr ""
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr ""
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr ""
#: documents/models.py:218
msgid "archive serial number"
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:224
msgid "The position of this document in your physical document archive."
msgstr ""
#: documents/models.py:230
msgid "document"
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr ""
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr ""
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr ""
#: documents/models.py:244
msgid "documents"
msgstr ""
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr ""
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr ""
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr ""
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr ""
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr ""
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr ""
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr ""
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr ""
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr ""
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr ""
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr ""
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr ""
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr ""
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr ""
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr ""
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr ""
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr ""
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr ""
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr ""
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr ""
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr ""
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr ""
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr ""
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr ""
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr ""
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr ""
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr ""
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr ""
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr ""
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr ""
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr ""
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr ""
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr ""
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr ""
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr ""
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr ""
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr ""
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr ""
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr ""
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr ""
#: documents/models.py:406
msgid "rule type"
msgstr ""
#: documents/models.py:408
msgid "value"
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "filter rule"
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr ""
#: documents/models.py:424
msgid "value"
msgstr ""
#: documents/models.py:427
msgid "filter rule"
msgstr ""
#: documents/models.py:428
msgid "filter rules"
msgstr ""
#: documents/models.py:521
msgid "started"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr ""
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr ""
@ -448,87 +560,87 @@ msgstr ""
msgid "Sign in"
msgstr ""
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr ""
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr ""
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr ""
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr ""
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr ""
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr ""
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr ""
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr ""
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr ""
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr ""
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr ""
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr ""
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr ""
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr ""
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr ""
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr ""
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr ""
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr ""

View File

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-08-26 20:54\n"
"PO-Revision-Date: 2022-10-27 09:51\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@ -406,7 +406,7 @@ msgstr "Nog steeds hier?! Hmm, er kan iets mis zijn."
#: documents/templates/index.html:79
msgid "Here's a link to the docs."
msgstr ""
msgstr "Dit is een link naar de documentatie."
#: documents/templates/registration/logged_out.html:14
msgid "Paperless-ngx signed out"

View File

@ -573,11 +573,6 @@ CONSUMER_BARCODE_TIFF_SUPPORT: Final[bool] = __get_boolean(
"PAPERLESS_CONSUMER_BARCODE_TIFF_SUPPORT",
)
CONSUMER_USE_LEGACY_DETECTION: Final[bool] = __get_boolean(
"PAPERLESS_CONSUMER_USE_LEGACY_DETECTION",
"NO",
)
CONSUMER_BARCODE_STRING: Final[str] = os.getenv(
"PAPERLESS_CONSUMER_BARCODE_STRING",
"PATCHT",