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" watchdog = "~=1.0.0"
whoosh="~=2.7.4" whoosh="~=2.7.4"
inotifyrecursive = "~=0.3.4" inotifyrecursive = "~=0.3.4"
ocrmypdf = "~=11.6" ocrmypdf = "~=12.0"
tqdm = "*" tqdm = "*"
tika = "*" tika = "*"
# TODO: This will sadly also install daphne+dependencies, # TODO: This will sadly also install daphne+dependencies,

326
Pipfile.lock generated
View File

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

View File

@ -460,6 +460,7 @@ Install Paperless using ansible
.. note:: .. note::
This role currently only supports Debian 10 Buster and Ubuntu 20.04 Focal or later as target hosts. 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. 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. 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 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 .. 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: 3. Create an ansible ``playbook.yml`` in a directory of your choice:
.. code:: sh
cd paperless-ng
git checkout ng-1.0.0
3. Create an ansible ``playbook.yml`` in the paperless-ng root directory:
.. code:: yaml .. code:: yaml
- hosts: YourAnsibleTargetHostGoesHere - hosts: YourAnsibleTargetHostGoesHere
become: yes become: yes
vars_files: vars_files:
- ansible/vars.yml - vars/paperless-ng.yml
roles: 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: 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 - hosts: YourAnsibleTargetHostGoesHere
become: yes become: yes
vars_files: vars_files:
- ansible/vars.yml - vars/paperless-ng.yml
roles: roles:
- geerlingguy.postgresql - 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: 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 - hosts: YourAnsibleTargetHostGoesHere
become: yes become: yes
vars_files: vars_files:
- ansible/vars.yml - vars/paperless-ng.yml
roles: roles:
- geerlingguy.postgresql - geerlingguy.postgresql
- ansible - paperless-ng
- geerlingguy.nginx - 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 .. code:: yaml

View File

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

View File

@ -8,10 +8,10 @@
-i https://pypi.python.org/simple -i https://pypi.python.org/simple
--extra-index-url https://www.piwheels.org/simple --extra-index-url https://www.piwheels.org/simple
aioredis==1.3.1 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' asgiref==3.3.4; python_version >= '3.6'
async-timeout==3.0.1; python_full_version >= '3.5.3' 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' autobahn==21.3.1; python_version >= '3.7'
automat==20.2.0 automat==20.2.0
blessed==1.18.0 blessed==1.18.0
@ -28,35 +28,35 @@ cryptography==3.4.7
daphne==3.0.2; python_version >= '3.6' daphne==3.0.2; python_version >= '3.6'
dateparser==1.0.0 dateparser==1.0.0
django-cors-headers==3.7.0 django-cors-headers==3.7.0
django-extensions==3.1.2 django-extensions==3.1.3
django-filter==2.4.0 django-filter==2.4.0
django-picklefield==3.0.1; python_version >= '3' django-picklefield==3.0.1; python_version >= '3'
django-q==1.3.4 django-q==1.3.4
django==3.2 django==3.2.3
djangorestframework==3.12.4 djangorestframework==3.12.4
filelock==3.0.12 filelock==3.0.12
fuzzywuzzy[speedup]==0.18.0 fuzzywuzzy[speedup]==0.18.0
gunicorn==20.1.0 gunicorn==20.1.0
h11==0.12.0; python_version >= '3.6' h11==0.12.0; python_version >= '3.6'
hiredis==2.0.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' 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 hyperlink==21.0.0
idna==2.10; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' 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 imap-tools==0.41.0
img2pdf==0.4.0 img2pdf==0.4.1
incremental==21.3.0 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' 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 inotifyrecursive==0.3.5
joblib==1.0.1; python_version >= '3.6' 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' 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 msgpack==1.0.2
numpy==1.19.5 numpy==1.19.5
ocrmypdf==11.7.3 ocrmypdf==12.0.1
pathvalidate==2.4.1 pathvalidate==2.4.1
pdfminer.six==20201018 pdfminer.six==20201018
pikepdf==2.11.1 pikepdf==2.12.0
pillow==8.2.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' 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' 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' 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' 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-dateutil==2.8.1
python-dotenv==0.17.0 python-dotenv==0.17.1
python-gnupg==0.4.7 python-gnupg==0.4.7
python-levenshtein==0.12.2 python-levenshtein==0.12.2
python-magic==0.4.22 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' 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 scikit-learn==0.24.0
scipy==1.5.4 scipy==1.5.4
service-identity==18.1.0 service-identity==21.1.0
six==1.15.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' 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 sortedcontainers==2.3.0
sqlparse==0.4.1; python_version >= '3.5' sqlparse==0.4.1; python_version >= '3.5'
threadpoolctl==2.1.0; python_version >= '3.5' threadpoolctl==2.1.0; python_version >= '3.5'

