Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Jonas Winkler 2021-05-16 01:23:07 +02:00
commit b12fcca20d
76 changed files with 1487 additions and 537 deletions

View File

@ -40,7 +40,7 @@ whitenoise = "~=5.2.0"
watchdog = "~=1.0.0"
whoosh="~=2.7.4"
inotifyrecursive = "~=0.3.4"
ocrmypdf = "~=11.6"
ocrmypdf = "~=12.0"
tqdm = "*"
tika = "*"
# TODO: This will sadly also install daphne+dependencies,

326
Pipfile.lock generated
View File

@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
"sha256": "6dd5af1c2a4025ca82cf6092121f4571fda57df7c47e028b8c25da20ef7e16cd"
"sha256": "2da6572956d27205c496da2ef5f584a9ba53b5f6b3c8bf1724211dc48bfac7b7"
},
"pipfile-spec": 6,
"requires": {},
@ -28,11 +28,11 @@
},
"arrow": {
"hashes": [
"sha256:3515630f11a15c61dcb4cdd245883270dd334c83f3e639824e65a4b79cc48543",
"sha256:399c9c8ae732270e1aa58ead835a79a40d7be8aa109c579898eb41029b5a231d"
"sha256:8cbe6a629b1c54ae11b52d6d9e70890089241958f63bc59467e277e34b7a5378",
"sha256:b8fe13abf3517abab315e09350c903902d1447bd311afbc17547ba1cb3ff5bd8"
],
"markers": "python_version >= '3.6'",
"version": "==1.0.3"
"version": "==1.1.0"
},
"asgiref": {
"hashes": [
@ -52,11 +52,11 @@
},
"attrs": {
"hashes": [
"sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6",
"sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"
"sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1",
"sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==20.3.0"
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==21.2.0"
},
"autobahn": {
"hashes": [
@ -225,11 +225,11 @@
},
"django": {
"hashes": [
"sha256:0604e84c4fb698a5e53e5857b5aea945b2f19a18f25f10b8748dbdf935788927",
"sha256:21f0f9643722675976004eb683c55d33c05486f94506672df3d6a141546f389d"
"sha256:13ac78dbfd189532cad8f383a27e58e18b3d33f80009ceb476d7fcbfc5dcebd8",
"sha256:7e0a1393d18c16b503663752a8b6790880c5084412618990ce8a81cc908b4962"
],
"index": "pypi",
"version": "==3.2"
"version": "==3.2.3"
},
"django-cors-headers": {
"hashes": [
@ -241,11 +241,11 @@
},
"django-extensions": {
"hashes": [
"sha256:081828e985485662f62a22340c1506e37989d14b927652079a5b7cd84a82368b",
"sha256:17f85f4dcdd5eea09b8c4f0bad8f0370bf2db6d03e61b431fa7103fee29888de"
"sha256:50de8977794a66a91575dd40f87d5053608f679561731845edbd325ceeb387e3",
"sha256:5f0fea7bf131ca303090352577a9e7f8bfbf5489bd9d9c8aea9401db28db34a0"
],
"index": "pypi",
"version": "==3.1.2"
"version": "==3.1.3"
},
"django-filter": {
"hashes": [
@ -301,6 +301,7 @@
"gunicorn": {
"hashes": [
"sha256:8d737657cdd62f483d482ee65cf9cc6a64d5b2199674f8b174803be9065e5d60",
"sha256:9dcc4547dbb1cb284accfb15ab5667a0e5d1881cc443e0677b4882a4067a807e",
"sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8"
],
"index": "pypi",
@ -364,22 +365,25 @@
},
"httptools": {
"hashes": [
"sha256:0a4b1b2012b28e68306575ad14ad5e9120b34fccd02a81eb08838d7e3bbb48be",
"sha256:3592e854424ec94bd17dc3e0c96a64e459ec4147e6d53c0a42d0ebcef9cb9c5d",
"sha256:41b573cf33f64a8f8f3400d0a7faf48e1888582b6f6e02b82b9bd4f0bf7497ce",
"sha256:56b6393c6ac7abe632f2294da53f30d279130a92e8ae39d8d14ee2e1b05ad1f2",
"sha256:7f6c82262d3bdde886a29ae0d65d4fae6b3ac6fba763891ddb72e72e1dbe7075",
"sha256:86c6acd66765a934e8730bf0e9dfaac6fdcf2a4334212bd4a0a1c78f16475ca6",
"sha256:96da81e1992be8ac2fd5597bf0283d832287e20cb3cfde8996d2b00356d4e17f",
"sha256:96eb359252aeed57ea5c7b3d79839aaa0382c9d3149f7d24dd7172b1bcecb009",
"sha256:a2719e1d7a84bb131c4f1e0cb79705034b48de6ae486eb5297a139d6a3296dce",
"sha256:ac0aa11e99454b6a66989aa2d44bca41d4e0f968e395a0a8f164b401fefe359a",
"sha256:bc3114b9edbca5a1eb7ae7db698c669eb53eb8afbbebdde116c174925260849c",
"sha256:cb46a65a0ed99c38dfcbf9f5be8be6cf9cb497e527505fefac7cbd38a467f3c6",
"sha256:fa3cd71e31436911a44620473e873a256851e1f53dee56669dae403ba41756a4",
"sha256:fea04e126014169384dee76a153d4573d90d0cbd1d12185da089f73c78390437"
"sha256:07659649fe6b3948b6490825f89abe5eb1cec79ebfaaa0b4bf30f3f33f3c2ba8",
"sha256:08b79e09114e6ab5c3dbf560bba2cb2257ea38cdaeaf99b7cb80d8f92622fcd9",
"sha256:1e35aa179b67086cc600a984924a88589b90793c9c1b260152ca4908786e09df",
"sha256:31629e1f1b89959f8c0927bad12184dc07977dcf71e24f4772934aa490aa199b",
"sha256:7792e70ead1d220142a99dde049fdbeddc66fe822953e085d02cd5155c38cdad",
"sha256:851026bd63ec0af7e7592890d97d15c92b62d9e17094353f19a52c8e2b33710a",
"sha256:8fcca4b7efe353b13a24017211334c57d055a6e132c7adffed13a10d28efca57",
"sha256:9abd788465aa46a0f288bd3a99e53edd184177d6379e2098fd6097bb359ad9d6",
"sha256:aebdf0bd7bf7c90ae6b3be458692bf6e9e5b610b501f9f74c7979015a51db4c4",
"sha256:bda99a5723e7eab355ce57435c70853fc137a65aebf2f1cd4d15d96e2956da7b",
"sha256:c1c63d860749841024951b0a78e4dec6f543d23751ef061d6ab60064c7b8b524",
"sha256:c4111a0a8a00eff1e495d43ea5230aaf64968a48ddba8ea2d5f982efae827404",
"sha256:dce59ee45dd6ee6c434346a5ac527c44014326f560866b4b2f414a692ee1aca8",
"sha256:f759717ca1b2ef498c67ba4169c2b33eecf943a89f5329abcff8b89d153eb500",
"sha256:f9545ff74bdf8a6e013ed18af3e24c656c06b6ca2441074be2f6cc28e24f48de",
"sha256:fb7199b8fb0c50a22e77260bb59017e0c075fa80cb03bb2c8692de76e7bb7fe7",
"sha256:fbf7ecd31c39728f251b1c095fd27c84e4d21f60a1d079a0333472ff3ae59d34"
],
"version": "==0.1.1"
"version": "==0.1.2"
},
"humanfriendly": {
"hashes": [
@ -407,18 +411,18 @@
},
"imap-tools": {
"hashes": [
"sha256:00fa5b5046c0437976ad7dd5e45b1847bfd5d14bb858c9b19a5cf2994bba96d9",
"sha256:3b4d0a911bc48ea7c0beac6a15b6f65b6fdf2b066a67cd3536253ec98e401e83"
"sha256:3b15cea943ee84072ed6f3424df138aa1908dcee7d368ad81843e2166b8283e0",
"sha256:e4f47bcea98db7502efae4da973c7dded8b632b57bf4acf1d317742701bfb571"
],
"index": "pypi",
"version": "==0.39.0"
"version": "==0.41.0"
},
"img2pdf": {
"hashes": [
"sha256:57905015579b1026acf1605aa95859cd79b051fa1c35485573d165526fc9dbb5",
"sha256:eaee690ab8403dd1a9cb4db10afee41dd3e6c7ed63bdace02a0121f9feadb0c9"
"sha256:38a1229ca84b211d7782d1d65ad7251a9781bf24f6f6497c738c755fcfed5552",
"sha256:e7eb85dc87062e308066f2b0a9dbfb3c5c0bd306dec0cf9130e3836c0547253a"
],
"version": "==0.4.0"
"version": "==0.4.1"
},
"incremental": {
"hashes": [
@ -453,12 +457,12 @@
},
"langdetect": {
"hashes": [
"sha256:363795ea005f1243c958e953245dac5d814fabdc025c9afa91588c5fa6b2fa83",
"sha256:ae53a024643df713274c297c0795dbfb5a16b329902f8e543e7b2d7d45f699e4",
"sha256:f37495e63607865e47deed08d78f7f8e58172658216ff954b2f14671bcd87740"
"sha256:7cbc0746252f19e76f77c0b1690aadf01963be835ef0cd4b56dddf2a8f1dfc2a",
"sha256:87963db181db734abf00b1c463df5cadb3f9edad8efb334d3e52d5ad008d9cc7",
"sha256:cbc1fef89f8d062739774bd51eda3da3274006b3661d199c2655f6b3f6d605a0"
],
"index": "pypi",
"version": "==1.0.8"
"version": "==1.0.9"
},
"lxml": {
"hashes": [
@ -466,18 +470,24 @@
"sha256:0fbcf5565ac01dff87cbfc0ff323515c823081c5777a9fc7703ff58388c258c3",
"sha256:122fba10466c7bd4178b07dba427aa516286b846b2cbd6f6169141917283aae2",
"sha256:1822d16e5ac9061749955d099ff50c6cbc068f8cbfde28dfbeea845f7fbe6e09",
"sha256:1b38116b6e628118dea5b2186ee6820ab138dbb1e24a13e478490c7db2f326ae",
"sha256:1b7584d421d254ab86d4f0b13ec662a9014397678a7c4265a02a6d7c2b18a75f",
"sha256:26e761ab5b07adf5f555ee82fb4bfc35bf93750499c6c7614bd64d12aaa67927",
"sha256:289e9ca1a9287f08daaf796d96e06cb2bc2958891d7911ac7cae1c5f9e1e0ee3",
"sha256:2a9d50e69aac3ebee695424f7dbd7b8c6d6eb7de2a2eb6b0f6c7db6aa41e02b7",
"sha256:3082c518be8e97324390614dacd041bb1358c882d77108ca1957ba47738d9d59",
"sha256:33bb934a044cf32157c12bfcfbb6649807da20aa92c062ef51903415c704704f",
"sha256:3439c71103ef0e904ea0a1901611863e51f50b5cd5e8654a151740fde5e1cade",
"sha256:36108c73739985979bf302006527cf8a20515ce444ba916281d1c43938b8bb96",
"sha256:39b78571b3b30645ac77b95f7c69d1bffc4cf8c3b157c435a34da72e78c82468",
"sha256:4289728b5e2000a4ad4ab8da6e1db2e093c63c08bdc0414799ee776a3f78da4b",
"sha256:4bff24dfeea62f2e56f5bab929b4428ae6caba2d1eea0c2d6eb618e30a71e6d4",
"sha256:4c61b3a0db43a1607d6264166b230438f85bfed02e8cff20c22e564d0faff354",
"sha256:542d454665a3e277f76954418124d67516c5f88e51a900365ed54a9806122b83",
"sha256:5a0a14e264069c03e46f926be0d8919f4105c1623d620e7ec0e612a2e9bf1c04",
"sha256:5c8c163396cc0df3fd151b927e74f6e4acd67160d6c33304e805b84293351d16",
"sha256:66e575c62792c3f9ca47cb8b6fab9e35bab91360c783d1606f758761810c9791",
"sha256:6f12e1427285008fd32a6025e38e977d44d6382cf28e7201ed10d6c1698d2a9a",
"sha256:74f69060f98a70e3654de3021cd8162859e0f30b9e69aed76ef2b7a2e3b84212",
"sha256:74f7d8d439b18fa4c385f3f5dfd11144bb87c1da034a466c5b5577d23a1d9b51",
"sha256:7610b8c31688f0b1be0ef882889817939490a36d0ee880ea562a4e1399c447a1",
@ -491,10 +501,14 @@
"sha256:b007cbb845b28db4fb8b6a5cdcbf65bacb16a8bd328b53cbc0698688a68e1caa",
"sha256:bc4313cbeb0e7a416a488d72f9680fffffc645f8a838bd2193809881c67dd106",
"sha256:bccbfc27563652de7dc9bdc595cb25e90b59c5f8e23e806ed0fd623755b6565d",
"sha256:c47ff7e0a36d4efac9fd692cfa33fbd0636674c102e9e8d9b26e1b93a94e7617",
"sha256:c4f05c5a7c49d2fb70223d0d5bcfbe474cf928310ac9fa6a7c6dddc831d0b1d4",
"sha256:cdaf11d2bd275bf391b5308f86731e5194a21af45fbaaaf1d9e8147b9160ea92",
"sha256:ce256aaa50f6cc9a649c51be3cd4ff142d67295bfc4f490c9134d0f9f6d58ef0",
"sha256:d2e35d7bf1c1ac8c538f88d26b396e73dd81440d59c1ef8522e1ea77b345ede4",
"sha256:d916d31fd85b2f78c76400d625076d9124de3e4bda8b016d25a050cc7d603f24",
"sha256:df7c53783a46febb0e70f6b05df2ba104610f2fb0d27023409734a3ecbb78fb2",
"sha256:e1cbd3f19a61e27e011e02f9600837b921ac661f0c40560eefb366e4e4fb275e",
"sha256:efac139c3f0bf4f0939f9375af4b02c5ad83a622de52d6dfa8e438e8e01d0eb0",
"sha256:efd7a09678fd8b53117f6bae4fa3825e0a22b03ef0a932e070c0bdbb3a35e654",
"sha256:f2380a6376dfa090227b663f9678150ef27543483055cc327555fb592c5967e2",
@ -582,11 +596,11 @@
},
"ocrmypdf": {
"hashes": [
"sha256:329b070959731c277f0df91cfe011dd4da0d6534f23a739a3aa77bdab00fbc2f",
"sha256:b63df1b6bf37f29b41cb07f0328240a235d84c3dffc3a32299c71fa94c92d419"
"sha256:3a757ac8bc4f822052a363c7fdc1e01e01033ae3e3398123990813eb6b3cf031",
"sha256:c18db17e18984f540eaa774245571e3ec63a74f459b6029de561a06a77e78310"
],
"index": "pypi",
"version": "==11.7.3"
"version": "==12.0.1"
},
"pathvalidate": {
"hashes": [
@ -606,32 +620,32 @@
},
"pikepdf": {
"hashes": [
"sha256:14a93f2b61adc975453dfc9edf3335be704732a8750a009ba3d12913ff043abe",
"sha256:25ba3bf96eae3a7c897db5bf6a60b26ebde1c161145af73a044950901b754bcb",
"sha256:29742273f80e75c48e700c5438636fe78a856e1706e353ea57715732fb75fcd6",
"sha256:3790ed5b9d0db8c8bd28d96cb10b91649179eac04873ed23e6dc474515892cc3",
"sha256:3a76702b12f78abe591a6270756a56225a63a26c5a00aad8bc3ffd8680178ab2",
"sha256:56ce22cd134c96035abf984aa167a16e7c658c3ccc0cd626a7002f911eba7452",
"sha256:578e80adcd4703b752c381517853a074633baa219be4bd36d6752fb742a0f8b4",
"sha256:5b286e9862a21bbe9dfb0da827818f710a303d9b78f821710c37e8059839c7da",
"sha256:6b12c8835f52d07cb68f30d115e1361cd1143f1aa2c70f49ded6d69d9c4fcdd2",
"sha256:6e6dd17783c6cf038b179dcf662982d1cca891a3e30232aec0221cc69821b7f1",
"sha256:7e4e7e53781d85a609bdf899d585a39a69e9eedf2b9ac75261685a1aff0072ea",
"sha256:810488f80a1d93652498222f9d1391d9287b3b842971d7a8878e69a287c2476f",
"sha256:85ab867102d7c2182acf852c61ca60c90790bfbb4a939dc096054d904318ba37",
"sha256:8babd800331978d20d82ed1494868d15f5b953266c2b943a7d34e4826016e0b8",
"sha256:94f20e08cdfcba011440204fd9df381af1c423a9888dfd3287b66d9e7e1421bf",
"sha256:9d4a1cc8da1860d8772e831b03ea05386ae6a805718cd8621de736725d52a901",
"sha256:9f67e2c57413ac8be4eec5344c2bcaeb1a18c59fe348afd589d9b95bd4dfc077",
"sha256:b4c64ddc8fe9b11dc52f81d38076bd560ce97abf4695151d2eab390ae760fcac",
"sha256:b5d4431e77f32fd1edc10d214db89b33f2c7f8ceb7152a6651192ef90945db17",
"sha256:d3a0cf2dcc10cd7a7b877e955cfac7ddee6050860a39375f46218f7f1c02e903",
"sha256:dd551d5ff0e4c95537a366fb2281152c7293e60d60bf6ba909faba7d0ee669ad",
"sha256:dea790ae9809ab0ed0f5e32c938d36441f5ab3e74a884692ce84902e8ed1187b",
"sha256:fe47949abbf9f67416e545b0c61c8e75546f1ad8f4cfbe5ee608824258cdaa3e"
"sha256:087dc8e141dcfa0e76e93227a22f6b9cee000b3837b9e048ba96f389d0ee5d41",
"sha256:1bcf4e45a831b302a0b6ae6cbd41aa6c81f95964b1d61e8da41186a4a779f701",
"sha256:22d6615e742e7320a3a77148f65a8ba3591c054133faf6305a525c439b57cf38",
"sha256:24d51dcc2d73e5d123acab4fef5d611f545ff2ce16c837d85833364d4d2cda45",
"sha256:26a3af4845db89f364d18757978fad39ea852b6e7cae3137000a07c44d292b42",
"sha256:36e9d557ef0505a6ec335faf9b2c93d4d062daa339dd1a6cbcda2a6dc886b38e",
"sha256:417abdc29be8ddedabeb100a728b6525c5e1967ba47a03b9e0a81391efb4feb1",
"sha256:5e71dcefdd889538a289cdaa2bb4559e4477e3f17846ffbdfad54b0e76443cf5",
"sha256:62a6f2e2552bfd1bcd17b5e0e024db9ab7e93db39f43bb4246faff9b01154d47",
"sha256:7a054701104c601d72b5ab8b3025a44b1b400f334ee7259dbd4bb1a2c24dad03",
"sha256:7dcf6545c7deb2f6511a3b9220d56297b4165eeedc2eab785acba698cc9d95c0",
"sha256:82da7b5d5a57e4704f7a81e75324b07b19577a96e06f5c5d8a89b29dec814766",
"sha256:8cdafd18013b17f257655e95bfcb4ef14a7fc84a7334a9877b0532db4b55e3ff",
"sha256:a0ff0291f74ef45dd2a1e1316b7d6464b996351365debbf611a5293cf2ff2562",
"sha256:a2ef88f786aed79da559cd1a6a844f99e258971d64670bfba1efad96ed175fb0",
"sha256:a84bbc7b3f9819c1541913bac2781da40d9506255c1cedb7233f9027ce23db92",
"sha256:b1e0cfb6f5abe4d4863c55b2c9424340e5b44095789ef1368a0de99f8b4f852e",
"sha256:ca8efe77f1f44d3c1c0d738407b87816f1445438aa6873d45e58fdd595e96c98",
"sha256:d0f48252f23c128a3ddde16d98fa6567ac7fbce6792209771183b57c744106e1",
"sha256:e1d988ddf063d6abf3d71e7c5bc46e5690fdcf0b06d7f00fced5d0b908f92267",
"sha256:ec9d853c895693dd55b12ae37056808e192e5e2a8d2486cb30d19a5e7d6ff6a9",
"sha256:fcbb6e37426564ccaf6bb301616700277d426225895b00a64283a95ff648f3b9",
"sha256:ff29a8bd50f47554be7e062b3e1a2b466a7f567e1e49417dc62c3948b28304c7"
],
"index": "pypi",
"version": "==2.11.1"
"version": "==2.12.0"
},
"pillow": {
"hashes": [
@ -794,11 +808,11 @@
},
"python-dotenv": {
"hashes": [
"sha256:471b782da0af10da1a80341e8438fca5fadeba2881c54360d5fd8d03d03a4f4a",
"sha256:49782a97c9d641e8a09ae1d9af0856cc587c8d2474919342d5104d85be9890b2"
"sha256:00aa34e92d992e9f8383730816359647f358f4a3be1ba45e5a5cefd27ee91544",
"sha256:b1ae5e9643d5ed987fc57cc2583021e38db531946518130777734f9589b3141f"
],
"index": "pypi",
"version": "==0.17.0"
"version": "==0.17.1"
},
"python-gnupg": {
"hashes": [
@ -849,6 +863,7 @@
"sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183",
"sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541",
"sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb",
"sha256:8fc87fd1a1d30991d9198a4317e90dfaf3d2963c013608a019e8311568fa08b2",
"sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185",
"sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc",
"sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db",
@ -1032,18 +1047,18 @@
},
"service-identity": {
"hashes": [
"sha256:001c0707759cb3de7e49c078a7c0c9cd12594161d3bf06b9c254fdcb1a60dc36",
"sha256:0858a54aabc5b459d1aafa8a518ed2081a285087f349fe3e55197989232e2e2d"
"sha256:6e6c6086ca271dc11b033d17c3a8bea9f24ebff920c587da090afc9519419d34",
"sha256:f0b0caac3d40627c3c04d7a51b6e06721857a0e10a8775f2d1d7e72901b3a7db"
],
"version": "==18.1.0"
"version": "==21.1.0"
},
"six": {
"hashes": [
"sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259",
"sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.15.0"
"version": "==1.16.0"
},
"sortedcontainers": {
"hashes": [
@ -1312,19 +1327,19 @@
},
"attrs": {
"hashes": [
"sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6",
"sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"
"sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1",
"sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==20.3.0"
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==21.2.0"
},
"babel": {
"hashes": [
"sha256:9d35c22fcc79893c3ecc85ac4a56cde1ecf3f19c540bba0922308a6c06ca6fa5",
"sha256:da031ab54472314f210b0adcff1588ee5d1d1d0ba4dbd07b94dba82bde791e05"
"sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9",
"sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==2.9.0"
"version": "==2.9.1"
},
"certifi": {
"hashes": [
@ -1342,6 +1357,9 @@
"version": "==4.0.0"
},
"coverage": {
"extras": [
"toml"
],
"hashes": [
"sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c",
"sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6",
@ -1447,11 +1465,11 @@
},
"faker": {
"hashes": [
"sha256:26c7c3df8d46f1db595a34962f8967021dd90bbd38cc6e27461a3fb16cd413ae",
"sha256:44eb060fad3015690ff3fec6564d7171be393021e820ad1851d96cb968fbfcd4"
"sha256:73562fb99b6046c5d26b8dd98a1437a896f8601c96382d835c656166159f4f59",
"sha256:c6a4a0a1dde71f16d489a3097661a87ae96329dbde4c3ece8a5ccc340441ade1"
],
"markers": "python_version >= '3.6'",
"version": "==8.1.0"
"version": "==8.1.4"
},
"filelock": {
"hashes": [
@ -1488,72 +1506,52 @@
},
"jinja2": {
"hashes": [
"sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419",
"sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"
"sha256:2f2de5285cf37f33d33ecd4a9080b75c87cd0c1994d5a9c6df17131ea1f049c6",
"sha256:ea8d7dd814ce9df6de6a761ec7f1cac98afe305b8cdc4aaae4e114b8d8ce24c5"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==2.11.3"
"markers": "python_version >= '3.6'",
"version": "==3.0.0"
},
"markupsafe": {
"hashes": [
"sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473",
"sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161",
"sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235",
"sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5",
"sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42",
"sha256:19536834abffb3fa155017053c607cb835b2ecc6a3a2554a88043d991dffb736",
"sha256:195d7d2c4fbb0ee8139a6cf67194f3973a6b3042d742ebe0a9ed36d8b6f0c07f",
"sha256:22c178a091fc6630d0d045bdb5992d2dfe14e3259760e713c490da5323866c39",
"sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff",
"sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b",
"sha256:2beec1e0de6924ea551859edb9e7679da6e4870d32cb766240ce17e0a0ba2014",
"sha256:3b8a6499709d29c2e2399569d96719a1b21dcd94410a586a18526b143ec8470f",
"sha256:3d61f15e39611aacd91b7e71d903787da86d9e80896e683c0103fced9add7834",
"sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1",
"sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e",
"sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183",
"sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66",
"sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b",
"sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1",
"sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15",
"sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1",
"sha256:6f1e273a344928347c1290119b493a1f0303c52f5a5eae5f16d74f48c15d4a85",
"sha256:6fffc775d90dcc9aed1b89219549b329a9250d918fd0b8fa8d93d154918422e1",
"sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e",
"sha256:7952deddf24b85c88dab48f6ec366ac6e39d2761b5280f2f9594911e03fcd064",
"sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b",
"sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905",
"sha256:7fed13866cf14bba33e7176717346713881f56d9d2bcebab207f7a036f41b850",
"sha256:84dee80c15f1b560d55bcfe6d47b27d070b4681c699c572af2e3c7cc90a3b8e0",
"sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735",
"sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d",
"sha256:98bae9582248d6cf62321dcb52aaf5d9adf0bad3b40582925ef7c7f0ed85fceb",
"sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e",
"sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d",
"sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c",
"sha256:a6a744282b7718a2a62d2ed9d993cad6f5f585605ad352c11de459f4108df0a1",
"sha256:acf08ac40292838b3cbbb06cfe9b2cb9ec78fce8baca31ddb87aaac2e2dc3bc2",
"sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21",
"sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2",
"sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5",
"sha256:b1dba4527182c95a0db8b6060cc98ac49b9e2f5e64320e2b56e47cb2831978c7",
"sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b",
"sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8",
"sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6",
"sha256:bf5aa3cbcfdf57fa2ee9cd1822c862ef23037f5c832ad09cfea57fa846dec193",
"sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f",
"sha256:caabedc8323f1e93231b52fc32bdcde6db817623d33e100708d9a68e1f53b26b",
"sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f",
"sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2",
"sha256:d53bc011414228441014aa71dbec320c66468c1030aae3a6e29778a3382d96e5",
"sha256:d73a845f227b0bfe8a7455ee623525ee656a9e2e749e4742706d80a6065d5e2c",
"sha256:d9be0ba6c527163cbed5e0857c451fcd092ce83947944d6c14bc95441203f032",
"sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7",
"sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be",
"sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621"
"sha256:007dc055dbce5b1104876acee177dbfd18757e19d562cd440182e1f492e96b95",
"sha256:031bf79a27d1c42f69c276d6221172417b47cb4b31cdc73d362a9bf5a1889b9f",
"sha256:161d575fa49395860b75da5135162481768b11208490d5a2143ae6785123e77d",
"sha256:24bbc3507fb6dfff663af7900a631f2aca90d5a445f272db5fc84999fa5718bc",
"sha256:2efaeb1baff547063bad2b2893a8f5e9c459c4624e1a96644bbba08910ae34e0",
"sha256:31d4206caf9be06b8e7a85de4df933d159b4877d4fc308ca8192d97faf56a41e",
"sha256:32200f562daaab472921a11cbb63780f1654552ae49518196fc361ed8e12e901",
"sha256:3261fae28155e5c8634dd7710635fe540a05b58f160cef7713c7700cb9980e66",
"sha256:3b54a9c68995ef4164567e2cd1a5e16db5dac30b2a50c39c82db8d4afaf14f63",
"sha256:3c352ff634e289061711608f5e474ec38dbaa21e3e168820d53d5f4015e5b91b",
"sha256:3fb47f97f1d338b943126e90b79cad50d4fcfa0b80637b5a9f468941dbbd9ce5",
"sha256:441ce2a8c17683d97e06447fcbccbdb057cbf587c78eb75ae43ea7858042fe2c",
"sha256:45535241baa0fc0ba2a43961a1ac7562ca3257f46c4c3e9c0de38b722be41bd1",
"sha256:4aca81a687975b35e3e80bcf9aa93fe10cd57fac37bf18b2314c186095f57e05",
"sha256:4cc563836f13c57f1473bc02d1e01fc37bab70ad4ee6be297d58c1d66bc819bf",
"sha256:4fae0677f712ee090721d8b17f412f1cbceefbf0dc180fe91bab3232f38b4527",
"sha256:58bc9fce3e1557d463ef5cee05391a05745fd95ed660f23c1742c711712c0abb",
"sha256:664832fb88b8162268928df233f4b12a144a0c78b01d38b81bdcf0fc96668ecb",
"sha256:70820a1c96311e02449591cbdf5cd1c6a34d5194d5b55094ab725364375c9eb2",
"sha256:79b2ae94fa991be023832e6bcc00f41dbc8e5fe9d997a02db965831402551730",
"sha256:83cf0228b2f694dcdba1374d5312f2277269d798e65f40344964f642935feac1",
"sha256:87de598edfa2230ff274c4de7fcf24c73ffd96208c8e1912d5d0fee459767d75",
"sha256:8f806bfd0f218477d7c46a11d3e52dc7f5fdfaa981b18202b7dc84bbc287463b",
"sha256:90053234a6479738fd40d155268af631c7fca33365f964f2208867da1349294b",
"sha256:a00dce2d96587651ef4fa192c17e039e8cfab63087c67e7d263a5533c7dad715",
"sha256:a08cd07d3c3c17cd33d9e66ea9dee8f8fc1c48e2d11bd88fd2dc515a602c709b",
"sha256:a19d39b02a24d3082856a5b06490b714a9d4179321225bbf22809ff1e1887cc8",
"sha256:d00a669e4a5bec3ee6dbeeeedd82a405ced19f8aeefb109a012ea88a45afff96",
"sha256:dab0c685f21f4a6c95bfc2afd1e7eae0033b403dd3d8c1b6d13a652ada75b348",
"sha256:df561f65049ed3556e5b52541669310e88713fdae2934845ec3606f283337958",
"sha256:e4570d16f88c7f3032ed909dc9e905a17da14a1c4cfd92608e3fda4cb1208bbd",
"sha256:e77e4b983e2441aff0c0d07ee711110c106b625f440292dfe02a2f60c8218bd6",
"sha256:e79212d09fc0e224d20b43ad44bb0a0a3416d1e04cf6b45fed265114a5d43d20",
"sha256:f58b5ba13a5689ca8317b98439fccfbcc673acaaf8241c1869ceea40f5d585bf",
"sha256:fef86115fdad7ae774720d7103aa776144cf9b66673b4afa9bcaa7af990ed07b"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.1.1"
"markers": "python_version >= '3.6'",
"version": "==2.0.0"
},
"packaging": {
"hashes": [
@ -1589,11 +1587,11 @@
},
"pygments": {
"hashes": [
"sha256:2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94",
"sha256:534ef71d539ae97d4c3a4cf7d6f110f214b0e687e92f9cb9d2a3b0d3101289c8"
"sha256:a18f47b506a429f6f4b9df81bb02beab9ca21d0a5fee38ed15aef65f0545519f",
"sha256:d66e804411278594d764fc69ec36ec13d9ae9147193a1740cd34d272ca383b8e"
],
"markers": "python_version >= '3.5'",
"version": "==2.8.1"
"version": "==2.9.0"
},
"pyparsing": {
"hashes": [
@ -1605,19 +1603,19 @@
},
"pytest": {
"hashes": [
"sha256:671238a46e4df0f3498d1c3270e5deb9b32d25134c99b7d75370a68cfbe9b634",
"sha256:6ad9c7bdf517a808242b998ac20063c41532a570d088d77eec1ee12b0b5574bc"
"sha256:50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b",
"sha256:91ef2131a9bd6be8f76f1f08eac5c5317221d6ad1e143ae03894b862e8976890"
],
"index": "pypi",
"version": "==6.2.3"
"version": "==6.2.4"
},
"pytest-cov": {
"hashes": [
"sha256:359952d9d39b9f822d9d29324483e7ba04a3a17dd7d05aa6beb7ea01e359e5f7",
"sha256:bdb9fdb0b85a7cc825269a4c56b48ccaa5c7e365054b6038772c32ddcdc969da"
"sha256:8535764137fecce504a49c2b742288e3d34bc09eed298ad65963616cc98fd45e",
"sha256:95d4933dcbbacfa377bb60b29801daa30d90c33981ab2a79e9ab4452c165066e"
],
"index": "pypi",
"version": "==2.11.1"
"version": "==2.12.0"
},
"pytest-django": {
"hashes": [
@ -1685,11 +1683,11 @@
},
"six": {
"hashes": [
"sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259",
"sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.15.0"
"version": "==1.16.0"
},
"snowballstemmer": {
"hashes": [
@ -1786,11 +1784,11 @@
},
"tox": {
"hashes": [
"sha256:05a4dbd5e4d3d8269b72b55600f0b0303e2eb47ad5c6fe76d3576f4c58d93661",
"sha256:e007673f3595cede9b17a7c4962389e4305d4a3682a6c5a4159a1453b4f326aa"
"sha256:307a81ddb82bd463971a273f33e9533a24ed22185f27db8ce3386bff27d324e3",
"sha256:b0b5818049a1c1997599d42012a637a33f24c62ab8187223fdd318fa8522637b"
],
"index": "pypi",
"version": "==3.23.0"
"version": "==3.23.1"
},
"urllib3": {
"hashes": [
@ -1802,11 +1800,11 @@
},
"virtualenv": {
"hashes": [
"sha256:49ec4eb4c224c6f7dd81bb6d0a28a09ecae5894f4e593c89b0db0885f565a107",
"sha256:83f95875d382c7abafe06bd2a4cdd1b363e1bb77e02f155ebe8ac082a916b37c"
"sha256:307a555cf21e1550885c82120eccaf5acedf42978fd362d32ba8410f9593f543",
"sha256:72cf267afc04bf9c86ec932329b7e94db6a0331ae9847576daaa7ca3c86b29a4"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==20.4.3"
"version": "==20.4.6"
}
}
}

View File

@ -5,6 +5,23 @@
Changelog
*********
paperless-ng 1.4.3
##################
* Additions and changes
* Added Swedish locale.
* `Stéphane Brunner`_ added an option to disable the progress bars of all management commands.
* `Jo Vandeginste`_ added support for RTF documents to the Apache TIKA parser.
* `Michael Shamoon`_ added dark mode for the login and logout pages.
* `Alexander Menk`_ added additional stylesheets for printing. You can now print any page of paperless and the print result will hide the page header, sidebar, and action buttons.
* Added support for sorting when using full text search.
* Fixes
* `puuu`_ fixed ``PAPERLESS_FORCE_SCRIPT_NAME``. You can now host paperless on sub paths such as ``https://localhost:8000/paperless/``.
* Fixed an issue with the document consumer crashing on certain documents due to issues with pdfminer.six. This library is used for PDF text extraction.
paperless-ng 1.4.2
##################
@ -1366,6 +1383,8 @@ bulk of the work on this big change.
* Initial release
.. _Alexander Menk: https://github.com/amenk
.. _puuu: https://github.com/puuu
.. _WhiteHatTux: https://github.com/WhiteHatTux
.. _Chris Nagy: https://github.com/what-name
.. _sbrl: https://github.com/sbrl

View File

@ -154,10 +154,6 @@ PAPERLESS_FORCE_SCRIPT_NAME=<path>
To host paperless under a subpath url like example.com/paperless you set
this value to /paperless. No trailing slash!
.. note::
I don't know if this works in paperless-ng. Probably not.
Defaults to none, which hosts paperless at "/".
PAPERLESS_STATIC_URL=<path>

View File

@ -460,6 +460,7 @@ Install Paperless using ansible
.. note::
This role currently only supports Debian 10 Buster and Ubuntu 20.04 Focal or later as target hosts.
Additionally, only i386 or amd64 based hosts are supported right now, i.e. installation on arm hosts will fail.
1. Install ansible 2.7+ on the management node.
This may be the target host paperless-ng is being installed on or any remote host which can access the target host.
@ -485,29 +486,22 @@ Install Paperless using ansible
ansible -m ping YourAnsibleTargetHostGoesHere
2. Clone the repository of paperless-ng:
2. Install the latest tag of the ansible role using ansible-galaxy
.. code:: sh
git clone https://github.com/jonaswinkler/paperless-ng
ansible-galaxy install git+https://github.com/jonaswinkler/paperless-ng.git,ng-1.4.2
Checkout the latest release tag:
.. code:: sh
cd paperless-ng
git checkout ng-1.0.0
3. Create an ansible ``playbook.yml`` in the paperless-ng root directory:
3. Create an ansible ``playbook.yml`` in a directory of your choice:
.. code:: yaml
- hosts: YourAnsibleTargetHostGoesHere
become: yes
vars_files:
- ansible/vars.yml
- vars/paperless-ng.yml
roles:
- ansible
- paperless-ng
Optional: If you also want to use PostgreSQL on the target system, install and add (for example) the `geerlingguy.postgresql <https://github.com/geerlingguy/ansible-role-postgresql>`_ role:
@ -520,10 +514,10 @@ Install Paperless using ansible
- hosts: YourAnsibleTargetHostGoesHere
become: yes
vars_files:
- ansible/vars.yml
- vars/paperless-ng.yml
roles:
- geerlingguy.postgresql
- ansible
- paperless-ng
Optional: If you also want to use a reverse proxy on the target system, install and add (for example) the `geerlingguy.nginx <https://github.com/geerlingguy/ansible-role-nginx>`_ role:
@ -536,13 +530,13 @@ Install Paperless using ansible
- hosts: YourAnsibleTargetHostGoesHere
become: yes
vars_files:
- ansible/vars.yml
- vars/paperless-ng.yml
roles:
- geerlingguy.postgresql
- ansible
- paperless-ng
- geerlingguy.nginx
4. Create ``ansible/vars.yml`` to configure your ansible deployment:
4. Create ``vars/paperless-ng.yml`` to configure your ansible deployment:
.. code:: yaml

View File

@ -2,7 +2,7 @@ import os
bind = '0.0.0.0:8000'
workers = int(os.getenv("PAPERLESS_WEBSERVER_WORKERS", 2))
worker_class = 'uvicorn.workers.UvicornWorker'
worker_class = 'paperless.workers.ConfigurableWorker'
timeout = 120
def pre_fork(server, worker):

View File

@ -8,10 +8,10 @@
-i https://pypi.python.org/simple
--extra-index-url https://www.piwheels.org/simple
aioredis==1.3.1
arrow==1.0.3; python_version >= '3.6'
arrow==1.1.0; python_version >= '3.6'
asgiref==3.3.4; python_version >= '3.6'
async-timeout==3.0.1; python_full_version >= '3.5.3'
attrs==20.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
attrs==21.2.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
autobahn==21.3.1; python_version >= '3.7'
automat==20.2.0
blessed==1.18.0
@ -28,35 +28,35 @@ cryptography==3.4.7
daphne==3.0.2; python_version >= '3.6'
dateparser==1.0.0
django-cors-headers==3.7.0
django-extensions==3.1.2
django-extensions==3.1.3
django-filter==2.4.0
django-picklefield==3.0.1; python_version >= '3'
django-q==1.3.4
django==3.2
django==3.2.3
djangorestframework==3.12.4
filelock==3.0.12
fuzzywuzzy[speedup]==0.18.0
gunicorn==20.1.0
h11==0.12.0; python_version >= '3.6'
hiredis==2.0.0; python_version >= '3.6'
httptools==0.1.1
httptools==0.1.2
humanfriendly==9.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
hyperlink==21.0.0
idna==2.10; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
imap-tools==0.39.0
img2pdf==0.4.0
imap-tools==0.41.0
img2pdf==0.4.1
incremental==21.3.0
inotify-simple==1.3.5; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
inotifyrecursive==0.3.5
joblib==1.0.1; python_version >= '3.6'
langdetect==1.0.8
langdetect==1.0.9
lxml==4.6.3; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
msgpack==1.0.2
numpy==1.19.5
ocrmypdf==11.7.3
ocrmypdf==12.0.1
pathvalidate==2.4.1
pdfminer.six==20201018
pikepdf==2.11.1
pikepdf==2.12.0
pillow==8.2.0
pluggy==0.13.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
portalocker==2.3.0; python_version >= '3'
@ -66,7 +66,7 @@ pyasn1==0.4.8
pycparser==2.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
pyopenssl==20.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
python-dateutil==2.8.1
python-dotenv==0.17.0
python-dotenv==0.17.1
python-gnupg==0.4.7
python-levenshtein==0.12.2
python-magic==0.4.22
@ -78,8 +78,8 @@ reportlab==3.5.67; python_version >= '2.7' and python_version < '4'
requests==2.25.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
scikit-learn==0.24.0
scipy==1.5.4
service-identity==18.1.0
six==1.15.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
service-identity==21.1.0
six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
sortedcontainers==2.3.0
sqlparse==0.4.1; python_version >= '3.5'
threadpoolctl==2.1.0; python_version >= '3.5'

View File

@ -1,5 +1,5 @@
[Unit]
Description=Paperless consumer
Description=Paperless scheduler
Requires=redis.service
[Service]

View File

@ -1407,11 +1407,19 @@
<context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="27d158b47717ff9305d19866960418c603f19d55" datatype="html">
@ -1421,6 +1429,13 @@
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1889,6 +1904,14 @@
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -18,7 +18,7 @@ export class AppComponent implements OnInit, OnDestroy {
constructor (private settings: SettingsService, private consumerStatusService: ConsumerStatusService, private toastService: ToastService, private router: Router) {
let anyWindow = (window as any)
anyWindow.pdfWorkerSrc = '/assets/js/pdf.worker.min.js';
anyWindow.pdfWorkerSrc = 'assets/js/pdf.worker.min.js';
this.settings.updateDarkModeSettings()
}

View File

@ -8,6 +8,8 @@
[clearable]="allowNull"
[items]="items"
[addTag]="allowCreateNew && addItemRef"
addTagText="Add item"
i18n-addTagText="Used for both types and correspondents"
bindLabel="name"
bindValue="id"
(change)="onChange(value)"

View File

@ -9,6 +9,7 @@
[hideSelected]="true"
[addTag]="createTagRef"
addTagText="Add tag"
i18n-addTagText
(change)="onChange(value)"
(search)="onSearch($event)"
(focus)="clearLastSearchTerm()"

View File

@ -83,7 +83,7 @@
<small>{{document.created | customDate:'mediumDate'}}</small>
</div>
<div *ngIf="document.__search_hit__" class="list-group-item bg-light text-dark border-0 d-flex p-0 pl-4 search-score">
<div *ngIf="document.__search_hit__?.score" class="list-group-item bg-light text-dark border-0 d-flex p-0 pl-4 search-score">
<small class="text-muted" i18n>Score:</small>
<ngb-progressbar [type]="searchScoreClass" [value]="document.__search_hit__.score" class="search-score-bar mx-2 mt-1" [max]="1"></ngb-progressbar>
</div>

View File

@ -2,14 +2,14 @@ import { Component, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from
import { ActivatedRoute, Router } from '@angular/router';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { Subscription } from 'rxjs';
import { FilterRule } from 'src/app/data/filter-rule';
import { FilterRule, isFullTextFilterRule } from 'src/app/data/filter-rule';
import { FILTER_FULLTEXT_MORELIKE } from 'src/app/data/filter-rule-type';
import { PaperlessDocument } from 'src/app/data/paperless-document';
import { PaperlessSavedView } from 'src/app/data/paperless-saved-view';
import { SortableDirective, SortEvent } from 'src/app/directives/sortable.directive';
import { ConsumerStatusService } from 'src/app/services/consumer-status.service';
import { DocumentListViewService } from 'src/app/services/document-list-view.service';
import { DOCUMENT_SORT_FIELDS } from 'src/app/services/rest/document.service';
import { DOCUMENT_SORT_FIELDS, DOCUMENT_SORT_FIELDS_FULLTEXT } from 'src/app/services/rest/document.service';
import { SavedViewService } from 'src/app/services/rest/saved-view.service';
import { ToastService } from 'src/app/services/toast.service';
import { FilterEditorComponent } from './filter-editor/filter-editor.component';
@ -52,7 +52,7 @@ export class DocumentListComponent implements OnInit, OnDestroy {
}
getSortFields() {
return DOCUMENT_SORT_FIELDS
return isFullTextFilterRule(this.list.filterRules) ? DOCUMENT_SORT_FIELDS_FULLTEXT : DOCUMENT_SORT_FIELDS
}
onSort(event: SortEvent) {

View File

@ -1,3 +1,5 @@
import { FILTER_FULLTEXT_MORELIKE, FILTER_FULLTEXT_QUERY } from "./filter-rule-type"
export function cloneFilterRules(filterRules: FilterRule[]): FilterRule[] {
if (filterRules) {
let newRules: FilterRule[] = []
@ -10,6 +12,10 @@ export function cloneFilterRules(filterRules: FilterRule[]): FilterRule[] {
}
}
export function isFullTextFilterRule(filterRules: FilterRule[]): boolean {
return filterRules.find(r => r.rule_type == FILTER_FULLTEXT_QUERY || r.rule_type == FILTER_FULLTEXT_MORELIKE) != null
}
export interface FilterRule {
rule_type: number
value: string

View File

@ -125,7 +125,7 @@ export class ConsumerStatusService {
connect() {
this.disconnect()
this.statusWebSocket = new WebSocket(`${environment.webSocketProtocol}//${environment.webSocketHost}/ws/status/`);
this.statusWebSocket = new WebSocket(`${environment.webSocketProtocol}//${environment.webSocketHost}${environment.webSocketBaseUrl}status/`);
this.statusWebSocket.onmessage = (ev) => {
let statusMessage: WebsocketConsumerStatusMessage = JSON.parse(ev['data'])

View File

@ -1,28 +1,53 @@
import { Injectable } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Observable } from 'rxjs';
import { cloneFilterRules, FilterRule } from '../data/filter-rule';
import { FILTER_FULLTEXT_MORELIKE, FILTER_FULLTEXT_QUERY } from '../data/filter-rule-type';
import { cloneFilterRules, FilterRule, isFullTextFilterRule } from '../data/filter-rule';
import { PaperlessDocument } from '../data/paperless-document';
import { PaperlessSavedView } from '../data/paperless-saved-view';
import { DOCUMENT_LIST_SERVICE } from '../data/storage-keys';
import { DocumentService } from './rest/document.service';
import { SettingsService, SETTINGS_KEYS } from './settings.service';
/**
* Captures the current state of the list view.
*/
interface ListViewState {
/**
* Title of the document list view. Either "Documents" (localized) or the name of a saved view.
*/
title?: string
/**
* Current paginated list of documents displayed.
*/
documents?: PaperlessDocument[]
currentPage: number
/**
* Total amount of documents with the current filter rules. Used to calculate the number of pages.
*/
collectionSize: number
/**
* Currently selected sort field.
*/
sortField: string
/**
* True if the list is sorted in reverse.
*/
sortReverse: boolean
/**
* Filter rules for the current list view.
*/
filterRules: FilterRule[]
/**
* Contains the IDs of all selected documents.
*/
selected?: Set<number>
}
@ -134,10 +159,10 @@ export class DocumentListViewService {
}
set filterRules(filterRules: FilterRule[]) {
this.activeListViewState.filterRules = filterRules
if (filterRules.find(r => (r.rule_type == FILTER_FULLTEXT_QUERY || r.rule_type == FILTER_FULLTEXT_MORELIKE))) {
this.activeListViewState.currentPage = 1
if (!isFullTextFilterRule(filterRules) && this.activeListViewState.sortField == "score") {
this.activeListViewState.sortField = "created"
}
this.activeListViewState.filterRules = filterRules
this.reload()
this.reduceSelectionToFilter()
this.saveDocumentListView()
@ -213,6 +238,10 @@ export class DocumentListViewService {
this._activeSavedViewId = null
this.activeListViewState.filterRules = filterRules
this.activeListViewState.currentPage = 1
if (isFullTextFilterRule(filterRules)) {
this.activeListViewState.sortField = "score"
this.activeListViewState.sortReverse = false
}
this.reduceSelectionToFilter()
this.saveDocumentListView()
if (this.router.url == "/documents") {

View File

@ -23,6 +23,11 @@ export const DOCUMENT_SORT_FIELDS = [
{ field: 'modified', name: $localize`Modified` }
]
export const DOCUMENT_SORT_FIELDS_FULLTEXT = [
...DOCUMENT_SORT_FIELDS,
{ field: 'score', name: $localize`:Score is a value returned by the full text search engine and specifies how well a result matches the given query:Search score` }
]
export interface SelectionDataItem {
id: number
document_count: number

View File

@ -1,9 +1,12 @@
const base_url = new URL(document.baseURI)
export const environment = {
production: true,
apiBaseUrl: "/api/",
apiBaseUrl: document.baseURI + "api/",
apiVersion: "2",
appTitle: "Paperless-ng",
version: "1.4.2",
version: "1.4.3",
webSocketHost: window.location.host,
webSocketProtocol: (window.location.protocol == "https:" ? "wss:" : "ws:")
webSocketProtocol: (window.location.protocol == "https:" ? "wss:" : "ws:"),
webSocketBaseUrl: base_url.pathname + "ws/",
};

View File

@ -9,7 +9,8 @@ export const environment = {
appTitle: "Paperless-ng",
version: "DEVELOPMENT",
webSocketHost: "localhost:8000",
webSocketProtocol: "ws:"
webSocketProtocol: "ws:",
webSocketBaseUrl: "/ws/",
};
/*

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="needs-translation">Download originals</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="needs-translation">Add item</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="needs-translation">Suggestions:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="needs-translation">Save current view</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Add tag</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="needs-translation">Polish</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="needs-translation">Swedish</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="needs-translation">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="needs-translation">Modified</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="needs-translation">Search score</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="translated">Originale herunterladen</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="translated">Element hinzufügen</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="translated">Vorschläge:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="translated">Aktuelle Ansicht speichern</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="translated">Tag hinzufügen</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="translated">Polnisch</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="translated">Schwedisch</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="translated">Geändert am</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="translated">Relevanz</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="translated">Download originals</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="needs-translation">Add item</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="translated">Suggestions:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="translated">Save current view</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Add tag</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="translated">Polish</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="translated">Swedish</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="translated">Modified</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="needs-translation">Search score</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="translated">Descargar originales</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="needs-translation">Add item</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="translated">Sugerencias:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="translated">Guardar la vista actual</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Add tag</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="needs-translation">Polish</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="needs-translation">Swedish</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="translated">Modificado</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="needs-translation">Search score</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="translated">Télécharger les originaux</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="needs-translation">Add item</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="translated">Suggestions : </target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="translated">Enregistrer la vue actuelle</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Add tag</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="translated">Polonais</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="translated">Suédois</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="translated">Date de modification</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="needs-translation">Search score</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="needs-translation">Download originals</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="needs-translation">Add item</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="needs-translation">Suggestions:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="translated">Jelenlegi nézet mentése</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Add tag</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="needs-translation">Polish</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="needs-translation">Swedish</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="needs-translation">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="translated">Módosítva</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="needs-translation">Search score</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="translated">Scarica originali</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="needs-translation">Add item</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="translated">Suggerimenti:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="translated">Salva vista corrente</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Add tag</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="translated">Polacco</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="translated">Svedese</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="translated">Modificato</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="needs-translation">Search score</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="translated">Originelen downloaden</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="needs-translation">Add item</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="translated">Suggesties:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="translated">Huidige view opslaan</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Add tag</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="translated">Pools</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="translated">Zweeds</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="translated">Gewijzigd</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="needs-translation">Search score</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="translated">Pobierz oryginały</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="needs-translation">Add item</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="translated">Sugestie:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="translated">Zapisz bieżący widok</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Add tag</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="translated">Polski</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="needs-translation">Swedish</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="translated">Zmodyfikowano</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="needs-translation">Search score</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="translated">Descarregar originais</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="needs-translation">Add item</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="translated">Sugestões:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="translated">Salvar visualização atual</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Add tag</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="needs-translation">Polish</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="needs-translation">Swedish</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="translated">Modificado</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="needs-translation">Search score</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="translated">Descarregar originais</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="needs-translation">Add item</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="translated">Sugestões:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="translated">Guardar a vista atual</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Add tag</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="translated">Polaco</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="translated">Sueco</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="translated">Modificado</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="needs-translation">Search score</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="translated">Descarcă originalele</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="needs-translation">Add item</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="translated">Sugestii:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="translated">Salvează vizualizarea curenta</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Add tag</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1855,7 +1872,7 @@
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="needs-translation">Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
<target state="translated">Se caută documentul cu asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source>
@ -1975,13 +1992,21 @@
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">101</context>
</context-group>
<target state="needs-translation">Polish</target>
<target state="translated">Poloneză</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="translated">Suedeză</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="translated">Modificat</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="needs-translation">Search score</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="translated">Скачать оригиналы</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="needs-translation">Add item</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="translated">Рекомендации:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="translated">Сохранить текущее представление</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Add tag</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="needs-translation">Polish</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="needs-translation">Swedish</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="translated">Изменено</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="needs-translation">Search score</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="translated">Ladda ner original</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="translated">Lägg till objekt</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="translated">Förslag:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="translated">Spara aktuell vy</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="translated">Lägg till tagg</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="translated">Polska</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="translated">Svenska</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="translated">Ändrad</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="translated">Sök resultat</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target>crwdns3238:0crwdne3238:0</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target>crwdns3450:0crwdne3450:0</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target>crwdns3240:0crwdne3240:0</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target>crwdns3242:0crwdne3242:0</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target>crwdns3452:0crwdne3452:0</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target>crwdns3442:0crwdne3442:0</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target>crwdns3446:0crwdne3446:0</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target>crwdns3322:0crwdne3322:0</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target>crwdns3364:0crwdne3364:0</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target>crwdns3454:0crwdne3454:0</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group>
<target state="needs-translation">Download originals</target>
</trans-unit>
<trans-unit id="0f72a164f5a5d10d1fbdeeb84ac80a63c04b7e1b" datatype="html">
<source>Add item</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">Used for both types and correspondents</note>
<target state="needs-translation">Add item</target>
</trans-unit>
<trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="needs-translation">Suggestions:</target>
</trans-unit>
@ -1623,6 +1632,14 @@
</context-group>
<target state="needs-translation">Save current view</target>
</trans-unit>
<trans-unit id="21fd41eb147f55ca26362f9c398e47733639837a" datatype="html">
<source>Add tag</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Add tag</target>
</trans-unit>
<trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source>
<context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group>
<target state="needs-translation">Polish</target>
</trans-unit>
<trans-unit id="499386805970351976" datatype="html">
<source>Swedish</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">102</context>
</context-group>
<target state="needs-translation">Swedish</target>
</trans-unit>
<trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">106</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="needs-translation">ISO 8601</target>
</trans-unit>
@ -2149,6 +2174,15 @@
</context-group>
<target state="needs-translation">Modified</target>
</trans-unit>
<trans-unit id="4460262093225954455" datatype="html">
<source>Search score</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">Score is a value returned by the full text search engine and specifies how well a result matches the given query</note>
<target state="needs-translation">Search score</target>
</trans-unit>
<trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source>
<context-group purpose="location">

30
src-ui/src/print.scss Normal file
View File

@ -0,0 +1,30 @@
@media print {
#sidebarMenu, .btn-toolbar {
display: none !important
}
.sticky-top {
display: none;
}
main, main.ml-sm-auto, main.mx-sm-auto {
margin-left: 0 !important;
margin-right: 0 !important;
}
main.col-lg-10 {
max-width: 100%;
flex-basis: 100%;
display: block;
}
.d-none.d-lg-table-cell { // always display ASN on print
display: table-cell !important;
}
app-document-list table {
thead th:first-child, tbody td:first-child { // hide checkboxes
display: none;
}
}
}

View File

@ -1,5 +1,6 @@
@import "theme";
@import "theme_dark";
@import "print";
@import "node_modules/bootstrap/scss/bootstrap";
@import "~@ng-select/ng-select/themes/default.theme.css";

View File

@ -7,7 +7,7 @@ from dateutil.parser import isoparse
from django.conf import settings
from whoosh import highlight, classify, query
from whoosh.fields import Schema, TEXT, NUMERIC, KEYWORD, DATETIME, BOOLEAN
from whoosh.highlight import Formatter, get_text, HtmlFormatter
from whoosh.highlight import HtmlFormatter
from whoosh.index import create_in, exists_in, open_dir
from whoosh.qparser import MultifieldParser
from whoosh.qparser.dateparse import DateParserPlugin
@ -147,12 +147,10 @@ def remove_document_from_index(document):
class DelayedQuery:
@property
def _query(self):
def _get_query(self):
raise NotImplementedError()
@property
def _query_filter(self):
def _get_query_filter(self):
criterias = []
for k, v in self.query_params.items():
if k == 'correspondent__id':
@ -185,16 +183,32 @@ class DelayedQuery:
else:
return None
@property
def _query_sortedby(self):
# if not 'ordering' in self.query_params:
return None, False
def _get_query_sortedby(self):
if 'ordering' not in self.query_params:
return None, False
# o: str = self.query_params['ordering']
# if o.startswith('-'):
# return o[1:], True
# else:
# return o, False
field: str = self.query_params['ordering']
sort_fields_map = {
"created": "created",
"modified": "modified",
"added": "added",
"title": "title",
"correspondent__name": "correspondent",
"document_type__name": "type",
"archive_serial_number": "asn"
}
if field.startswith('-'):
field = field[1:]
reverse = True
else:
reverse = False
if field not in sort_fields_map:
return None, False
else:
return sort_fields_map[field], reverse
def __init__(self, searcher: Searcher, query_params, page_size):
self.searcher = searcher
@ -211,13 +225,13 @@ class DelayedQuery:
if item.start in self.saved_results:
return self.saved_results[item.start]
q, mask = self._query
sortedby, reverse = self._query_sortedby
q, mask = self._get_query()
sortedby, reverse = self._get_query_sortedby()
page: ResultsPage = self.searcher.search_page(
q,
mask=mask,
filter=self._query_filter,
filter=self._get_query_filter(),
pagenum=math.floor(item.start / self.page_size) + 1,
pagelen=self.page_size,
sortedby=sortedby,
@ -227,14 +241,18 @@ class DelayedQuery:
surround=50)
page.results.formatter = HtmlFormatter(tagname="span", between=" ... ")
if not self.first_score and len(page.results) > 0:
if (not self.first_score and
len(page.results) > 0 and
sortedby is None):
self.first_score = page.results[0].score
if self.first_score:
page.results.top_n = list(map(
lambda hit: (hit[0] / self.first_score, hit[1]),
page.results.top_n
))
page.results.top_n = list(map(
lambda hit: (
(hit[0] / self.first_score) if self.first_score else None,
hit[1]
),
page.results.top_n
))
self.saved_results[item.start] = page
@ -243,8 +261,7 @@ class DelayedQuery:
class DelayedFullTextQuery(DelayedQuery):
@property
def _query(self):
def _get_query(self):
q_str = self.query_params['query']
qp = MultifieldParser(
["content", "title", "correspondent", "tag", "type"],
@ -261,8 +278,7 @@ class DelayedFullTextQuery(DelayedQuery):
class DelayedMoreLikeThisQuery(DelayedQuery):
@property
def _query(self):
def _get_query(self):
more_like_doc_id = int(self.query_params['more_like_id'])
content = Document.objects.get(id=more_like_doc_id).content

View File

@ -106,6 +106,12 @@ class Command(BaseCommand):
help="Specify the ID of a document, and this command will only "
"run on this specific document."
)
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def handle(self, *args, **options):
@ -140,7 +146,8 @@ class Command(BaseCommand):
handle_document,
document_ids
),
total=len(document_ids)
total=len(document_ids),
disable=options['no_progress_bar']
))
except KeyboardInterrupt:
print("Aborting...")

View File

@ -57,6 +57,12 @@ class Command(BaseCommand):
"do not belong to the current export, such as files from "
"deleted documents."
)
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def __init__(self, *args, **kwargs):
BaseCommand.__init__(self, *args, **kwargs)
@ -81,9 +87,9 @@ class Command(BaseCommand):
raise CommandError("That path doesn't appear to be writable")
with FileLock(settings.MEDIA_LOCK):
self.dump()
self.dump(options['no_progress_bar'])
def dump(self):
def dump(self, progress_bar_disable=False):
# 1. Take a snapshot of what files exist in the current export folder
for root, dirs, files in os.walk(self.target):
self.files_in_export_dir.extend(
@ -124,8 +130,11 @@ class Command(BaseCommand):
"json", User.objects.all()))
# 3. Export files from each document
for index, document_dict in tqdm.tqdm(enumerate(document_manifest),
total=len(document_manifest)):
for index, document_dict in tqdm.tqdm(
enumerate(document_manifest),
total=len(document_manifest),
disable=progress_bar_disable
):
# 3.1. store files unencrypted
document_dict["fields"]["storage_type"] = Document.STORAGE_TYPE_UNENCRYPTED # NOQA: E501

View File

@ -36,6 +36,12 @@ class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument("source")
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def __init__(self, *args, **kwargs):
BaseCommand.__init__(self, *args, **kwargs)
@ -70,7 +76,7 @@ class Command(BaseCommand):
# Fill up the database with whatever is in the manifest
call_command("loaddata", manifest_path)
self._import_files_from_manifest()
self._import_files_from_manifest(options['no_progress_bar'])
print("Updating search index...")
call_command('document_index', 'reindex')
@ -111,7 +117,7 @@ class Command(BaseCommand):
f"does not appear to be in the source directory."
)
def _import_files_from_manifest(self):
def _import_files_from_manifest(self, progress_bar_disable):
os.makedirs(settings.ORIGINALS_DIR, exist_ok=True)
os.makedirs(settings.THUMBNAIL_DIR, exist_ok=True)
@ -123,7 +129,10 @@ class Command(BaseCommand):
lambda r: r["model"] == "documents.document",
self.manifest))
for record in tqdm.tqdm(manifest_documents):
for record in tqdm.tqdm(
manifest_documents,
disable=progress_bar_disable
):
document = Document.objects.get(pk=record["pk"])

View File

@ -10,10 +10,16 @@ class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument("command", choices=['reindex', 'optimize'])
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def handle(self, *args, **options):
with transaction.atomic():
if options['command'] == 'reindex':
index_reindex()
index_reindex(progress_bar_disable=options['no_progress_bar'])
elif options['command'] == 'optimize':
index_optimize()

View File

@ -13,9 +13,20 @@ class Command(BaseCommand):
This will rename all documents to match the latest filename format.
""".replace(" ", "")
def add_arguments(self, parser):
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def handle(self, *args, **options):
logging.getLogger().handlers[0].level = logging.ERROR
for document in tqdm.tqdm(Document.objects.all()):
for document in tqdm.tqdm(
Document.objects.all(),
disable=options['no_progress_bar']
):
post_save.send(Document, instance=document)

View File

@ -57,6 +57,12 @@ class Command(BaseCommand):
"set correspondent, document and remove correspondents, types"
"and tags that do not match anymore due to changed rules."
)
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def handle(self, *args, **options):
@ -68,7 +74,10 @@ class Command(BaseCommand):
classifier = load_classifier()
for document in tqdm.tqdm(documents):
for document in tqdm.tqdm(
documents,
disable=options['no_progress_bar']
):
if options['correspondent']:
set_correspondent(

View File

@ -8,8 +8,16 @@ class Command(BaseCommand):
This command checks your document archive for issues.
""".replace(" ", "")
def add_arguments(self, parser):
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def handle(self, *args, **options):
messages = check_sanity(progress=True)
messages = check_sanity(progress=not options['no_progress_bar'])
messages.log_messages()

View File

@ -47,6 +47,12 @@ class Command(BaseCommand):
help="Specify the ID of a document, and this command will only "
"run on this specific document."
)
parser.add_argument(
"--no-progress-bar",
default=False,
action="store_true",
help="If set, the progress bar will not be shown"
)
def handle(self, *args, **options):
logging.getLogger().handlers[0].level = logging.ERROR
@ -65,5 +71,7 @@ class Command(BaseCommand):
with multiprocessing.Pool() as pool:
list(tqdm.tqdm(
pool.imap_unordered(_process_document, ids), total=len(ids)
pool.imap_unordered(_process_document, ids),
total=len(ids),
disable=options['no_progress_bar']
))

View File

@ -60,12 +60,7 @@ def check_sanity(progress=False):
if lockfile in present_files:
present_files.remove(lockfile)
if progress:
docs = tqdm(Document.objects.all())
else:
docs = Document.objects.all()
for doc in docs:
for doc in tqdm(Document.objects.all(), disable=not progress):
# Check sanity of the thumbnail
if not os.path.isfile(doc.thumbnail_path):
messages.error(f"Thumbnail of document {doc.pk} does not exist.")

View File

@ -42,3 +42,58 @@ body {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
@media (prefers-color-scheme: dark) {
/*
From theme_dark.scss
$primary-dark-mode: #45973a;
$danger-dark-mode: #b71631;
$bg-dark-mode: #161618;
$bg-dark-mode-accent: #21262d;
$bg-light-dark-mode: #1c1c1f;
$text-color-dark-mode: #abb2bf;
$border-color-dark-mode: #47494f;
*/
body {
background-color: #161618 !important;
color: #abb2bf;
}
svg.logo .text {
fill: #abb2bf!important;
}
.form-control:not(.is-invalid):not(.btn) {
border-color: #47494f;
}
.form-control:not(.btn) {
background-color: #161618;
color: #abb2bf;
}
.form-control:not(.btn)::placeholder {
color: #abb2bf;
}
.form-control:not(.btn):focus {
background-color: #1c1c1f !important;
color: #8e97a9 !important;
}
.btn-primary {
color: #fff;
background-color: #17541f;
border-color: #17541f;
}
.btn-primary:hover, .btn-primary:focus {
background-color: #0f3614;
border-color: #0c2c10;
}
.btn-primary:not(:disabled):not(.disabled):active {
background-color: #0c2c10;
border-color: #09220d;
}
}

View File

@ -20,13 +20,13 @@ def index_optimize():
writer.commit(optimize=True)
def index_reindex():
def index_reindex(progress_bar_disable=False):
documents = Document.objects.all()
ix = index.open_index(recreate=True)
with AsyncWriter(ix) as writer:
for document in tqdm.tqdm(documents):
for document in tqdm.tqdm(documents, disable=progress_bar_disable):
index.update_document(writer, document)

View File

@ -7,11 +7,12 @@
<head>
<meta charset="utf-8">
<title>Paperless-ng</title>
<base href="/">
<base href="{% url 'base' %}">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="username" content="{{username}}">
<meta name="full_name" content="{{full_name}}">
<meta name="cookie_prefix" content="{{cookie_prefix}}">
<meta name="robots" content="noindex,nofollow">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="manifest" href="{% static webmanifest %}">
<link rel="stylesheet" href="{% static styles_css %}">

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -471,6 +471,31 @@ class TestDocumentApi(DirectoriesMixin, APITestCase):
self.assertNotIn(d5.id, search_query("&added__date__lt=" + datetime.datetime(2020, 1, 2).strftime("%Y-%m-%d")))
self.assertIn(d5.id, search_query("&added__date__gt=" + datetime.datetime(2020, 1, 2).strftime("%Y-%m-%d")))
def test_search_sorting(self):
c1 = Correspondent.objects.create(name="corres Ax")
c2 = Correspondent.objects.create(name="corres Cx")
c3 = Correspondent.objects.create(name="corres Bx")
d1 = Document.objects.create(checksum="1", correspondent=c1, content="test", archive_serial_number=2, title="3")
d2 = Document.objects.create(checksum="2", correspondent=c2, content="test", archive_serial_number=3, title="2")
d3 = Document.objects.create(checksum="3", correspondent=c3, content="test", archive_serial_number=1, title="1")
with AsyncWriter(index.open_index()) as writer:
for doc in Document.objects.all():
index.update_document(writer, doc)
def search_query(q):
r = self.client.get("/api/documents/?query=test" + q)
self.assertEqual(r.status_code, 200)
return [hit['id'] for hit in r.data['results']]
self.assertListEqual(search_query("&ordering=archive_serial_number"), [d3.id, d1.id, d2.id])
self.assertListEqual(search_query("&ordering=-archive_serial_number"), [d2.id, d1.id, d3.id])
self.assertListEqual(search_query("&ordering=title"), [d3.id, d2.id, d1.id])
self.assertListEqual(search_query("&ordering=-title"), [d1.id, d2.id, d3.id])
self.assertListEqual(search_query("&ordering=correspondent__name"), [d1.id, d3.id, d2.id])
self.assertListEqual(search_query("&ordering=-correspondent__name"), [d2.id, d3.id, d1.id])
def test_statistics(self):
doc1 = Document.objects.create(title="none1", checksum="A")

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:52\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@ -412,54 +412,58 @@ msgstr "Heslo"
msgid "Sign in"
msgstr "Přihlásit se"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr ""
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Němčina"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Holandština"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Francouzština"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr ""
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr ""
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr ""
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr ""
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Správa Paperless-ng"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 19:51\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 23:04\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@ -412,54 +412,58 @@ msgstr "Kennwort"
msgid "Sign in"
msgstr "Anmelden"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Englisch (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Englisch (UK)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Deutsch"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Niederländisch"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Französisch"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugiesisch (Brasilien)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portugiesisch"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italienisch"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Rumänisch"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Russisch"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Spanisch"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polnisch"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Schwedisch"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Paperless-ng Administration"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-05-02 17:00\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-05 21:40\n"
"Last-Translator: \n"
"Language-Team: English, United Kingdom\n"
"Language: en_GB\n"
@ -412,54 +412,58 @@ msgstr "Password"
msgid "Sign in"
msgstr "Sign in"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "English (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "English (GB)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "German"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Dutch"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "French"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portuguese (Brazil)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portuguese"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italian"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Romanian"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Russian"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Spanish"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polish"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Swedish"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Paperless-ng administration"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:52\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@ -412,54 +412,58 @@ msgstr "Contraseña"
msgid "Sign in"
msgstr "Iniciar sesión"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Inglés (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Inglés (Gran Bretaña)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Alemán"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Alemán"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Francés"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugués (Brasil)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Rumano"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Ruso"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Español"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Paperless-ng Administración"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 13:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-05 15:10\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@ -412,54 +412,58 @@ msgstr "Mot de passe"
msgid "Sign in"
msgstr "S'identifier"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Anglais (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Anglais (GB)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Allemand"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Néerlandais"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Français"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugais (Brésil)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portugais"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italien"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Roumain"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Russe"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Espagnol"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polonais"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Suédois"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Administration de Paperless-ng"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:52\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Language: hu_HU\n"
@ -412,54 +412,58 @@ msgstr ""
msgid "Sign in"
msgstr ""
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Angol (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Német"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr ""
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr ""
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr ""
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr ""
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr ""
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr ""
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr ""

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 18:50\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-05 08:19\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@ -412,54 +412,58 @@ msgstr "Password"
msgid "Sign in"
msgstr "Accedi"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Inglese (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Inglese (GB)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Tedesco"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Olandese"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Francese"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portoghese (Brasile)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portoghese"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Rumeno"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Russo"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Spagnolo"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polacco"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Svedese"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Amministrazione di Paperless-ng"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-18 13:19\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-06 00:07\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@ -412,54 +412,58 @@ msgstr "Wachtwoord"
msgid "Sign in"
msgstr "Aanmelden"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Engels (US)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Engels (Brits)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Duits"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Nederlands"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Frans"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugees (Brazilië)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portugees"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italiaans"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Roemeens"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Russisch"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Spaans"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Pools"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Zweeds"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Paperless-ng administratie"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 14:46\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:51\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@ -412,54 +412,58 @@ msgstr "Hasło"
msgid "Sign in"
msgstr "Zaloguj się"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Angielski (USA)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Angielski (Wielka Brytania)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Niemiecki"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Holenderski"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Francuski"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugalski (Brazylia)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portugalski"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Włoski"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Rumuński"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Rosyjski"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Hiszpański"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polski"
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Administracja Paperless-ng"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:51\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n"
@ -412,54 +412,58 @@ msgstr "Senha"
msgid "Sign in"
msgstr "Entrar"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Inglês (EUA)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Inglês (GB)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Alemão"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Holandês"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Francês"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Português (Brasil)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Romeno"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr ""
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr ""
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Administração do Paperless-ng"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 21:56\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-05 18:07\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"Language: pt_PT\n"
@ -412,54 +412,58 @@ msgstr "Palavra-passe"
msgid "Sign in"
msgstr "Iniciar sessão"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Inglês (EUA)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "English (GB)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Deutsch"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Nederlandse"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Français"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Português (Brasil)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Português"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Romeno"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Russo"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Espanhol"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polaco"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Sueco"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Administração do Paperless-ng"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-05-04 02:27\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 23:04\n"
"Last-Translator: \n"
"Language-Team: Romanian\n"
"Language: ro_RO\n"
@ -412,53 +412,57 @@ msgstr "Parolă"
msgid "Sign in"
msgstr "Conectare"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Engleză (Americană)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Engleză (Britanică)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Germană"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Olandeză"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Franceză"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugheză (Brazilia)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portugheză"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italiană"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Română"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Rusă"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Spaniolă"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
msgstr "Poloneză"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Suedeză"
#: paperless/urls.py:113
msgid "Paperless-ng administration"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:51\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@ -412,54 +412,58 @@ msgstr "Пароль"
msgid "Sign in"
msgstr "Вход"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Английский (США)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Английский (Великобритании)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Немецкий"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Датский"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Французский"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portuguese (Brazil)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Португальский"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italian"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Romanian"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Русский"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Испанский"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Администрирование Paperless-ng"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-05-04 13:14\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-10 13:35\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@ -412,54 +412,58 @@ msgstr "Lösenord"
msgid "Sign in"
msgstr "Logga in"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "Engelska (USA)"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "Engelska (GB)"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "Tyska"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "Holländska"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "Franska"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "Portugisiska (Brasilien)"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "Portugisiska"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "Italienska"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "Rumänska"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "Ryska"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "Spanska"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "Polska"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "Svenska"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "Paperless-ng administration"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:46\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:51\n"
"Last-Translator: \n"
"Language-Team: Xhosa\n"
"Language: xh_ZA\n"
@ -412,54 +412,58 @@ msgstr "crwdns2712:0crwdne2712:0"
msgid "Sign in"
msgstr "crwdns2714:0crwdne2714:0"
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr "crwdns2716:0crwdne2716:0"
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr "crwdns2718:0crwdne2718:0"
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr "crwdns2720:0crwdne2720:0"
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr "crwdns2722:0crwdne2722:0"
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr "crwdns2724:0crwdne2724:0"
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr "crwdns2726:0crwdne2726:0"
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr "crwdns3424:0crwdne3424:0"
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr "crwdns2728:0crwdne2728:0"
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr "crwdns2730:0crwdne2730:0"
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr "crwdns3414:0crwdne3414:0"
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr "crwdns3420:0crwdne3420:0"
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr "crwdns3444:0crwdne3444:0"
#: paperless/settings.py:312
msgid "Swedish"
msgstr "crwdns3448:0crwdne3448:0"
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr "crwdns2732:0crwdne2732:0"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-17 13:41+0200\n"
"PO-Revision-Date: 2021-04-17 11:47\n"
"POT-Creation-Date: 2021-05-04 15:00+0000\n"
"PO-Revision-Date: 2021-05-04 21:51\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@ -412,54 +412,58 @@ msgstr ""
msgid "Sign in"
msgstr ""
#: paperless/settings.py:298
#: paperless/settings.py:300
msgid "English (US)"
msgstr ""
#: paperless/settings.py:299
#: paperless/settings.py:301
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:300
#: paperless/settings.py:302
msgid "German"
msgstr ""
#: paperless/settings.py:301
#: paperless/settings.py:303
msgid "Dutch"
msgstr ""
#: paperless/settings.py:302
#: paperless/settings.py:304
msgid "French"
msgstr ""
#: paperless/settings.py:303
#: paperless/settings.py:305
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:304
#: paperless/settings.py:306
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:305
#: paperless/settings.py:307
msgid "Italian"
msgstr ""
#: paperless/settings.py:306
#: paperless/settings.py:308
msgid "Romanian"
msgstr ""
#: paperless/settings.py:307
#: paperless/settings.py:309
msgid "Russian"
msgstr ""
#: paperless/settings.py:308
#: paperless/settings.py:310
msgid "Spanish"
msgstr ""
#: paperless/settings.py:309
#: paperless/settings.py:311
msgid "Polish"
msgstr ""
#: paperless/settings.py:312
msgid "Swedish"
msgstr ""
#: paperless/urls.py:113
msgid "Paperless-ng administration"
msgstr ""

View File

@ -142,11 +142,14 @@ MIDDLEWARE = [
ROOT_URLCONF = 'paperless.urls'
FORCE_SCRIPT_NAME = os.getenv("PAPERLESS_FORCE_SCRIPT_NAME")
BASE_URL = (FORCE_SCRIPT_NAME or "") + "/"
LOGIN_URL = BASE_URL + "accounts/login/"
WSGI_APPLICATION = 'paperless.wsgi.application'
ASGI_APPLICATION = "paperless.asgi.application"
STATIC_URL = os.getenv("PAPERLESS_STATIC_URL", "/static/")
STATIC_URL = os.getenv("PAPERLESS_STATIC_URL", BASE_URL + "static/")
WHITENOISE_STATIC_PREFIX = "/static/"
# TODO: what is this used for?
TEMPLATES = [

View File

@ -9,6 +9,8 @@ from rest_framework.routers import DefaultRouter
from django.utils.translation import gettext_lazy as _
from django.conf import settings
from paperless.consumers import StatusConsumer
from documents.views import (
CorrespondentViewSet,
@ -73,31 +75,36 @@ urlpatterns = [
re_path(r"^fetch/", include([
re_path(
r"^doc/(?P<pk>\d+)$",
RedirectView.as_view(url='/api/documents/%(pk)s/download/'),
RedirectView.as_view(url=settings.BASE_URL +
'api/documents/%(pk)s/download/'),
),
re_path(
r"^thumb/(?P<pk>\d+)$",
RedirectView.as_view(url='/api/documents/%(pk)s/thumb/'),
RedirectView.as_view(url=settings.BASE_URL +
'api/documents/%(pk)s/thumb/'),
),
re_path(
r"^preview/(?P<pk>\d+)$",
RedirectView.as_view(url='/api/documents/%(pk)s/preview/'),
RedirectView.as_view(url=settings.BASE_URL +
'api/documents/%(pk)s/preview/'),
),
])),
re_path(r"^push$", csrf_exempt(
RedirectView.as_view(url='/api/documents/post_document/'))),
RedirectView.as_view(url=settings.BASE_URL +
'api/documents/post_document/'))),
# Frontend assets TODO: this is pretty bad, but it works.
path('assets/<path:path>',
RedirectView.as_view(url='/static/frontend/en-US/assets/%(path)s')),
RedirectView.as_view(url=settings.STATIC_URL +
'frontend/en-US/assets/%(path)s')),
# TODO: with localization, this is even worse! :/
# login, logout
path('accounts/', include('django.contrib.auth.urls')),
# Root of the Frontent
re_path(r".*", login_required(IndexView.as_view())),
re_path(r".*", login_required(IndexView.as_view()), name='base'),
]

View File

@ -1 +1 @@
__version__ = (1, 4, 2)
__version__ = (1, 4, 3)

11
src/paperless/workers.py Normal file
View File

@ -0,0 +1,11 @@
import os
from uvicorn.workers import UvicornWorker
from django.conf import settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "paperless.settings")
class ConfigurableWorker(UvicornWorker):
CONFIG_KWARGS = {
"root_path": settings.FORCE_SCRIPT_NAME or "",
}

View File

@ -121,7 +121,12 @@ class RasterisedDocumentParser(DocumentParser):
self.log("debug", f"Extracted text from PDF file {pdf_file}")
return stripped
except PDFException:
except Exception:
# TODO catch all for various issues with PDFminer.six.
# If PDFminer fails, fall back to OCR.
self.log("warn",
"Error while getting text from PDF document with "
"pdfminer.six", exc_info=True)
# probably not a PDF file.
return None

40
test.py Normal file
View File

@ -0,0 +1,40 @@
import ocrmypdf
from ocrmypdf import ocr, hookimpl
from ocrmypdf._concurrent import NullProgressBar
def get_unified_progress(self, desc, current, total):
steps = ["Scanning contents", "OCR", "PDF/A conversion"]
if desc in steps:
index = steps.index(desc)
return (index / len(steps)) + (current / total) / len(steps)
else:
return 0
class MyProgressBar:
# __enter__, __exit__ and others removed for simplicity
def update(self, *args, **kwargs):
pass
# i'd need to call MyOcrClass.progress() here.
@hookimpl
def get_progressbar_class(*args, **kwargs):
return MyProgressBar
class MyOcrClass:
def progress(self, current_p, max_p):
# send progress over web sockets, *requires* self reference
pass
def run(self):
ocrmypdf.ocr("test.pdf", "test_out.pdf", skip_text=True, jobs=1, plugins="test")
if __name__ == '__main__':
MyOcrClass().run()