View File

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

View File

@ -1407,11 +1407,19 @@
<context context-type="linenumber">68</context> <context context-type="linenumber">68</context>
</context-group> </context-group>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="27d158b47717ff9305d19866960418c603f19d55" datatype="html"> <trans-unit id="27d158b47717ff9305d19866960418c603f19d55" datatype="html">
@ -1421,6 +1429,13 @@
<context context-type="linenumber">3</context> <context context-type="linenumber">3</context>
</context-group> </context-group>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1889,6 +1904,14 @@
<context context-type="linenumber">23</context> <context context-type="linenumber">23</context>
</context-group> </context-group>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <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) { constructor (private settings: SettingsService, private consumerStatusService: ConsumerStatusService, private toastService: ToastService, private router: Router) {
let anyWindow = (window as any) let anyWindow = (window as any)
anyWindow.pdfWorkerSrc = '/assets/js/pdf.worker.min.js'; anyWindow.pdfWorkerSrc = 'assets/js/pdf.worker.min.js';
this.settings.updateDarkModeSettings() this.settings.updateDarkModeSettings()
} }

View File

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

View File

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

View File

@ -83,7 +83,7 @@
<small>{{document.created | customDate:'mediumDate'}}</small> <small>{{document.created | customDate:'mediumDate'}}</small>
</div> </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> <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> <ngb-progressbar [type]="searchScoreClass" [value]="document.__search_hit__.score" class="search-score-bar mx-2 mt-1" [max]="1"></ngb-progressbar>
</div> </div>

View File

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

View File

@ -125,7 +125,7 @@ export class ConsumerStatusService {
connect() { connect() {
this.disconnect() 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) => { this.statusWebSocket.onmessage = (ev) => {
let statusMessage: WebsocketConsumerStatusMessage = JSON.parse(ev['data']) let statusMessage: WebsocketConsumerStatusMessage = JSON.parse(ev['data'])

View File

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

View File

@ -23,6 +23,11 @@ export const DOCUMENT_SORT_FIELDS = [
{ field: 'modified', name: $localize`Modified` } { 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 { export interface SelectionDataItem {
id: number id: number
document_count: number document_count: number

View File

@ -1,9 +1,12 @@
const base_url = new URL(document.baseURI)
export const environment = { export const environment = {
production: true, production: true,
apiBaseUrl: "/api/", apiBaseUrl: document.baseURI + "api/",
apiVersion: "2", apiVersion: "2",
appTitle: "Paperless-ng", appTitle: "Paperless-ng",
version: "1.4.2", version: "1.4.3",
webSocketHost: window.location.host, 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", appTitle: "Paperless-ng",
version: "DEVELOPMENT", version: "DEVELOPMENT",
webSocketHost: "localhost:8000", webSocketHost: "localhost:8000",
webSocketProtocol: "ws:" webSocketProtocol: "ws:",
webSocketBaseUrl: "/ws/",
}; };
/* /*

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="needs-translation">Download originals</target> <target state="needs-translation">Download originals</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="needs-translation">Suggestions:</target> <target state="needs-translation">Suggestions:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="needs-translation">Save current view</target> <target state="needs-translation">Save current view</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="needs-translation">Polish</target> <target state="needs-translation">Polish</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="needs-translation">ISO 8601</target> <target state="needs-translation">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="needs-translation">Modified</target> <target state="needs-translation">Modified</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="translated">Originale herunterladen</target> <target state="translated">Originale herunterladen</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="translated">Vorschläge:</target> <target state="translated">Vorschläge:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="translated">Aktuelle Ansicht speichern</target> <target state="translated">Aktuelle Ansicht speichern</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="translated">Polnisch</target> <target state="translated">Polnisch</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="translated">ISO 8601</target> <target state="translated">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="translated">Geändert am</target> <target state="translated">Geändert am</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="translated">Download originals</target> <target state="translated">Download originals</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="translated">Suggestions:</target> <target state="translated">Suggestions:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="translated">Save current view</target> <target state="translated">Save current view</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="translated">Polish</target> <target state="translated">Polish</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="translated">ISO 8601</target> <target state="translated">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="translated">Modified</target> <target state="translated">Modified</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="translated">Descargar originales</target> <target state="translated">Descargar originales</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="translated">Sugerencias:</target> <target state="translated">Sugerencias:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="translated">Guardar la vista actual</target> <target state="translated">Guardar la vista actual</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="needs-translation">Polish</target> <target state="needs-translation">Polish</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="translated">ISO 8601</target> <target state="translated">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="translated">Modificado</target> <target state="translated">Modificado</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="translated">Télécharger les originaux</target> <target state="translated">Télécharger les originaux</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="translated">Suggestions : </target> <target state="translated">Suggestions : </target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="translated">Enregistrer la vue actuelle</target> <target state="translated">Enregistrer la vue actuelle</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="translated">Polonais</target> <target state="translated">Polonais</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="translated">ISO 8601</target> <target state="translated">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="translated">Date de modification</target> <target state="translated">Date de modification</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="needs-translation">Download originals</target> <target state="needs-translation">Download originals</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="needs-translation">Suggestions:</target> <target state="needs-translation">Suggestions:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="translated">Jelenlegi nézet mentése</target> <target state="translated">Jelenlegi nézet mentése</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="needs-translation">Polish</target> <target state="needs-translation">Polish</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="needs-translation">ISO 8601</target> <target state="needs-translation">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="translated">Módosítva</target> <target state="translated">Módosítva</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="translated">Scarica originali</target> <target state="translated">Scarica originali</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="translated">Suggerimenti:</target> <target state="translated">Suggerimenti:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="translated">Salva vista corrente</target> <target state="translated">Salva vista corrente</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="translated">Polacco</target> <target state="translated">Polacco</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="translated">ISO 8601</target> <target state="translated">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="translated">Modificato</target> <target state="translated">Modificato</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="translated">Originelen downloaden</target> <target state="translated">Originelen downloaden</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="translated">Suggesties:</target> <target state="translated">Suggesties:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="translated">Huidige view opslaan</target> <target state="translated">Huidige view opslaan</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="translated">Pools</target> <target state="translated">Pools</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="translated">ISO 8601</target> <target state="translated">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="translated">Gewijzigd</target> <target state="translated">Gewijzigd</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="translated">Pobierz oryginały</target> <target state="translated">Pobierz oryginały</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="translated">Sugestie:</target> <target state="translated">Sugestie:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="translated">Zapisz bieżący widok</target> <target state="translated">Zapisz bieżący widok</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="translated">Polski</target> <target state="translated">Polski</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="translated">ISO 8601</target> <target state="translated">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="translated">Zmodyfikowano</target> <target state="translated">Zmodyfikowano</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="translated">Descarregar originais</target> <target state="translated">Descarregar originais</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="translated">Sugestões:</target> <target state="translated">Sugestões:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="translated">Salvar visualização atual</target> <target state="translated">Salvar visualização atual</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="needs-translation">Polish</target> <target state="needs-translation">Polish</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="translated">ISO 8601</target> <target state="translated">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="translated">Modificado</target> <target state="translated">Modificado</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="translated">Descarregar originais</target> <target state="translated">Descarregar originais</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="translated">Sugestões:</target> <target state="translated">Sugestões:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="translated">Guardar a vista atual</target> <target state="translated">Guardar a vista atual</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="translated">Polaco</target> <target state="translated">Polaco</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="translated">ISO 8601</target> <target state="translated">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="translated">Modificado</target> <target state="translated">Modificado</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="translated">Descarcă originalele</target> <target state="translated">Descarcă originalele</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="translated">Sugestii:</target> <target state="translated">Sugestii:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="translated">Salvează vizualizarea curenta</target> <target state="translated">Salvează vizualizarea curenta</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <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="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context> <context context-type="linenumber">1</context>
</context-group> </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>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
@ -1975,13 +1992,21 @@
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">101</context>
</context-group> </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>
<trans-unit id="4912706592792948707" datatype="html"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="translated">ISO 8601</target> <target state="translated">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="translated">Modificat</target> <target state="translated">Modificat</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="translated">Скачать оригиналы</target> <target state="translated">Скачать оригиналы</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="translated">Рекомендации:</target> <target state="translated">Рекомендации:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="translated">Сохранить текущее представление</target> <target state="translated">Сохранить текущее представление</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="needs-translation">Polish</target> <target state="needs-translation">Polish</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="translated">ISO 8601</target> <target state="translated">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="translated">Изменено</target> <target state="translated">Изменено</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="translated">Ladda ner original</target> <target state="translated">Ladda ner original</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="translated">Förslag:</target> <target state="translated">Förslag:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="translated">Spara aktuell vy</target> <target state="translated">Spara aktuell vy</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="translated">Polska</target> <target state="translated">Polska</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="translated">ISO 8601</target> <target state="translated">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="translated">Ändrad</target> <target state="translated">Ändrad</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target>crwdns3238:0crwdne3238:0</target> <target>crwdns3238:0crwdne3238:0</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target>crwdns3240:0crwdne3240:0</target> <target>crwdns3240:0crwdne3240:0</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target>crwdns3242:0crwdne3242:0</target> <target>crwdns3242:0crwdne3242:0</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target>crwdns3442:0crwdne3442:0</target> <target>crwdns3442:0crwdne3442:0</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target>crwdns3322:0crwdne3322:0</target> <target>crwdns3322:0crwdne3322:0</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target>crwdns3364:0crwdne3364:0</target> <target>crwdns3364:0crwdne3364:0</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@ -1607,11 +1607,20 @@
</context-group> </context-group>
<target state="needs-translation">Download originals</target> <target state="needs-translation">Download originals</target>
</trans-unit> </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"> <trans-unit id="a1e6c11f20d4bf6e8e6b43e3c6d2561b2080645e" datatype="html">
<source>Suggestions:</source> <source>Suggestions:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/select/select.component.html</context> <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> </context-group>
<target state="needs-translation">Suggestions:</target> <target state="needs-translation">Suggestions:</target>
</trans-unit> </trans-unit>
@ -1623,6 +1632,14 @@
</context-group> </context-group>
<target state="needs-translation">Save current view</target> <target state="needs-translation">Save current view</target>
</trans-unit> </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"> <trans-unit id="4eb84de23219c85432e38fb4fbdeb6c0f103ff8b" datatype="html">
<source>Show all</source> <source>Show all</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1977,11 +1994,19 @@
</context-group> </context-group>
<target state="needs-translation">Polish</target> <target state="needs-translation">Polish</target>
</trans-unit> </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"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <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> </context-group>
<target state="needs-translation">ISO 8601</target> <target state="needs-translation">ISO 8601</target>
</trans-unit> </trans-unit>
@ -2149,6 +2174,15 @@
</context-group> </context-group>
<target state="needs-translation">Modified</target> <target state="needs-translation">Modified</target>
</trans-unit> </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"> <trans-unit id="4561076822163447092" datatype="html">
<source>Create new item</source> <source>Create new item</source>
<context-group purpose="location"> <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";
@import "theme_dark"; @import "theme_dark";
@import "print";
@import "node_modules/bootstrap/scss/bootstrap"; @import "node_modules/bootstrap/scss/bootstrap";
@import "~@ng-select/ng-select/themes/default.theme.css"; @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 django.conf import settings
from whoosh import highlight, classify, query from whoosh import highlight, classify, query
from whoosh.fields import Schema, TEXT, NUMERIC, KEYWORD, DATETIME, BOOLEAN 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.index import create_in, exists_in, open_dir
from whoosh.qparser import MultifieldParser from whoosh.qparser import MultifieldParser
from whoosh.qparser.dateparse import DateParserPlugin from whoosh.qparser.dateparse import DateParserPlugin
@ -147,12 +147,10 @@ def remove_document_from_index(document):
class DelayedQuery: class DelayedQuery:
@property def _get_query(self):
def _query(self):
raise NotImplementedError() raise NotImplementedError()
@property def _get_query_filter(self):
def _query_filter(self):
criterias = [] criterias = []
for k, v in self.query_params.items(): for k, v in self.query_params.items():
if k == 'correspondent__id': if k == 'correspondent__id':
@ -185,16 +183,32 @@ class DelayedQuery:
else: else:
return None return None
@property def _get_query_sortedby(self):
def _query_sortedby(self): if 'ordering' not in self.query_params:
# if not 'ordering' in self.query_params: return None, False
return None, False
# o: str = self.query_params['ordering'] field: str = self.query_params['ordering']
# if o.startswith('-'):
# return o[1:], True sort_fields_map = {
# else: "created": "created",
# return o, False "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): def __init__(self, searcher: Searcher, query_params, page_size):
self.searcher = searcher self.searcher = searcher
@ -211,13 +225,13 @@ class DelayedQuery:
if item.start in self.saved_results: if item.start in self.saved_results:
return self.saved_results[item.start] return self.saved_results[item.start]
q, mask = self._query q, mask = self._get_query()
sortedby, reverse = self._query_sortedby sortedby, reverse = self._get_query_sortedby()
page: ResultsPage = self.searcher.search_page( page: ResultsPage = self.searcher.search_page(
q, q,
mask=mask, mask=mask,
filter=self._query_filter, filter=self._get_query_filter(),
pagenum=math.floor(item.start / self.page_size) + 1, pagenum=math.floor(item.start / self.page_size) + 1,
pagelen=self.page_size, pagelen=self.page_size,
sortedby=sortedby, sortedby=sortedby,
@ -227,14 +241,18 @@ class DelayedQuery:
surround=50) surround=50)
page.results.formatter = HtmlFormatter(tagname="span", between=" ... ") 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 self.first_score = page.results[0].score
if self.first_score: page.results.top_n = list(map(
page.results.top_n = list(map( lambda hit: (
lambda hit: (hit[0] / self.first_score, hit[1]), (hit[0] / self.first_score) if self.first_score else None,
page.results.top_n hit[1]
)) ),
page.results.top_n
))
self.saved_results[item.start] = page self.saved_results[item.start] = page
@ -243,8 +261,7 @@ class DelayedQuery:
class DelayedFullTextQuery(DelayedQuery): class DelayedFullTextQuery(DelayedQuery):
@property def _get_query(self):
def _query(self):
q_str = self.query_params['query'] q_str = self.query_params['query']
qp = MultifieldParser( qp = MultifieldParser(
["content", "title", "correspondent", "tag", "type"], ["content", "title", "correspondent", "tag", "type"],
@ -261,8 +278,7 @@ class DelayedFullTextQuery(DelayedQuery):
class DelayedMoreLikeThisQuery(DelayedQuery): class DelayedMoreLikeThisQuery(DelayedQuery):
@property def _get_query(self):
def _query(self):
more_like_doc_id = int(self.query_params['more_like_id']) more_like_doc_id = int(self.query_params['more_like_id'])
content = Document.objects.get(id=more_like_doc_id).content 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 " help="Specify the ID of a document, and this command will only "
"run on this specific document." "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): def handle(self, *args, **options):
@ -140,7 +146,8 @@ class Command(BaseCommand):
handle_document, handle_document,
document_ids document_ids
), ),
total=len(document_ids) total=len(document_ids),
disable=options['no_progress_bar']
)) ))
except KeyboardInterrupt: except KeyboardInterrupt:
print("Aborting...") print("Aborting...")

View File

@ -57,6 +57,12 @@ class Command(BaseCommand):
"do not belong to the current export, such as files from " "do not belong to the current export, such as files from "
"deleted documents." "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): def __init__(self, *args, **kwargs):
BaseCommand.__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") raise CommandError("That path doesn't appear to be writable")
with FileLock(settings.MEDIA_LOCK): 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 # 1. Take a snapshot of what files exist in the current export folder
for root, dirs, files in os.walk(self.target): for root, dirs, files in os.walk(self.target):
self.files_in_export_dir.extend( self.files_in_export_dir.extend(
@ -124,8 +130,11 @@ class Command(BaseCommand):
"json", User.objects.all())) "json", User.objects.all()))
# 3. Export files from each document # 3. Export files from each document
for index, document_dict in tqdm.tqdm(enumerate(document_manifest), for index, document_dict in tqdm.tqdm(
total=len(document_manifest)): enumerate(document_manifest),
total=len(document_manifest),
disable=progress_bar_disable
):
# 3.1. store files unencrypted # 3.1. store files unencrypted
document_dict["fields"]["storage_type"] = Document.STORAGE_TYPE_UNENCRYPTED # NOQA: E501 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): def add_arguments(self, parser):
parser.add_argument("source") 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): def __init__(self, *args, **kwargs):
BaseCommand.__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 # Fill up the database with whatever is in the manifest
call_command("loaddata", manifest_path) call_command("loaddata", manifest_path)
self._import_files_from_manifest() self._import_files_from_manifest(options['no_progress_bar'])
print("Updating search index...") print("Updating search index...")
call_command('document_index', 'reindex') call_command('document_index', 'reindex')
@ -111,7 +117,7 @@ class Command(BaseCommand):
f"does not appear to be in the source directory." 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.ORIGINALS_DIR, exist_ok=True)
os.makedirs(settings.THUMBNAIL_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", lambda r: r["model"] == "documents.document",
self.manifest)) 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"]) document = Document.objects.get(pk=record["pk"])

View File

@ -10,10 +10,16 @@ class Command(BaseCommand):
def add_arguments(self, parser): def add_arguments(self, parser):
parser.add_argument("command", choices=['reindex', 'optimize']) 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): def handle(self, *args, **options):
with transaction.atomic(): with transaction.atomic():
if options['command'] == 'reindex': if options['command'] == 'reindex':
index_reindex() index_reindex(progress_bar_disable=options['no_progress_bar'])
elif options['command'] == 'optimize': elif options['command'] == 'optimize':
index_optimize() index_optimize()

View File

@ -13,9 +13,20 @@ class Command(BaseCommand):
This will rename all documents to match the latest filename format. This will rename all documents to match the latest filename format.
""".replace(" ", "") """.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): def handle(self, *args, **options):
logging.getLogger().handlers[0].level = logging.ERROR 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) post_save.send(Document, instance=document)

View File

@ -57,6 +57,12 @@ class Command(BaseCommand):
"set correspondent, document and remove correspondents, types" "set correspondent, document and remove correspondents, types"
"and tags that do not match anymore due to changed rules." "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): def handle(self, *args, **options):
@ -68,7 +74,10 @@ class Command(BaseCommand):
classifier = load_classifier() classifier = load_classifier()
for document in tqdm.tqdm(documents): for document in tqdm.tqdm(
documents,
disable=options['no_progress_bar']
):
if options['correspondent']: if options['correspondent']:
set_correspondent( set_correspondent(

View File

@ -8,8 +8,16 @@ class Command(BaseCommand):
This command checks your document archive for issues. This command checks your document archive for issues.
""".replace(" ", "") """.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): def handle(self, *args, **options):
messages = check_sanity(progress=True) messages = check_sanity(progress=not options['no_progress_bar'])
messages.log_messages() messages.log_messages()

View File

@ -47,6 +47,12 @@ class Command(BaseCommand):
help="Specify the ID of a document, and this command will only " help="Specify the ID of a document, and this command will only "
"run on this specific document." "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): def handle(self, *args, **options):
logging.getLogger().handlers[0].level = logging.ERROR logging.getLogger().handlers[0].level = logging.ERROR
@ -65,5 +71,7 @@ class Command(BaseCommand):
with multiprocessing.Pool() as pool: with multiprocessing.Pool() as pool:
list(tqdm.tqdm( 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: if lockfile in present_files:
present_files.remove(lockfile) present_files.remove(lockfile)
if progress: for doc in tqdm(Document.objects.all(), disable=not progress):
docs = tqdm(Document.objects.all())
else:
docs = Document.objects.all()
for doc in docs:
# Check sanity of the thumbnail # Check sanity of the thumbnail
if not os.path.isfile(doc.thumbnail_path): if not os.path.isfile(doc.thumbnail_path):
messages.error(f"Thumbnail of document {doc.pk} does not exist.") 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-left-radius: 0;
border-top-right-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) writer.commit(optimize=True)
def index_reindex(): def index_reindex(progress_bar_disable=False):
documents = Document.objects.all() documents = Document.objects.all()
ix = index.open_index(recreate=True) ix = index.open_index(recreate=True)
with AsyncWriter(ix) as writer: 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) index.update_document(writer, document)

View File

@ -7,11 +7,12 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Paperless-ng</title> <title>Paperless-ng</title>
<base href="/"> <base href="{% url 'base' %}">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="username" content="{{username}}"> <meta name="username" content="{{username}}">
<meta name="full_name" content="{{full_name}}"> <meta name="full_name" content="{{full_name}}">
<meta name="cookie_prefix" content="{{cookie_prefix}}"> <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="icon" type="image/x-icon" href="favicon.ico">
<link rel="manifest" href="{% static webmanifest %}"> <link rel="manifest" href="{% static webmanifest %}">
<link rel="stylesheet" href="{% static styles_css %}"> <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.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"))) 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): def test_statistics(self):
doc1 = Document.objects.create(title="none1", checksum="A") doc1 = Document.objects.create(title="none1", checksum="A")

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -142,11 +142,14 @@ MIDDLEWARE = [
ROOT_URLCONF = 'paperless.urls' ROOT_URLCONF = 'paperless.urls'
FORCE_SCRIPT_NAME = os.getenv("PAPERLESS_FORCE_SCRIPT_NAME") 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' WSGI_APPLICATION = 'paperless.wsgi.application'
ASGI_APPLICATION = "paperless.asgi.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? # TODO: what is this used for?
TEMPLATES = [ TEMPLATES = [

View File

@ -9,6 +9,8 @@ from rest_framework.routers import DefaultRouter
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.conf import settings
from paperless.consumers import StatusConsumer from paperless.consumers import StatusConsumer
from documents.views import ( from documents.views import (
CorrespondentViewSet, CorrespondentViewSet,
@ -73,31 +75,36 @@ urlpatterns = [
re_path(r"^fetch/", include([ re_path(r"^fetch/", include([
re_path( re_path(
r"^doc/(?P<pk>\d+)$", 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( re_path(
r"^thumb/(?P<pk>\d+)$", 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( re_path(
r"^preview/(?P<pk>\d+)$", 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( 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. # Frontend assets TODO: this is pretty bad, but it works.
path('assets/<path:path>', 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! :/ # TODO: with localization, this is even worse! :/
# login, logout # login, logout
path('accounts/', include('django.contrib.auth.urls')), path('accounts/', include('django.contrib.auth.urls')),
# Root of the Frontent # 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}") self.log("debug", f"Extracted text from PDF file {pdf_file}")
return stripped 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. # probably not a PDF file.
return None 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()