Compare commits
1336 Commits
feature/mu
...
feature/mu
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
82099c2f1b | ||
|
|
74a252afcf | ||
|
|
46f593654c | ||
|
|
96f5c28059 | ||
|
|
0f6d33140a | ||
|
|
460570ed05 | ||
|
|
3e58fd4e38 | ||
|
|
4d11234ba5 | ||
|
|
76513e7b38 | ||
|
|
ac433d9651 | ||
|
|
2cc9339715 | ||
|
|
b8151f848a | ||
|
|
ca6d6f3fc7 | ||
|
|
5e98c17601 | ||
|
|
854304d0c9 | ||
|
|
bdf2bfcd12 | ||
|
|
e8798abc78 | ||
|
|
ec3fcbf5dd | ||
|
|
530a055733 | ||
|
|
acea52400a | ||
|
|
b5a4a9cf45 | ||
|
|
d1973e6e05 | ||
|
|
6008c15610 | ||
|
|
ed6a5c8ff7 | ||
|
|
d6232b4b28 | ||
|
|
ffbac43293 | ||
|
|
76208022b9 | ||
|
|
df980292cb | ||
|
|
66205c11d3 | ||
|
|
124f68125d | ||
|
|
2ee73e12b4 | ||
|
|
9896f7d52a | ||
|
|
54e9808eb9 | ||
|
|
f0bb633eee | ||
|
|
6c3f5430b7 | ||
|
|
e524c3bd79 | ||
|
|
e48b85a392 | ||
|
|
e2f95b4d48 | ||
|
|
15badf4ff9 | ||
|
|
37d2f82b6d | ||
|
|
53c0ca20a5 | ||
|
|
5d05b4ea7c | ||
|
|
2a3d4eedc8 | ||
|
|
bf51ad3c8d | ||
|
|
e7637151b9 | ||
|
|
e4af58d4b7 | ||
|
|
1ea684737a | ||
|
|
39e605df11 | ||
|
|
e7d99ff6dd | ||
|
|
9c8326fd0e | ||
|
|
30238c20b6 | ||
|
|
9a5c281a8b | ||
|
|
047962d946 | ||
|
|
7744dac423 | ||
|
|
ba7716f23d | ||
|
|
b41c932796 | ||
|
|
e0d8eff711 | ||
|
|
a734538170 | ||
|
|
f1ce12663e | ||
|
|
160d8f94a9 | ||
|
|
45702548b6 | ||
|
|
83ec4761d9 | ||
|
|
682fab24e8 | ||
|
|
199ffde283 | ||
|
|
bdd6849d83 | ||
|
|
d560ec5df7 | ||
|
|
ec82738a47 | ||
|
|
4833aaf17c | ||
|
|
b2b8549f8a | ||
|
|
3612f6dbfb | ||
|
|
6c04e7dbd6 | ||
|
|
f410ae40e7 | ||
|
|
b7b100b01a | ||
|
|
ea4886dc2b | ||
|
|
fc42849b00 | ||
|
|
188b7559d2 | ||
|
|
ae9a519263 | ||
|
|
55359c72cf | ||
|
|
9fad6c37bf | ||
|
|
1693b36b2d | ||
|
|
55879d3488 | ||
|
|
d610f8d5f6 | ||
|
|
b4d1ce33e5 | ||
|
|
9cde4d7b04 | ||
|
|
4db641372d | ||
|
|
5c83cff767 | ||
|
|
3689df4aac | ||
|
|
cbad7ee504 | ||
|
|
441127ae45 | ||
|
|
a788a99d93 | ||
|
|
430c7b8c14 | ||
|
|
83ca7a7476 | ||
|
|
2ef31d2ec3 | ||
|
|
018c641e8b | ||
|
|
78961bec49 | ||
|
|
8ee45162aa | ||
|
|
a84568574f | ||
|
|
f3c86ada45 | ||
|
|
3145cb4231 | ||
|
|
d97b080586 | ||
|
|
4f801154aa | ||
|
|
9fbedd244c | ||
|
|
8e3446c13e | ||
|
|
27d84bea5a | ||
|
|
077910bf72 | ||
|
|
455fcef114 | ||
|
|
bbc338120e | ||
|
|
d8941ea810 | ||
|
|
f1ed40adba | ||
|
|
238595e1bc | ||
|
|
222037daa9 | ||
|
|
2a3b37cbf7 | ||
|
|
2604a22772 | ||
|
|
6a65544fb7 | ||
|
|
6839f1b529 | ||
|
|
e2058f91c1 | ||
|
|
3e062a5517 | ||
|
|
b165b9a5f2 | ||
|
|
aa13953326 | ||
|
|
c482bb604c | ||
|
|
a7f4dc2f10 | ||
|
|
6a3bb455b4 | ||
|
|
ad351a1368 | ||
|
|
eb2c7c6f34 | ||
|
|
2a77078022 | ||
|
|
be73264341 | ||
|
|
59d958982f | ||
|
|
f7ca35c9b6 | ||
|
|
0641b568ee | ||
|
|
44d0198c6f | ||
|
|
c828c3acd9 | ||
|
|
b9c51792d1 | ||
|
|
b2815ad30b | ||
|
|
05aa1fc038 | ||
|
|
bce5411ea7 | ||
|
|
8ba3b71d1c | ||
|
|
8496ea7072 | ||
|
|
3484dc8f33 | ||
|
|
b5d79f42a9 | ||
|
|
74628ab04b | ||
|
|
d534dfe65b | ||
|
|
64ad07d95d | ||
|
|
3618778737 | ||
|
|
07444f0688 | ||
|
|
63a77d0235 | ||
|
|
3909481205 | ||
|
|
13f1730dda | ||
|
|
27a257f010 | ||
|
|
440f96c75b | ||
|
|
a8043e9560 | ||
|
|
668f15fab8 | ||
|
|
2a61328e7b | ||
|
|
12fce15d14 | ||
|
|
90623ed372 | ||
|
|
bbd7704e2e | ||
|
|
d9f0caeee7 | ||
|
|
29ca2f731e | ||
|
|
694b3dd629 | ||
|
|
6e59c8d749 | ||
|
|
7fe5f22770 | ||
|
|
1f059dbb5d | ||
|
|
7b38cffd85 | ||
|
|
d7ecdac6b0 | ||
|
|
e525dfffcd | ||
|
|
12a2d54f35 | ||
|
|
b77c7bba30 | ||
|
|
b0c2d6cd76 | ||
|
|
e35cde1f6c | ||
|
|
89d72da92c | ||
|
|
60fb00ff2d | ||
|
|
ebe9633665 | ||
|
|
99c4f2ccfb | ||
|
|
da5445eef9 | ||
|
|
1d55e67b00 | ||
|
|
a0b7561ed7 | ||
|
|
46b38b30d7 | ||
|
|
97d39b3336 | ||
|
|
c7c5df1190 | ||
|
|
41ed852822 | ||
|
|
c234a65a7b | ||
|
|
ae2297b0bd | ||
|
|
c46a2cd372 | ||
|
|
049342def2 | ||
|
|
a6791d41f8 | ||
|
|
096935c826 | ||
|
|
b7b1a87f23 | ||
|
|
94bdea3c69 | ||
|
|
4c1e1f0fb1 | ||
|
|
3b13713295 | ||
|
|
0207018547 | ||
|
|
b4b8d9403c | ||
|
|
2677ece123 | ||
|
|
4b23d30fa6 | ||
|
|
93a1a436a7 | ||
|
|
bad90c9848 | ||
|
|
5fa0dc8d0d | ||
|
|
fc560fe63a | ||
|
|
1248908f1f | ||
|
|
988e6227cc | ||
|
|
9ec7fa7f93 | ||
|
|
a1568be7a7 | ||
|
|
f850d0ea1b | ||
|
|
045056dc46 | ||
|
|
9e8cd4d3d7 | ||
|
|
bb7caa3c10 | ||
|
|
271838888c | ||
|
|
424d6a5af9 | ||
|
|
1076d5f1ff | ||
|
|
f9b7012389 | ||
|
|
0667519052 | ||
|
|
123acdd795 | ||
|
|
fb2ba25f23 | ||
|
|
0bc6a42192 | ||
|
|
ed5d7cd812 | ||
|
|
92bd82320b | ||
|
|
dc6eb77f43 | ||
|
|
68d96fae7e | ||
|
|
a5856da810 | ||
|
|
73ec2f0fed | ||
|
|
f86acd07a4 | ||
|
|
887bb3f718 | ||
|
|
1d3ca382aa | ||
|
|
db235a7e78 | ||
|
|
27bca4c438 | ||
|
|
7fb3828d77 | ||
|
|
cf99201b89 | ||
|
|
57e7722f59 | ||
|
|
010d56bda9 | ||
|
|
cac19ec614 | ||
|
|
7a6ac5d794 | ||
|
|
bcdc419b66 | ||
|
|
0e4c1dd75a | ||
|
|
b06918c333 | ||
|
|
7e8868ea80 | ||
|
|
c3f00069c9 | ||
|
|
cd267d0f1a | ||
|
|
a3e602a670 | ||
|
|
c64cdea754 | ||
|
|
91ee905843 | ||
|
|
53239385ae | ||
|
|
038cd30960 | ||
|
|
6dcc6dbd30 | ||
|
|
da49c64095 | ||
|
|
8cd7779b14 | ||
|
|
30fd0a397f | ||
|
|
fe242c3039 | ||
|
|
9b08cf221a | ||
|
|
0ef05ad4e3 | ||
|
|
a6ca3f211e | ||
|
|
59c8bbdf2b | ||
|
|
1b8333a7f8 | ||
|
|
0fbfb17d83 | ||
|
|
d2eef74bb8 | ||
|
|
0ecb2260e0 | ||
|
|
4c1ae55410 | ||
|
|
59d746db97 | ||
|
|
15115a51bf | ||
|
|
a3aa3fb0b5 | ||
|
|
fed7921cdf | ||
|
|
57325bc6ad | ||
|
|
a9e8076abe | ||
|
|
9abe4e8f96 | ||
|
|
cc96ae0a09 | ||
|
|
62bb9e80d9 | ||
|
|
31c9282d87 | ||
|
|
e9a365333f | ||
|
|
b200438c4e | ||
|
|
05966afe1e | ||
|
|
460d747424 | ||
|
|
a23f26f4f4 | ||
|
|
8ecd9a31c8 | ||
|
|
c7fda3447c | ||
|
|
eb5bd252db | ||
|
|
bd5fe1af10 | ||
|
|
79c1b761d4 | ||
|
|
26fe832bd9 | ||
|
|
de65d96fe2 | ||
|
|
f44fbe5687 | ||
|
|
75542ebcc3 | ||
|
|
6c4ec805dc | ||
|
|
6c738793fd | ||
|
|
5fadeadce2 | ||
|
|
942dd7f710 | ||
|
|
3159a6bf1f | ||
|
|
6ecd12d250 | ||
|
|
c69147bdc5 | ||
|
|
0c4a52558b | ||
|
|
3fc9a14015 | ||
|
|
5d2d821c6e | ||
|
|
a4f5febf38 | ||
|
|
ee3683f6ac | ||
|
|
ed8cdb9da4 | ||
|
|
ed4f97cea7 | ||
|
|
53b47455d3 | ||
|
|
af85d37307 | ||
|
|
1fc06a350b | ||
|
|
ff9e291cd7 | ||
|
|
17acb444bd | ||
|
|
d173f9f863 | ||
|
|
764a80fab2 | ||
|
|
4e908db62b | ||
|
|
b9f7326f6f | ||
|
|
28aa0b913c | ||
|
|
a172538dfc | ||
|
|
f3c5391d54 | ||
|
|
0a480066df | ||
|
|
4f5cf81212 | ||
|
|
96836065a8 | ||
|
|
77777deec5 | ||
|
|
ee58303fbb | ||
|
|
82000bfe39 | ||
|
|
cbd8ed52c7 | ||
|
|
66b873e6e5 | ||
|
|
8e7b288c00 | ||
|
|
395be18151 | ||
|
|
1fdb452c9d | ||
|
|
2802ee233c | ||
|
|
d03c6b4646 | ||
|
|
13d36ab174 | ||
|
|
ce782a37f7 | ||
|
|
7a6465303d | ||
|
|
8590bff6e4 | ||
|
|
d29d4ba110 | ||
|
|
f978eb49f4 | ||
|
|
3e13d5ae1f | ||
|
|
cffc63a29e | ||
|
|
43955d680a | ||
|
|
baa1307870 | ||
|
|
fb565aeb2a | ||
|
|
27286fce24 | ||
|
|
9b10f59162 | ||
|
|
ad3438b859 | ||
|
|
61cb9ac524 | ||
|
|
55a4798ac3 | ||
|
|
f85b30c967 | ||
|
|
abf0ecebaf | ||
|
|
49bb7c879e | ||
|
|
afd4748426 | ||
|
|
f8cb63b11a | ||
|
|
8a3f9c7e4e | ||
|
|
2abd37c131 | ||
|
|
67b940aec9 | ||
|
|
c267933fb8 | ||
|
|
ac7cef2fd9 | ||
|
|
00185ef936 | ||
|
|
9e1dd7aa26 | ||
|
|
6afd3eb869 | ||
|
|
5b8ae1be2e | ||
|
|
c7caa53b52 | ||
|
|
5f80563e49 | ||
|
|
cc7eb92550 | ||
|
|
98c61bf819 | ||
|
|
b083bd534b | ||
|
|
6aca0cd874 | ||
|
|
ee75f0e92d | ||
|
|
63f3f83fa3 | ||
|
|
c8911b901e | ||
|
|
410f8fed76 | ||
|
|
5b3285c006 | ||
|
|
5704c21d56 | ||
|
|
c2e25e6d0d | ||
|
|
05dc569a6f | ||
|
|
3d3684daeb | ||
|
|
d6c9ce071c | ||
|
|
accfee4c50 | ||
|
|
57f03b21fc | ||
|
|
fc8dc74de4 | ||
|
|
d83a50d36a | ||
|
|
53c277b420 | ||
|
|
3be28131c9 | ||
|
|
f3f4dcd84a | ||
|
|
e4f61b3ad8 | ||
|
|
9ca7ca5ce6 | ||
|
|
381dafc7b9 | ||
|
|
69adce5c02 | ||
|
|
d0c6c7e6de | ||
|
|
e2cc939260 | ||
|
|
702618b924 | ||
|
|
d93fafcf57 | ||
|
|
f93521395c | ||
|
|
9977759f85 | ||
|
|
efc470ff4c | ||
|
|
d7567f4b97 | ||
|
|
c29d7c6e5b | ||
|
|
4b36c27e33 | ||
|
|
55ba6786b3 | ||
|
|
3165912837 | ||
|
|
44320838a0 | ||
|
|
cedf5ac7d0 | ||
|
|
1946250cea | ||
|
|
4378b28777 | ||
|
|
77a3c103d1 | ||
|
|
e1956f8d80 | ||
|
|
36d19ea284 | ||
|
|
744976e8a1 | ||
|
|
d8d6dada5e | ||
|
|
58c762d9e8 | ||
|
|
3c4f9ced11 | ||
|
|
938093db6f | ||
|
|
b4bf9bfaee | ||
|
|
f3427c7470 | ||
|
|
3919e6404c | ||
|
|
775894ee0d | ||
|
|
a4a3c96228 | ||
|
|
471458fda3 | ||
|
|
b8e97164c8 | ||
|
|
974fa8e210 | ||
|
|
6525f3b854 | ||
|
|
984e8a5b2c | ||
|
|
fd9a7217e9 | ||
|
|
b1080e5fe5 | ||
|
|
2b77da369d | ||
|
|
8f3e1a3eb0 | ||
|
|
a2a58e925b | ||
|
|
9043291b8d | ||
|
|
4af9dfa36d | ||
|
|
72160bf806 | ||
|
|
bc85c3be59 | ||
|
|
e3d400c70d | ||
|
|
0edb028bbf | ||
|
|
cc7f69b908 | ||
|
|
1d5a60ef9e | ||
|
|
7000ba1630 | ||
|
|
026c7d391b | ||
|
|
1ed9f9819a | ||
|
|
7db6bd3fc4 | ||
|
|
47dfdfbffe | ||
|
|
17a75d3b2a | ||
|
|
381dd305c1 | ||
|
|
a0980b0fbd | ||
|
|
ad293a8f40 | ||
|
|
0b77c5c319 | ||
|
|
48834eb8b4 | ||
|
|
7b68e271c8 | ||
|
|
a1c8b8e5de | ||
|
|
b616ffaf1f | ||
|
|
8c37bd87d6 | ||
|
|
98f31ff491 | ||
|
|
d201f2c31c | ||
|
|
b45be228d2 | ||
|
|
99a9a87a56 | ||
|
|
c85035b58e | ||
|
|
f923904a0e | ||
|
|
eceb3ed877 | ||
|
|
0a05c87c9c | ||
|
|
ec51aecad6 | ||
|
|
c21fec9e1d | ||
|
|
6886b22360 | ||
|
|
54e93c1ed6 | ||
|
|
d64f72351d | ||
|
|
34fc5a5bcf | ||
|
|
93cba698e4 | ||
|
|
93dbf789d0 | ||
|
|
d59466123b | ||
|
|
1d0ef774e6 | ||
|
|
68c572bd6e | ||
|
|
54e8f85def | ||
|
|
80d7410c15 | ||
|
|
837d64dfdb | ||
|
|
db735bc454 | ||
|
|
2f4abb22f8 | ||
|
|
679cf70269 | ||
|
|
3b5c5666b3 | ||
|
|
bfa7950d6a | ||
|
|
89b9492f39 | ||
|
|
8bf3822e54 | ||
|
|
9f3f41f39e | ||
|
|
8d50e5ecb9 | ||
|
|
3093a82a9f | ||
|
|
eae881c35a | ||
|
|
c9f6d64b44 | ||
|
|
f542dfb07c | ||
|
|
c604ec9c6d | ||
|
|
9adddace83 | ||
|
|
f53350a699 | ||
|
|
4834b9d491 | ||
|
|
c556e095e0 | ||
|
|
57bb282dbc | ||
|
|
d3e4876511 | ||
|
|
05c5151c38 | ||
|
|
3fc9b8e62c | ||
|
|
0cd5f3c3a3 | ||
|
|
b660c8055f | ||
|
|
677f49aed5 | ||
|
|
68bb791c96 | ||
|
|
3a695618c1 | ||
|
|
db83f09b19 | ||
|
|
824c371d92 | ||
|
|
f2e84c0256 | ||
|
|
f475709b08 | ||
|
|
3628035884 | ||
|
|
2b119ddb93 | ||
|
|
08d4fbbecd | ||
|
|
f0baa16cde | ||
|
|
c4c0d4a007 | ||
|
|
72fc940cd7 | ||
|
|
2dff4c14f9 | ||
|
|
f14c67a444 | ||
|
|
6e93985fe2 | ||
|
|
816c0ee703 | ||
|
|
89a3d1d32a | ||
|
|
b44ccc3d0d | ||
|
|
a82d963998 | ||
|
|
ad3bce178c | ||
|
|
fea83c5bbc | ||
|
|
c5ed81c130 | ||
|
|
6ea647822f | ||
|
|
02f28b1ac0 | ||
|
|
da8fa6f91c | ||
|
|
51026cc55e | ||
|
|
bd4a48c42c | ||
|
|
63a7bb0b86 | ||
|
|
273f94e9b6 | ||
|
|
7a30537d22 | ||
|
|
2793b832e9 | ||
|
|
e37eea33c1 | ||
|
|
5c0aa5357f | ||
|
|
a74910f055 | ||
|
|
2f290a5655 | ||
|
|
a5170c0da9 | ||
|
|
2850e4ee8d | ||
|
|
99dc39783c | ||
|
|
9fbcfcf00f | ||
|
|
5c138c7dbc | ||
|
|
233aca8421 | ||
|
|
a3e28d81e5 | ||
|
|
1c095f6b46 | ||
|
|
78d3dd8b9b | ||
|
|
9d65eeeee1 | ||
|
|
0d0880efed | ||
|
|
5092dc381b | ||
|
|
4d9d91b121 | ||
|
|
cbe5fc2ab7 | ||
|
|
60f0dd5d24 | ||
|
|
c3348c4e09 | ||
|
|
ebff795ae9 | ||
|
|
5225d8d068 | ||
|
|
27468651ff | ||
|
|
91acee7630 | ||
|
|
93e95705f8 | ||
|
|
c375282de0 | ||
|
|
104e779087 | ||
|
|
bcae72bb34 | ||
|
|
2e4cb03f2d | ||
|
|
5e025ee8ca | ||
|
|
7ddc063209 | ||
|
|
da82c7fe51 | ||
|
|
ded6982a19 | ||
|
|
861ee25c9c | ||
|
|
5f1544154c | ||
|
|
6a8236b5b3 | ||
|
|
e0d8a1d7b3 | ||
|
|
1d5e793c84 | ||
|
|
2b8dd842e2 | ||
|
|
7be2c64abe | ||
|
|
942b7c93ef | ||
|
|
3ccebbe227 | ||
|
|
b8ac9c7553 | ||
|
|
8a0c8f47a0 | ||
|
|
d8b3a17a7a | ||
|
|
669f50c504 | ||
|
|
9dba40a1d8 | ||
|
|
83491dd7e1 | ||
|
|
03c8834772 | ||
|
|
93431c09ce | ||
|
|
eab3b660cb | ||
|
|
2762eeb4d4 | ||
|
|
32feb98874 | ||
|
|
69514767b6 | ||
|
|
272c64d903 | ||
|
|
8d76120ac7 | ||
|
|
275229cd52 | ||
|
|
bdb8ea18a2 | ||
|
|
a22aa5ba0c | ||
|
|
b6fcd784c6 | ||
|
|
9147b34409 | ||
|
|
31ba535dba | ||
|
|
ac7f7a5a71 | ||
|
|
41073a45f9 | ||
|
|
ec223dd54d | ||
|
|
c27d922b3a | ||
|
|
c9bd9fb474 | ||
|
|
056fd9095a | ||
|
|
8d80ab5257 | ||
|
|
9af5835df5 | ||
|
|
96e143208f | ||
|
|
0337ab5d92 | ||
|
|
f417219f61 | ||
|
|
56c4e841c5 | ||
|
|
267896ce2b | ||
|
|
7e7ba85a78 | ||
|
|
00e69e6f7e | ||
|
|
b0b6ce7be8 | ||
|
|
43665261cc | ||
|
|
abfce08baf | ||
|
|
b63723feaf | ||
|
|
4dcaa5f883 | ||
|
|
5e2d66d201 | ||
|
|
3b7f25478a | ||
|
|
f20810b2ae | ||
|
|
7fdd816a1a | ||
|
|
718a49437a | ||
|
|
1117980894 | ||
|
|
7908019499 | ||
|
|
7de4ff2740 | ||
|
|
60d157717f | ||
|
|
a11b0eb39a | ||
|
|
eb7b189970 | ||
|
|
a08a856533 | ||
|
|
3669d7f3f2 | ||
|
|
87e8320781 | ||
|
|
a11d274d16 | ||
|
|
26f6152356 | ||
|
|
ae60c52fe2 | ||
|
|
36482cc903 | ||
|
|
6c7432fc99 | ||
|
|
fd7ebff179 | ||
|
|
257c5d9036 | ||
|
|
27443a183c | ||
|
|
26c2c86edd | ||
|
|
6fae3152a9 | ||
|
|
f2cdd52024 | ||
|
|
9e40bbbcdc | ||
|
|
8b9e605e0b | ||
|
|
61d064fb6d | ||
|
|
85bc613d04 | ||
|
|
3fe0d47126 | ||
|
|
a944226814 | ||
|
|
15c5a36053 | ||
|
|
b26f0b08fb | ||
|
|
f62406810d | ||
|
|
a7eaf6b368 | ||
|
|
e9591c92f9 | ||
|
|
317d07a355 | ||
|
|
2052caada4 | ||
|
|
c43f5eb66e | ||
|
|
a8fef00ad4 | ||
|
|
6aa47a26ae | ||
|
|
0ffd0f340d | ||
|
|
9147e30804 | ||
|
|
eb1414e24a | ||
|
|
1faa63f56c | ||
|
|
1aa985051e | ||
|
|
bc07bb154d | ||
|
|
b8548a0982 | ||
|
|
f4eee42683 | ||
|
|
172d6594c7 | ||
|
|
5feecc725b | ||
|
|
0ba84f256d | ||
|
|
17b79e4114 | ||
|
|
821fd3462f | ||
|
|
31681c66a1 | ||
|
|
6ec235afc0 | ||
|
|
bda44212b1 | ||
|
|
bb663aa71a | ||
|
|
6be6b7e17a | ||
|
|
0efbf79fa1 | ||
|
|
0ab396eeb8 | ||
|
|
c7afc85826 | ||
|
|
8fea65e3f1 | ||
|
|
28a1edbc72 | ||
|
|
45bfb8961e | ||
|
|
b925fd61dc | ||
|
|
b2b27711c0 | ||
|
|
44f116cf68 | ||
|
|
81f481fadf | ||
|
|
4560009927 | ||
|
|
b6ffeaeb32 | ||
|
|
790d606834 | ||
|
|
0eaf8cea79 | ||
|
|
3d6a32c7b6 | ||
|
|
a5a5690d66 | ||
|
|
c133b556d1 | ||
|
|
11995e432b | ||
|
|
b7361059e2 | ||
|
|
c96745ce0e | ||
|
|
68d8ce56c8 | ||
|
|
cd54f07ee5 | ||
|
|
b89b870e00 | ||
|
|
83057af453 | ||
|
|
4ab86c67c1 | ||
|
|
95adcfa7f2 | ||
|
|
e19ee79b56 | ||
|
|
7a67604551 | ||
|
|
28b4c9a546 | ||
|
|
6a8868e632 | ||
|
|
d49a5f43ed | ||
|
|
ca643b23ba | ||
|
|
ddee13ed66 | ||
|
|
fe3805da95 | ||
|
|
95c5e339f2 | ||
|
|
3d8557a0bf | ||
|
|
9e083488f1 | ||
|
|
887b0e3e2a | ||
|
|
965f34a04c | ||
|
|
09396cef00 | ||
|
|
de303fb897 | ||
|
|
4096b8b882 | ||
|
|
459771ba4f | ||
|
|
60cc0346fe | ||
|
|
76539f9eb0 | ||
|
|
f1644cb572 | ||
|
|
7ca568a613 | ||
|
|
68a2b25f0d | ||
|
|
22bb93ec13 | ||
|
|
906e2e36a6 | ||
|
|
7fb19df18b | ||
|
|
6dc45a1c7f | ||
|
|
688571688c | ||
|
|
711a0dac57 | ||
|
|
49444faed2 | ||
|
|
0e39620047 | ||
|
|
8c18651c0c | ||
|
|
22e0604226 | ||
|
|
1cb66a7c6b | ||
|
|
a94fe43240 | ||
|
|
5fedc2c3b0 | ||
|
|
3b2f3d0426 | ||
|
|
2fe1ae425b | ||
|
|
4019541581 | ||
|
|
b5b4185048 | ||
|
|
2693b3f3f1 | ||
|
|
34f5fccd84 | ||
|
|
f09321f6ab | ||
|
|
42a762481b | ||
|
|
5dad91ca4e | ||
|
|
2ab7eca665 | ||
|
|
7a8881c305 | ||
|
|
20e0a2d7a1 | ||
|
|
922492169f | ||
|
|
f9eb7d0fb5 | ||
|
|
3cbe90567f | ||
|
|
804b077115 | ||
|
|
524a0d0c35 | ||
|
|
e5685eee04 | ||
|
|
a76c96e5df | ||
|
|
8f023a03e5 | ||
|
|
56b76ca098 | ||
|
|
9af221e8b4 | ||
|
|
b9a9118ae2 | ||
|
|
d422da2c43 | ||
|
|
6743752789 | ||
|
|
16e0b0e0e7 | ||
|
|
310d09586a | ||
|
|
4b57870d29 | ||
|
|
52785dd561 | ||
|
|
43819b130f | ||
|
|
4c9f986c7c | ||
|
|
386c9ec0cd | ||
|
|
abc34f7942 | ||
|
|
b8c74125e8 | ||
|
|
af3fed2a18 | ||
|
|
3f348c6260 | ||
|
|
a2a089299f | ||
|
|
bdc69b9860 | ||
|
|
fb520d6f92 | ||
|
|
0faa2117ec | ||
|
|
79ecc3b432 | ||
|
|
e04e3040bb | ||
|
|
076c7804e7 | ||
|
|
aa3acdb99c | ||
|
|
eff548d2e8 | ||
|
|
32056761c8 | ||
|
|
a026fc9ae6 | ||
|
|
5f9a052236 | ||
|
|
ba6387021e | ||
|
|
ff59f34b7f | ||
|
|
c3d4884d34 | ||
|
|
2817ec17be | ||
|
|
8c4db068af | ||
|
|
77b92b59c7 | ||
|
|
c088826789 | ||
|
|
e66e954b93 | ||
|
|
cc33e1d259 | ||
|
|
b9994dbf40 | ||
|
|
bbb5c393a6 | ||
|
|
f582484693 | ||
|
|
4716932310 | ||
|
|
e91a608312 | ||
|
|
e0e72e5426 | ||
|
|
877572d2b3 | ||
|
|
5cf5b09ffe | ||
|
|
45c8c43abb | ||
|
|
c5691886c0 | ||
|
|
3f022ea0ee | ||
|
|
e4c88e575f | ||
|
|
998af4931f | ||
|
|
0177a45436 | ||
|
|
91ba06c501 | ||
|
|
829dcbf144 | ||
|
|
c6de76822e | ||
|
|
fd67219af7 | ||
|
|
ad96863cd9 | ||
|
|
00d0184bad | ||
|
|
ff40b1effc | ||
|
|
d4e1a506ed | ||
|
|
55eedc153e | ||
|
|
1041ea4e5e | ||
|
|
2ec939e595 | ||
|
|
0820d0c0e6 | ||
|
|
6c6ca38374 | ||
|
|
95157460cb | ||
|
|
32c53343f1 | ||
|
|
b0912947fc | ||
|
|
2f4ea29633 | ||
|
|
6b424b0eb1 | ||
|
|
7343223f59 | ||
|
|
5629033578 | ||
|
|
2cc9efc5b2 | ||
|
|
326644f355 | ||
|
|
31d53a6137 | ||
|
|
6bad5e02d1 | ||
|
|
77bcc41903 | ||
|
|
e19a723c41 | ||
|
|
fd9916ddec | ||
|
|
5f24183a22 | ||
|
|
a72ac6eadb | ||
|
|
793fd74d7f | ||
|
|
489b6ae190 | ||
|
|
9bf878d87a | ||
|
|
a488c865e1 | ||
|
|
e1a0ffd25c | ||
|
|
c2854d094b | ||
|
|
c42a2c8a94 | ||
|
|
916c3497c4 | ||
|
|
610e10e85a | ||
|
|
bb5330fced | ||
|
|
d056655a4e | ||
|
|
e72ce3bff2 | ||
|
|
1345d98e92 | ||
|
|
0d8081ad9d | ||
|
|
219c82630a | ||
|
|
3cb52c96be | ||
|
|
6a9c66ff3f | ||
|
|
e46bf51022 | ||
|
|
eac89b4d80 | ||
|
|
7d0cd339bf | ||
|
|
8fb76f2af4 | ||
|
|
a24add7886 | ||
|
|
8327b015c9 | ||
|
|
9389d1663c | ||
|
|
86aff5f75a | ||
|
|
a164a3c6d1 | ||
|
|
d4d0b7129b | ||
|
|
f39fde8b4b | ||
|
|
84d12d3932 | ||
|
|
0faf9bf67e | ||
|
|
17a662de03 | ||
|
|
0dd886f5fe | ||
|
|
e920ad1036 | ||
|
|
b5858ad6f8 | ||
|
|
538b66b238 | ||
|
|
c79b21e875 | ||
|
|
ac9d72d451 | ||
|
|
eb29cd502c | ||
|
|
739596e4ee | ||
|
|
638cbba237 | ||
|
|
e6fbd0b84f | ||
|
|
b79a64c5ed | ||
|
|
fd601037a1 | ||
|
|
0a24bbfabe | ||
|
|
a7d6ab15f8 | ||
|
|
5a82c93d47 | ||
|
|
5d13f46548 | ||
|
|
ea636aac7e | ||
|
|
a105fe46a5 | ||
|
|
bcf835cd03 | ||
|
|
e9e4060f8c | ||
|
|
9ae3696f61 | ||
|
|
0deff19202 | ||
|
|
40ab6b6f9f | ||
|
|
215b76bfab | ||
|
|
4150fea2ad | ||
|
|
86a351e826 | ||
|
|
ceb2af3fda | ||
|
|
14533da646 | ||
|
|
0041b2118b | ||
|
|
13bb415187 | ||
|
|
2742d0df6e | ||
|
|
c857da5a49 | ||
|
|
08dcbef2fc | ||
|
|
6af1010f3a | ||
|
|
6bea213039 | ||
|
|
b1ae091746 | ||
|
|
c769f7bd1b | ||
|
|
382ee8cc1f | ||
|
|
d5b7cbefdc | ||
|
|
7497907293 | ||
|
|
64c6c27957 | ||
|
|
eeb0b2bef3 | ||
|
|
53d3d7392f | ||
|
|
ca12bdcced | ||
|
|
ff5ac7ff4e | ||
|
|
845826ba70 | ||
|
|
9840851109 | ||
|
|
196d00897d | ||
|
|
5798cabd7c | ||
|
|
f7f0d27a05 | ||
|
|
6f8792dded | ||
|
|
68dbdb111a | ||
|
|
42c72001b6 | ||
|
|
6d5d102984 | ||
|
|
e1283484e1 | ||
|
|
84d83a3c9b | ||
|
|
88151df2bc | ||
|
|
a1dbd532fe | ||
|
|
fede3ec0ba | ||
|
|
3e3e247997 | ||
|
|
579595fe7f | ||
|
|
4ffc6fc94f | ||
|
|
d00f3aaff4 | ||
|
|
76e8fd2b07 | ||
|
|
ce563bfb6a | ||
|
|
30caed211b | ||
|
|
0e6cfc1879 | ||
|
|
a889a58a39 | ||
|
|
eb8808cb09 | ||
|
|
22cc5334c5 | ||
|
|
6c4af20356 | ||
|
|
0db28c75b2 | ||
|
|
ad1a2ed197 | ||
|
|
116fb5155d | ||
|
|
7a0c2224bb | ||
|
|
f7ca0a8ddc | ||
|
|
02a984398a | ||
|
|
36ccb92e51 | ||
|
|
a68d7e41db | ||
|
|
6060924ee3 | ||
|
|
a6f58a62ee | ||
|
|
5192b3af02 | ||
|
|
db987d47c4 | ||
|
|
9124209aa3 | ||
|
|
ced28963ad | ||
|
|
78365a7d4c | ||
|
|
7bd88561d5 | ||
|
|
2fc462bad5 | ||
|
|
25c66a5101 | ||
|
|
d041f205fb | ||
|
|
5ebc615b80 | ||
|
|
9753146785 | ||
|
|
55d6710630 | ||
|
|
5982eba0ce | ||
|
|
042d31db93 | ||
|
|
20f7967241 | ||
|
|
2d5667a1af | ||
|
|
ff7091cd80 | ||
|
|
2d3f09266e | ||
|
|
2ad4b9c06f | ||
|
|
69c1eacb75 | ||
|
|
abcf53f778 | ||
|
|
b7040cd271 | ||
|
|
106816ab7f | ||
|
|
cc851588b6 | ||
|
|
0708184be2 | ||
|
|
10faf2bb49 | ||
|
|
8179c35189 | ||
|
|
89512be546 | ||
|
|
59241cb831 | ||
|
|
5fdfdcae78 | ||
|
|
765530b386 | ||
|
|
63682a2945 | ||
|
|
ca7b8301a1 | ||
|
|
9acbaf7274 | ||
|
|
5ddb3f1cff | ||
|
|
7341971c86 | ||
|
|
cc174a563c | ||
|
|
858eb8b020 | ||
|
|
f6b58655e8 | ||
|
|
ffb98cdba6 | ||
|
|
31580ee51d | ||
|
|
aaa9578047 | ||
|
|
c598f87d7f | ||
|
|
f30cf440fe | ||
|
|
ff703b32a2 | ||
|
|
286e9517c3 | ||
|
|
5abb678433 | ||
|
|
38f5ce86d8 | ||
|
|
9c4410c0fd | ||
|
|
f64ec81a1a | ||
|
|
7a4a78c2ca | ||
|
|
85cb1a0f71 | ||
|
|
ef6c98660b | ||
|
|
21140dfad2 | ||
|
|
ccc77cdaf7 | ||
|
|
26a7029140 | ||
|
|
772e8cbeff | ||
|
|
f11ffdec52 | ||
|
|
ae31800432 | ||
|
|
fd905e4e3e | ||
|
|
90f1df76bb | ||
|
|
c03ae5649b | ||
|
|
0ad37366fd | ||
|
|
432a2c5155 | ||
|
|
ba467e2749 | ||
|
|
406f8cb245 | ||
|
|
137c9daa57 | ||
|
|
206776441c | ||
|
|
dda2bfd7a8 | ||
|
|
01c2e262eb | ||
|
|
cca5a44dc1 | ||
|
|
976e6d552f | ||
|
|
f27e882ad2 | ||
|
|
ed0145cc1c | ||
|
|
6e75cba4c7 | ||
|
|
d2ead4e1fb | ||
|
|
803d56ccf7 | ||
|
|
dd63bf3c7c | ||
|
|
5e886d9eaf | ||
|
|
77996157f2 | ||
|
|
a993ec7796 | ||
|
|
70dfb1561d | ||
|
|
eaa9af55c4 | ||
|
|
958ce912a0 | ||
|
|
81c0f90b4f | ||
|
|
54372d966d | ||
|
|
3c090bc6a3 | ||
|
|
7ded52be09 | ||
|
|
0625bcf44a | ||
|
|
6e1cf57079 | ||
|
|
2544b569f0 | ||
|
|
e3f9dd9d20 | ||
|
|
05e5363bfc | ||
|
|
c8e9a625da | ||
|
|
e090628d72 | ||
|
|
0078600e62 | ||
|
|
df4aabcc0a | ||
|
|
708c7ea776 | ||
|
|
a9597c81dd | ||
|
|
8c4d53b218 | ||
|
|
76f8f8f046 | ||
|
|
5ff3ea9317 | ||
|
|
cd32c5bda5 | ||
|
|
80f64d7fcf | ||
|
|
9942da601e | ||
|
|
37f0597b34 | ||
|
|
8b20015f64 | ||
|
|
722007702c | ||
|
|
0b2406d616 | ||
|
|
81e090f375 | ||
|
|
f67443f0d5 | ||
|
|
ce6f59b9bd | ||
|
|
cd910e8ae9 | ||
|
|
fa38b5b135 | ||
|
|
4469f020a6 | ||
|
|
1f230c843a | ||
|
|
e65b453bc1 | ||
|
|
26f17b6ede | ||
|
|
9c7ba66d1f | ||
|
|
55a905236b | ||
|
|
00a2fce71d | ||
|
|
36db1f4e06 | ||
|
|
92ac4dc2f7 | ||
|
|
a3959aaf79 | ||
|
|
dbd614f504 | ||
|
|
651f659a05 | ||
|
|
3b9bc3fe78 | ||
|
|
de92764067 | ||
|
|
49b2fcae6c | ||
|
|
c218819728 | ||
|
|
7a1b3e2ee2 | ||
|
|
75b77d6059 | ||
|
|
280f0e74be | ||
|
|
448400dc21 | ||
|
|
0ff0841826 | ||
|
|
ab68723cf6 | ||
|
|
d12d2d9865 | ||
|
|
e4da3eb786 | ||
|
|
3b7a241c02 | ||
|
|
5de3a60725 | ||
|
|
146459d5bc | ||
|
|
651e370191 | ||
|
|
f885d886bd | ||
|
|
66fb3a4530 | ||
|
|
84e8330d5b | ||
|
|
10e106ba83 | ||
|
|
7340989dc5 | ||
|
|
091bac591d | ||
|
|
25f1f7d067 | ||
|
|
b58fa7e241 | ||
|
|
5f99b123d7 | ||
|
|
8c3a19cf56 | ||
|
|
1030db134b | ||
|
|
be39120e3f | ||
|
|
73a4b685f0 | ||
|
|
e2c8f7b3fc | ||
|
|
3634284c5c | ||
|
|
c81a15f4f0 | ||
|
|
8a1f426715 | ||
|
|
6fbd166f3c | ||
|
|
914c5e7146 | ||
|
|
562a9dea70 | ||
|
|
3a13027be0 | ||
|
|
7edb08a7cd | ||
|
|
2f67f0cffa | ||
|
|
288de26d2b | ||
|
|
b55b6dc117 | ||
|
|
059237e4b9 | ||
|
|
42b07013a6 | ||
|
|
28697ce34c | ||
|
|
05eafbe18c | ||
|
|
182386e4ee | ||
|
|
5c302c2fea | ||
|
|
92d2f9cbdd | ||
|
|
9cb5758245 | ||
|
|
5007d77425 | ||
|
|
bb8b606c92 | ||
|
|
83149a09e7 | ||
|
|
5acdfee6bd | ||
|
|
2259cbde40 | ||
|
|
a3c1b0873d | ||
|
|
617df3bedb | ||
|
|
9f837aaade | ||
|
|
3e898fd71b | ||
|
|
1e91f62575 | ||
|
|
ea2f6f1c85 | ||
|
|
23ffecdd30 | ||
|
|
ef2f4f929b | ||
|
|
a0810ed355 | ||
|
|
b32bc93a70 | ||
|
|
0ddd766dfa | ||
|
|
5fafbd5e7a | ||
|
|
f5660cd629 | ||
|
|
6d54ecc10a | ||
|
|
da27edf981 | ||
|
|
bf94973caa | ||
|
|
22a14d6a20 | ||
|
|
5ea31554bc | ||
|
|
4e7559d396 | ||
|
|
863c435bf5 | ||
|
|
93e178a1e2 | ||
|
|
b5c6fa40fa | ||
|
|
789120f4cb | ||
|
|
1bfeda382a | ||
|
|
53d356d992 | ||
|
|
ea64515490 | ||
|
|
57485a0b58 | ||
|
|
8ae57a0fb6 | ||
|
|
a013ab0bf5 | ||
|
|
3d90fdb490 | ||
|
|
86a602aa34 | ||
|
|
27171597de | ||
|
|
895dd9dc33 | ||
|
|
4f889fc21d | ||
|
|
6bfdb053e3 | ||
|
|
5b94b419e9 | ||
|
|
5167bbadee | ||
|
|
66a49ccefc | ||
|
|
a6fdb73d05 | ||
|
|
e41537d22c | ||
|
|
7941b90ea8 | ||
|
|
116a45f5d2 | ||
|
|
6c5d0a16ef | ||
|
|
58a445a923 | ||
|
|
b265dea1eb | ||
|
|
cff1dd7b5d | ||
|
|
6a13aaad4d | ||
|
|
52fe5c556c | ||
|
|
ddabe28490 | ||
|
|
2f2c5d5b09 | ||
|
|
9b3b54eb75 | ||
|
|
2d7dc91928 | ||
|
|
31b748a868 | ||
|
|
79b0763fe9 | ||
|
|
92130608fb | ||
|
|
5662b56714 | ||
|
|
1e194e04fa | ||
|
|
71af09c1fc | ||
|
|
5b1779fe59 | ||
|
|
61c5f6eaa0 | ||
|
|
272c8a2628 | ||
|
|
50a2a6c0f0 | ||
|
|
c21eb6d4cf | ||
|
|
c262ccabbd | ||
|
|
a0bcbdbce9 | ||
|
|
477869bd3b | ||
|
|
cc02ab19d5 | ||
|
|
90de742deb | ||
|
|
0801682569 | ||
|
|
727766cbf0 | ||
|
|
2f46e49937 | ||
|
|
c71a8f4e13 | ||
|
|
ba65611c81 | ||
|
|
3e63010338 | ||
|
|
375948c1dc | ||
|
|
108102219c | ||
|
|
ced3211318 | ||
|
|
6aa0590b33 | ||
|
|
e950ea6698 | ||
|
|
844511340d | ||
|
|
a94745ab9e | ||
|
|
b5c5602301 | ||
|
|
ba11e63364 | ||
|
|
4578eacce9 | ||
|
|
8b02ea7134 | ||
|
|
1133577e4d | ||
|
|
7adf3621b7 | ||
|
|
a335f39e2a | ||
|
|
a5a6afe240 | ||
|
|
3663521899 | ||
|
|
90c08b707d | ||
|
|
44531bd92a | ||
|
|
f5e3d5a8f2 | ||
|
|
c5ab1a22a9 | ||
|
|
9ed20091d2 | ||
|
|
99302e9300 | ||
|
|
aa91bce3ab | ||
|
|
248d3886e0 | ||
|
|
d4a95ddb8b | ||
|
|
aa2e8f3a11 | ||
|
|
9c0d2ac60c | ||
|
|
1867b2e08d | ||
|
|
df3f7c38c3 | ||
|
|
7f4dee8d69 | ||
|
|
95a23c8f7a | ||
|
|
98327ae877 | ||
|
|
e4a4e6b0c8 | ||
|
|
048960ae52 | ||
|
|
d072c0af55 | ||
|
|
6b9b280d71 | ||
|
|
14bde36c1f | ||
|
|
4222035cc1 | ||
|
|
43264f23b1 | ||
|
|
f98063835a | ||
|
|
19d20ff9d1 | ||
|
|
7c8fc51ad1 | ||
|
|
2df6cb7985 | ||
|
|
bc7f5f44ed | ||
|
|
69bcade6fb | ||
|
|
d473245fb2 | ||
|
|
3df30b63f3 | ||
|
|
0992e22568 | ||
|
|
011db7c0f6 | ||
|
|
31b2464899 | ||
|
|
b2ba2c70dc | ||
|
|
a59c4e8fc1 | ||
|
|
4d9da58890 | ||
|
|
b9791287d3 | ||
|
|
2b335e9454 | ||
|
|
877772f80d | ||
|
|
12e500e55d | ||
|
|
2cdee10d50 | ||
|
|
6fbbc7bacb | ||
|
|
2777dc1070 | ||
|
|
3ab4778814 | ||
|
|
696c2be2f3 | ||
|
|
43d2539c95 | ||
|
|
5893e149e0 | ||
|
|
621c988809 | ||
|
|
c0194c63dc | ||
|
|
ff67b11110 | ||
|
|
de6564c264 | ||
|
|
9eb9c93afc | ||
|
|
6e3d99670c | ||
|
|
24ef702e9c | ||
|
|
aca0491941 | ||
|
|
52b2ae3c84 | ||
|
|
27943dca8c | ||
|
|
1f648c5e86 | ||
|
|
ed7955f8e7 | ||
|
|
1e50676f11 | ||
|
|
6b6a238039 | ||
|
|
f978bd4982 | ||
|
|
b6784ee173 | ||
|
|
718582f09d | ||
|
|
b9bdf5c315 | ||
|
|
6c2f00e0d7 | ||
|
|
49ea4ff2f6 | ||
|
|
2a0c50a313 | ||
|
|
6a48de5029 | ||
|
|
e556c16117 | ||
|
|
5c9a34ab5e | ||
|
|
5193009447 | ||
|
|
5ddd0c861d | ||
|
|
80623e4436 | ||
|
|
c10637aaa4 | ||
|
|
2ad40a0970 | ||
|
|
dbad54bf6b | ||
|
|
da250a6a9e | ||
|
|
3bb47c20db | ||
|
|
eb2a3bba30 | ||
|
|
aef395f4df | ||
|
|
b8b2e0e929 | ||
|
|
f66f815ba6 | ||
|
|
62c0918acf | ||
|
|
61e2925a61 | ||
|
|
d488c8271b | ||
|
|
7cc5064df3 | ||
|
|
7b9a2bcfcc | ||
|
|
fa7c6ae8d7 | ||
|
|
72980f09a6 | ||
|
|
0b5edb4ad6 | ||
|
|
9d527ae423 | ||
|
|
7ead59a408 | ||
|
|
d779676724 | ||
|
|
1f1954161e | ||
|
|
6abf3384c7 | ||
|
|
f59d7ad0bd | ||
|
|
d3e6b21146 | ||
|
|
665b814641 | ||
|
|
56feae6e0e | ||
|
|
3db472b0cd | ||
|
|
07c8d36545 | ||
|
|
1b9a40dc5c | ||
|
|
f28b797f0a | ||
|
|
35c96034a7 | ||
|
|
d13c444312 | ||
|
|
9e7ffc1e99 | ||
|
|
07ecc60b63 | ||
|
|
03d13ff224 | ||
|
|
652b0f13d0 | ||
|
|
bf29846b54 | ||
|
|
89af7e9f12 | ||
|
|
c881641ae8 | ||
|
|
a44c76165b | ||
|
|
91144a749f | ||
|
|
221301abd1 | ||
|
|
8250085703 | ||
|
|
5fedada0f5 | ||
|
|
ce8377da03 | ||
|
|
4b7c4335e1 | ||
|
|
4f2744f916 | ||
|
|
9483309332 | ||
|
|
07ac1cbbbe | ||
|
|
e62e6a9a08 | ||
|
|
97089670ee | ||
|
|
063b325986 | ||
|
|
2ea3c08c97 | ||
|
|
f3f5cff36e | ||
|
|
d0aee4f72b | ||
|
|
5ac1276f25 | ||
|
|
113ad144e0 | ||
|
|
c531631a37 | ||
|
|
a76a55f70a | ||
|
|
98e6ba2b50 | ||
|
|
945158bd60 | ||
|
|
ab831aa493 |
10
.dockerignore
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
.git
|
||||||
|
.gitignore
|
||||||
|
HISTORY.md
|
||||||
|
mayan/media
|
||||||
|
db.sqlite*
|
||||||
|
docker
|
||||||
|
!docker/etc
|
||||||
|
!docker/entrypoint.sh
|
||||||
|
./.*
|
||||||
|
docs
|
||||||
43
.gitignore
vendored
@@ -3,26 +3,29 @@
|
|||||||
*.pyo
|
*.pyo
|
||||||
*.sqlite
|
*.sqlite
|
||||||
*.sqlite3
|
*.sqlite3
|
||||||
settings_local.py
|
|
||||||
/celerybeat-schedule
|
|
||||||
document_storage/
|
|
||||||
/misc/mayan.geany
|
|
||||||
mayan/media/document_cache/
|
|
||||||
build/
|
|
||||||
_build/
|
|
||||||
gpg_home/
|
|
||||||
/mayan/media/static/
|
|
||||||
/whoosh_index/
|
|
||||||
/fabfile_install
|
|
||||||
/venv/
|
|
||||||
.coverage
|
|
||||||
/dist/
|
|
||||||
.idea/
|
|
||||||
static_collected/
|
|
||||||
*egg-info*
|
*egg-info*
|
||||||
mayan/settings/local.py
|
.coverage
|
||||||
.vagrant
|
|
||||||
.tox/
|
|
||||||
coverage.xml
|
|
||||||
.coverage.tox*
|
.coverage.tox*
|
||||||
|
.idea/
|
||||||
|
.tox/
|
||||||
|
.vagrant
|
||||||
|
_build/
|
||||||
|
/build/
|
||||||
|
coverage.xml
|
||||||
|
document_storage/
|
||||||
|
gpg_home/
|
||||||
htmlcov/
|
htmlcov/
|
||||||
|
mayan/media/
|
||||||
|
mayan/media/document_cache/
|
||||||
|
mayan/settings/local.py
|
||||||
|
mayan/error.log
|
||||||
|
settings_local.py
|
||||||
|
static_collected/
|
||||||
|
/celerybeat-schedule
|
||||||
|
/fabfile_install
|
||||||
|
/dist/
|
||||||
|
/misc/mayan.geany
|
||||||
|
/mayan/media/static/
|
||||||
|
/venv/
|
||||||
|
/whoosh_index/
|
||||||
|
node_modules/
|
||||||
|
|||||||
109
.gitlab-ci.yml
@@ -1,35 +1,82 @@
|
|||||||
image: python:2.7
|
stages:
|
||||||
services:
|
- test
|
||||||
- mysql
|
- build
|
||||||
- postgres
|
|
||||||
before_script:
|
job_docker_master:
|
||||||
- apt-get update -qq
|
stage: build
|
||||||
- apt-get install -qq python-dev gcc tesseract-ocr tesseract-ocr-deu unpaper ghostscript libjpeg-dev libpng-dev libtiff-dev poppler-utils libreoffice
|
image: docker:latest
|
||||||
variables:
|
services:
|
||||||
POSTGRES_DB: "mayan_edms"
|
- docker:dind
|
||||||
POSTGRES_PASSWORD: "postgres"
|
before_script:
|
||||||
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
|
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
|
||||||
MYSQL_DATABASE: "mayan_edms"
|
|
||||||
#test:mysql:
|
|
||||||
# script:
|
|
||||||
# - pip install -r requirements/testing.txt
|
|
||||||
# - pip install -q mysql-python
|
|
||||||
# - apt-get install -qq mysql-client
|
|
||||||
# - mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD" -e "ALTER DATABASE $MYSQL_DATABASE CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
|
|
||||||
# - coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci.db_mysql --nomigrations
|
|
||||||
# - bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN
|
|
||||||
# tags:
|
|
||||||
# - mysql
|
|
||||||
test:postgres:
|
|
||||||
script:
|
script:
|
||||||
- pip install -r requirements/testing.txt
|
- docker build --pull -t "$CI_REGISTRY_IMAGE" -f docker/Dockerfile .
|
||||||
- pip install -q psycopg2
|
- docker run --rm "$CI_REGISTRY_IMAGE" run-tests
|
||||||
- coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci.db_postgres --nomigrations
|
- docker push "$CI_REGISTRY_IMAGE"
|
||||||
- bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN
|
only:
|
||||||
|
- master
|
||||||
|
|
||||||
|
job_docker_other:
|
||||||
|
stage: build
|
||||||
|
image: docker:latest
|
||||||
|
services:
|
||||||
|
- docker:dind
|
||||||
|
before_script:
|
||||||
|
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
|
||||||
|
script:
|
||||||
|
- docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" -f docker/Dockerfile .
|
||||||
|
- docker run --rm "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" run-tests
|
||||||
|
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
|
||||||
|
except:
|
||||||
|
- master
|
||||||
|
|
||||||
|
.test_base: &test_base
|
||||||
|
stage: test
|
||||||
|
image: ubuntu:16.04
|
||||||
|
cache:
|
||||||
|
paths:
|
||||||
|
- ~/.cache/pip/
|
||||||
|
- /var/cache/apt/archives/
|
||||||
|
before_script:
|
||||||
|
- apt-get -qq update
|
||||||
|
- apt-get install -qq locales
|
||||||
|
- echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale
|
||||||
|
- locale-gen en_US.UTF-8
|
||||||
|
- update-locale LANG=en_US.UTF-8
|
||||||
|
- export LC_ALL=en_US.UTF-8
|
||||||
|
- apt-get install -qq curl gcc ghostscript gpgv gnupg graphviz libjpeg-dev libmagic1 libpng-dev libtiff-dev poppler-utils libreoffice poppler-utils python-dev python-pip tesseract-ocr tesseract-ocr-deu
|
||||||
|
- pip install -r requirements/testing.txt
|
||||||
|
|
||||||
|
test-mysql:
|
||||||
|
<<: *test_base
|
||||||
|
variables:
|
||||||
|
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
|
||||||
|
MYSQL_DATABASE: "mayan_edms"
|
||||||
|
services:
|
||||||
|
- mysql:8.0.3
|
||||||
|
script:
|
||||||
|
- apt-get install -qq libmysqlclient-dev mysql-client
|
||||||
|
- pip install mysql-python
|
||||||
|
- mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD" -e "set global character_set_server=utf8mb4;"
|
||||||
|
- python manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci.db_mysql --nomigrations
|
||||||
|
tags:
|
||||||
|
- mysql
|
||||||
|
|
||||||
|
test-postgres:
|
||||||
|
<<: *test_base
|
||||||
|
variables:
|
||||||
|
POSTGRES_DB: "mayan_edms"
|
||||||
|
POSTGRES_PASSWORD: "postgres"
|
||||||
|
services:
|
||||||
|
- postgres
|
||||||
|
script:
|
||||||
|
- apt-get install -qq libpq-dev
|
||||||
|
- pip install psycopg2
|
||||||
|
- python manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci.db_postgres --nomigrations
|
||||||
tags:
|
tags:
|
||||||
- postgres
|
- postgres
|
||||||
test:sqlite:
|
|
||||||
|
test-sqlite:
|
||||||
|
<<: *test_base
|
||||||
script:
|
script:
|
||||||
- pip install -r requirements/testing.txt
|
- python manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci --nomigrations
|
||||||
- coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci --nomigrations
|
|
||||||
- bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN
|
|
||||||
|
|||||||
10
.travis.yml
@@ -1,3 +1,5 @@
|
|||||||
|
dist: trusty
|
||||||
|
sudo: required
|
||||||
language: python
|
language: python
|
||||||
python:
|
python:
|
||||||
- 2.7
|
- 2.7
|
||||||
@@ -8,7 +10,7 @@ env:
|
|||||||
- DB=sqlite
|
- DB=sqlite
|
||||||
before_install:
|
before_install:
|
||||||
- sudo apt-get update -qq
|
- sudo apt-get update -qq
|
||||||
- sudo apt-get install -qq python-dev gcc tesseract-ocr tesseract-ocr-deu unpaper ghostscript libjpeg-dev libpng-dev poppler-utils libreoffice
|
- sudo apt-get install -qq python-dev python-pip gcc tesseract-ocr tesseract-ocr-deu ghostscript libjpeg-dev libpng-dev libtiff-dev poppler-utils libreoffice
|
||||||
install:
|
install:
|
||||||
- "pip install -r requirements/testing.txt"
|
- "pip install -r requirements/testing.txt"
|
||||||
- if [[ $DB == mysql ]]; then pip install -q mysql-python; fi
|
- if [[ $DB == mysql ]]; then pip install -q mysql-python; fi
|
||||||
@@ -17,9 +19,9 @@ before_script:
|
|||||||
- mysql -e 'create database mayan_edms;'
|
- mysql -e 'create database mayan_edms;'
|
||||||
- psql -c 'create database mayan_edms;' -U postgres
|
- psql -c 'create database mayan_edms;' -U postgres
|
||||||
script:
|
script:
|
||||||
- if [[ $DB == mysql ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.travis.db_mysql --nomigrations; fi
|
- if [[ $DB == mysql ]]; then coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.travis.db_mysql --nomigrations; fi
|
||||||
- if [[ $DB == postgres ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.travis.db_postgres --nomigrations; fi
|
- if [[ $DB == postgres ]]; then coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.travis.db_postgres --nomigrations; fi
|
||||||
- if [[ $DB == sqlite ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.base --nomigrations; fi
|
- if [[ $DB == sqlite ]]; then coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.base --nomigrations; fi
|
||||||
after_success:
|
after_success:
|
||||||
- coveralls
|
- coveralls
|
||||||
branches:
|
branches:
|
||||||
|
|||||||
40
.tx/config
@@ -19,6 +19,12 @@ source_lang = en
|
|||||||
source_file = mayan/apps/authentication/locale/en/LC_MESSAGES/django.po
|
source_file = mayan/apps/authentication/locale/en/LC_MESSAGES/django.po
|
||||||
type = PO
|
type = PO
|
||||||
|
|
||||||
|
[mayan-edms.cabinets-2-0]
|
||||||
|
file_filter = mayan/apps/cabinets/locale/<lang>/LC_MESSAGES/django.po
|
||||||
|
source_lang = en
|
||||||
|
source_file = mayan/apps/cabinets/locale/en/LC_MESSAGES/django.po
|
||||||
|
type = PO
|
||||||
|
|
||||||
[mayan-edms.checkouts-2-0]
|
[mayan-edms.checkouts-2-0]
|
||||||
file_filter = mayan/apps/checkouts/locale/<lang>/LC_MESSAGES/django.po
|
file_filter = mayan/apps/checkouts/locale/<lang>/LC_MESSAGES/django.po
|
||||||
source_lang = en
|
source_lang = en
|
||||||
@@ -61,6 +67,12 @@ source_lang = en
|
|||||||
source_file = mayan/apps/document_indexing/locale/en/LC_MESSAGES/django.po
|
source_file = mayan/apps/document_indexing/locale/en/LC_MESSAGES/django.po
|
||||||
type = PO
|
type = PO
|
||||||
|
|
||||||
|
[mayan-edms.document_parsing-2-0]
|
||||||
|
file_filter = mayan/apps/document_parsing/locale/<lang>/LC_MESSAGES/django.po
|
||||||
|
source_lang = en
|
||||||
|
source_file = mayan/apps/document_parsing/locale/en/LC_MESSAGES/django.po
|
||||||
|
type = PO
|
||||||
|
|
||||||
[mayan-edms.document_signatures-2-0]
|
[mayan-edms.document_signatures-2-0]
|
||||||
file_filter = mayan/apps/document_signatures/locale/<lang>/LC_MESSAGES/django.po
|
file_filter = mayan/apps/document_signatures/locale/<lang>/LC_MESSAGES/django.po
|
||||||
source_lang = en
|
source_lang = en
|
||||||
@@ -85,18 +97,6 @@ source_lang = en
|
|||||||
source_file = mayan/apps/events/locale/en/LC_MESSAGES/django.po
|
source_file = mayan/apps/events/locale/en/LC_MESSAGES/django.po
|
||||||
type = PO
|
type = PO
|
||||||
|
|
||||||
[mayan-edms.folders-2-0]
|
|
||||||
file_filter = mayan/apps/folders/locale/<lang>/LC_MESSAGES/django.po
|
|
||||||
source_lang = en
|
|
||||||
source_file = mayan/apps/folders/locale/en/LC_MESSAGES/django.po
|
|
||||||
type = PO
|
|
||||||
|
|
||||||
[mayan-edms.installation-2-0]
|
|
||||||
file_filter = mayan/apps/installation/locale/<lang>/LC_MESSAGES/django.po
|
|
||||||
source_lang = en
|
|
||||||
source_file = mayan/apps/installation/locale/en/LC_MESSAGES/django.po
|
|
||||||
type = PO
|
|
||||||
|
|
||||||
[mayan-edms.linking-2-0]
|
[mayan-edms.linking-2-0]
|
||||||
file_filter = mayan/apps/linking/locale/<lang>/LC_MESSAGES/django.po
|
file_filter = mayan/apps/linking/locale/<lang>/LC_MESSAGES/django.po
|
||||||
source_lang = en
|
source_lang = en
|
||||||
@@ -127,12 +127,6 @@ source_lang = en
|
|||||||
source_file = mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po
|
source_file = mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po
|
||||||
type = PO
|
type = PO
|
||||||
|
|
||||||
[mayan-edms.mirroring-2-0]
|
|
||||||
file_filter = mayan/apps/mirroring/locale/<lang>/LC_MESSAGES/django.po
|
|
||||||
source_lang = en
|
|
||||||
source_file = mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po
|
|
||||||
type = PO
|
|
||||||
|
|
||||||
[mayan-edms.motd-2-0]
|
[mayan-edms.motd-2-0]
|
||||||
file_filter = mayan/apps/motd/locale/<lang>/LC_MESSAGES/django.po
|
file_filter = mayan/apps/motd/locale/<lang>/LC_MESSAGES/django.po
|
||||||
source_lang = en
|
source_lang = en
|
||||||
@@ -170,9 +164,9 @@ source_file = mayan/apps/sources/locale/en/LC_MESSAGES/django.po
|
|||||||
type = PO
|
type = PO
|
||||||
|
|
||||||
[mayan-edms.statistics-2-0]
|
[mayan-edms.statistics-2-0]
|
||||||
file_filter = mayan/apps/statistics/locale/<lang>/LC_MESSAGES/django.po
|
file_filter = mayan/apps/mayan_statistics/locale/<lang>/LC_MESSAGES/django.po
|
||||||
source_lang = en
|
source_lang = en
|
||||||
source_file = mayan/apps/statistics/locale/en/LC_MESSAGES/django.po
|
source_file = mayan/apps/mayan_statistics/locale/en/LC_MESSAGES/django.po
|
||||||
type = PO
|
type = PO
|
||||||
|
|
||||||
[mayan-edms.storage-2-0]
|
[mayan-edms.storage-2-0]
|
||||||
@@ -187,6 +181,12 @@ source_lang = en
|
|||||||
source_file = mayan/apps/tags/locale/en/LC_MESSAGES/django.po
|
source_file = mayan/apps/tags/locale/en/LC_MESSAGES/django.po
|
||||||
type = PO
|
type = PO
|
||||||
|
|
||||||
|
[mayan-edms.task_manager-2-0]
|
||||||
|
file_filter = mayan/apps/task_manager/locale/<lang>/LC_MESSAGES/django.po
|
||||||
|
source_lang = en
|
||||||
|
source_file = mayan/apps/task_manager/locale/en/LC_MESSAGES/django.po
|
||||||
|
type = PO
|
||||||
|
|
||||||
[mayan-edms.user_management-2-0]
|
[mayan-edms.user_management-2-0]
|
||||||
file_filter = mayan/apps/user_management/locale/<lang>/LC_MESSAGES/django.po
|
file_filter = mayan/apps/user_management/locale/<lang>/LC_MESSAGES/django.po
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
|||||||
79
CONTRIBUTING.md
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
Contributing to Mayan EDMS
|
||||||
|
==========================
|
||||||
|
|
||||||
|
Issues
|
||||||
|
------
|
||||||
|
|
||||||
|
- Before submitting a new issue, check for **open issues** first and join the
|
||||||
|
discussion.
|
||||||
|
- If your issue is not attended in a while, **be patient**, the core team is
|
||||||
|
small and the codebase big.
|
||||||
|
- Try to reproduce the issue using a **separate, clean installation**, sometimes
|
||||||
|
the issue can be caused by an error in a configuration file and not with the
|
||||||
|
code itself.
|
||||||
|
- **Do not upload** sensitive, private or classified information or files with
|
||||||
|
your issue. If the issue is triggered by a user file, create a dummy file with the
|
||||||
|
same properties that can trigger the issue and upload that file instead.
|
||||||
|
- Add steps that trigger the issue in a **repeatable manner**.
|
||||||
|
- **Screenshots** go a long way in helping understand problems.
|
||||||
|
- The issue must be related to the code only, do not open issues for problems
|
||||||
|
with deployments, webservers, cloud providers, etc.
|
||||||
|
- Do not open issues asking for **support or consulting**.
|
||||||
|
|
||||||
|
Code
|
||||||
|
----
|
||||||
|
|
||||||
|
1. Complete and mail, or scan and email the corresponding Contributor Assignment Agreement: [Mayan EDMS Individual Contributor Assignment Agreement](http://mayan.readthedocs.io/en/latest/topics/caa_individual.rst) or [Mayan EDMS Entity Contributor Assignment Agreement](http://mayan.readthedocs.io/en/latest/topics/caa_entity.rst).
|
||||||
|
1. Fork [the repository](http://gitlab.com/mayan-edms/mayan-edms).
|
||||||
|
1. Choose the version for which you want to develop. The code is divided in the
|
||||||
|
following branches:
|
||||||
|
|
||||||
|
a. **master:** Current stable version.
|
||||||
|
a. **series/X.Y:** There will be a **series** branch for each major version
|
||||||
|
release (1.0, 2.0). The **master** branch will be in sync with the latest
|
||||||
|
**series** branch.
|
||||||
|
a. **development:** Unstable branch where the development for the next minor or
|
||||||
|
major release is happening.
|
||||||
|
a. **feature/X:** These are branches dealing with a specific bug or feature
|
||||||
|
that is not yet ready to be merged.
|
||||||
|
a. The **master** and **series** branches are stable and not braking changes
|
||||||
|
must be submitted or merged. The **development** and **feature** branches
|
||||||
|
are unstable and should not be used in production.
|
||||||
|
|
||||||
|
1. Start making your changes in your own separate branch.
|
||||||
|
1. Write a test which shows that the bug was fixed or that the feature works as
|
||||||
|
expected.
|
||||||
|
1. Sign your work. Your signature certifies your submission according to the
|
||||||
|
articles of the [Developer Certificate of Origin](https://gitlab.com/mayan-edms/mayan-edms/blob/master/DCO).
|
||||||
|
The sign-off should be in the form:
|
||||||
|
|
||||||
|
````
|
||||||
|
Signed-off-by: John Doe <john.doe@example.com>
|
||||||
|
````
|
||||||
|
|
||||||
|
You must use your real name and email, pseudonyms or anonymous contributions
|
||||||
|
are not allowed. If you set your user.name and user.email git configs, you can
|
||||||
|
sign your commit automatically with git commit -s.
|
||||||
|
1. Submit a merge request for your changes.
|
||||||
|
|
||||||
|
Feature requests
|
||||||
|
----------------
|
||||||
|
|
||||||
|
- Opening issues to start a discussion around a new feature or idea are welcomed.
|
||||||
|
- Be explicit about your idea and provide a simple scenario, others need to really
|
||||||
|
understand the concepts behind your idea if it is to be implemented.
|
||||||
|
- Be realistic in your expectation and scope of your idea.
|
||||||
|
|
||||||
|
Translations
|
||||||
|
------------
|
||||||
|
- Translations are handled using [Transifex](https://www.transifex.com/rosarior/mayan-edms/).
|
||||||
|
- Join an existing team for the language to which you wish to contribute,
|
||||||
|
if there is no team for your language, request for one to be created.
|
||||||
|
- Don't request the creation of a new language and expect others to do all the
|
||||||
|
work. If you request the creation of a new language try to do some of the
|
||||||
|
translation. Language teams that don't see activity for a while are deleted.
|
||||||
|
|
||||||
|
Code style
|
||||||
|
----------
|
||||||
|
- Refer to the [Development](http://mayan.readthedocs.io/en/latest/topics/development.html)
|
||||||
|
chapter for information and examples of the code style.
|
||||||
36
DCO
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
Developer Certificate of Origin
|
||||||
|
Version 1.1
|
||||||
|
|
||||||
|
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
|
||||||
|
660 York Street, Suite 102,
|
||||||
|
San Francisco, CA 94110 USA
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies of this
|
||||||
|
license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|
||||||
|
Developer's Certificate of Origin 1.1
|
||||||
|
|
||||||
|
By making a contribution to this project, I certify that:
|
||||||
|
|
||||||
|
(a) The contribution was created in whole or in part by me and I
|
||||||
|
have the right to submit it under the open source license
|
||||||
|
indicated in the file; or
|
||||||
|
|
||||||
|
(b) The contribution is based upon previous work that, to the best
|
||||||
|
of my knowledge, is covered under an appropriate open source
|
||||||
|
license and I have the right under that license to submit that
|
||||||
|
work with modifications, whether created in whole or in part
|
||||||
|
by me, under the same open source license (unless I am
|
||||||
|
permitted to submit under a different license), as indicated
|
||||||
|
in the file; or
|
||||||
|
|
||||||
|
(c) The contribution was provided directly to me by some other
|
||||||
|
person who certified (a), (b) or (c) and I have not modified
|
||||||
|
it.
|
||||||
|
|
||||||
|
(d) I understand and agree that this project and the contribution
|
||||||
|
are public and that a record of the contribution (including all
|
||||||
|
personal information I submit with it, including my sign-off) is
|
||||||
|
maintained indefinitely and may be redistributed consistent with
|
||||||
|
this project or the open source license(s) involved.
|
||||||
492
HISTORY.rst
@@ -1,3 +1,495 @@
|
|||||||
|
3.0 (2018-04-XX)
|
||||||
|
================
|
||||||
|
- Rename the role groups link label from "Members" to "Groups".
|
||||||
|
- Rename the group users link label from "Members" to "Users".
|
||||||
|
- Don't show full document version label in the heading of the document
|
||||||
|
version list view.
|
||||||
|
- Show the number of pages of a document and of document versions in
|
||||||
|
the document list view and document versions list views respectively.
|
||||||
|
- Display a document version's thumbnail before other attributes.
|
||||||
|
- User Django's provided form for setting an users password.
|
||||||
|
This change allows displaying the current password policies
|
||||||
|
and validation.
|
||||||
|
- Add method to modify a group's role membership from the group's
|
||||||
|
view.
|
||||||
|
- Rename the group user count column label from "Members" to "Users".
|
||||||
|
- Backport support for global and object event notification.
|
||||||
|
GitLab issue #262.
|
||||||
|
- Remove Vagrant section of the document. Anything related to
|
||||||
|
Vagrant has been move into its own repository at:
|
||||||
|
https://gitlab.com/mayan-edms/mayan-edms-vagrant
|
||||||
|
- Add view to show list of events performed by an user.
|
||||||
|
- Allow filtering an event list by clicking on the user column.
|
||||||
|
- Display a proper message in the document type metadata type relationship
|
||||||
|
view when there are no metadata types exist.
|
||||||
|
- Require the document view permission to view trashed documents.
|
||||||
|
- Make the multi object form perform an auto submit when the value is changed.
|
||||||
|
- Improved styling and interaction of the multiple object action form.
|
||||||
|
- Add checkbox to allow selecting all item in the item list view.
|
||||||
|
- Revise and improve permission requirements for the documents app API.
|
||||||
|
- Downloading a document version now requires the document download permission
|
||||||
|
instead of just the document view permission.
|
||||||
|
- Creating a new document no longer works by having the document create
|
||||||
|
permission in a global manner. It is now possible to create a document via
|
||||||
|
the API by having the document permission for a specific document type.
|
||||||
|
- Viewing the version list of a document now required the document version
|
||||||
|
view permission instead of the document view permission.
|
||||||
|
- Not having the document version view permission for a document will not
|
||||||
|
return a 403 error. Instead a blank response will be returned.
|
||||||
|
- Reverting a document via API will new require the document version revert
|
||||||
|
permission instead of the document edit permission.
|
||||||
|
- Fix permission filtering when performing document page searching.
|
||||||
|
- Fix cabinet detail view pagination.
|
||||||
|
- Update project to work with Django 1.11.11.
|
||||||
|
- Fix deprecations in preparation for Django 2.0.
|
||||||
|
- Improve permission handling in the workflow app.
|
||||||
|
- The checkedout detail view permission is now required for the checked out document detail API view.
|
||||||
|
- Switch to a resource and service based API from previous app based one.
|
||||||
|
- Add missing services for the checkout API.
|
||||||
|
- Fix existing checkout APIs.
|
||||||
|
- Update API vies and serializers for the latest Django REST framework version. Replace DRF Swagger with DRF-YASG.
|
||||||
|
- Update to the latest version of Pillow, django-activity-stream, django-compressor, django-cors-headers,
|
||||||
|
django-formtools, django-qsstats-magic, django-stronghold, django-suit, furl, graphviz, pyocr,
|
||||||
|
python-dateutil, python-magic, pytz, sh.
|
||||||
|
- Update to the latest version the packages for building, development, documentation and testing.
|
||||||
|
- Add statistics script to produce a report of the views, APIs and test for each app.
|
||||||
|
- Merge base64 filename patch from Cornelius Ludmann.
|
||||||
|
- SearchModel retrun interface changed. The class no longer returns the result_set value. Use the queryset returned instead.
|
||||||
|
- Update to Font Awesome 5.
|
||||||
|
- Turn Mayan EDMS into a single page app.
|
||||||
|
- Split base.js into mayan_app.js, mayan_image.js, partial_navigation.js.
|
||||||
|
- Add a HOME_VIEW setting. Use it for the default view to be loaded.
|
||||||
|
- Fix bug in document page view. Was storing the URL and the querystring as a single url variable.
|
||||||
|
- Use history.back instead of history.go(-1).
|
||||||
|
- Don't use the previous variable when canceling a form action. Form now use only javascript's history.back().
|
||||||
|
- Add template and modal to display server side errors.
|
||||||
|
- Remove the unused scrollable_content internal feature.
|
||||||
|
- Remove unused animate.css package.
|
||||||
|
- Add page loading indicator.
|
||||||
|
- Add periodic AJAX workers to update the value of the notifications link.
|
||||||
|
- Add notification count inside a badge on the notification link.
|
||||||
|
- Add the MERC specifying javascript library usage.
|
||||||
|
- Documents without at least a version are not scanned for duplicates.
|
||||||
|
- Use a SHA256 hex digest of the secret key at the name of the lockfile. This makes the generation of the name repeatable while unique between installations.
|
||||||
|
- Squashed apps migrations.
|
||||||
|
- Convert document thumbnails, preview, image preview and staging files to template base widgets.
|
||||||
|
- Unify all document widgets.
|
||||||
|
- Display resolution settings are now specified as width and height and not a single resolution value.
|
||||||
|
- Printed pages are now full width.
|
||||||
|
- Move the invalid document markup to a separate HTML template.
|
||||||
|
- Update to Fancybox 3.
|
||||||
|
- Update to jQuery 3.3.1
|
||||||
|
- Move transfomations to their own module.
|
||||||
|
- Split documents.tests.test_views into base.py, test_deleted_document_views.py,
|
||||||
|
test_document_page_views.py, test_document_type_views.py, test_document_version_views.py,
|
||||||
|
test_document_views.py, test_duplicated_document_views.py
|
||||||
|
- Sort smart links by label.
|
||||||
|
- Rename the internal name of the document type permissions namespace. Existing permissions will need to be updated.
|
||||||
|
- Add support for OR type searches. Use the "OR" string between the terms. Example: term1 OR term2.
|
||||||
|
- Removed redundant permissions checks.
|
||||||
|
- Move the page count display to the top of the image.
|
||||||
|
- Unify the way to gather the project's metadata. Use mayan.__XX__ and a new common tag named {% project_information '' %}
|
||||||
|
- Return to the same source view after uploading a document.
|
||||||
|
- Add new WizardStep class to decouple the wizard step configuration.
|
||||||
|
- Add support for deregister upload wizard steps.
|
||||||
|
- Add wizard step to insert the document being uploaded to a cabinet.
|
||||||
|
- Fix documentation formatting.
|
||||||
|
- Add upload wizard step chapte.
|
||||||
|
- Improve and add additional diagrams.
|
||||||
|
- Change documenation theme to rtd.
|
||||||
|
- Fix carousel item height issues.
|
||||||
|
- Add the "to=" keyword argument to all ForeignKey, ManayToMany and OneToOne Fields.
|
||||||
|
- Add Makefile target to check the format of the README.rst file.
|
||||||
|
- Mark the feature to detect and fix the orientatin of PDF as experimental.
|
||||||
|
- Don't show documents with 0 duplicates in the duplicated document list.
|
||||||
|
- Clean up the duplicated document model after a document is deleted.
|
||||||
|
- Add support for roles ACLs.
|
||||||
|
- Add support for users ACLs.
|
||||||
|
- Add support for groups ACLs.
|
||||||
|
- Sort permission namespaces and permissions in the role permission views.
|
||||||
|
- Invert the columns in the ACL detail view.
|
||||||
|
- Fix issue #454. Thanks to Andrei Korostelev @kindkaktus for the issue and the
|
||||||
|
solution.
|
||||||
|
- Update the role permission edit view require the permission grant or permission
|
||||||
|
revoke permissions for the selected role.
|
||||||
|
- Only show the new document link if the user has access to create documents of
|
||||||
|
at least one document type. GitLab Issue #302. Thanks to kg @kgraves.
|
||||||
|
- Support passing arguments to the document, document cache and document signatures
|
||||||
|
storage backends. New settings: DOCUMENTS_STORAGE_BACKEND_ARGUMENTS,
|
||||||
|
DOCUMENTS_CACHE_STORAGE_BACKEND_ARGUMENTS, SIGNATURES_STORAGE_BACKEND_ARGUMENTS
|
||||||
|
- Remove the setting STORAGE_FILESTORAGE_LOCATION. Document storage
|
||||||
|
location for the storage.backend.filebasedstorage.FileBasedStorage
|
||||||
|
backdend must now passed via the DOCUMENTS_STORAGE_BACKEND_ARGUMENTS,
|
||||||
|
DOCUMENTS_CACHE_STORAGE_BACKEND_ARGUMENTS, or
|
||||||
|
SIGNATURES_STORAGE_BACKEND_ARGUMENTS if the backend is used to documents,
|
||||||
|
the document image cache and/or document signatures. Use
|
||||||
|
DOCUMENTS_STORAGE_BACKEND_ARGUMENTS = '{ location: <specific_path> }'
|
||||||
|
If no path is specified the backend will default to
|
||||||
|
'mayan/media/document_storage'.
|
||||||
|
- Standardize the way storages are used. All apps that use storage now define
|
||||||
|
their storages in the .storages modules instead of the .runtime module.
|
||||||
|
The storage.backends.filebasedstorage.FileBasedStorage has been remove,
|
||||||
|
instead Django's default storage is used and each app is responsible
|
||||||
|
of specifying their default path.
|
||||||
|
- Unify checkbox selection code for list items and table items.
|
||||||
|
- Add smart checkbox manager.
|
||||||
|
- Update Chart.js version.
|
||||||
|
- Improve line chart appearance. Fix mouse hover label issue.
|
||||||
|
- Add JavaScript dependency manager.
|
||||||
|
- Add support for passing arguments to the OCR backend.
|
||||||
|
- Fix issue when using workflows transitions with the new version
|
||||||
|
upload event as trigger. Thanks to Sema @Miggaten for the find and
|
||||||
|
the solution.
|
||||||
|
- Removing running workflow instances in document of a specific type if
|
||||||
|
that document type is removed from the workflow.
|
||||||
|
- Make error messages persistent and increase the timeout of warning to 10 seconds.
|
||||||
|
- Improve rendering of the details form.
|
||||||
|
- Update rendering of the readonly multiselect widget to conform to Django's updated field class interface.
|
||||||
|
- Add warning when using SQLite as the database backend.
|
||||||
|
- Use Mailgun's flanker library to process the email sources.
|
||||||
|
- Add locking for interval sources. This reduces the chance of repeated documents from long running email downloads.
|
||||||
|
- Add the option to enable or disable parsing when uploading a document for each document type.
|
||||||
|
- Add a new setting option to enable automatic parsing for each new document type created.
|
||||||
|
- Add support for HTML bodies to the user mailers.
|
||||||
|
- Production ALLOWED_HOSTS settings now defaults to a safer ['127.0.0.1', 'localhost', '[::1]']
|
||||||
|
- Capture menu resolution errors on invalid URLs. Closes GitLab issue #420.
|
||||||
|
- New environment variables: MAYAN_SECRET_KEY, MAYAN_CELERY_ALWAYS_EAGER, MAYAN_CELERY_RESULT_BACKEND,
|
||||||
|
MAYAN_BROKER_URL, MAYAN_DATABASE_ENGINE, MAYAN_DATABASE_CONN_MAX_AGE, MAYAN_DATABASE_NAME,
|
||||||
|
MAYAN_DATABASE_USER, MAYAN_DATABASE_PASSWORD, MAYAN_DATABASE_HOST, MAYAN_DATABASE_PORT,
|
||||||
|
MAYAN_DEBUG.
|
||||||
|
- Stricter defaults. CELERY_ALWAYS_EAGER to False, ALLOWED_HOSTS to ['127.0.0.1', 'localhost', '[::1]'].
|
||||||
|
- New initialization command. Creates media/system and populates the SECRET_KEY and VERSION files.
|
||||||
|
- Sane scanner source paper source now defaults to blank.
|
||||||
|
- Merge Docker image creation back into the main repository.
|
||||||
|
- Docker image now uses gunicorn and whitenoise instead of NGINX to server the app and
|
||||||
|
the static media.
|
||||||
|
- All installation artifact are now created and read from the media folder.
|
||||||
|
- Debian is now the Linux distribution used for the Docker image.
|
||||||
|
- Most Docker Celery workers are now execute using a lower OS priority number.
|
||||||
|
- Add COMMON_PRODUCTION_ERROR_LOGGING setting to control the logging of errors in production. Defaults to False.
|
||||||
|
- Change the error log file handle class to RotatingFileHandle to avoid an indefinitely growing log file.
|
||||||
|
- Disable embedded signatute verification during the perform upgrade command.
|
||||||
|
- Replace the DOCUMENTS_LANGUAGE_CHOICES setting option. Replaced with the new DOCUMENTS_LANGUAGE_CODES.
|
||||||
|
- Fix error when trying to upload a document from and email account with 'from' and 'subject' metadata.
|
||||||
|
- Fix typo on message.header get from 'Suject' to 'Subject'.
|
||||||
|
- On multi part emails keep the original From and Subject properties for all subsequent parts if the sub parts don't specify them. Fixes issue #481. Thanks to Robert Schöftner @robert.schoeftner for the report and debug information.
|
||||||
|
- Don't provide a default for the scanner source adf_mode. Some scanners throw an error even when the selection
|
||||||
|
if supported.
|
||||||
|
- Add a "Quick Download" action to reduce the number of steps to download a single document. GitLab issue #338.
|
||||||
|
|
||||||
|
2.7.3 (2017-09-11)
|
||||||
|
==================
|
||||||
|
- Fix task manager queue list view. Thanks to LeVon Smoker for
|
||||||
|
the report.
|
||||||
|
- Fix resolved link class URL mangling when the keep_query argument is
|
||||||
|
used. Thanks to Nick Douma (LordGaav) for the report and diagnostic
|
||||||
|
information. Fixes source navigation on the document upload wizard.
|
||||||
|
|
||||||
|
2.7.2 (2017-09-06)
|
||||||
|
==================
|
||||||
|
- Fix new mailer creation view. GitLab issue #431.
|
||||||
|
Thanks to Robert Schöftner (@robert.schoeftner) for the
|
||||||
|
report and the solution.
|
||||||
|
- Consolidate intial document created event and the first
|
||||||
|
document properties edited events. Preserve the user that
|
||||||
|
initially creates the document. GitLab issue #433. Thanks
|
||||||
|
to Jesaja Everling (@jeverling) for the report.
|
||||||
|
- Sort the list of root cabinets. Thanks to Thomas Plotkowiak
|
||||||
|
for the request.
|
||||||
|
- Sort the list of a document's cabinets.
|
||||||
|
- Display a document's cabinet list in italics. GitLab issue #435.
|
||||||
|
Thanks to LeVon Smoker for the request.
|
||||||
|
- Install mock by default to allow easier testing of deployed
|
||||||
|
instances.
|
||||||
|
|
||||||
|
2.7.1 (2017-09-03)
|
||||||
|
==================
|
||||||
|
- Support unicode in URL querystring. GitLab issue #423.
|
||||||
|
Thanks to Gustavo Teixeira (@gsteixei) for the find.
|
||||||
|
- Import errors during initialization are only ignored
|
||||||
|
if they are cause by a missing local.py. Thanks to
|
||||||
|
MacRobb Simpson for the report and solution.
|
||||||
|
- Make sure the local.py created used unicode for strings
|
||||||
|
by default. GitLab issue #424. Thanks to Gustavo Teixeira
|
||||||
|
(@gsteixei) for the find.
|
||||||
|
|
||||||
|
2.7 (2017-08-30)
|
||||||
|
================
|
||||||
|
- Add workaround for PDF with IndirectObject as the
|
||||||
|
rotation value. GitHub #261.
|
||||||
|
- Add ACL list link with icon and use it for the document facet menu.
|
||||||
|
- Fix mailing app permissions labels.
|
||||||
|
- Add ACLs link and ACLs permissions to the mailer profile model.
|
||||||
|
- Improve mailer URL regex.
|
||||||
|
- Add ordering support to the SourceColumn class. GitLab issue #417.
|
||||||
|
- Shows the cabinets in the document list. GitLab #417 @corneliusludmann
|
||||||
|
- Add workaround for pycountry versions without the bibliographical key.
|
||||||
|
GitHub issue #250.
|
||||||
|
- Skip UUID migration on Oracle backends. GitHub issue #251.
|
||||||
|
- Allow changing the output format, DPI of the pdftoppm command, and
|
||||||
|
the output format of the converter via the CONVERTER_GRAPHICS_BACKEND_CONFIG
|
||||||
|
setting. GitHub issues #256 #257 GitLab issue #416.
|
||||||
|
- Add support for workflow triggers.
|
||||||
|
- Add support for workflow actions.
|
||||||
|
- Add support for rendering workflows.
|
||||||
|
- Add support for unbinding sub menus.
|
||||||
|
- Fix mailing profile test view.
|
||||||
|
- Disregard the last 3 dots that mark the end of the YAML document.
|
||||||
|
- Add support for multiple dashboards.
|
||||||
|
- Add support for removing dashboard widgets.
|
||||||
|
- Convert document version view to item list view.
|
||||||
|
- Add support for browsing individual document versions.
|
||||||
|
- Add support for dropdown menus to the item list view template.
|
||||||
|
- Add support for preserving the file extenstion when downloading a document
|
||||||
|
version. GitLab #415.
|
||||||
|
- Split OCR app into OCR and parsing.
|
||||||
|
- Remove Folders app.
|
||||||
|
- Use the literal 'System' instead of the target name when
|
||||||
|
the action user in unknown.
|
||||||
|
- Remove the view to submit all document for OCR.
|
||||||
|
- When changing document types, don't delete the old metadata that is
|
||||||
|
also found in the new document type. GitLab issue #421.
|
||||||
|
- Add tag attach and tag remove events.
|
||||||
|
- Change the permission needed to attach and remove tags.
|
||||||
|
- Add HTTP POST workflow state action.
|
||||||
|
- Add access control grant workflow state action.
|
||||||
|
- Beta Python 3 support.
|
||||||
|
|
||||||
|
2.6.4 (2017-07-26)
|
||||||
|
==================
|
||||||
|
- Add missing replacements of reverse to resolve_url.
|
||||||
|
|
||||||
|
2.6.3 (2017-07-25)
|
||||||
|
==================
|
||||||
|
- Add makefile target to launch a PostgreSQL container.
|
||||||
|
- Use resolve_url instead of redirect to resolve the post login URL.
|
||||||
|
- Make the intialsetup and performupgrade management tasks work
|
||||||
|
with signals to allow customization from 3rd party apps.
|
||||||
|
- PEP8 cleanups.
|
||||||
|
- Add tag_ids keyword argument to the Source.handle_upload
|
||||||
|
model method. GitLab issue #413.
|
||||||
|
- Add overflow wrapping so wrap long titles in Firefox too.
|
||||||
|
- Makes Roles searchable. GitLab issue #402.
|
||||||
|
- Add line numbers to the debug and production loggers.
|
||||||
|
Add date and time to the production logger.
|
||||||
|
- Add support for generating setup.py from a template. GitLab
|
||||||
|
#149 #200.
|
||||||
|
- Add fade in animation to document images.
|
||||||
|
|
||||||
|
2.6.2 (2017-07-19)
|
||||||
|
==================
|
||||||
|
- Fix deprecation warning to prepare upgrade to Django 1.11 and 2.0.
|
||||||
|
- Fix document page zoom.
|
||||||
|
- Add support to run tests against a MySQL, Postgres or Oracle container.
|
||||||
|
- Improve tag widget customization by moving the markup to its own template.
|
||||||
|
- Fix document page widget appearance in the document page list view.
|
||||||
|
- Make document version order deterministic.
|
||||||
|
- Allow total page number instrospection of encrypted PDF with non ASCII user properties. GitLab issue #411.
|
||||||
|
- Oracle database compatibility update in the cabinets app. GitHub #258.
|
||||||
|
|
||||||
|
2.6.1 (2017-07-18)
|
||||||
|
==================
|
||||||
|
- Fix issue when editing or removing metadata from multiple documents.
|
||||||
|
|
||||||
|
2.6 (2017-07-18)
|
||||||
|
================
|
||||||
|
- Fix HTML mark up in window title. GitLab #397.
|
||||||
|
- Add support for emailing documents to a recipient list. GitLab #396.
|
||||||
|
- Backport metadata widget changes from @Macrobb. GitLab #377.
|
||||||
|
- Make users and group searchable.
|
||||||
|
- Add support for logging errors during in production mode.
|
||||||
|
Add COMMON_PRODUCTION_ERROR_LOG_PATH to control path of log file.
|
||||||
|
Defaults to mayan/error.log.
|
||||||
|
- Add support logging request exceptions.
|
||||||
|
- Add document list item view.
|
||||||
|
- Sort setting by namespace label and by global name second.
|
||||||
|
- Sort indexes by label.
|
||||||
|
- Fix cabinets permission and access control checking.
|
||||||
|
- The permission to add or remove documents to cabinets now applies to documents too.
|
||||||
|
- Equalize dashboard widgets heights.
|
||||||
|
- Switch the order of the DEFAULT_AUTHENTICATION_CLASSES of DRF. GitLab #400.
|
||||||
|
- Backport document's version list view permission.
|
||||||
|
- Improve code to unbind menu entries.
|
||||||
|
- Renamed the document type permission namespace from "Document setup" to "Document types".
|
||||||
|
- Add support for granting the document type edit, document type delete, and document type view
|
||||||
|
permissions to individual document type instances.
|
||||||
|
- Improved tests by testing for accesses.
|
||||||
|
- Increase the size of the mailing profile label field to 128 characters.
|
||||||
|
|
||||||
|
2.5.2 (2017-07-08)
|
||||||
|
==================
|
||||||
|
- Improve new document creation signal handling.
|
||||||
|
Fixes issue with duplicate scanning at upload.
|
||||||
|
|
||||||
|
2.5.1 (2017-07-08)
|
||||||
|
==================
|
||||||
|
- Update release target due to changes in PyPI.
|
||||||
|
|
||||||
|
2.5 (2017-07-07)
|
||||||
|
================
|
||||||
|
- Add view to download a document's OCR text. GitLab #215
|
||||||
|
- Add user configurable mailer. GitLab #286.
|
||||||
|
- Use Toasts library for screen messages.
|
||||||
|
- Reduce verbosity of some debug messages.
|
||||||
|
- Add new lineart transformation.
|
||||||
|
- Fix SANE source resolution field.
|
||||||
|
- About and Profile menu reorganization.
|
||||||
|
- PDF compatibility improvements.
|
||||||
|
- Office document coversion improvements.
|
||||||
|
- New metadata type setup UI.
|
||||||
|
- Duplicated document scan support.
|
||||||
|
- "Remember me" login support.
|
||||||
|
- Forgotten password restore via email.
|
||||||
|
- Document cache disabling.
|
||||||
|
- Translation improvements.
|
||||||
|
- Image loading improvements.
|
||||||
|
- Lower Javascript memory utilization.
|
||||||
|
- HTML reponsive layout improvements.
|
||||||
|
- Make document deletion a background task.
|
||||||
|
- Unicode handling improvements.
|
||||||
|
- Python3 compatilibyt improvements.
|
||||||
|
- New screen messages using Toastr.
|
||||||
|
|
||||||
|
2.4 (2017-06-23)
|
||||||
|
================
|
||||||
|
- Add Django-mathfilters.
|
||||||
|
- Improve render of documents with no pages.
|
||||||
|
- Add SANE scanner document source.
|
||||||
|
- Added PDF orientation detection. GitLab issue #387.
|
||||||
|
- Fix repeated permission list API URL. GitLab issue #389.
|
||||||
|
- Fix role creation API endpoint not returning id. GitLab issue #390.
|
||||||
|
- Make tags, metadata types and cabinets searchable via the dynamic search API. GitLab issue #344.
|
||||||
|
- Add support for updating configuration options from environment variables.
|
||||||
|
- Add purgelocks management command. GitLab issue #221.
|
||||||
|
- Fix index rebuilding for multi value first levels. GitLab issue #391.
|
||||||
|
- Truncate views titles via the APPEARANCE_MAXIMUM_TITLE_LENGTH setting. GitLab issue #217.
|
||||||
|
- Add background task manager app. GitLab issue #132.
|
||||||
|
- Add link to show a document's OCR errors. GitLab issue #291.
|
||||||
|
|
||||||
|
2.3 (2017-06-08)
|
||||||
|
================
|
||||||
|
- Allow for bigger indexing expression templates.
|
||||||
|
- Auto select checkbox when updating metadata values. GitLab issue #371.
|
||||||
|
- Added support for passing the options allow-other and allow-root to the
|
||||||
|
FUSE index mirror. GitLab issue #385
|
||||||
|
- Add support for check for the latest released version of Mayan from the
|
||||||
|
About menu.
|
||||||
|
- Support for rebuilding specific indexes. GitLab issue #372.
|
||||||
|
- Rewrite document indexing code to be faster and use less locking.
|
||||||
|
- Use a predefined file path for the file lock.
|
||||||
|
- Catch documents with not document version when displaying their thumbnails.
|
||||||
|
- Document page navigation fix when using Mayan as a sub URL app.
|
||||||
|
- Add support for indexing on workflow state changes.
|
||||||
|
- Add search model list API endpoint.
|
||||||
|
|
||||||
|
2.2 (2017-04-26)
|
||||||
|
================
|
||||||
|
- Remove the installation app (GitLab #301).
|
||||||
|
- Add support for document page search
|
||||||
|
- Remove recent searches feature
|
||||||
|
- Remove dependency on the django-filetransfer library
|
||||||
|
- Fix height calculation in resize transformation
|
||||||
|
- Improve upgrade instructions
|
||||||
|
- New image caching pipeline
|
||||||
|
- New drop down menus for the documents, folders and tags app as well as for
|
||||||
|
the user links.
|
||||||
|
- New Dashboard view
|
||||||
|
- Moved licenses to their own module in every app
|
||||||
|
- Update project to work with Django 1.10.4.
|
||||||
|
- Tags are alphabetically ordered by label (GitLab #342).
|
||||||
|
- Stop loading theme fonts from the web (GitLab #343).
|
||||||
|
- Add support for attaching multiple tags (GitLab #307).
|
||||||
|
- Integrate the Cabinets app.
|
||||||
|
|
||||||
|
2.1.11 (2017-03-14)
|
||||||
|
===================
|
||||||
|
- Added a quick rename serializer to the document type API serializer.
|
||||||
|
- Added per document type, workflow list API view.
|
||||||
|
- Mayan EDMS was adopted a version 1.1 of the Linux Foundation Developer Certificate of Origin.
|
||||||
|
- Added the detail url of a permission in the permission serializer.
|
||||||
|
- Added endpoints for the ACL app API.
|
||||||
|
- Implemented document workflows transition ACLs. GitLab issue #321.
|
||||||
|
- Add document comments API endpoints. GitHub issue #249.
|
||||||
|
- Add support for overriding the Celery class.
|
||||||
|
- Changed the document upload view in source app to not use the HTTP referer
|
||||||
|
URL blindly, but instead recompose the URL using known view name. Needed
|
||||||
|
when integrating Mayan EDMS into other app via using iframes.
|
||||||
|
- Addes size field to the document version serializer.
|
||||||
|
- Removed the serializer from the deleted document restore API endpoint.
|
||||||
|
- Added support for adding or editing document types to smart links via the
|
||||||
|
API.
|
||||||
|
|
||||||
|
2.1.10 (2017-02-13)
|
||||||
|
===================
|
||||||
|
- Update Makefile to use twine for releases.
|
||||||
|
- Add Makefile target to make test releases.
|
||||||
|
|
||||||
|
2.1.9 (2017-02-13)
|
||||||
|
==================
|
||||||
|
- Update make file to Workaround long standing pypa wheel bug #99
|
||||||
|
|
||||||
|
2.1.8 (2017-02-12)
|
||||||
|
==================
|
||||||
|
- Fixes in the trashed document API endpoints.
|
||||||
|
- Improved tags API PUT and PATCH endpoints.
|
||||||
|
- Bulk document adding when creating and editing tags.
|
||||||
|
- The version of django-mptt is preserved in case mayan-cabinets is installed.
|
||||||
|
- Add Django GPG API endpoints for singing keys.
|
||||||
|
- Add API endpoints for the document states (workflows) app.
|
||||||
|
- Add API endpoints for the messsage of the day (MOTD) app.
|
||||||
|
- Add Smart link API endpoints.
|
||||||
|
- Add writable versions of the Document and Document Type serializers (GitLab issues #348 and #349).
|
||||||
|
- Close GitLab issue #310 "Metadata's lookup with chinese messages when new document"
|
||||||
|
|
||||||
|
2.1.7 (2017-02-01)
|
||||||
|
==================
|
||||||
|
- Improved user management API endpoints.
|
||||||
|
- Improved permissions API endpoints.
|
||||||
|
- Improvements in the API tests of a few apps.
|
||||||
|
- Addition Content type list API view to the common app.
|
||||||
|
- Add API endpoints to the events app.
|
||||||
|
- Enable the parser and validation fields of the metadata serializer.
|
||||||
|
|
||||||
|
2.1.6 (2016-11-23)
|
||||||
|
==================
|
||||||
|
- Fix variable name typo in the rotation transformation class.
|
||||||
|
- Update translations
|
||||||
|
|
||||||
|
2.1.5 (2016-11-08)
|
||||||
|
==================
|
||||||
|
- Backport resize transformation math operation fix (GitLab #319).
|
||||||
|
- Update Pillow to 3.1.2 (Security fix).
|
||||||
|
- Backport zoom transformation performance improvement (GitLab #334).
|
||||||
|
- Backport trash can navigation link resolution fix (GitLab #331).
|
||||||
|
- Improve documentation regarding the use of GPG version 1 (GitLab #333).
|
||||||
|
- Fix ACL create view HTML response type. (GitLab #335).
|
||||||
|
- Expland staging folder and watch folder explanation.
|
||||||
|
|
||||||
|
2.1.4 (2016-10-28)
|
||||||
|
==================
|
||||||
|
- Add missing link to the 2.1.3 release notes in the index file.
|
||||||
|
- Improve TempfileCheckMixin.
|
||||||
|
- Fix statistics namespace list display view.
|
||||||
|
- Fix events list display view.
|
||||||
|
- Update required Django version to 1.8.15.
|
||||||
|
- Update required python-gnupg version to 0.3.9.
|
||||||
|
- Improved orphaned temporary files test mixin.
|
||||||
|
- Re-enable and improve GitLab CI MySQL testing.
|
||||||
|
- Improved GPG handling.
|
||||||
|
- New GPG backend system.
|
||||||
|
- Minor documentation updates.
|
||||||
|
|
||||||
|
2.1.3 (2016-06-29)
|
||||||
|
==================
|
||||||
|
- Add help message when initialsetup migration phase fails. Relates to GitLab issue #296.
|
||||||
|
- Start using self.setdout instead of print as per documentation.
|
||||||
|
- Fix GitLab issue #295, "When editing a user the top bar jumps to the name of the user".
|
||||||
|
- Normalize handling of temporary file and directory creation.
|
||||||
|
- Fix GitLab issue #309, "Temp files quickly filling-up my /tmp (1GB tmpfs)".
|
||||||
|
- Explicitly check for residual temporary files in tests.
|
||||||
|
- Add missing temporary file cleanup for office documents.
|
||||||
|
- Fix file descriptor leak in the document signature download test.
|
||||||
|
|
||||||
2.1.2 (2016-05-20)
|
2.1.2 (2016-05-20)
|
||||||
==================
|
==================
|
||||||
- Sort document languages and user profile locale language lists. GitLab issue #292.
|
- Sort document languages and user profile locale language lists. GitLab issue #292.
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
include README.rst LICENSE HISTORY.rst
|
include README.md LICENSE HISTORY.rst mayan/LICENSE
|
||||||
recursive-include mayan *.txt *.html *.css *.ico *.png *.jpg *.js *.po *.mo *.ttf *.woff *.woff2 LICENSE
|
recursive-include mayan/apps *.txt *.html *.css *.ico *.png *.jpg *.js *.po *.mo *.ttf *.woff *.woff2 *.gif *.eot *.svg *.doc *.pdf *.tiff *.sig *.asc *.gpg *.zip package.json
|
||||||
global-exclude mayan/settings/local.py mayan/settings/travis/* mayan/media/*
|
global-exclude mayan/settings/local.py mayan/settings/travis/* mayan/media/*
|
||||||
|
|||||||
295
Makefile
@@ -1,38 +1,53 @@
|
|||||||
.PHONY: clean-pyc clean-build
|
.PHONY: clean-pyc clean-build
|
||||||
|
|
||||||
define BROWSER_PYSCRIPT
|
help: docker-help
|
||||||
import sys, webbrowser
|
|
||||||
webbrowser.open(sys.argv[1])
|
|
||||||
endef
|
|
||||||
export BROWSER_PYSCRIPT
|
|
||||||
BROWSER := python -c "$$BROWSER_PYSCRIPT"
|
|
||||||
|
|
||||||
|
|
||||||
help:
|
|
||||||
@echo
|
@echo
|
||||||
|
@echo "**** Main makefile ****"
|
||||||
@echo "clean-build - Remove build artifacts."
|
@echo "clean-build - Remove build artifacts."
|
||||||
@echo "clean-pyc - Remove Python artifacts."
|
@echo "clean-pyc - Remove Python artifacts."
|
||||||
@echo "clean - Remove Python and build artifacts."
|
@echo "clean - Remove Python and build artifacts."
|
||||||
|
@echo "generate-setup - Create and updated setup.py"
|
||||||
|
@echo "check-readme - Checks validity of the README.rst file for PyPI publication."
|
||||||
|
@echo "check-missing_migrations - Make sure all models have proper migrations."
|
||||||
|
|
||||||
@echo "test MODULE=<python module name> - Run tests for a single App, module or test class."
|
|
||||||
@echo "test-all - Run all tests."
|
@echo "test-all - Run all tests."
|
||||||
@echo "docs_serve - Run the livehtml documentation generator."
|
@echo "test MODULE=<python module name> - Run tests for a single app, module or test class."
|
||||||
|
@echo "test-with-postgres-all - Run all tests against a Postgres database container."
|
||||||
|
@echo "test-postgres MODULE=<python module name> - Run tests for a single app, module or test class against a Postgres database container."
|
||||||
|
@echo "test-with-mysql-all - Run all tests against a MySQL database container."
|
||||||
|
@echo "test-mysql MODULE=<python module name> - Run tests for a single app, module or test class against a MySQL database container."
|
||||||
|
@echo "test-with-oracle-all - Run all tests against a Oracle database container."
|
||||||
|
@echo "test-oracle MODULE=<python module name> - Run tests for a single app, module or test class against a Oracle database container."
|
||||||
|
|
||||||
@echo "translations_make - Refresh all translation files."
|
@echo "docs-serve - Run the livehtml documentation generator."
|
||||||
@echo "translations_compile - Compile all translation files."
|
|
||||||
@echo "translations_push - Upload all translation files to Transifex."
|
|
||||||
@echo "translations_pull - Download all translation files from Transifex."
|
|
||||||
|
|
||||||
@echo "requirements_dev - Install development requirements."
|
@echo "translations-make - Refresh all translation files."
|
||||||
@echo "requirements_docs - Install documentation requirements."
|
@echo "translations-compile - Compile all translation files."
|
||||||
@echo "requirements_testing - Install testing requirements."
|
@echo "translations-push - Upload all translation files to Transifex."
|
||||||
|
@echo "translations-pull - Download all translation files from Transifex."
|
||||||
|
|
||||||
@echo "sdist - Build the source distribution package."
|
@echo "sdist - Build the source distribution package."
|
||||||
@echo "wheel - Build the wheel distribution package."
|
@echo "wheel - Build the wheel distribution package."
|
||||||
@echo "release - Package (sdist and wheel) and upload a release."
|
@echo "release - Package (sdist and wheel) and upload a release."
|
||||||
|
@echo "test-release - Package (sdist and wheel) and upload to the PyPI test server."
|
||||||
|
@echo "release-test-via-docker-ubuntu - Package (sdist and wheel) and upload to the PyPI test server using an Ubuntu Docker builder."
|
||||||
|
@echo "release-via-docker-ubuntu - Package (sdist and wheel) and upload to PyPI using an Ubuntu Docker builder."
|
||||||
|
@echo "test-sdist-via-docker-ubuntu - Make an sdist packange and test it using an Ubuntu Docker container."
|
||||||
|
@echo "test-wheel-via-docker-ubuntu - Make a wheel package and test it using an Ubuntu Docker container."
|
||||||
@echo "runserver - Run the development server."
|
@echo "runserver - Run the development server."
|
||||||
|
@echo "runserver_plus - Run the Django extension's development server."
|
||||||
|
@echo "shell_plus - Run the shell_plus command."
|
||||||
|
|
||||||
|
@echo "test-with-docker-services-on - Launch and initialize production-like services using Docker (Postgres and Redis)."
|
||||||
|
@echo "test-with-docker-services-off - Stop and delete the Docker production-like services."
|
||||||
|
@echo "test-with-docker-frontend - Launch a front end instance that uses the production-like services."
|
||||||
|
@echo "test-with-docker-worker - Launch a worker instance that uses the production-like services."
|
||||||
|
@echo "docker-mysql-on - Launch and initialize a MySQL Docker container."
|
||||||
|
@echo "docker-mysql-off - Stop and delete the MySQL Docker container."
|
||||||
|
@echo "docker-postgres-on - Launch and initialize a PostgreSQL Docker container."
|
||||||
|
@echo "docker-postgres-off - Stop and delete the PostgreSQL Docker container."
|
||||||
|
|
||||||
|
@echo "safety-check - Run a package safety check."
|
||||||
|
|
||||||
# Cleaning
|
# Cleaning
|
||||||
|
|
||||||
@@ -52,16 +67,70 @@ clean-pyc:
|
|||||||
# Testing
|
# Testing
|
||||||
|
|
||||||
test:
|
test:
|
||||||
./manage.py test $(MODULE) --settings=mayan.settings.testing --nomigrations
|
./manage.py test $(MODULE) --settings=mayan.settings.testing.development --nomigrations
|
||||||
|
|
||||||
test-all:
|
test-all:
|
||||||
./manage.py runtests --settings=mayan.settings.testing --nomigrations
|
./manage.py test --mayan-apps --settings=mayan.settings.testing.development --nomigrations
|
||||||
|
|
||||||
|
test-launch-postgres:
|
||||||
|
@docker rm -f test-postgres || true
|
||||||
|
@docker volume rm test-postgres || true
|
||||||
|
docker run -d --name test-postgres -p 5432:5432 -v test-postgres:/var/lib/postgresql/data healthcheck/postgres
|
||||||
|
sudo apt-get install -qq libpq-dev
|
||||||
|
pip install psycopg2
|
||||||
|
while ! docker inspect --format='{{json .State.Health}}' test-postgres|grep 'Status":"healthy"'; do sleep 1; done
|
||||||
|
|
||||||
|
test-with-postgres: test-launch-postgres
|
||||||
|
./manage.py test $(MODULE) --settings=mayan.settings.testing.docker.db_postgres --nomigrations
|
||||||
|
@docker rm -f test-postgres || true
|
||||||
|
@docker volume rm test-postgres || true
|
||||||
|
|
||||||
|
test-with-postgres-all: test-launch-postgres
|
||||||
|
./manage.py test --mayan-apps --settings=mayan.settings.testing.docker.db_postgres --nomigrations
|
||||||
|
@docker rm -f test-postgres || true
|
||||||
|
@docker volume rm test-postgres || true
|
||||||
|
|
||||||
|
test-launch-mysql:
|
||||||
|
@docker rm -f test-mysql || true
|
||||||
|
@docker volume rm test-mysql || true
|
||||||
|
docker run -d --name test-mysql -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=True -e MYSQL_DATABASE=mayan -v test-mysql:/var/lib/mysql healthcheck/mysql
|
||||||
|
sudo apt-get install -qq libmysqlclient-dev mysql-client
|
||||||
|
pip install mysql-python
|
||||||
|
while ! docker inspect --format='{{json .State.Health}}' test-mysql|grep 'Status":"healthy"'; do sleep 1; done
|
||||||
|
mysql -h 127.0.0.1 -P 3306 -uroot -e "set global character_set_server=utf8mb4;"
|
||||||
|
|
||||||
|
test-with-mysql: test-launch-mysql
|
||||||
|
./manage.py test $(MODULE) --settings=mayan.settings.testing.docker.db_mysql --nomigrations
|
||||||
|
@docker rm -f test-mysql || true
|
||||||
|
@docker volume rm test-mysql || true
|
||||||
|
|
||||||
|
test-with-mysql-all: test-launch-mysql
|
||||||
|
./manage.py test --mayan-apps --settings=mayan.settings.testing.docker.db_mysql --nomigrations
|
||||||
|
@docker rm -f test-mysql || true
|
||||||
|
@docker volume rm test-mysql || true
|
||||||
|
|
||||||
|
test-launch-oracle:
|
||||||
|
@docker rm -f test-oracle || true
|
||||||
|
@docker volume rm test-oracle || true
|
||||||
|
docker run -d --name test-oracle -p 49160:22 -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true -v test-oracle:/u01/app/oracle wnameless/oracle-xe-11g
|
||||||
|
# https://gist.github.com/kimus/10012910
|
||||||
|
pip install cx_Oracle
|
||||||
|
while ! nc -z 127.0.0.1 49161; do sleep 1; done
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
test-with-oracle: test-launch-oracle
|
||||||
|
./manage.py test $(MODULE) --settings=mayan.settings.testing.docker.db_oracle --nomigrations
|
||||||
|
@docker rm -f test-oracle || true
|
||||||
|
@docker volume rm test-oracle || true
|
||||||
|
|
||||||
|
test-with-oracle-all: test-launch-oracle
|
||||||
|
./manage.py test --mayan-apps --settings=mayan.settings.testing.docker.db_oracle --nomigrations
|
||||||
|
@docker rm -f test-oracle || true
|
||||||
|
@docker volume rm test-oracle || true
|
||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
|
|
||||||
docs_serve:
|
docs-serve:
|
||||||
$(BROWSER) http://127.0.0.1:8000
|
|
||||||
cd docs;make livehtml
|
cd docs;make livehtml
|
||||||
|
|
||||||
|
|
||||||
@@ -77,37 +146,181 @@ translations_push:
|
|||||||
tx push -s
|
tx push -s
|
||||||
|
|
||||||
translations_pull:
|
translations_pull:
|
||||||
tx pull
|
tx pull -f
|
||||||
|
|
||||||
|
|
||||||
# Requirements
|
generate-setup:
|
||||||
|
@./generate_setup.py
|
||||||
requirements_dev:
|
@echo "Complete."
|
||||||
pip install -r requirements/development.txt
|
|
||||||
|
|
||||||
requirements_docs:
|
|
||||||
pip install -r requirements/documentation.txt
|
|
||||||
|
|
||||||
requirements_testing:
|
|
||||||
pip install -r requirements/testing.txt
|
|
||||||
|
|
||||||
|
|
||||||
# Releases
|
# Releases
|
||||||
|
|
||||||
release: clean
|
|
||||||
python setup.py sdist bdist_wheel upload
|
test-release: clean wheel
|
||||||
|
twine upload dist/* -r testpypi
|
||||||
|
@echo "Test with: pip install -i https://testpypi.python.org/pypi mayan-edms"
|
||||||
|
|
||||||
|
release: clean wheel
|
||||||
|
twine upload dist/* -r pypi
|
||||||
|
|
||||||
sdist: clean
|
sdist: clean
|
||||||
python setup.py sdist
|
python setup.py sdist
|
||||||
ls -l dist
|
ls -l dist
|
||||||
|
|
||||||
wheel: clean
|
wheel: clean sdist
|
||||||
python setup.py bdist_wheel
|
pip wheel --no-index --no-deps --wheel-dir dist dist/*.tar.gz
|
||||||
ls -l dist
|
ls -l dist
|
||||||
|
|
||||||
|
release-test-via-docker-ubuntu:
|
||||||
|
docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\
|
||||||
|
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
|
||||||
|
locale-gen en_US.UTF-8 && \
|
||||||
|
update-locale LANG=en_US.UTF-8 && \
|
||||||
|
export LC_ALL=en_US.UTF-8 && \
|
||||||
|
cp -r /host_source/* . && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install make python-pip -y && \
|
||||||
|
pip install -r requirements/build.txt && \
|
||||||
|
cp -r /host_home/.pypirc ~/.pypirc && \
|
||||||
|
make test-release"
|
||||||
|
|
||||||
|
release-via-docker-ubuntu:
|
||||||
|
docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\
|
||||||
|
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
|
||||||
|
locale-gen en_US.UTF-8 && \
|
||||||
|
update-locale LANG=en_US.UTF-8 && \
|
||||||
|
export LC_ALL=en_US.UTF-8 && \
|
||||||
|
cp -r /host_source/* . && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install make python-pip -y && \
|
||||||
|
pip install -r requirements/build.txt && \
|
||||||
|
cp -r /host_home/.pypirc ~/.pypirc && \
|
||||||
|
make release"
|
||||||
|
|
||||||
|
test-sdist-via-docker-ubuntu:
|
||||||
|
docker run --rm --name mayan_sdist_test -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\
|
||||||
|
cp -r /host_source/* . && \
|
||||||
|
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
|
||||||
|
locale-gen en_US.UTF-8 && \
|
||||||
|
update-locale LANG=en_US.UTF-8 && \
|
||||||
|
export LC_ALL=en_US.UTF-8 && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install make python-pip libreoffice tesseract-ocr tesseract-ocr-deu poppler-utils -y && \
|
||||||
|
pip install -r requirements/development.txt && \
|
||||||
|
make sdist-test-suit \
|
||||||
|
"
|
||||||
|
|
||||||
|
test-wheel-via-docker-ubuntu:
|
||||||
|
docker run --rm --name mayan_wheel_test -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\
|
||||||
|
cp -r /host_source/* . && \
|
||||||
|
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
|
||||||
|
locale-gen en_US.UTF-8 && \
|
||||||
|
update-locale LANG=en_US.UTF-8 && \
|
||||||
|
export LC_ALL=en_US.UTF-8 && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install make python-pip libreoffice tesseract-ocr tesseract-ocr-deu poppler-utils -y && \
|
||||||
|
pip install -r requirements/development.txt && \
|
||||||
|
make wheel-test-suit \
|
||||||
|
"
|
||||||
|
|
||||||
|
sdist-test-suit: sdist
|
||||||
|
rm -f -R _virtualenv
|
||||||
|
virtualenv _virtualenv
|
||||||
|
sh -c '\
|
||||||
|
. _virtualenv/bin/activate; \
|
||||||
|
pip install `ls dist/*.gz`; \
|
||||||
|
_virtualenv/bin/mayan-edms.py initialsetup; \
|
||||||
|
pip install mock==2.0.0; \
|
||||||
|
_virtualenv/bin/mayan-edms.py test --mayan-apps \
|
||||||
|
'
|
||||||
|
|
||||||
|
wheel-test-suit: wheel
|
||||||
|
rm -f -R _virtualenv
|
||||||
|
virtualenv _virtualenv
|
||||||
|
sh -c '\
|
||||||
|
. _virtualenv/bin/activate; \
|
||||||
|
pip install `ls dist/*.whl`; \
|
||||||
|
_virtualenv/bin/mayan-edms.py initialsetup; \
|
||||||
|
pip install mock==2.0.0; \
|
||||||
|
_virtualenv/bin/mayan-edms.py test --mayan-apps \
|
||||||
|
'
|
||||||
|
|
||||||
# Dev server
|
# Dev server
|
||||||
|
|
||||||
runserver:
|
runserver:
|
||||||
$(BROWSER) http://127.0.0.1:8000
|
./manage.py runserver --settings=mayan.settings.development $(ADDRPORT)
|
||||||
./manage.py runserver
|
|
||||||
|
runserver_plus:
|
||||||
|
./manage.py runserver_plus --settings=mayan.settings.development $(ADDRPORT)
|
||||||
|
|
||||||
|
shell_plus:
|
||||||
|
./manage.py shell_plus --settings=mayan.settings.development
|
||||||
|
|
||||||
|
test-with-docker-services-on:
|
||||||
|
docker run -d --name redis -p 6379:6379 redis
|
||||||
|
docker run -d --name postgres -p 5432:5432 postgres
|
||||||
|
while ! nc -z 127.0.0.1 6379; do sleep 1; done
|
||||||
|
while ! nc -z 127.0.0.1 5432; do sleep 1; done
|
||||||
|
sleep 4
|
||||||
|
./manage.py initialsetup --settings=mayan.settings.staging.docker
|
||||||
|
|
||||||
|
test-with-docker-services-off:
|
||||||
|
docker stop postgres redis
|
||||||
|
docker rm postgres redis
|
||||||
|
|
||||||
|
test-with-docker-frontend:
|
||||||
|
./manage.py runserver --settings=mayan.settings.staging.docker
|
||||||
|
|
||||||
|
test-with-docker-worker:
|
||||||
|
./manage.py celery worker --settings=mayan.settings.staging.docker -B -l INFO -O fair
|
||||||
|
|
||||||
|
docker-mysql-on:
|
||||||
|
docker run -d --name mysql -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=True -e MYSQL_DATABASE=mayan_edms mysql
|
||||||
|
while ! nc -z 127.0.0.1 3306; do sleep 1; done
|
||||||
|
|
||||||
|
docker-mysql-off:
|
||||||
|
docker stop mysql
|
||||||
|
docker rm mysql
|
||||||
|
|
||||||
|
docker-postgres-on:
|
||||||
|
docker run -d --name postgres -p 5432:5432 postgres
|
||||||
|
while ! nc -z 127.0.0.1 5432; do sleep 1; done
|
||||||
|
|
||||||
|
docker-postgres-off:
|
||||||
|
docker stop postgres
|
||||||
|
docker rm postgres
|
||||||
|
|
||||||
|
|
||||||
|
# Security
|
||||||
|
|
||||||
|
safety-check:
|
||||||
|
safety check
|
||||||
|
|
||||||
|
|
||||||
|
# Other
|
||||||
|
find-gitignores:
|
||||||
|
@export FIND_GITIGNORES=`find -name '.gitignore'| wc -l`; \
|
||||||
|
if [ $${FIND_GITIGNORES} -gt 1 ] ;then echo "More than one .gitignore found."; fi
|
||||||
|
|
||||||
|
build:
|
||||||
|
docker rm -f mayan-edms-build || true && \
|
||||||
|
docker run --rm --name mayan-edms-build -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source python:2-alpine3.7 /bin/busybox sh -c "\
|
||||||
|
rm /host_source/dist -R || true && \
|
||||||
|
mkdir /host_source/dist || true && \
|
||||||
|
export LC_ALL=en_US.UTF-8 && \
|
||||||
|
cp -r /host_source/* . && \
|
||||||
|
apk update && \
|
||||||
|
apk add make && \
|
||||||
|
pip install -r requirements/build.txt && \
|
||||||
|
cp -r /host_home/.pypirc ~/.pypirc && \
|
||||||
|
make wheel && \
|
||||||
|
cp dist/* /host_source/dist/"
|
||||||
|
|
||||||
|
check-readme:
|
||||||
|
python setup.py check -r -s
|
||||||
|
|
||||||
|
check-missing-migrations:
|
||||||
|
./manage.py makemigrations --dry-run --noinput --check
|
||||||
|
|
||||||
|
|
||||||
|
include docker/Makefile
|
||||||
|
|||||||
74
README.md
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
[![pypi][pypi]][pypi-url]
|
||||||
|
[![builds][builds]][builds-url]
|
||||||
|
[![coverage][cover]][cover-url]
|
||||||
|
![python][python]
|
||||||
|
![license][license]
|
||||||
|
[](https://hub.docker.com/r/mayanedms/mayanedms/)
|
||||||
|
[](https://hub.docker.com/r/mayanedms/mayanedms/)
|
||||||
|
[](https://microbadger.com/images/mayanedms/mayanedms)
|
||||||
|
|
||||||
|
[pypi]: http://img.shields.io/pypi/v/mayan-edms.svg
|
||||||
|
[pypi-url]: http://badge.fury.io/py/mayan-edms
|
||||||
|
|
||||||
|
[builds]: https://gitlab.com/mayan-edms/mayan-edms/badges/master/build.svg
|
||||||
|
[builds-url]: https://gitlab.com/mayan-edms/mayan-edms/pipelines
|
||||||
|
|
||||||
|
[cover]: https://codecov.io/gitlab/mayan-edms/mayan-edms/coverage.svg?branch=master
|
||||||
|
[cover-url]: https://codecov.io/gitlab/mayan-edms/mayan-edms?branch=master
|
||||||
|
|
||||||
|
[python]: https://img.shields.io/pypi/pyversions/mayan-edms.svg
|
||||||
|
[python-url]: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat
|
||||||
|
|
||||||
|
[license]: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat
|
||||||
|
[license-url]: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat
|
||||||
|
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<a href="http://www.mayan-edms.com">
|
||||||
|
<img width="200" heigth="200" src="https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/mayan_logo.png">
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
Mayan EDMS is a document management system. Its main purpose is to store,
|
||||||
|
introspect, and categorize files, with a strong emphasis on preserving the
|
||||||
|
contextual and business information of documents. It can also OCR, preview,
|
||||||
|
label, sign, send, and receive thoses files. Other features of interest
|
||||||
|
are its workflow system, role based access control, and REST API.
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img width="400" src="https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/overview.gif">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2 align="center">Installation</h2>
|
||||||
|
|
||||||
|
The easiest way to use Mayan EDMS is by using the official
|
||||||
|
[Docker](https://www.docker.com/) image. Make sure Docker is properly installed
|
||||||
|
and working before attempting to install Mayan EDMS.
|
||||||
|
|
||||||
|
For the complete set of installation instructions visit the Mayan EDMS documentation
|
||||||
|
at: http://mayan.readthedocs.io/en/latest/topics/installation.html
|
||||||
|
|
||||||
|
<h2 align="center">Hardware requirements</h2>
|
||||||
|
|
||||||
|
- 2 Gigabytes of RAM (1 Gigabyte if OCR is turned off).
|
||||||
|
- Multiple core CPU (64 bit, faster than 1 GHz recommended).
|
||||||
|
|
||||||
|
<h2 align="center">Important links</h2>
|
||||||
|
|
||||||
|
|
||||||
|
- [Homepage](http://www.mayan-edms.com)
|
||||||
|
- [Videos](https://www.youtube.com/channel/UCJOOXHP1MJ9lVA7d8ZTlHPw)
|
||||||
|
- [Documentation](http://mayan.readthedocs.io/en/stable/)
|
||||||
|
- [Paid support](http://www.mayan-edms.com/providers/)
|
||||||
|
- [Roadmap](https://gitlab.com/mayan-edms/mayan-edms/wikis/roadmap)
|
||||||
|
- [Contributing](https://gitlab.com/mayan-edms/mayan-edms/blob/master/CONTRIBUTING.md)
|
||||||
|
- [Community forum](https://groups.google.com/forum/#!forum/mayan-edms)
|
||||||
|
- [Community forum archive](http://mayan-edms.1003.x6.nabble.com/)
|
||||||
|
- [Source code, issues, bugs](https://gitlab.com/mayan-edms/mayan-edms)
|
||||||
|
- [Plug-ins, other related projects](https://gitlab.com/mayan-edms/)
|
||||||
|
- [Translations](https://www.transifex.com/rosarior/mayan-edms/)
|
||||||
|
|
||||||
127
README.rst
@@ -1,75 +1,62 @@
|
|||||||
|PyPI badge| |Build Status| |Coverage badge| |Installs badge| |License badge|
|
|pypi| |builds| |coverage| |python| |license| |docker_pulls| |docker_stars| |docker_layers|
|
||||||
|
|
||||||
|Logo|
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Free Open Source Electronic Document Management System.
|
|
||||||
|
|
||||||
`Website`_
|
|
||||||
|
|
||||||
`Video demostration`_
|
|
||||||
|
|
||||||
`Documentation`_
|
|
||||||
|
|
||||||
`Translations`_
|
|
||||||
|
|
||||||
`Mailing list (via Google Groups)`_
|
|
||||||
|
|
||||||
|Animation|
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
This project is open sourced under `Apache 2.0 License`_.
|
|
||||||
|
|
||||||
Installation
|
|
||||||
------------
|
|
||||||
|
|
||||||
To install Mayan EDMS, simply do:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
$ virtualenv venv
|
|
||||||
$ source venv/bin/activate
|
|
||||||
$ pip install mayan-edms
|
|
||||||
$ mayan-edms.py initialsetup
|
|
||||||
$ mayan-edms.py runserver
|
|
||||||
|
|
||||||
Point your browser to 127.0.0.1:8000 and use the automatically created admin
|
|
||||||
account.
|
|
||||||
|
|
||||||
Contribute
|
|
||||||
----------
|
|
||||||
|
|
||||||
- Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug.
|
|
||||||
- Fork `the repository`_ on GitLab to start making your changes to the **development** branch (or branch off of it).
|
|
||||||
- Write a test which shows that the bug was fixed or that the feature works as expected.
|
|
||||||
- Add yourself to the `contributors file`_.
|
|
||||||
- Send a merge request.
|
|
||||||
|
|
||||||
|
|
||||||
.. _Website: http://www.mayan-edms.com
|
.. image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/mayan_logo.png
|
||||||
.. _Video demostration: http://bit.ly/pADNXv
|
:align: center
|
||||||
.. _Documentation: http://readthedocs.org/docs/mayan/en/latest/
|
:width: 200
|
||||||
.. _Translations: https://www.transifex.com/projects/p/mayan-edms/
|
:height: 200
|
||||||
.. _Mailing list (via Google Groups): http://groups.google.com/group/mayan-edms
|
|
||||||
.. _Apache 2.0 License: https://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
.. _`the repository`: http://gitlab.com/mayan-edms/mayan-edms
|
|
||||||
.. _`contributors file`: https://gitlab.com/mayan-edms/mayan-edms/blob/master/docs/topics/contributors.rst
|
|
||||||
|
|
||||||
.. |Build Status| image:: https://gitlab.com/mayan-edms/mayan-edms/badges/master/build.svg
|
Mayan EDMS is a document management system. Its main purpose is to store,
|
||||||
:target: https://gitlab.com/mayan-edms/mayan-edms/commits/master
|
introspect, and categorize files, with a strong emphasis on preserving the
|
||||||
.. |Logo| image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/mayan_logo.png
|
contextual and business information of documents. It can also OCR, preview,
|
||||||
.. |Animation| image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/overview.gif
|
label, sign, send, and receive thoses files. Other features of interest
|
||||||
.. |Installs badge| image:: http://img.shields.io/pypi/dm/mayan-edms.svg?style=flat
|
are its workflow system, role based access control, and REST API.
|
||||||
:target: https://crate.io/packages/mayan-edms/
|
|
||||||
.. |PyPI badge| image:: http://img.shields.io/pypi/v/mayan-edms.svg?style=flat
|
.. image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/overview.gif
|
||||||
|
:align: center
|
||||||
|
:width: 300
|
||||||
|
|
||||||
|
The easiest way to use Mayan EDMS is by using the official Docker_ image.
|
||||||
|
Make sure Docker is properly installed and working before attempting to install
|
||||||
|
Mayan EDMS.
|
||||||
|
|
||||||
|
For the complete set of installation instructions visit the Mayan EDMS documentation
|
||||||
|
at: http://mayan.readthedocs.io/en/latest/topics/installation.html
|
||||||
|
|
||||||
|
.. _Docker: https://www.docker.com/
|
||||||
|
|
||||||
|
Hardware requirements
|
||||||
|
|
||||||
|
- 2 Gigabytes of RAM (1 Gigabyte if OCR is turned off).
|
||||||
|
- Multiple core CPU (64 bit, faster than 1 GHz recommended).
|
||||||
|
|
||||||
|
|
||||||
|
Important links
|
||||||
|
|
||||||
|
- `Homepage <http://www.mayan-edms.com>`__
|
||||||
|
- `Videos <https://www.youtube.com/channel/UCJOOXHP1MJ9lVA7d8ZTlHPw>`__
|
||||||
|
- `Documentation <http://mayan.readthedocs.io/en/stable/>`__
|
||||||
|
- `Paid support <http://www.mayan-edms.com/providers/>`__
|
||||||
|
- `Roadmap <https://gitlab.com/mayan-edms/mayan-edms/wikis/roadmap>`__
|
||||||
|
- `Contributing <https://gitlab.com/mayan-edms/mayan-edms/blob/master/CONTRIBUTING.md>`__
|
||||||
|
- `Community forum <https://groups.google.com/forum/#!forum/mayan-edms>`__
|
||||||
|
- `Community forum archive <http://mayan-edms.1003.x6.nabble.com/>`__
|
||||||
|
- `Source code, issues, bugs <https://gitlab.com/mayan-edms/mayan-edms>`__
|
||||||
|
- `Plug-ins, other related projects <https://gitlab.com/mayan-edms/>`__
|
||||||
|
- `Translations <https://www.transifex.com/rosarior/mayan-edms/>`__
|
||||||
|
|
||||||
|
|
||||||
|
.. |pypi| image:: http://img.shields.io/pypi/v/mayan-edms.svg
|
||||||
:target: http://badge.fury.io/py/mayan-edms
|
:target: http://badge.fury.io/py/mayan-edms
|
||||||
.. |License badge| image:: http://img.shields.io/badge/license-Apache%202.0-green.svg?style=flat
|
.. |builds| image:: https://gitlab.com/mayan-edms/mayan-edms/badges/master/build.svg
|
||||||
.. |Analytics| image:: https://ga-beacon.appspot.com/UA-52965619-2/mayan-edms/readme?pixel
|
:target: https://gitlab.com/mayan-edms/mayan-edms/pipelines
|
||||||
.. |Coverage badge| image:: https://codecov.io/gitlab/mayan-edms/mayan-edms/coverage.svg?branch=master
|
.. |coverage| image:: https://codecov.io/gitlab/mayan-edms/mayan-edms/coverage.svg?branch=master
|
||||||
:target: https://codecov.io/gitlab/mayan-edms/mayan-edms?branch=master
|
:target: https://codecov.io/gitlab/mayan-edms/mayan-edms?branch=master
|
||||||
|
.. |python| image:: https://img.shields.io/pypi/pyversions/mayan-edms.svg
|
||||||
|Analytics|
|
.. |license| image:: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat
|
||||||
|
.. |docker_pulls| image:: https://img.shields.io/docker/pulls/mayanedms/mayanedms.svg?maxAge=3600
|
||||||
|
:target: https://hub.docker.com/r/mayanedms/mayanedms/
|
||||||
|
.. |docker_stars| image:: https://img.shields.io/docker/stars/mayanedms/mayanedms.svg?maxAge=3600
|
||||||
|
:target: https://hub.docker.com/r/mayanedms/mayanedms/
|
||||||
|
.. |docker_layers| image:: https://images.microbadger.com/badges/image/mayanedms/mayanedms.svg
|
||||||
|
:target: https://microbadger.com/images/mayanedms/mayanedms
|
||||||
|
|||||||
33
Vagrantfile
vendored
@@ -1,33 +0,0 @@
|
|||||||
# -*- mode: ruby -*-
|
|
||||||
# vi: set ft=ruby :
|
|
||||||
|
|
||||||
VAGRANTFILE_API_VERSION = "2"
|
|
||||||
|
|
||||||
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
||||||
config.vm.box = "ubuntu/trusty64"
|
|
||||||
|
|
||||||
config.vm.provider :lxc do |v, override|
|
|
||||||
override.vm.box = "fgrehm/trusty64-lxc"
|
|
||||||
end
|
|
||||||
|
|
||||||
config.vm.provider :virtualbox do |vb|
|
|
||||||
vb.customize ["modifyvm", :id, "--memory", "1024"]
|
|
||||||
end
|
|
||||||
|
|
||||||
# Development box
|
|
||||||
config.vm.define "development", autostart: false do |development|
|
|
||||||
development.vm.network "forwarded_port", guest: 8000, host: 8000
|
|
||||||
development.vm.synced_folder ".", "/mayan-edms-repository"
|
|
||||||
development.vm.provision :shell, :path => "contrib/scripts/install/development.sh", privileged: false
|
|
||||||
|
|
||||||
development.vm.provision "file", destination: "/home/vagrant/mayan-edms/mayan/settings/celery_redis.py", source: "contrib/settings/celery_redis.py"
|
|
||||||
development.vm.provision "file", destination: "/home/vagrant/mayan-edms/mayan_edms_worker.sh", source: "contrib/misc/mayan_edms_worker.sh"
|
|
||||||
end
|
|
||||||
|
|
||||||
# Production box
|
|
||||||
config.vm.define "production", autostart: false do |production|
|
|
||||||
production.vm.network "forwarded_port", guest: 80, host: 8080
|
|
||||||
production.vm.provision :shell, :path => "contrib/scripts/install/production.sh", privileged: true
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
DJANGO_SETTINGS_MODULE='mayan.settings.celery_redis' celery -A mayan worker -l DEBUG -Ofair -B
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name localhost;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
include uwsgi_params;
|
|
||||||
uwsgi_pass unix:/usr/share/mayan-edms/uwsgi.sock;
|
|
||||||
|
|
||||||
client_max_body_size 30M; # Increse if your plan to upload bigger documents
|
|
||||||
proxy_read_timeout 30s; # Increase if your document uploads take more than 30 seconds
|
|
||||||
}
|
|
||||||
|
|
||||||
location /static {
|
|
||||||
alias /usr/share/mayan-edms/mayan/media/static;
|
|
||||||
expires 1h;
|
|
||||||
}
|
|
||||||
|
|
||||||
location /favicon.ico {
|
|
||||||
alias /usr/share/mayan-edms/mayan/media/static/appearance/images/favicon.ico;
|
|
||||||
expires 1h;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
flake8 --ignore=E501 mayan/apps | grep -v "F401 'models' imported but unused" | grep -v "F811 redefinition of unused 'models'"| grep -v "F401 'db' imported but unused" | grep -v "F812 list comprehension redefines 'user_id'" | grep -v "F812 list comprehension redefines 'document_id'" |less
|
|
||||||
8
contrib/scripts/docker/run-tests.sh
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y --no-install-recommends tesseract-ocr-deu
|
||||||
|
|
||||||
|
pip install -r $DOCKER_ROOT/requirements-testing.txt
|
||||||
|
|
||||||
|
mayan-edms.py test --mayan-apps --settings=mayan.settings.testing
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
python setup.py sdist
|
|
||||||
pip wheel --no-index --no-deps --wheel-dir dist dist/*.tar.gz
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
find 'fabfile' -depth -name '*.pyc' -exec rm {} \;
|
|
||||||
tar -czvf contrib/fabfile.tar.gz fabfile
|
|
||||||
@@ -4,20 +4,21 @@ import optparse
|
|||||||
|
|
||||||
import sh
|
import sh
|
||||||
|
|
||||||
|
|
||||||
APP_LIST = (
|
APP_LIST = (
|
||||||
'acls', 'appearance', 'authentication', 'checkouts', 'common',
|
'acls', 'appearance', 'authentication', 'cabinets', 'checkouts', 'common',
|
||||||
'converter', 'django_gpg', 'document_comments', 'document_indexing',
|
'converter', 'django_gpg', 'document_comments', 'document_indexing',
|
||||||
'document_signatures', 'document_states', 'documents', 'dynamic_search',
|
'document_parsing', 'document_signatures', 'document_states', 'documents',
|
||||||
'events', 'folders', 'installation', 'linking', 'lock_manager', 'mailer',
|
'dynamic_search', 'events', 'linking', 'lock_manager', 'mayan_statistics',
|
||||||
'metadata', 'mirroring', 'motd', 'navigation', 'ocr', 'permissions',
|
'mailer', 'metadata', 'mirroring', 'motd', 'navigation', 'ocr', 'permissions',
|
||||||
'rest_api', 'smart_settings', 'sources', 'statistics', 'storage', 'tags',
|
'rest_api', 'smart_settings', 'sources', 'storage', 'tags', 'task_manager',
|
||||||
'user_management'
|
'user_management'
|
||||||
)
|
)
|
||||||
|
|
||||||
LANGUAGE_LIST = (
|
LANGUAGE_LIST = (
|
||||||
'ar', 'bg', 'bs_BA', 'da', 'de_DE', 'en', 'es', 'fa', 'fr', 'hu', 'id',
|
'ar', 'bg', 'bs_BA', 'da', 'de_DE', 'en', 'es', 'fa', 'fr', 'hu', 'id',
|
||||||
'it', 'nl_NL', 'pl', 'pt', 'pt_BR', 'ro_RO', 'ru', 'sl_SI', 'vi_VN',
|
'it', 'nl_NL', 'pl', 'pt', 'pt_BR', 'ro_RO', 'ru', 'sl_SI', 'tr_TR',
|
||||||
'zh_CN',
|
'vi_VN', 'zh_CN',
|
||||||
)
|
)
|
||||||
|
|
||||||
makemessages = sh.Command('django-admin.py')
|
makemessages = sh.Command('django-admin.py')
|
||||||
|
|||||||
103
contrib/scripts/statistics.py
Executable file
@@ -0,0 +1,103 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
BASE_PATH = 'mayan/apps'
|
||||||
|
|
||||||
|
|
||||||
|
def print_views_summary(module_filename):
|
||||||
|
with open(module_filename) as file_object:
|
||||||
|
print ' module:', module_filename
|
||||||
|
count_class_based_views = 0
|
||||||
|
count_function_based_views = 0
|
||||||
|
for line in file_object:
|
||||||
|
if line.startswith('class') and 'View' in line:
|
||||||
|
count_class_based_views += 1
|
||||||
|
|
||||||
|
if line.startswith('def') and 'request' in line:
|
||||||
|
count_function_based_views += 1
|
||||||
|
|
||||||
|
print ' class based views: {}'.format(count_class_based_views)
|
||||||
|
print ' function based views: {}'.format(count_function_based_views)
|
||||||
|
return count_class_based_views, count_function_based_views
|
||||||
|
|
||||||
|
|
||||||
|
def print_tests_summary(module_filename):
|
||||||
|
with open(module_filename) as file_object:
|
||||||
|
print ' module:', module_filename
|
||||||
|
count_tests = 0
|
||||||
|
for line in file_object:
|
||||||
|
if line.startswith(' def test'):
|
||||||
|
count_tests += 1
|
||||||
|
|
||||||
|
print ' tests: {}'.format(count_tests)
|
||||||
|
return count_tests
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
count_totals = {
|
||||||
|
'Apps': 0,
|
||||||
|
'Class based views': 0,
|
||||||
|
'Function based views': 0,
|
||||||
|
'Class based API views': 0,
|
||||||
|
'Function based API views': 0,
|
||||||
|
'Tests': 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
for app_name in sorted(os.listdir(BASE_PATH)):
|
||||||
|
if app_name != '__init__.py':
|
||||||
|
count_totals['Apps'] += 1
|
||||||
|
print '\n\nApp name: {}'.format(app_name)
|
||||||
|
app_path = os.path.join(BASE_PATH, app_name)
|
||||||
|
|
||||||
|
print '\n Views'
|
||||||
|
try:
|
||||||
|
module_filename = os.path.join(app_path, 'views.py')
|
||||||
|
count_class_based_views, count_function_based_views = print_views_summary(module_filename=module_filename)
|
||||||
|
count_totals['Class based views'] += count_class_based_views
|
||||||
|
count_totals['Function based views'] += count_function_based_views
|
||||||
|
|
||||||
|
except IOError:
|
||||||
|
# Check for multiple view files inside a view directory
|
||||||
|
try:
|
||||||
|
module_path = os.path.join(app_path, 'views')
|
||||||
|
for module_name in os.listdir(module_path):
|
||||||
|
if not module_name.startswith('__init__.py') and not module_name.endswith('.pyc'):
|
||||||
|
module_filename = os.path.join(module_path, module_name)
|
||||||
|
count_class_based_views, count_function_based_views = print_views_summary(module_filename=module_filename)
|
||||||
|
count_totals['Class based views'] += count_class_based_views
|
||||||
|
count_totals['Function based views'] += count_function_based_views
|
||||||
|
except OSError:
|
||||||
|
# No views directory, skip app
|
||||||
|
print ' No views'
|
||||||
|
|
||||||
|
print '\n API Views'
|
||||||
|
try:
|
||||||
|
module_filename = os.path.join(app_path, 'api_views.py')
|
||||||
|
count_class_based_views, count_function_based_views = print_views_summary(module_filename=module_filename)
|
||||||
|
count_totals['Class based API views'] += count_class_based_views
|
||||||
|
count_totals['Function based API views'] += count_function_based_views
|
||||||
|
|
||||||
|
except IOError:
|
||||||
|
# No API views directory, skip app
|
||||||
|
print ' No API views'
|
||||||
|
|
||||||
|
print '\n Tests'
|
||||||
|
module_path = os.path.join(app_path, 'tests')
|
||||||
|
try:
|
||||||
|
for module_name in os.listdir(module_path):
|
||||||
|
if not module_name.startswith('__init__.py') and not module_name.endswith('.pyc'):
|
||||||
|
module_filename = os.path.join(module_path, module_name)
|
||||||
|
if module_name.startswith('test'):
|
||||||
|
count_tests = print_tests_summary(module_filename=module_filename)
|
||||||
|
count_totals['Tests'] += count_tests
|
||||||
|
|
||||||
|
except OSError:
|
||||||
|
# No tests directory, skip app
|
||||||
|
print ' No tests'
|
||||||
|
|
||||||
|
print '-' * 10
|
||||||
|
|
||||||
|
print 'Totals:'
|
||||||
|
for key, value in count_totals.items():
|
||||||
|
print ' {}: {}'.format(key, value)
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
from .local import *
|
|
||||||
|
|
||||||
CELERY_ALWAYS_EAGER = False
|
|
||||||
BROKER_URL = 'redis://127.0.0.1:6379/0'
|
|
||||||
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'
|
|
||||||
64
contrib/settings/ldap_connection_settings.py
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
import ldap
|
||||||
|
from django_auth_ldap.config import LDAPSearch
|
||||||
|
|
||||||
|
from .base import * # NOQA
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
|
||||||
|
SECRET_KEY = '<your secret key>'
|
||||||
|
|
||||||
|
# makes sure this works in Active Directory
|
||||||
|
ldap.set_option(ldap.OPT_REFERRALS, 0)
|
||||||
|
|
||||||
|
# This is the default, but I like to be explicit.
|
||||||
|
AUTH_LDAP_ALWAYS_UPDATE_USER = True
|
||||||
|
|
||||||
|
LDAP_USER_AUTO_CREATION = "False"
|
||||||
|
LDAP_URL = "ldap://<your ldap server IP>:389/"
|
||||||
|
LDAP_BASE_DN = "dc=paramatrix,dc=co,dc=in"
|
||||||
|
LDAP_ADDITIONAL_USER_DN = "dc=people"
|
||||||
|
LDAP_ADMIN_DN = ""
|
||||||
|
LDAP_PASSWORD = ""
|
||||||
|
|
||||||
|
AUTH_LDAP_SERVER_URI = LDAP_URL
|
||||||
|
AUTH_LDAP_BIND_DN = LDAP_ADMIN_DN
|
||||||
|
AUTH_LDAP_BIND_PASSWORD = LDAP_PASSWORD
|
||||||
|
|
||||||
|
|
||||||
|
AUTH_LDAP_USER_SEARCH = LDAPSearch(
|
||||||
|
'%s,%s' % (LDAP_ADDITIONAL_USER_DN, LDAP_BASE_DN),
|
||||||
|
ldap.SCOPE_SUBTREE, '(uid=%(user)s)'
|
||||||
|
)
|
||||||
|
AUTH_LDAP_USER_ATTR_MAP = {
|
||||||
|
'first_name': 'cn',
|
||||||
|
'last_name': 'sn',
|
||||||
|
'email': 'mail'
|
||||||
|
}
|
||||||
|
AUTHENTICATION_BACKENDS = (
|
||||||
|
'django_auth_ldap.backend.LDAPBackend',
|
||||||
|
'mayan.settings.settings_local.EmailOrUsernameModelBackend',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class EmailOrUsernameModelBackend(object):
|
||||||
|
"""
|
||||||
|
This is a ModelBacked that allows authentication with either a username or an email address.
|
||||||
|
"""
|
||||||
|
def authenticate(self, username=None, password=None):
|
||||||
|
if '@' in username:
|
||||||
|
kwargs = {'email': username}
|
||||||
|
else:
|
||||||
|
kwargs = {'username': username}
|
||||||
|
try:
|
||||||
|
user = get_user_model().objects.get(**kwargs)
|
||||||
|
if user.check_password(password):
|
||||||
|
return user
|
||||||
|
except get_user_model().DoesNotExist:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def get_user(self, username):
|
||||||
|
try:
|
||||||
|
return get_user_model().objects.get(pk=username)
|
||||||
|
except get_user_model().DoesNotExist:
|
||||||
|
return None
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
[program:mayan-worker]
|
|
||||||
command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production worker -Ofair -l ERROR
|
|
||||||
directory = /usr/share/mayan-edms
|
|
||||||
user = www-data
|
|
||||||
stdout_logfile = /var/log/mayan/worker-stdout.log
|
|
||||||
stderr_logfile = /var/log/mayan/worker-stderr.log
|
|
||||||
autostart = true
|
|
||||||
autorestart = true
|
|
||||||
startsecs = 10
|
|
||||||
stopwaitsecs = 10
|
|
||||||
killasgroup = true
|
|
||||||
priority = 998
|
|
||||||
|
|
||||||
[program:mayan-beat]
|
|
||||||
command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production beat -l ERROR
|
|
||||||
directory = /usr/share/mayan-edms
|
|
||||||
user = www-data
|
|
||||||
numprocs = 1
|
|
||||||
stdout_logfile = /var/log/mayan/beat-stdout.log
|
|
||||||
stderr_logfile = /var/log/mayan/beat-stderr.log
|
|
||||||
autostart = true
|
|
||||||
autorestart = true
|
|
||||||
startsecs = 10
|
|
||||||
stopwaitsecs = 1
|
|
||||||
killasgroup = true
|
|
||||||
priority = 998
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
[program:mayan-uwsgi]
|
|
||||||
command = /usr/share/mayan-edms/bin/uwsgi --ini /usr/share/mayan-edms/uwsgi.ini
|
|
||||||
user = root
|
|
||||||
autostart = true
|
|
||||||
autorestart = true
|
|
||||||
redirect_stderr = true
|
|
||||||
149
docker/Dockerfile
Executable file
@@ -0,0 +1,149 @@
|
|||||||
|
# vim:set ft=dockerfile:
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Base image start #
|
||||||
|
####################
|
||||||
|
|
||||||
|
FROM debian:9.4-slim as BASE_IMAGE
|
||||||
|
|
||||||
|
MAINTAINER Roberto Rosario "roberto.rosario@mayan-edms.com"
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
ENV PYTHONUNBUFFERED 1
|
||||||
|
ENV LC_ALL C.UTF-8
|
||||||
|
ENV PROJECT_INSTALL_DIR=/usr/local/lib/python2.7/dist-packages/mayan
|
||||||
|
|
||||||
|
ARG APT_PROXY
|
||||||
|
# Package caching
|
||||||
|
RUN if [ "${APT_PROXY}" ]; then echo "Acquire::http { Proxy \"http://${APT_PROXY}\"; };" > /etc/apt/apt.conf.d/01proxy; fi
|
||||||
|
|
||||||
|
# Install base Ubuntu libraries
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
g++ \
|
||||||
|
gcc \
|
||||||
|
ghostscript \
|
||||||
|
gpgv \
|
||||||
|
gnupg1 \
|
||||||
|
graphviz \
|
||||||
|
libffi-dev \
|
||||||
|
libjpeg-dev \
|
||||||
|
libmagic1 \
|
||||||
|
default-libmysqlclient-dev \
|
||||||
|
libpng-dev \
|
||||||
|
libpq-dev \
|
||||||
|
libreoffice \
|
||||||
|
libtiff-dev \
|
||||||
|
poppler-utils \
|
||||||
|
python-dev \
|
||||||
|
python-pip \
|
||||||
|
python-setuptools \
|
||||||
|
python-wheel \
|
||||||
|
redis-server \
|
||||||
|
sane-utils \
|
||||||
|
supervisor \
|
||||||
|
tesseract-ocr \
|
||||||
|
zlib1g-dev \
|
||||||
|
&& \
|
||||||
|
apt-get clean autoclean && \
|
||||||
|
apt-get autoremove --purge -y && \
|
||||||
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
|
rm -f /var/cache/apt/archives/*.deb
|
||||||
|
|
||||||
|
# Install apt-get-install
|
||||||
|
ADD https://raw.githubusercontent.com/guilhem/apt-get-install/master/apt-get-install /usr/bin/
|
||||||
|
RUN chmod +x /usr/bin/apt-get-install
|
||||||
|
|
||||||
|
# Install Python clients for PostgreSQL, REDIS, librabbitmq
|
||||||
|
RUN pip install psycopg2==2.7.3.2 redis==2.10.6 mysql-python==1.2.5 librabbitmq==1.6.1
|
||||||
|
|
||||||
|
RUN adduser mayan --disabled-password --disabled-login --no-create-home --gecos ""
|
||||||
|
|
||||||
|
# Pillow can't find zlib or libjpeg on aarch64 (ODROID C2)
|
||||||
|
RUN if [ "$(uname -m)" = "aarch64" ]; then \
|
||||||
|
ln -s /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/ && \
|
||||||
|
ln -s /usr/lib/aarch64-linux-gnu/libjpeg.so /usr/lib/ \
|
||||||
|
; fi
|
||||||
|
|
||||||
|
# Pillow can't find zlib or libjpeg on armv7l (ODROID HC1)
|
||||||
|
RUN if [ "$(uname -m)" = "armv7l" ]; then \
|
||||||
|
apt-get install libssl-dev -y && \
|
||||||
|
ln -s /usr/lib/arm-linux-gnueabihf/libz.so /usr/lib/ && \
|
||||||
|
ln -s /usr/lib/arm-linux-gnueabihf/libjpeg.so /usr/lib/ \
|
||||||
|
; fi
|
||||||
|
|
||||||
|
#####################
|
||||||
|
# Build image start #
|
||||||
|
#####################
|
||||||
|
|
||||||
|
FROM debian:9.4-slim as BUILDER_IMAGE
|
||||||
|
|
||||||
|
ARG APT_PROXY
|
||||||
|
# Package caching
|
||||||
|
RUN if [ "${APT_PROXY}" ]; then echo "Acquire::http { Proxy \"http://${APT_PROXY}\"; };" > /etc/apt/apt.conf.d/01proxy; fi
|
||||||
|
|
||||||
|
WORKDIR /code
|
||||||
|
|
||||||
|
COPY . /code
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install make python-dev python-pip -y
|
||||||
|
|
||||||
|
RUN pip install -r requirements/build.txt
|
||||||
|
|
||||||
|
ENV LC_ALL C.UTF-8
|
||||||
|
|
||||||
|
RUN touch docker/Makefile
|
||||||
|
|
||||||
|
RUN make wheel
|
||||||
|
|
||||||
|
RUN chmod 777 dist -R
|
||||||
|
|
||||||
|
#####################
|
||||||
|
# Final image start #
|
||||||
|
#####################
|
||||||
|
|
||||||
|
FROM BASE_IMAGE
|
||||||
|
|
||||||
|
WORKDIR /root/
|
||||||
|
|
||||||
|
COPY --from=BUILDER_IMAGE /code/dist/*.whl .
|
||||||
|
|
||||||
|
COPY --from=BUILDER_IMAGE /code/contrib/scripts/docker/run-tests.sh .
|
||||||
|
|
||||||
|
COPY --from=BUILDER_IMAGE /code/requirements/testing-base.txt requirements-testing.txt
|
||||||
|
|
||||||
|
# Install build Mayan EDMS
|
||||||
|
RUN pip install *.whl && \
|
||||||
|
rm *.whl
|
||||||
|
|
||||||
|
# Setup supervisor
|
||||||
|
COPY docker/etc/supervisor/mayan.conf /etc/supervisor/conf.d
|
||||||
|
|
||||||
|
# Fix ownership
|
||||||
|
RUN chown -R mayan:mayan $PROJECT_INSTALL_DIR
|
||||||
|
|
||||||
|
# Allow flanker to autogenerate its PLY files
|
||||||
|
RUN chown -R mayan:mayan /usr/local/lib/python2.7/dist-packages/flanker/
|
||||||
|
|
||||||
|
RUN mkdir /var/lib/mayan
|
||||||
|
VOLUME ["/var/lib/mayan"]
|
||||||
|
|
||||||
|
COPY docker/entrypoint.sh /usr/local/bin/
|
||||||
|
RUN ln -s usr/local/bin/entrypoint.sh / # backwards compat
|
||||||
|
ENTRYPOINT ["entrypoint.sh"]
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
CMD ["mayan"]
|
||||||
|
|
||||||
|
RUN rm /root/.cache -R
|
||||||
|
RUN rm -rf /tmp/*
|
||||||
|
|
||||||
|
RUN apt-get -y autoremove --purge && apt-get -y autoclean && apt-get -y clean
|
||||||
|
|
||||||
|
RUN rm -rf /usr/share/man/*
|
||||||
|
RUN rm -rf /usr/share/doc/*
|
||||||
|
|
||||||
|
RUN find /var/lib/apt -type f | xargs rm -f
|
||||||
|
RUN find /var/cache -type f -exec rm -rf {} \;
|
||||||
|
|
||||||
|
RUN find /var/log -type f | while read f; do echo -ne '' > $f; done;
|
||||||
150
docker/Dockerfile.ubuntu
Executable file
@@ -0,0 +1,150 @@
|
|||||||
|
# vim:set ft=dockerfile:
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Base image start #
|
||||||
|
####################
|
||||||
|
|
||||||
|
FROM ubuntu:16.04 as BASE_IMAGE
|
||||||
|
|
||||||
|
MAINTAINER Roberto Rosario "roberto.rosario@mayan-edms.com"
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
ENV PYTHONUNBUFFERED 1
|
||||||
|
ENV LANG en_US.UTF-8
|
||||||
|
ENV PROJECT_INSTALL_DIR=/usr/local/lib/python2.7/dist-packages/mayan
|
||||||
|
|
||||||
|
ARG APT_PROXY
|
||||||
|
# Package caching
|
||||||
|
RUN if [ "${APT_PROXY}" ]; then echo "Acquire::http { Proxy \"http://${APT_PROXY}\"; };" > /etc/apt/apt.conf.d/01proxy; fi
|
||||||
|
|
||||||
|
# Install base Ubuntu libraries
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
curl \
|
||||||
|
g++ \
|
||||||
|
gcc \
|
||||||
|
gettext-base \
|
||||||
|
ghostscript \
|
||||||
|
gpgv \
|
||||||
|
graphviz \
|
||||||
|
libffi-dev \
|
||||||
|
libjpeg-dev \
|
||||||
|
libmagic1 \
|
||||||
|
libmysqlclient-dev \
|
||||||
|
libpng-dev \
|
||||||
|
libpq-dev \
|
||||||
|
libreoffice \
|
||||||
|
libtiff-dev \
|
||||||
|
locales \
|
||||||
|
netcat-openbsd \
|
||||||
|
poppler-utils \
|
||||||
|
python-dev \
|
||||||
|
python-pip \
|
||||||
|
python-setuptools \
|
||||||
|
python-wheel \
|
||||||
|
redis-server \
|
||||||
|
supervisor \
|
||||||
|
tesseract-ocr \
|
||||||
|
zlib1g-dev \
|
||||||
|
&& \
|
||||||
|
apt-get clean autoclean && \
|
||||||
|
apt-get autoremove --purge -y && \
|
||||||
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
|
rm -f /var/cache/apt/archives/*.deb
|
||||||
|
|
||||||
|
# Switch to UTF locale
|
||||||
|
RUN echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
|
||||||
|
locale-gen en_US.UTF-8 && \
|
||||||
|
update-locale LANG=en_US.UTF-8 && \
|
||||||
|
export LC_ALL=en_US.UTF-8
|
||||||
|
|
||||||
|
# Install apt-get-install
|
||||||
|
ADD https://raw.githubusercontent.com/guilhem/apt-get-install/master/apt-get-install /usr/bin/
|
||||||
|
RUN chmod +x /usr/bin/apt-get-install
|
||||||
|
|
||||||
|
# Install Python clients for PostgreSQL, REDIS, librabbitmq
|
||||||
|
RUN pip install psycopg2==2.7.3.2 redis==2.10.6 mysql-python==1.2.5 librabbitmq==1.6.1
|
||||||
|
|
||||||
|
RUN adduser mayan --disabled-password --disabled-login --no-create-home --gecos ""
|
||||||
|
|
||||||
|
# Pillow can't find zlib or libjpeg on aarch64
|
||||||
|
RUN if [ "$(uname -m)" = "aarch64" ]; then \
|
||||||
|
ln -s /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/ && \
|
||||||
|
ln -s /usr/lib/aarch64-linux-gnu/libjpeg.so /usr/lib/ \
|
||||||
|
; fi
|
||||||
|
|
||||||
|
#####################
|
||||||
|
# Build image start #
|
||||||
|
#####################
|
||||||
|
|
||||||
|
FROM python:2-alpine3.7 as BUILDER_IMAGE
|
||||||
|
|
||||||
|
WORKDIR /code
|
||||||
|
|
||||||
|
COPY . /code
|
||||||
|
|
||||||
|
RUN apk update && \
|
||||||
|
apk add make
|
||||||
|
|
||||||
|
RUN pip install -r requirements/build.txt
|
||||||
|
|
||||||
|
RUN make wheel
|
||||||
|
|
||||||
|
RUN chmod 777 dist -R
|
||||||
|
|
||||||
|
#####################
|
||||||
|
# Final image start #
|
||||||
|
#####################
|
||||||
|
|
||||||
|
FROM BASE_IMAGE
|
||||||
|
|
||||||
|
WORKDIR /root/
|
||||||
|
|
||||||
|
COPY --from=BUILDER_IMAGE /code/dist/*.whl .
|
||||||
|
|
||||||
|
# Install build Mayan EDMS
|
||||||
|
RUN pip install *.whl && \
|
||||||
|
rm *.whl
|
||||||
|
|
||||||
|
# Setup supervisor
|
||||||
|
#RUN mkdir /etc/supervisor.d/
|
||||||
|
COPY docker/etc/supervisor/beat.conf /etc/supervisor/conf.d
|
||||||
|
COPY docker/etc/supervisor/gunicorn.conf /etc/supervisor/conf.d
|
||||||
|
COPY docker/etc/supervisor/redis.conf /etc/supervisor/conf.d
|
||||||
|
COPY docker/etc/supervisor/workers.conf /etc/supervisor/conf.d
|
||||||
|
|
||||||
|
# Create the directory for the logs
|
||||||
|
RUN mkdir /var/log/mayan
|
||||||
|
|
||||||
|
# Fix ownership
|
||||||
|
RUN chown -R mayan:mayan $PROJECT_INSTALL_DIR
|
||||||
|
|
||||||
|
# Allow flanker to autogenerate its PLY files
|
||||||
|
RUN chown -R mayan:mayan /usr/local/lib/python2.7/dist-packages/flanker/
|
||||||
|
|
||||||
|
RUN mkdir /var/lib/mayan
|
||||||
|
VOLUME ["/var/lib/mayan"]
|
||||||
|
|
||||||
|
COPY docker/entrypoint.sh /usr/local/bin/
|
||||||
|
RUN ln -s usr/local/bin/entrypoint.sh / # backwards compat
|
||||||
|
ENTRYPOINT ["entrypoint.sh"]
|
||||||
|
|
||||||
|
# Healthcheck setup
|
||||||
|
HEALTHCHECK --interval=15s --timeout=1s --retries=20 \
|
||||||
|
CMD curl -s -f http://localhost/authentication/login/ | grep 'form' > /dev/null || exit 1
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
CMD ["mayan"]
|
||||||
|
|
||||||
|
RUN rm /root/.cache -R
|
||||||
|
RUN rm -rf /tmp/*
|
||||||
|
|
||||||
|
RUN apt-get -y autoremove --purge && apt-get -y autoclean && apt-get -y clean
|
||||||
|
|
||||||
|
RUN rm -rf /usr/share/man/*
|
||||||
|
RUN rm -rf /usr/share/doc/*
|
||||||
|
|
||||||
|
RUN find /var/lib/apt -type f | xargs rm -f
|
||||||
|
RUN find /var/cache -type f -exec rm -rf {} \;
|
||||||
|
|
||||||
|
RUN find /var/log -type f | while read f; do echo -ne '' > $f; done;
|
||||||
33
docker/Makefile
Executable file
@@ -0,0 +1,33 @@
|
|||||||
|
APT_PROXY ?= `/sbin/ip route|awk '/docker0/ { print $$9 }'`:3142
|
||||||
|
IMAGE_VERSION ?= `cat docker/version`
|
||||||
|
CONSOLE_COLUMNS ?= `echo $$(tput cols)`
|
||||||
|
CONSOLE_LINES ?= `echo $$(tput lines)`
|
||||||
|
|
||||||
|
docker-help:
|
||||||
|
@echo
|
||||||
|
@echo "**** Docker makefile ****"
|
||||||
|
@echo "docker-build - Build a new image locally."
|
||||||
|
@echo "docker-build-with-proxy - Build a new image locally using an APT proxy."
|
||||||
|
@echo "docker-test-container - Build and run a test container."
|
||||||
|
@echo "docker-test-cleanup - Delete the test container and the test volume."
|
||||||
|
@echo "docker-test-all - Build and executed the test suite in a test container."
|
||||||
|
@echo "docker-shell - Launch a bash instance inside a running container. Pass the container name via DOCKER_CONTAINER."
|
||||||
|
|
||||||
|
docker-build:
|
||||||
|
docker build -t mayanedms/mayanedms:$(IMAGE_VERSION) -f docker/Dockerfile .
|
||||||
|
|
||||||
|
docker-build-with-proxy:
|
||||||
|
docker build -t mayanedms/mayanedms:$(IMAGE_VERSION) -f docker/Dockerfile --build-arg APT_PROXY=$(APT_PROXY) .
|
||||||
|
|
||||||
|
docker-shell:
|
||||||
|
docker exec -e TERM=$(TERM) -e "COLUMNS=$(CONSOLE_COLUMNS)" -e "LINES=$(CONSOLE_LINES)" -it $(DOCKER_CONTAINER) /bin/bash
|
||||||
|
|
||||||
|
docker-test-container: docker-build-with-proxy docker-test-cleanup
|
||||||
|
docker run -d --name test-mayan-edms -p 80:8000 -v test-mayan_data:/var/lib/mayan mayanedms/mayanedms:$(DOCKER_VERSION)
|
||||||
|
|
||||||
|
docker-test-cleanup:
|
||||||
|
@docker rm -f test-mayan-edms || true
|
||||||
|
@docker volume rm test-mayan_data || true
|
||||||
|
|
||||||
|
docker-test-all: docker-build-with-proxy
|
||||||
|
docker run --rm run-tests
|
||||||
1
docker/README-short.txt
Executable file
@@ -0,0 +1 @@
|
|||||||
|
Mayan EDMS is a free open source electronic document management system.
|
||||||
549
docker/README.md
Executable file
549
docker/README.md.tmpl
Executable file
72
docker/docker-compose-development.yml
Executable file
@@ -0,0 +1,72 @@
|
|||||||
|
version: '2.1'
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
broker:
|
||||||
|
driver: local
|
||||||
|
app:
|
||||||
|
driver: local
|
||||||
|
db:
|
||||||
|
driver: local
|
||||||
|
results:
|
||||||
|
driver: local
|
||||||
|
|
||||||
|
services:
|
||||||
|
broker:
|
||||||
|
container_name: mayan-edms-broker
|
||||||
|
image: healthcheck/rabbitmq
|
||||||
|
environment:
|
||||||
|
RABBITMQ_DEFAULT_USER: mayan
|
||||||
|
RABBITMQ_DEFAULT_PASS: mayan
|
||||||
|
RABBITMQ_DEFAULT_VHOST: mayan
|
||||||
|
volumes:
|
||||||
|
- broker:/var/lib/rabbitmq
|
||||||
|
results:
|
||||||
|
container_name: mayan-edms-results
|
||||||
|
image: healthcheck/redis
|
||||||
|
volumes:
|
||||||
|
- results:/data
|
||||||
|
#db:
|
||||||
|
# container_name: mayan-edms-db
|
||||||
|
# image: healthcheck/mysql
|
||||||
|
# environment:
|
||||||
|
# MYSQL_DATABASE: mayan
|
||||||
|
# MYSQL_PASSWORD: mayan-password
|
||||||
|
# MYSQL_ROOT_PASSWORD: root-password
|
||||||
|
# MYSQL_USER: mayan
|
||||||
|
# volumes:
|
||||||
|
# - db:/var/lib/mysql
|
||||||
|
db:
|
||||||
|
container_name: mayan-edms-db
|
||||||
|
image: healthcheck/postgres
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: mayan
|
||||||
|
POSTGRES_PASSWORD: mayan-password
|
||||||
|
POSTGRES_USER: mayan
|
||||||
|
volumes:
|
||||||
|
- db:/var/lib/postgresql/data
|
||||||
|
mayan-edms:
|
||||||
|
container_name: mayan-edms-app
|
||||||
|
image: mayan-edms/next
|
||||||
|
build:
|
||||||
|
context: ./
|
||||||
|
args:
|
||||||
|
- APT_PROXY=172.18.0.1:3142
|
||||||
|
depends_on:
|
||||||
|
broker:
|
||||||
|
condition: service_healthy
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
results:
|
||||||
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
MAYAN_BROKER_URL: amqp://mayan:mayan@broker:5672/mayan
|
||||||
|
MAYAN_CELERY_RESULT_BACKEND: redis://results:6379/0
|
||||||
|
MAYAN_DATABASE_DRIVER: django.db.backends.postgres
|
||||||
|
MAYAN_DATABASE_HOST: db
|
||||||
|
MAYAN_DATABASE_NAME: mayan
|
||||||
|
MAYAN_DATABASE_PASSWORD: mayan-password
|
||||||
|
MAYAN_DATABASE_USER: mayan
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
volumes:
|
||||||
|
- app:/var/lib/mayan
|
||||||
58
docker/docker-compose.yml
Executable file
@@ -0,0 +1,58 @@
|
|||||||
|
version: '2.1'
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
broker:
|
||||||
|
driver: local
|
||||||
|
app:
|
||||||
|
driver: local
|
||||||
|
db:
|
||||||
|
driver: local
|
||||||
|
results:
|
||||||
|
driver: local
|
||||||
|
|
||||||
|
services:
|
||||||
|
broker:
|
||||||
|
container_name: mayan-edms-broker
|
||||||
|
image: healthcheck/rabbitmq
|
||||||
|
environment:
|
||||||
|
RABBITMQ_DEFAULT_USER: mayan
|
||||||
|
RABBITMQ_DEFAULT_PASS: mayan
|
||||||
|
RABBITMQ_DEFAULT_VHOST: mayan
|
||||||
|
volumes:
|
||||||
|
- broker:/var/lib/rabbitmq
|
||||||
|
results:
|
||||||
|
container_name: mayan-edms-results
|
||||||
|
image: healthcheck/redis
|
||||||
|
volumes:
|
||||||
|
- results:/data
|
||||||
|
db:
|
||||||
|
container_name: mayan-edms-db
|
||||||
|
image: healthcheck/postgres
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: mayan
|
||||||
|
POSTGRES_PASSWORD: mayan-password
|
||||||
|
POSTGRES_USER: mayan
|
||||||
|
volumes:
|
||||||
|
- db:/var/lib/postgresql/data
|
||||||
|
mayan-edms:
|
||||||
|
container_name: mayan-edms-app
|
||||||
|
image: mayanedms/mayanedms:latest
|
||||||
|
depends_on:
|
||||||
|
broker:
|
||||||
|
condition: service_healthy
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
results:
|
||||||
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
MAYAN_BROKER_URL: amqp://mayan:mayan@broker:5672/mayan
|
||||||
|
MAYAN_CELERY_RESULT_BACKEND: redis://results:6379/0
|
||||||
|
MAYAN_DATABASE_DRIVER: django.db.backends.postgres
|
||||||
|
MAYAN_DATABASE_HOST: db
|
||||||
|
MAYAN_DATABASE_NAME: mayan
|
||||||
|
MAYAN_DATABASE_PASSWORD: mayan-password
|
||||||
|
MAYAN_DATABASE_USER: mayan
|
||||||
|
ports:
|
||||||
|
- "80:8000"
|
||||||
|
volumes:
|
||||||
|
- app:/var/lib/mayan
|
||||||
86
docker/entrypoint.sh
Executable file
@@ -0,0 +1,86 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
echo "mayan: starting entrypoint.sh"
|
||||||
|
INSTALL_FLAG=/var/lib/mayan/media/system/SECRET_KEY
|
||||||
|
export DOCKER_ROOT=/root
|
||||||
|
|
||||||
|
export MAYAN_DEFAULT_BROKER_URL=redis://127.0.0.1:6379/0
|
||||||
|
export MAYAN_DEFAULT_CELERY_RESULT_BACKEND=redis://127.0.0.1:6379/0
|
||||||
|
|
||||||
|
export MAYAN_ALLOWED_HOSTS=*
|
||||||
|
export MAYAN_BIN=/usr/local/lib/python2.7/dist-packages/mayan/bin/mayan-edms.py
|
||||||
|
export MAYAN_BROKER_URL=${MAYAN_BROKER_URL:-${MAYAN_DEFAULT_BROKER_URL}}
|
||||||
|
export MAYAN_CELERY_RESULT_BACKEND=${MAYAN_CELERY_RESULT_BACKEND:-${MAYAN_DEFAULT_CELERY_RESULT_BACKEND}}
|
||||||
|
export MAYAN_GUNICORN_WORKERS=${MAYAN_GUNICORN_WORKERS:-2}
|
||||||
|
export MAYAN_INSTALL_DIR=/usr/local/lib/python2.7/dist-packages/mayan
|
||||||
|
export MAYAN_PYTHON_DIR=/usr/local/bin
|
||||||
|
export MAYAN_MEDIA_ROOT=/var/lib/mayan
|
||||||
|
export MAYAN_SETTINGS_MODULE=${MAYAN_SETTINGS_MODULE:-mayan.settings.production}
|
||||||
|
|
||||||
|
export CELERY_ALWAYS_EAGER=False
|
||||||
|
export PYTHONPATH=$PYTHONPATH:$MAYAN_MEDIA_ROOT
|
||||||
|
|
||||||
|
chown mayan:mayan /var/lib/mayan -R
|
||||||
|
|
||||||
|
initialize() {
|
||||||
|
echo "mayan: initialize()"
|
||||||
|
su mayan -c "mayan-edms.py initialsetup --force"
|
||||||
|
su mayan -c "mayan-edms.py collectstatic --noinput --clear"
|
||||||
|
}
|
||||||
|
|
||||||
|
upgrade() {
|
||||||
|
echo "mayan: upgrade()"
|
||||||
|
su mayan -c "mayan-edms.py performupgrade"
|
||||||
|
su mayan -c "mayan-edms.py collectstatic --noinput --clear"
|
||||||
|
}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
echo "mayan: start()"
|
||||||
|
rm -rf /var/run/supervisor.sock
|
||||||
|
exec /usr/bin/supervisord -nc /etc/supervisor/supervisord.conf
|
||||||
|
}
|
||||||
|
|
||||||
|
os_package_installs() {
|
||||||
|
echo "mayan: os_package_installs()"
|
||||||
|
if [ "${MAYAN_APT_INSTALLS}" ]; then
|
||||||
|
apt-get-install $MAYAN_APT_INSTALLS
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pip_installs() {
|
||||||
|
echo "mayan: pip_installs()"
|
||||||
|
if [ "${MAYAN_PIP_INSTALLS}" ]; then
|
||||||
|
pip install $MAYAN_PIP_INSTALLS
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
os_package_installs || true
|
||||||
|
pip_installs || true
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
|
||||||
|
mayan) # Check if this is a new install, otherwise try to upgrade the existing
|
||||||
|
# installation on subsequent starts
|
||||||
|
if [ ! -f $INSTALL_FLAG ]; then
|
||||||
|
initialize
|
||||||
|
else
|
||||||
|
upgrade
|
||||||
|
fi
|
||||||
|
start
|
||||||
|
;;
|
||||||
|
|
||||||
|
run-tests) # Check if this is a new install, otherwise try to upgrade the existing
|
||||||
|
# installation on subsequent starts
|
||||||
|
if [ ! -f $INSTALL_FLAG ]; then
|
||||||
|
initialize
|
||||||
|
else
|
||||||
|
upgrade
|
||||||
|
fi
|
||||||
|
$DOCKER_ROOT/run-tests.sh
|
||||||
|
;;
|
||||||
|
|
||||||
|
*) su mayan -c "$@";
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
80
docker/etc/supervisor/mayan.conf
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
[program:mayan-gunicorn]
|
||||||
|
autorestart = false
|
||||||
|
autostart = true
|
||||||
|
command = /bin/bash -c "cd ${MAYAN_PYTHON_DIR}; gunicorn -w ${MAYAN_GUNICORN_WORKERS} mayan.wsgi --max-requests 500 --max-requests-jitter 50 --worker-class gevent --bind 0.0.0.0:8000 --env DJANGO_SETTINGS_MODULE=${MAYAN_SETTINGS_MODULE}"
|
||||||
|
redirect_stderr = true
|
||||||
|
stderr_logfile = /dev/fd/2
|
||||||
|
stderr_logfile_maxbytes = 0
|
||||||
|
stdout_logfile = /dev/fd/1
|
||||||
|
stdout_logfile_maxbytes = 0
|
||||||
|
user = mayan
|
||||||
|
|
||||||
|
[program:redis]
|
||||||
|
autorestart = false
|
||||||
|
autostart = true
|
||||||
|
command = /bin/bash -c "if [ ${MAYAN_BROKER_URL} == ${MAYAN_DEFAULT_BROKER_URL} ] && [ ${MAYAN_CELERY_RESULT_BACKEND} == ${MAYAN_DEFAULT_CELERY_RESULT_BACKEND} ];then /usr/bin/redis-server /etc/redis/;fi"
|
||||||
|
stderr_logfile = /dev/fd/2
|
||||||
|
stderr_logfile_maxbytes = 0
|
||||||
|
stdout_logfile = /dev/fd/1
|
||||||
|
stdout_logfile_maxbytes = 0
|
||||||
|
user = root
|
||||||
|
|
||||||
|
[program:mayan-worker-fast]
|
||||||
|
autorestart = false
|
||||||
|
autostart = true
|
||||||
|
command = nice -n 1 /bin/bash -c "cd ${MAYAN_PYTHON_DIR}; python ${MAYAN_BIN} celery --settings=${MAYAN_SETTINGS_MODULE} worker -Ofair -l ERROR -Q converter -n mayan-worker-fast.%%h --concurrency=1"
|
||||||
|
killasgroup = true
|
||||||
|
numprocs = 1
|
||||||
|
priority = 998
|
||||||
|
startsecs = 10
|
||||||
|
stderr_logfile = /dev/fd/2
|
||||||
|
stderr_logfile_maxbytes = 0
|
||||||
|
stdout_logfile = /dev/fd/1
|
||||||
|
stdout_logfile_maxbytes = 0
|
||||||
|
stopwaitsecs = 1
|
||||||
|
user = mayan
|
||||||
|
|
||||||
|
[program:mayan-worker-medium]
|
||||||
|
autorestart = false
|
||||||
|
autostart = true
|
||||||
|
command = nice -n 18 /bin/bash -c "cd ${MAYAN_PYTHON_DIR}; python ${MAYAN_BIN} celery --settings=${MAYAN_SETTINGS_MODULE} worker -Ofair -l ERROR -Q checkouts_periodic,documents_periodic,indexing,metadata,sources,sources_periodic,uploads,documents -n mayan-worker-medium.%%h --concurrency=1"
|
||||||
|
killasgroup = true
|
||||||
|
numprocs = 1
|
||||||
|
priority = 998
|
||||||
|
startsecs = 10
|
||||||
|
stderr_logfile = /dev/fd/2
|
||||||
|
stderr_logfile_maxbytes = 0
|
||||||
|
stdout_logfile = /dev/fd/1
|
||||||
|
stdout_logfile_maxbytes = 0
|
||||||
|
stopwaitsecs = 1
|
||||||
|
user = mayan
|
||||||
|
|
||||||
|
[program:mayan-worker-slow]
|
||||||
|
autorestart = false
|
||||||
|
autostart = true
|
||||||
|
command = nice -n 19 /bin/bash -c "cd ${MAYAN_PYTHON_DIR}; python ${MAYAN_BIN} celery --settings=${MAYAN_SETTINGS_MODULE} worker -Ofair -l ERROR -Q mailing,tools,statistics,parsing,ocr -n mayan-worker-slow.%%h --concurrency=1"
|
||||||
|
killasgroup = true
|
||||||
|
numprocs = 1
|
||||||
|
priority = 998
|
||||||
|
startsecs = 10
|
||||||
|
stderr_logfile = /dev/fd/2
|
||||||
|
stderr_logfile_maxbytes = 0
|
||||||
|
stdout_logfile = /dev/fd/1
|
||||||
|
stdout_logfile_maxbytes = 0
|
||||||
|
stopwaitsecs = 1
|
||||||
|
user = mayan
|
||||||
|
|
||||||
|
[program:mayan-celery-beat]
|
||||||
|
autorestart = false
|
||||||
|
autostart = true
|
||||||
|
command = nice -n 1 /bin/bash -c "cd ${MAYAN_PYTHON_DIR}; python ${MAYAN_BIN} celery --settings=${MAYAN_SETTINGS_MODULE} beat --pidfile= -l ERROR"
|
||||||
|
killasgroup = true
|
||||||
|
numprocs = 1
|
||||||
|
priority = 998
|
||||||
|
stderr_logfile = /dev/fd/2
|
||||||
|
stderr_logfile_maxbytes = 0
|
||||||
|
stdout_logfile = /dev/fd/1
|
||||||
|
stdout_logfile_maxbytes = 0
|
||||||
|
startsecs = 10
|
||||||
|
stopwaitsecs = 1
|
||||||
|
user = mayan
|
||||||
30
docker/stack.yml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
version: '3.1'
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
app:
|
||||||
|
driver: local
|
||||||
|
db:
|
||||||
|
driver: local
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: postgres
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: mayan
|
||||||
|
POSTGRES_PASSWORD: mayan-password
|
||||||
|
POSTGRES_USER: mayan
|
||||||
|
|
||||||
|
app:
|
||||||
|
image: mayanedms/mayanedms:latest
|
||||||
|
ports:
|
||||||
|
- 80:8000
|
||||||
|
environment:
|
||||||
|
MAYAN_DATABASE_ENGINE: django.db.backends.postgresql
|
||||||
|
MAYAN_DATABASE_HOST: db
|
||||||
|
MAYAN_DATABASE_NAME: mayan
|
||||||
|
MAYAN_DATABASE_PASSWORD: mayan-password
|
||||||
|
MAYAN_DATABASE_USER: mayan
|
||||||
|
volumes:
|
||||||
|
- app:/var/lib/mayan
|
||||||
|
|
||||||
1
docker/version
Executable file
@@ -0,0 +1 @@
|
|||||||
|
3.0rc1
|
||||||
BIN
docs/_static/api.png
vendored
|
Before Width: | Height: | Size: 78 KiB |
BIN
docs/_static/document_view.png
vendored
|
Before Width: | Height: | Size: 67 KiB |
BIN
docs/_static/main.png
vendored
|
Before Width: | Height: | Size: 32 KiB |
BIN
docs/_static/overview.gif
vendored
|
Before Width: | Height: | Size: 628 KiB After Width: | Height: | Size: 6.6 MiB |
BIN
docs/_static/page_view.png
vendored
|
Before Width: | Height: | Size: 69 KiB |
BIN
docs/_static/setup.png
vendored
|
Before Width: | Height: | Size: 61 KiB |
BIN
docs/_static/statistics.png
vendored
|
Before Width: | Height: | Size: 28 KiB |
BIN
docs/_static/tools.png
vendored
|
Before Width: | Height: | Size: 67 KiB |
14
docs/_templates/donate.html
vendored
@@ -1,4 +1,16 @@
|
|||||||
<h3>Support</h3>
|
<h3>Support</h3>
|
||||||
<p>
|
<p>
|
||||||
Consulting, support, customization, rebranding, and plug-in development are available. Email for information to: <a href='mailto:info@mayan-edms.com'>info@mayan-edms.com</a>
|
<a href='http://www.mayan-edms.com/providers/'>Consulting and support plans are available, click here</a>.
|
||||||
</p>
|
</p>
|
||||||
|
<hr />
|
||||||
|
<p>
|
||||||
|
Or consider supporting Mayan EDMS by contributing to its development. (US tax payers, please note this contribution is not tax deductible).
|
||||||
|
</p>
|
||||||
|
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
|
||||||
|
<input type="hidden" name="cmd" value="_s-xclick">
|
||||||
|
<input type="hidden" name="hosted_button_id" value="3PXN336XFXQNN">
|
||||||
|
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
|
||||||
|
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1" style="display: none !important;">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|||||||
32
docs/conf.py
@@ -33,12 +33,11 @@ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "_ext"))
|
|||||||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||||
#extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode']
|
#extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode']
|
||||||
#extensions = ["djangodocs", "sphinx.ext.intersphinx"]
|
#extensions = ["djangodocs", "sphinx.ext.intersphinx"]
|
||||||
extensions = ['djangodocs', 'sphinxcontrib.blockdiag']
|
extensions = ['sphinxcontrib.blockdiag']
|
||||||
|
|
||||||
blockdiag_antialias = True
|
blockdiag_antialias = True
|
||||||
blockdiag_html_image_format = "SVG"
|
blockdiag_html_image_format = "SVG"
|
||||||
blockdiag_latex_image_format = "PDF"
|
blockdiag_latex_image_format = "PDF"
|
||||||
blockdiag_tex_image_format = "PDF"
|
|
||||||
|
|
||||||
# Add any paths that contain templates here, relative to this directory.
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
templates_path = ['_templates']
|
templates_path = ['_templates']
|
||||||
@@ -54,7 +53,7 @@ master_doc = 'index'
|
|||||||
|
|
||||||
# General information about the project.
|
# General information about the project.
|
||||||
project = mayan.__title__
|
project = mayan.__title__
|
||||||
copyright = mayan.__copyright__
|
copyright = mayan.__copyright_short__
|
||||||
|
|
||||||
# The version info for the project you're documenting, acts as replacement for
|
# The version info for the project you're documenting, acts as replacement for
|
||||||
# |version| and |release|, also used in various other places throughout the
|
# |version| and |release|, also used in various other places throughout the
|
||||||
@@ -180,6 +179,9 @@ html_static_path = ['_static']
|
|||||||
# Output file base name for HTML help builder.
|
# Output file base name for HTML help builder.
|
||||||
htmlhelp_basename = 'MayanEDMSdoc'
|
htmlhelp_basename = 'MayanEDMSdoc'
|
||||||
|
|
||||||
|
html_show_sourcelink = False
|
||||||
|
|
||||||
|
html_show_sphinx = False
|
||||||
|
|
||||||
# -- Options for LaTeX output --------------------------------------------------
|
# -- Options for LaTeX output --------------------------------------------------
|
||||||
|
|
||||||
@@ -225,28 +227,8 @@ latex_documents = [
|
|||||||
# One entry per manual page. List of tuples
|
# One entry per manual page. List of tuples
|
||||||
# (source start file, name, description, authors, manual section).
|
# (source start file, name, description, authors, manual section).
|
||||||
man_pages = [
|
man_pages = [
|
||||||
('index', 'mayanedms', 'Mayan EDMS Documentation',
|
('index', 'mayanedms', '{} Documentation'.format(mayan.__title__),
|
||||||
[mayan.__author__], 1)
|
[mayan.__author__], 1)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
html_theme = 'sphinx_rtd_theme'
|
||||||
# -- Custom options
|
|
||||||
import alabaster
|
|
||||||
|
|
||||||
html_theme_path = [alabaster.get_path()]
|
|
||||||
extensions.append('alabaster')
|
|
||||||
html_theme = 'alabaster'
|
|
||||||
html_sidebars = {
|
|
||||||
'**': [
|
|
||||||
'about.html', 'donate.html', 'navigation.html', 'searchbox.html',
|
|
||||||
]
|
|
||||||
}
|
|
||||||
html_theme_options = {
|
|
||||||
'description': mayan.__description__,
|
|
||||||
'github_button': False,
|
|
||||||
'travis_button': False,
|
|
||||||
'gratipay_user': 'rosarior',
|
|
||||||
'github_banner': False,
|
|
||||||
}
|
|
||||||
|
|
||||||
html_logo = '_static/logo_pyramid_only.png'
|
|
||||||
|
|||||||
@@ -1,24 +1,15 @@
|
|||||||
Welcome to Mayan EDMS!
|
Welcome to Mayan EDMS!
|
||||||
======================
|
======================
|
||||||
|
|
||||||
Mayan EDMS is a `Free Open Source`_ `Electronic Document Management System`_, coded in
|
.. image:: /_static/mayan_logo.png
|
||||||
the Python language using the Django_ web application framework and released
|
:alt: Logo is a trademark of Roberto Rosario
|
||||||
under the `Apache 2.0 License`_. It provides an electronic vault or repository for electronic documents.
|
:align: center
|
||||||
|
|
||||||
The easiest way to use Mayan EDMS is by using a Debian based Linux distribution
|
|
||||||
and install it from PyPI with the following commands:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
Mayan EDMS is a `Free Open Source`_ `Electronic Document Management System`_,
|
||||||
|
coded in the Python language using the Django_ web application framework and
|
||||||
sudo apt-get install libjpeg-dev libmagic1 libpng-dev libreoffice libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv tesseract-ocr poppler-utils -y
|
released under the `Apache 2.0 License`_. It provides an electronic vault or
|
||||||
virtualenv venv
|
repository for electronic documents.
|
||||||
source venv/bin/activate
|
|
||||||
pip install mayan-edms
|
|
||||||
mayan-edms.py initialsetup
|
|
||||||
mayan-edms.py runserver
|
|
||||||
|
|
||||||
Point your browser to 127.0.0.1:8000 and use the automatically created admin
|
|
||||||
account.
|
|
||||||
|
|
||||||
.. image:: /_static/overview.gif
|
.. image:: /_static/overview.gif
|
||||||
:alt: Overview
|
:alt: Overview
|
||||||
@@ -26,21 +17,47 @@ account.
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
:hidden:
|
:hidden:
|
||||||
|
|
||||||
Features <topics/features>
|
|
||||||
Installation <topics/installation>
|
Installation <topics/installation>
|
||||||
Deploying <topics/deploying>
|
Features <topics/features>
|
||||||
Release notes and upgrading <releases/index>
|
Release notes and upgrading <releases/index>
|
||||||
Concepts <topics/index>
|
|
||||||
|
ACLs <topics/acls>
|
||||||
|
Backups <topics/backups>
|
||||||
|
Checkouts <topics/checkouts>
|
||||||
|
Document types <topics/document_types>
|
||||||
|
File storage <topics/file_storage>
|
||||||
|
Document indexes <topics/indexes>
|
||||||
|
Document languages <topics/languages>
|
||||||
|
Document signatures <topics/signatures>
|
||||||
|
Mailing <topics/mailing>
|
||||||
|
Metadata <topics/metadata>
|
||||||
|
OCR <topics/ocr_backend>
|
||||||
|
Permissions <topics/permissions>
|
||||||
|
Settings <topics/settings>
|
||||||
|
Sources <topics/sources>
|
||||||
|
Smart links <topics/smart_links>
|
||||||
|
Tags <topics/tags>
|
||||||
|
Transformations <topics/transformations>
|
||||||
|
Upload wizard <topics/upload_wizard>
|
||||||
|
Versioning <topics/versioning>
|
||||||
|
|
||||||
|
Docker image <topics/docker>
|
||||||
|
Advanced deployment <topics/deploying>
|
||||||
|
|
||||||
Development <topics/development>
|
Development <topics/development>
|
||||||
App creation <topics/app_creation>
|
App creation <topics/app_creation>
|
||||||
Roadmap <topics/roadmap>
|
Pending work <topics/pending_work>
|
||||||
|
Code statistics <topics/code_statistics>
|
||||||
Translations <topics/translations>
|
Translations <topics/translations>
|
||||||
Contributors <topics/contributors>
|
|
||||||
Screenshots <topics/screenshots>
|
|
||||||
Licensing <topics/license>
|
Licensing <topics/license>
|
||||||
FAQ <topics/faq>
|
FAQ <topics/faq>
|
||||||
Contact <topics/contact>
|
Contact <topics/contact>
|
||||||
|
MERCs <mercs/index>
|
||||||
|
Pending work <topics/pending_work>
|
||||||
|
Individual Contributor Assignment Agreement <topics/caa_individual>
|
||||||
|
Entity Contributor Assignment Agreement <topics/caa_entity>
|
||||||
|
|
||||||
|
.. _Docker: https://www.docker.com/
|
||||||
.. _Django: http://www.djangoproject.com/
|
.. _Django: http://www.djangoproject.com/
|
||||||
.. _Free Open Source: http://en.wikipedia.org/wiki/Open_source
|
.. _Free Open Source: http://en.wikipedia.org/wiki/Open_source
|
||||||
.. _Electronic Document Management System: https://en.wikipedia.org/wiki/Document_management_system
|
.. _Electronic Document Management System: https://en.wikipedia.org/wiki/Document_management_system
|
||||||
|
|||||||
211
docs/mercs/0001-merc-process.rst
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
==============================
|
||||||
|
MERC 1: Purpose and Guidelines
|
||||||
|
==============================
|
||||||
|
|
||||||
|
:MERC: 1
|
||||||
|
:Author: Michael Price
|
||||||
|
:Status: Accepted
|
||||||
|
:Type: Process
|
||||||
|
:Created: 2018-02-17
|
||||||
|
:Last-Modified: 2018-02-17
|
||||||
|
|
||||||
|
.. contents:: Table of Contents
|
||||||
|
:depth: 3
|
||||||
|
:local:
|
||||||
|
|
||||||
|
What is a MERC?
|
||||||
|
===============
|
||||||
|
|
||||||
|
A Mayan EDMS Request For Comment document or MERC document is a design
|
||||||
|
document providing information to the Mayan EDMS community, or
|
||||||
|
describing a new feature or process for Mayan EDMS. MERCs provide
|
||||||
|
concise technical specifications of features, along with rationales.
|
||||||
|
|
||||||
|
MERC Types
|
||||||
|
==========
|
||||||
|
|
||||||
|
There are three kinds of MERCs:
|
||||||
|
|
||||||
|
1. A **Feature** MERC describes a new feature or implementation
|
||||||
|
for Mayan EDMS. Most MERCs will be Feature MERCs.
|
||||||
|
|
||||||
|
2. An **Informational** MERC describes a Mayan EDMS design issue, or
|
||||||
|
provides general guidelines or information to the Mayan EDMS community,
|
||||||
|
but does not propose a new feature. Informational MERCs do not
|
||||||
|
necessarily represent a community consensus or
|
||||||
|
recommendation, so users and implementers are free to ignore
|
||||||
|
Informational MERCs or follow their advice.
|
||||||
|
|
||||||
|
3. A **Process** MERC describes a process surrounding Mayan EDMS, or
|
||||||
|
proposes a change to (or an event in) a process. Process MERCs are
|
||||||
|
like Feature MERCs but apply to areas other than the Mayan EDMS
|
||||||
|
framework itself. They may propose an implementation, but not to
|
||||||
|
Mayan EDMS's codebase; they often require community consensus; unlike
|
||||||
|
Informational MERCs, they are more than recommendations, and users
|
||||||
|
are typically not free to ignore them. Examples include
|
||||||
|
procedures, guidelines, changes to the decision-making process, and
|
||||||
|
changes to the tools or environment used in Mayan EDMS development.
|
||||||
|
Any meta-MERC is also considered a Process MERC. (So this document
|
||||||
|
is a Process MERC).
|
||||||
|
|
||||||
|
MERC submission workflow
|
||||||
|
========================
|
||||||
|
|
||||||
|
Pre-proposal
|
||||||
|
------------
|
||||||
|
|
||||||
|
The MERC process begins with a new idea for Mayan EDMS. It is highly recommended
|
||||||
|
that a single MERC contain a single key proposal or new idea. Small enhancements
|
||||||
|
or patches usually don't need a MERC and follow Mayan EDMS's normal contribution
|
||||||
|
process.
|
||||||
|
|
||||||
|
MERCs should be focused on a single topic. If in doubt, split your MERC
|
||||||
|
into several well-focused ones.
|
||||||
|
|
||||||
|
Once the idea's been vetted, a draft MERC should be presented to the
|
||||||
|
Mayan EDMS mailing list. This gives the author a chance to flesh out the
|
||||||
|
draft MERC to make sure it's properly formatted, of high quality, and to address
|
||||||
|
initial concerns about the proposal.
|
||||||
|
|
||||||
|
The Core Developers will be responsible for accepting or rejecting the MERC proposal.
|
||||||
|
|
||||||
|
|
||||||
|
Submitting the draft
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Following the discussion on Mayan EDMS mailing list, the proposal
|
||||||
|
should be sent as a merge request to the Mayan EDMS repository. The draft must
|
||||||
|
be written in MERC style; if it isn't the merge request may be rejected until proper
|
||||||
|
formatting rules are followed.
|
||||||
|
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Finally, once a MERC has been accepted, the implementation must be completed. In
|
||||||
|
many cases some (or all) implementation will actually happen during the MERC
|
||||||
|
process: Feature MERCs will often have fairly complete implementations before
|
||||||
|
being reviewed. When the implementation is complete and incorporated
|
||||||
|
into the main source code repository, the status will be changed to
|
||||||
|
"Final".
|
||||||
|
|
||||||
|
MERC format
|
||||||
|
===========
|
||||||
|
|
||||||
|
MERCs need to follow a common format and outline; this section describes
|
||||||
|
that format.
|
||||||
|
|
||||||
|
MERCs must be written in `reStructuredText <http://docutils.sourceforge.net/rst.html>`_
|
||||||
|
(the same format as Mayan EDMS's documentation).
|
||||||
|
|
||||||
|
Each MERC should have the following parts:
|
||||||
|
|
||||||
|
#. A short descriptive title (e.g. "User document filters"), which is also reflected
|
||||||
|
in the MERC's filename (e.g. ``0002-user-document-filters.rst``).
|
||||||
|
|
||||||
|
#. A preamble -- a rST `field list <http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#field-lists>`_
|
||||||
|
containing metadata about the MERC, including the MERC number and so forth. See
|
||||||
|
`MERC Metadata`_ below for specific details.
|
||||||
|
|
||||||
|
#. Abstract -- a short (~200 word) description of the technical issue
|
||||||
|
being addressed.
|
||||||
|
|
||||||
|
#. Specification -- The technical specification should describe the syntax and
|
||||||
|
semantics of any new feature. The specification should be detailed enough to
|
||||||
|
allow implementation -- that is, developers other than the author should
|
||||||
|
(given the right experience) be able to independently implement the feature,
|
||||||
|
given only the MERC.
|
||||||
|
|
||||||
|
#. Motivation -- The motivation is critical for MERCs that want to add
|
||||||
|
substantial new features or materially refactor existing ones. It should
|
||||||
|
clearly explain why the existing solutions are inadequate to address the
|
||||||
|
problem that the MERC solves. MERC submissions without sufficient motivation
|
||||||
|
may be rejected outright.
|
||||||
|
|
||||||
|
#. Rationale -- The rationale fleshes out the specification by describing what
|
||||||
|
motivated the design and why particular design decisions were made. It
|
||||||
|
should describe alternate designs that were considered and related work.
|
||||||
|
|
||||||
|
The rationale should provide evidence of consensus within the community and
|
||||||
|
discuss important objections or concerns raised during discussion.
|
||||||
|
|
||||||
|
#. Backwards Compatibility -- All MERCs that introduce backwards
|
||||||
|
incompatibilities must include a section describing these incompatibilities
|
||||||
|
and their severity. The MERC must explain how the author proposes to deal
|
||||||
|
with these incompatibilities. MERC submissions without a sufficient backwards
|
||||||
|
compatibility treatise may be rejected outright.
|
||||||
|
|
||||||
|
#. Reference Implementation -- The reference implementation must be completed
|
||||||
|
before any MERC is given status "Final", but it need not be completed before
|
||||||
|
the MERC is accepted. While there is merit to the approach of reaching
|
||||||
|
consensus on the specification and rationale before writing code, the
|
||||||
|
principle of "rough consensus and running code" is still useful when it comes
|
||||||
|
to resolving many discussions of API details.
|
||||||
|
|
||||||
|
The final implementation must include tests and documentation, per Mayan EDMS
|
||||||
|
development guide.
|
||||||
|
|
||||||
|
|
||||||
|
MERC Metadata
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Each MERC must begin with some metadata given as an rST
|
||||||
|
`field list <http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#field-lists>`_.
|
||||||
|
The headers must contain the following fields:
|
||||||
|
|
||||||
|
``MERC``
|
||||||
|
The MERC number. In an initial merge request, this can be left out or given
|
||||||
|
as ``XXXX``; the reviewer who merges the pull request will assign the MERC
|
||||||
|
number.
|
||||||
|
``Type``
|
||||||
|
``Feature``, ``Informational``, or ``Process``
|
||||||
|
``Status``
|
||||||
|
``Draft``, ``Accepted``, ``Rejected``, ``Withdrawn``, ``Final``, or ``Superseded``
|
||||||
|
``Created``
|
||||||
|
Original creation date of the MERC (in ``yyyy-mm-dd`` format)
|
||||||
|
``Last-Modified``
|
||||||
|
Date the MERC was last modified (in ``yyyy-mm-dd`` format)
|
||||||
|
``Author``
|
||||||
|
The MERC's author(s).
|
||||||
|
``Implementation-Team``
|
||||||
|
The person/people who have committed to implementing this MERC
|
||||||
|
``Requires``
|
||||||
|
If this MERC depends on another MERC being implemented first,
|
||||||
|
this should be a link to the required MERC.
|
||||||
|
``Mayan EDMS-Version`` (optional)
|
||||||
|
For Feature MERCs, the version of Mayan EDMS (e.g. ``2.7.3``) that this
|
||||||
|
feature will be released in.
|
||||||
|
``Replaces`` and ``Superseded-By`` (optional)
|
||||||
|
These fields indicate that a MERC has been rendered obsolete. The newer MERC
|
||||||
|
must have a ``Replaces`` header containing the number of the MERC that it
|
||||||
|
rendered obsolete; the older MERC has a ``Superseded-By`` header pointing to
|
||||||
|
the newer MERC.
|
||||||
|
``Resolution`` (optional)
|
||||||
|
For MERCs that have been decided upon, this can be a link to the final
|
||||||
|
rationale for acceptance/rejection. It's also reasonable to simply update
|
||||||
|
the MERC with a "Resolution" section, in which case this header can be left
|
||||||
|
out.
|
||||||
|
|
||||||
|
Auxiliary Files
|
||||||
|
---------------
|
||||||
|
|
||||||
|
MERCs may include auxiliary files such as diagrams. Such files must be named
|
||||||
|
``XXXX-descriptive-title.ext``, where "XXXX" is the MERC number,
|
||||||
|
"descriptive-title" is a short slug indicating what the file contains, and
|
||||||
|
"ext" is replaced by the actual file extension (e.g. "png").
|
||||||
|
|
||||||
|
Reporting MERC Bugs, or Submitting MERC Updates
|
||||||
|
===============================================
|
||||||
|
|
||||||
|
How you report a bug, or submit a MERC update depends on several factors, such as
|
||||||
|
the maturity of the MERC, the preferences of the MERC author, and the nature of
|
||||||
|
your comments. For the early draft stages of the MERC, it's probably best to
|
||||||
|
send your comments and changes directly to the MERC author. For more mature, or
|
||||||
|
finished MERCs you can submit corrections as repository issues or merge requests
|
||||||
|
against the git repository.
|
||||||
|
|
||||||
|
When in doubt about where to send your changes, please check first with the MERC
|
||||||
|
author and/or a core developer.
|
||||||
|
|
||||||
|
MERC authors with git push privileges for the MERC repository can update the MERCs
|
||||||
|
themselves.
|
||||||
82
docs/mercs/0002-test-writing.rst
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
=====================
|
||||||
|
MERC 2: Test writing
|
||||||
|
=====================
|
||||||
|
|
||||||
|
:MERC: 2
|
||||||
|
:Author: Michael Price
|
||||||
|
:Status: Accepted
|
||||||
|
:Type: Feature
|
||||||
|
:Created: 2018-02-22
|
||||||
|
:Last-Modified: 2018-04-01
|
||||||
|
|
||||||
|
.. contents:: Table of Contents
|
||||||
|
:depth: 3
|
||||||
|
:local:
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
========
|
||||||
|
|
||||||
|
This MERC proposes a standard methodology for writing tests for Mayan EDMS.
|
||||||
|
|
||||||
|
Motivation
|
||||||
|
==========
|
||||||
|
|
||||||
|
Having a standard methodology for writing tests has the following advantages:
|
||||||
|
|
||||||
|
1. Scaffolding can be reduced by providing the most frequently used
|
||||||
|
paradigms as methods or helper functions.
|
||||||
|
2. Reduce the probabilities of errors slipping through poorly written tests.
|
||||||
|
|
||||||
|
|
||||||
|
Specification
|
||||||
|
=============
|
||||||
|
|
||||||
|
1. Tests must test each view in at least two ways:
|
||||||
|
|
||||||
|
A. Object creations views must be tested with and without permissions.
|
||||||
|
B. Object detail, list and delete views must be tested with and without
|
||||||
|
object access.
|
||||||
|
|
||||||
|
2. Tests must assert the status code of the response even
|
||||||
|
when the expected status is HTTP 200.
|
||||||
|
3. The actual request performed must be enclosed in a private methods
|
||||||
|
so that the fail and pass tests use the same HTTP request.
|
||||||
|
4. Test must verify that changes happened and didn't happened in the
|
||||||
|
database regardless of the return code. Even is an edit view returns
|
||||||
|
and error 4XX (404-Not found, 403-Forbidden, etc), the test must
|
||||||
|
ensure that the data was not indeed modified.
|
||||||
|
5. All tests must use the test user created by the BaseAPITestCase and not
|
||||||
|
an super user unless absolutely required by the test.
|
||||||
|
6. Each test must test just one thing.
|
||||||
|
7. If a test object needs to be created before the execution of a request
|
||||||
|
this object must be created by a private method.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
def _request_tag_create(self):
|
||||||
|
return self.post(
|
||||||
|
viewname='rest_api:tag-list', data={
|
||||||
|
'label': TEST_TAG_LABEL, 'color': TEST_TAG_COLOR
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_tag_create_view_no_permission(self):
|
||||||
|
response = self._request_tag_create()
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||||
|
self.assertEqual(Tag.objects.count(), 0)
|
||||||
|
|
||||||
|
def test_tag_create_view_with_permission(self):
|
||||||
|
self.grant_permission(permission=permission_tag_create)
|
||||||
|
response = self._request_tag_create()
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
|
|
||||||
|
tag = Tag.objects.first()
|
||||||
|
self.assertEqual(response.data['id'], tag.pk)
|
||||||
|
self.assertEqual(response.data['label'], TEST_TAG_LABEL)
|
||||||
|
self.assertEqual(response.data['color'], TEST_TAG_COLOR)
|
||||||
|
|
||||||
|
self.assertEqual(Tag.objects.count(), 1)
|
||||||
|
self.assertEqual(tag.label, TEST_TAG_LABEL)
|
||||||
|
self.assertEqual(tag.color, TEST_TAG_COLOR)
|
||||||
74
docs/mercs/0003-using-javascript-libraries.rst
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
==================================
|
||||||
|
MERC 3: Using javascript libraries
|
||||||
|
==================================
|
||||||
|
|
||||||
|
:MERC: 3
|
||||||
|
:Author: Eric Riggs
|
||||||
|
:Status: Accepted
|
||||||
|
:Type: Feature
|
||||||
|
:Created: 2018-03-08
|
||||||
|
:Last-Modified: 2018-06-04
|
||||||
|
|
||||||
|
.. contents:: Table of Contents
|
||||||
|
:depth: 3
|
||||||
|
:local:
|
||||||
|
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
========
|
||||||
|
|
||||||
|
This MERC proposes a standard way to use javascript libraries.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
=========
|
||||||
|
|
||||||
|
Mayan EDMS uses several javascript libraries for user interface features.
|
||||||
|
Currently, the libraries are not installed using any javascript package
|
||||||
|
manager but copied uncompressed. Installing the libraries in this manner
|
||||||
|
carries some disadvantages.
|
||||||
|
|
||||||
|
Motivation
|
||||||
|
==========
|
||||||
|
|
||||||
|
The inclusion of the libraries in source form is required by many licenses
|
||||||
|
if the library is not installed by a package manager in distributable form.
|
||||||
|
There are several disavantages with the current approach:
|
||||||
|
|
||||||
|
1. Having the library in source form means that the entire weight of the
|
||||||
|
library's size carries over the overall size of the Mayan EDMS distribution files.
|
||||||
|
The justification for not doing this is the same as with the Python libraries
|
||||||
|
which are not copied with the code but downloaded upon installation.
|
||||||
|
2. Upgrading the libraries means manually examining the version of the
|
||||||
|
installed in the project and manually searching, downloading, compressing
|
||||||
|
and adding the files to the repository.
|
||||||
|
3. The source form of the libraries includes normal and minified versions
|
||||||
|
of the code and the accompaning CSS files. There is no define preference
|
||||||
|
and through the project both versions of the libraries are loaded
|
||||||
|
interchangeably. Using a packager manager the minified version would be
|
||||||
|
used of a pipeline to minify the installed libraries should be added.
|
||||||
|
|
||||||
|
Backwards Compatibility
|
||||||
|
=======================
|
||||||
|
|
||||||
|
There are no backwards compatibility issues with this proposal.
|
||||||
|
|
||||||
|
|
||||||
|
Specification
|
||||||
|
=============
|
||||||
|
|
||||||
|
Changes needed:
|
||||||
|
|
||||||
|
1. Python based javascript package manager. Alternatively a Python wrapper
|
||||||
|
for a javascript package manager could be used.
|
||||||
|
2. Package manifest for the javascript libraries used.
|
||||||
|
3. Installation pipeline to install the javascript libraries during the
|
||||||
|
installation and setup of the project.
|
||||||
|
|
||||||
|
References:
|
||||||
|
|
||||||
|
- https://github.com/JDeuce/powser
|
||||||
|
- https://github.com/javrasya/version-manager
|
||||||
|
- https://github.com/inveniosoftware-attic/setuptools-bower
|
||||||
|
- https://pypi.python.org/pypi/django-bower-cache/0.5.0
|
||||||
|
- http://django-pipeline.readthedocs.io/en/latest/index.html
|
||||||
|
- https://github.com/nvbn/django-bower
|
||||||
51
docs/mercs/index.rst
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
=====
|
||||||
|
MECRs
|
||||||
|
=====
|
||||||
|
|
||||||
|
Mayan EDMS Request For Comment documents index.
|
||||||
|
|
||||||
|
.. contents:: Table of Contents
|
||||||
|
:depth: 2
|
||||||
|
:local:
|
||||||
|
|
||||||
|
Status
|
||||||
|
======
|
||||||
|
|
||||||
|
Accepted
|
||||||
|
--------
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
0001-merc-process
|
||||||
|
0002-test-writing
|
||||||
|
0003-using-javascript-libraries
|
||||||
|
|
||||||
|
Draft
|
||||||
|
-----
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
merging-roles-and-groups
|
||||||
|
support-forum
|
||||||
|
|
||||||
|
|
||||||
|
Type
|
||||||
|
====
|
||||||
|
|
||||||
|
Process
|
||||||
|
-------
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
0001-merc-process
|
||||||
|
|
||||||
|
|
||||||
|
Feature
|
||||||
|
-------
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
0002-test-writing
|
||||||
|
0003-using-javascript-libraries
|
||||||
67
docs/mercs/merging-roles-and-groups.rst
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
===============================
|
||||||
|
MERC XX: Unify Roles and Groups
|
||||||
|
===============================
|
||||||
|
|
||||||
|
:MERC: XX
|
||||||
|
:Author: Michael Price
|
||||||
|
:Status: Draft
|
||||||
|
:Type: Feature
|
||||||
|
:Created: 2018-02-27
|
||||||
|
:Last-Modified: 2018-02-27
|
||||||
|
|
||||||
|
.. contents:: Table of Contents
|
||||||
|
:depth: 3
|
||||||
|
:local:
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
========
|
||||||
|
|
||||||
|
This MERC proposes the merging of the Roles and Group models.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
=========
|
||||||
|
|
||||||
|
Mayan EDMS uses Groups as units of users that are meant to mirror an
|
||||||
|
organization's actual user hierarchy. Roles are used as permission units.
|
||||||
|
|
||||||
|
Separation of concerns is a concept Mayan EDMS executes very successfully
|
||||||
|
but when it comes to the Roles/Groups relationship that execution causes
|
||||||
|
overheads without providing advantages in the day to day operations.
|
||||||
|
|
||||||
|
In reality there is almost a 1 to 1 correlation between Roles and Groups.
|
||||||
|
Other permissions systems already use Groups as permission units without
|
||||||
|
disavantages. An example of this is LDAP and its commercial counterpart
|
||||||
|
Active Directory.
|
||||||
|
|
||||||
|
Motivation
|
||||||
|
==========
|
||||||
|
|
||||||
|
Merging the Role and Group model will reduce some complexity when initially
|
||||||
|
setting up Mayan EDMS. The merge allows removing a Mayan EDMS model in
|
||||||
|
favor of using a native Django model for the same task.
|
||||||
|
|
||||||
|
Merging the Role and Group models will also provide a speed boost in every
|
||||||
|
permission check and queryset filtering. These checks are nested in nature.
|
||||||
|
Since the access checks are performed for every view and for every link
|
||||||
|
in the view the performace gain should be substantial.
|
||||||
|
|
||||||
|
Backwards Compatibility
|
||||||
|
=======================
|
||||||
|
|
||||||
|
To avoid loss of role configuration a data migration will be needed to
|
||||||
|
convert existing roles to groups.
|
||||||
|
|
||||||
|
|
||||||
|
Specification
|
||||||
|
=============
|
||||||
|
|
||||||
|
Changes needed:
|
||||||
|
|
||||||
|
1. Data migration to convert existing roles to groups.
|
||||||
|
2. Prepend or append an identifier to the migrated roles.
|
||||||
|
3. Intermediate model to map permissions to a group. This will substitute
|
||||||
|
the Role model's permissions many to many field.
|
||||||
|
4. Update the ``AccessControlList`` models roles field to point to the group
|
||||||
|
models.
|
||||||
|
5. Update the role checks in the ``check_access`` and ``filter_by_access``
|
||||||
|
``AccessControlList`` model manager methods.
|
||||||
48
docs/mercs/support-forum.rst
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
======================
|
||||||
|
MERC XX: Support forum
|
||||||
|
======================
|
||||||
|
|
||||||
|
:MERC: XX
|
||||||
|
:Author: Michael Price
|
||||||
|
:Status: Draft
|
||||||
|
:Type: Process
|
||||||
|
:Created: 2018-02-27
|
||||||
|
:Last-Modified: 2018-02-27
|
||||||
|
|
||||||
|
.. contents:: Table of Contents
|
||||||
|
:depth: 3
|
||||||
|
:local:
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
========
|
||||||
|
|
||||||
|
This MERC proposes the move of the official community meeting place
|
||||||
|
from Google Group to a self hosted forum platform.
|
||||||
|
|
||||||
|
Motivation
|
||||||
|
==========
|
||||||
|
|
||||||
|
Google Groups is not a proper forum platform and as such is lacking many
|
||||||
|
features that would increase participation. Google Groups has not had any
|
||||||
|
significant update in years and the age of the platform is visible. There
|
||||||
|
are no official mobile apps for Google Groups, no responsible template
|
||||||
|
is not provided. There are not integration options. These factors
|
||||||
|
contribute to the problems of knowledge dilution and one time
|
||||||
|
participation being experienced in the Mayan EDMS community.
|
||||||
|
|
||||||
|
Other concerns for moving the community to a self hosted forum solution
|
||||||
|
are that Google Groups presents a single point of failure by relying on
|
||||||
|
a free product hosted by a commercial company with no continuation plan
|
||||||
|
for the product. Google Groups doesn't provide archiving features and
|
||||||
|
the current archive solution relies on other third party services, one
|
||||||
|
of which (GMANE) has stopped working. Recent user privacy and censorship
|
||||||
|
issues regarding Google, reinforce the need for a self hosted solution.
|
||||||
|
|
||||||
|
|
||||||
|
Specification
|
||||||
|
=============
|
||||||
|
|
||||||
|
The proposed solution is to use the bbPress (https://wordpress.org/plugins/bbpress/)
|
||||||
|
forum plugin for Wordpress. After 14 years, Wordpress dominance continues
|
||||||
|
unrivaled. The wealth of material, themes, templates and professional avaialbe make
|
||||||
|
it a safe option.
|
||||||
75
docs/releases/2.1.10.rst
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
================================
|
||||||
|
Mayan EDMS v2.1.10 release notes
|
||||||
|
================================
|
||||||
|
|
||||||
|
Released: February 13, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a micro release equal to the previews version from the user's point of view.
|
||||||
|
The version number was increase to workaround some issues with the Python
|
||||||
|
Package Index not allowing re-uploads.
|
||||||
|
|
||||||
|
Changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- Update Makefile to use twine for releases.
|
||||||
|
- Add Makefile target to make test releases.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
94
docs/releases/2.1.11.rst
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
================================
|
||||||
|
Mayan EDMS v2.1.11 release notes
|
||||||
|
================================
|
||||||
|
|
||||||
|
Released: March 14, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a bug-fix release and all users are encouraged to upgrade. The focus
|
||||||
|
of this micro release was REST API improvement.
|
||||||
|
|
||||||
|
Changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- Added a quick rename serializer to the document type API serializer.
|
||||||
|
- Added per document type, workflow list API view. The URL for this endpoint is
|
||||||
|
GET /api/document_states/document_type/{pk}/workflows/
|
||||||
|
- Added Developer Certificate of Origin. Mayan EDMS was adopted a version 1.1 of
|
||||||
|
the Linux Foundation Developer Certificate of Origin. All commits must be
|
||||||
|
signed (`git commit -s`) in order to be merged.
|
||||||
|
- Added the detail url of a permission in the permission serializer.
|
||||||
|
- Added endpoints for the ACL app API.
|
||||||
|
- Implemented document workflows transition ACLs. GitLab issue #321.
|
||||||
|
- Add document comments API endpoints. GitHub issue #249.
|
||||||
|
- Add support for overriding the Celery class. The setting is named
|
||||||
|
MAYAN_CELERY_CLASS and expects a dotted python path to the class to use.
|
||||||
|
- Changed the document upload view in source app to not use the HTTP referer
|
||||||
|
URL blindly, but instead recompose the URL using known view name. Needed
|
||||||
|
when integrating Mayan EDMS into other app via using iframes.
|
||||||
|
- Addes size field to the document version serializer.
|
||||||
|
- Removed the serializer from the deleted document restore API endpoint
|
||||||
|
it doesn't need a serializer being just an action POST endpoint.
|
||||||
|
- Added support for adding or editing document types to smart links via the
|
||||||
|
API.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `Github issue #249 <https://github.com/mayan-edms/mayan-edms/issues/249>`_ Add document comments API [$50 US]
|
||||||
|
* `GitLab issue #321 <https://gitlab.com/mayan-edms/mayan-edms/issues/321>`_ Transition ACLS
|
||||||
|
* `GitLab issue #357 <https://gitlab.com/mayan-edms/mayan-edms/issues/357>`_ It should be possible to retrieve all workflows for a given DocumentType from the API
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
87
docs/releases/2.1.3.rst
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.1.3 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: June 29, 2016
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a bug-fix release and all users are encouraged to upgrade.
|
||||||
|
|
||||||
|
Temporary files cleanup
|
||||||
|
-----------------------
|
||||||
|
When uploading PDF files that had been OCRed by previous software, the text
|
||||||
|
parser backend that uses Poppler, would leave behind some temporary files in
|
||||||
|
the /tmp folder. The issue has been resolved and from the fix a test mixin
|
||||||
|
system check has been devised that will identify places in the codebase with
|
||||||
|
similar behaviors, reducing the recurrence of similar issues in the future.
|
||||||
|
|
||||||
|
Other changes
|
||||||
|
-------------
|
||||||
|
- Add help message when initialsetup migration phase fails. Relates to GitLab issue #296
|
||||||
|
- Start using self.setdout instead of print as per documentation.
|
||||||
|
- Fix GitLab issue #295, "When editing a user the top bar jumps to the name of the user".
|
||||||
|
- Normalize handling of temporary file and directory creation.
|
||||||
|
- Explicitly check for residual temporary files in tests.
|
||||||
|
- Add missing temporary file cleanup for office documents.
|
||||||
|
- Fix file descriptor leak in the document signature download test.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitLab issue #295 <https://gitlab.com/mayan-edms/mayan-edms/issues/295>`_ When editing a user the top bar jumps to the name of the user
|
||||||
|
* `GitLab issue #309 <https://gitlab.com/mayan-edms/mayan-edms/issues/309>`_ Temp files quickly filling-up my /tmp (1GB tmpfs)
|
||||||
|
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
81
docs/releases/2.1.4.rst
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.1.4 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: October 28, 2016
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a bug-fix release and all users are encouraged to upgrade.
|
||||||
|
|
||||||
|
Other changes
|
||||||
|
-------------
|
||||||
|
- Fix statistics namespace list display view
|
||||||
|
- Fix events list display view
|
||||||
|
- Update required Django version to 1.8.15
|
||||||
|
- Update required python-gnupg version to 0.3.9
|
||||||
|
- Improved orphaned temporary files test mixin
|
||||||
|
- Re-enable and improve GitLab CI MySQL testing
|
||||||
|
- Improved GPG handling
|
||||||
|
- New GPG backend system
|
||||||
|
- Minor documentation updates
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitLab issue #311 <https://gitlab.com/mayan-edms/mayan-edms/issues/311>`_ acl page return ContentType:Document
|
||||||
|
* `GitLab issue #316 <https://gitlab.com/mayan-edms/mayan-edms/issues/316>`_ Error when trying to access the statistics
|
||||||
|
* `GitLab issue #324 <https://gitlab.com/mayan-edms/mayan-edms/issues/324>`_ Document signature tests fail in Ubuntu 16.10
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
87
docs/releases/2.1.5.rst
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.1.5 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: November 8, 2016
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a bug-fix release and all users are encouraged to upgrade.
|
||||||
|
|
||||||
|
Other changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- Backport resize transformation math operation fix (GitLab #319).
|
||||||
|
- Update Pillow to 3.1.2
|
||||||
|
|
||||||
|
- https://pillow.readthedocs.io/en/3.4.x/releasenotes/3.1.1.html
|
||||||
|
- https://pillow.readthedocs.io/en/3.4.x/releasenotes/3.1.2.html
|
||||||
|
|
||||||
|
- Backport zoom performance improvement (GitLab #334).
|
||||||
|
- Backport trash can navigation link resolution fix (GitLab #331).
|
||||||
|
- Improve documentation regarding the use of GPG version 1 (GitLab #333).
|
||||||
|
- Fix ACL create view HTML response type. (GitLab #335).
|
||||||
|
- Expland staging folder and watch folder explanation.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitLab issue #319 <https://gitlab.com/mayan-edms/mayan-edms/issues/319>`_ TransformationResize issue with very "long" image
|
||||||
|
* `GitLab issue #331 <https://gitlab.com/mayan-edms/mayan-edms/issues/331>`_ Trash List View: Items actions should be limited
|
||||||
|
* `GitLab issue #333 <https://gitlab.com/mayan-edms/mayan-edms/issues/333>`_ "Unable to run gpg - it may not be available."
|
||||||
|
* `GitLab issue #334 <https://gitlab.com/mayan-edms/mayan-edms/issues/334>`_ Perfomance improvment: prevent unnecessary image.resize in TransformationZoom
|
||||||
|
* `GitLab issue #335 <https://gitlab.com/mayan-edms/mayan-edms/issues/335>`_ Wrong HTML Content-Type in ACL->NEW
|
||||||
|
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
73
docs/releases/2.1.6.rst
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.1.6 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: November 23, 2016
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a bug-fix release and all users are encouraged to upgrade.
|
||||||
|
|
||||||
|
Changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- Fix variable name typo in the rotation transformation class.
|
||||||
|
- Update translations
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
102
docs/releases/2.1.7.rst
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.1.7 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: February 2, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a bug-fix release and all users are encouraged to upgrade. The focus
|
||||||
|
of this micro release was REST API improvement.
|
||||||
|
|
||||||
|
Changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- Improved user management API endpoints (initial work by @lokeshmanmode):
|
||||||
|
|
||||||
|
- Improved user creation API endpoint to allow specifying the group
|
||||||
|
membership.
|
||||||
|
- Improved user editing API endpoint to allow specifying the group
|
||||||
|
membership.
|
||||||
|
|
||||||
|
- Improved permissions API endpoints (initial work by @lokeshmanmode):
|
||||||
|
|
||||||
|
- Add permission list API endpoint. This API endpoint lists all possible
|
||||||
|
permissions in the system.
|
||||||
|
- Improved role creation API endpoint to allow specifying the role's group
|
||||||
|
membership and role's permissions.
|
||||||
|
- Improved role editing API endpoint to allow specifying the role's group
|
||||||
|
membership and role's permissions.
|
||||||
|
|
||||||
|
- Improvements in the API tests of a few apps.
|
||||||
|
- Add content type list API view to the common app. Content type is required
|
||||||
|
when querying the events of an object, this view show list of content types
|
||||||
|
available.
|
||||||
|
- Add event type list api view. This API view shows all the possible events
|
||||||
|
that are registered in the system.
|
||||||
|
- Add event list API view. This view shows all the events that have taken
|
||||||
|
place in the system.
|
||||||
|
- Add object event list API view. This view show all the events for a specific
|
||||||
|
object (document, etc). The content type of the object whose events are being
|
||||||
|
requested must be specified. The list of available content types is provided
|
||||||
|
now by the common app API.
|
||||||
|
- The parser and validation fields of the metadata type model have been enable
|
||||||
|
in the metadata type API serializer.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
83
docs/releases/2.1.8.rst
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.1.8 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: February 12, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a bug-fix release and all users are encouraged to upgrade. The focus
|
||||||
|
of this micro release was REST API improvement.
|
||||||
|
|
||||||
|
Changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- Fixes in the trashed document API endpoints.
|
||||||
|
- Improved tags API PUT and PATCH endpoints.
|
||||||
|
- Bulk document adding when creating and editing tags.
|
||||||
|
- The version of django-mptt is preserved in case mayan-cabinets is installed.
|
||||||
|
- Add Django GPG API endpoints for singing keys.
|
||||||
|
- Add API endpoints for the document states app.
|
||||||
|
- Add API endpoints for the messsage of the day (MOTD) app.
|
||||||
|
- Add Smart link API endpoints.
|
||||||
|
- Add writable versions of the Document and Document Type serializers (GitLab issues #348 and #349).
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitLab issue #310 <https://gitlab.com/mayan-edms/mayan-edms/issues/310>`_ Metadata's lookup with chinese messages when new document
|
||||||
|
* `GitLab issue #348 <https://gitlab.com/mayan-edms/mayan-edms/issues/348>`_ REST API: Document version comments are not getting updated
|
||||||
|
* `GitLab issue #349 <https://gitlab.com/mayan-edms/mayan-edms/issues/349>`_ REST API: Document Label, Description are not able to update
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
74
docs/releases/2.1.9.rst
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.1.9 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: February 13, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a micro release equal to the previews version from the user's point of view.
|
||||||
|
The version number was increase to workaround some issues with the Python
|
||||||
|
Package Index not allowing re-uploads.
|
||||||
|
|
||||||
|
Changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- Update make file to Workaround long standing pypa wheel bug #99
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
258
docs/releases/2.2.rst
Normal file
@@ -0,0 +1,258 @@
|
|||||||
|
=============================
|
||||||
|
Mayan EDMS v2.2 release notes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Released: April 26, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
API changes
|
||||||
|
-----------
|
||||||
|
Refactor of the metadata API URLs to use the resource/sub resource paradigm.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
/api/metadata/metadata_types/
|
||||||
|
/api/metadata/metadata_types/{pk}/
|
||||||
|
/api/metadata/document/metadata/{pk}/
|
||||||
|
/api/metadata/document/{pk}/metadata/
|
||||||
|
/api/metadata/document_type/{document_type_pk}/metadata_types/optional/
|
||||||
|
/api/metadata/document_type/{document_type_pk}/metadata_types/required/
|
||||||
|
|
||||||
|
After:
|
||||||
|
|
||||||
|
/api/metadata/metadata_types/
|
||||||
|
/api/metadata/metadata_types/{metadata_type_pk}/
|
||||||
|
/api/metadata/document_types/{document_type_pk}/metadata_types/
|
||||||
|
/api/metadata/document_types/{document_type_pk}/metadata_types/{metadata_type_pk}/
|
||||||
|
/api/metadata/documents/{document_pk}/metadata/
|
||||||
|
/api/metadata/documents/{document_pk}/metadata/{metadata_pk}/
|
||||||
|
|
||||||
|
|
||||||
|
Document API URLs updated to use the resource/sub resource paradigm.
|
||||||
|
Before:
|
||||||
|
|
||||||
|
/api/documents/document_version<pk>
|
||||||
|
/api/documents/document_pages<pk>
|
||||||
|
|
||||||
|
After:
|
||||||
|
/api/documents/<pk>/version/<version_pk>
|
||||||
|
/api/documents/<pk>/version/<version_pk>/pages/<page_pk>
|
||||||
|
|
||||||
|
Fields that reference a resource by URL now have the suffix '_url' to differentiate
|
||||||
|
then from fields include the resource.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
'document': '/api/documents/10'
|
||||||
|
|
||||||
|
After:
|
||||||
|
|
||||||
|
'document_url': '/api/documents/10'
|
||||||
|
|
||||||
|
Removal of the document version revert API endpoint. To revert a document to a
|
||||||
|
previous version using the API, use the DELETE verb to delete the most recent
|
||||||
|
document version to be discarded.
|
||||||
|
|
||||||
|
Pages data is no longer included as part of the version data. Instead a link to
|
||||||
|
the document version's pages has been added by the name 'pages_url'. This
|
||||||
|
resolved to '/api/documents/<pk>/pages/<page_pk>/pages'.
|
||||||
|
|
||||||
|
- New API endpoints (initial work by @lokeshmanmode):
|
||||||
|
|
||||||
|
- API endpoint to change an user's groups subscription.
|
||||||
|
- API endpoint that list all available permissions types.
|
||||||
|
- API endpoint to view or change a role's groups.
|
||||||
|
- API endpoint to view or change a role's permissions.
|
||||||
|
|
||||||
|
Code cleanups
|
||||||
|
-------------
|
||||||
|
As with every release time was dedicated to improve the organization, size, and
|
||||||
|
readability of code. To this end the licenses of each app were moved to their
|
||||||
|
own module in every app, called licenses.py. As part of the code cleanup the
|
||||||
|
seldom used app called 'installation' which tracked runtime Python packages
|
||||||
|
installed alongside Mayan EDMS for debugging purposes has been removed. The
|
||||||
|
dependency on django-filetransfer has been removed by using
|
||||||
|
django-downloadviews which allows the creation of class based download views.
|
||||||
|
|
||||||
|
Performance
|
||||||
|
-----------
|
||||||
|
The document language list has been moved from the document model to the
|
||||||
|
document form. This change speeds up loading time, document properties views
|
||||||
|
and API documentation views. This version includes the new image caching
|
||||||
|
pipeline which stores transformed (rotated, scaled, etc) versions of the
|
||||||
|
document's images resulting in an overall display loading speed up. The fonts
|
||||||
|
used are now loaded from Mayan EDMS itself and not from the web. This change
|
||||||
|
also allow Mayan EDMS to work in a completely off-line manner.
|
||||||
|
|
||||||
|
Searching
|
||||||
|
---------
|
||||||
|
Support for searching pages as well as documents has been added. This
|
||||||
|
functionality has been exposed in the API too.
|
||||||
|
|
||||||
|
Security
|
||||||
|
--------
|
||||||
|
This release enables the password validation for the user password validation
|
||||||
|
support provided by Django. This change allows administrator to set password
|
||||||
|
policies limiting the minimum amount of characters needed for example. For
|
||||||
|
more information on how to configure the password validation feature refer
|
||||||
|
to Django's documentation at: https://docs.djangoproject.com/en/1.11/topics/auth/passwords/#enabling-password-validation
|
||||||
|
|
||||||
|
Sources
|
||||||
|
-------
|
||||||
|
To help test the interval sources (POP3 Email, IMAP Email, Watch folders) a
|
||||||
|
"Check now" button was added that allows users to trigger the source's
|
||||||
|
document fetching code instantly. Previously users had to wait until the next
|
||||||
|
scheduled interval to verify if their source's settings were correct.
|
||||||
|
|
||||||
|
Testing
|
||||||
|
-------
|
||||||
|
The testing process has been simplified by adding a new option '--mayan-apps'
|
||||||
|
to the test runner that automatically tests all Mayan EDMS apps that report to
|
||||||
|
include tests. The app flag that indicates when an app has test was changed
|
||||||
|
from 'test' to the more explicit 'has_test'. The packaging manifest now
|
||||||
|
includes test files, this means that tests can now be executed in production.
|
||||||
|
The total number of tests was raised to 359 and the total coverage increased
|
||||||
|
to 81%.
|
||||||
|
|
||||||
|
A custom test runner replacing the previous custom management command
|
||||||
|
called `runtests`. Testing for orphaned temporary files and orphaned file
|
||||||
|
handles is now optional and controlled by the COMMON_TEST_FILE_HANDLES and
|
||||||
|
COMMON_TEST_FILE_HANDLES settings.
|
||||||
|
|
||||||
|
User interface
|
||||||
|
--------------
|
||||||
|
To avoid warping on long full names or usernames, the user's full name or
|
||||||
|
username is no longer displayed in the main menu. Instead the word "Profile"
|
||||||
|
is displayed and the users's full name or username is displayed when the
|
||||||
|
"Profile" icon is clicked. Drop down menus support has been added and enabled
|
||||||
|
for several apps like documents, folders, and tags. This change make navigation
|
||||||
|
much faster and required less mouse travel.
|
||||||
|
|
||||||
|
Support was added for a dashboard widgets and several default widgets are
|
||||||
|
included and enabled.
|
||||||
|
|
||||||
|
A view to clone a document page transformation to other pages has been added.
|
||||||
|
A document page transformation navigation bug has been fixed. To aid visual
|
||||||
|
lookup, tags are now alphabetically ordered by label.
|
||||||
|
|
||||||
|
A new workflow view that lists documents currently executing a workflow and
|
||||||
|
documents by their specific current workflow state has been added to the
|
||||||
|
main menu.
|
||||||
|
|
||||||
|
Other changes
|
||||||
|
-------------
|
||||||
|
- Cabinets app is now integrated as a core app.
|
||||||
|
- Now that the Cabinets app is included, the Folders app has been disabled
|
||||||
|
by default. To enable the Folders apps add the following line to your
|
||||||
|
settings/local.py file::
|
||||||
|
|
||||||
|
INSTALLED_APPS += ('folders',)
|
||||||
|
|
||||||
|
- Fix height calculation in resize transformation.
|
||||||
|
- Improve upgrade instructions.
|
||||||
|
- Update project to work with Django 1.10.
|
||||||
|
- Add support for attaching multiple tags to single or multiple documents.
|
||||||
|
- Refactor the workflow for removing tags from single and multiple documents.
|
||||||
|
- Move new version creation blocking from the documents app to the checkouts app.
|
||||||
|
- DEBUG now defaults to False.
|
||||||
|
- Production settings don't override the DEBUG variable. DEBUG can be set to True
|
||||||
|
on production install to debug errors live.
|
||||||
|
- Refactor add document to folder view to allow adding a documents to multiple folders at the same time.
|
||||||
|
- Refactor the remove document from folder view to allow removing documents from multiple folders at the same time.
|
||||||
|
- Refactor the document mailing views and add support for sending multiple documents via email at the same time.
|
||||||
|
- Refactor the document metadata views and add support for adding multiple metadata types to a document at the same time.
|
||||||
|
- Addition of a new OCR backend using PyOCR. This backend tries first to do OCR
|
||||||
|
using libtesseract. If libtesseract is not available the backend defaults to
|
||||||
|
calling the Tesseract executable.
|
||||||
|
- Make the lock_manager.backends.file_lock.FileLock the new default locking backend.
|
||||||
|
- New transformations added:
|
||||||
|
|
||||||
|
- Rotate 90 degrees
|
||||||
|
- Rotate 180 degrees
|
||||||
|
- Rotate 270 degrees
|
||||||
|
- Mirror (horizontal)
|
||||||
|
- Flip (vertical)
|
||||||
|
- Gaussian blur
|
||||||
|
- Unsharp masking
|
||||||
|
|
||||||
|
- Add tool to launch all workflows. GitLab issue #355
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
- Removal of the OCR_TESSERACT_PATH configuration setting.
|
||||||
|
- Removal of the Tesseract OCR backend. Replaced with a PyOCR backend.
|
||||||
|
- Remove usage of pytesseract Python library.
|
||||||
|
- Installation app.
|
||||||
|
- Recent searches feature.
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
If installed via PIP
|
||||||
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
If installed using Git
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Manually upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Remove deprecated requirements::
|
||||||
|
|
||||||
|
$ pip uninstall -y -r removals.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitLab issue #185 <https://gitlab.com/mayan-edms/mayan-edms/issues/185>`_ Add support for nested menus
|
||||||
|
* `GitLab issue #285 <https://gitlab.com/mayan-edms/mayan-edms/issues/285>`_ Dashboard widgets
|
||||||
|
* `GitLab issue #294 <https://gitlab.com/mayan-edms/mayan-edms/issues/294>`_ Move new version creation blocking from the documents app to the checkouts app
|
||||||
|
* `GitLab issue #301 <https://gitlab.com/mayan-edms/mayan-edms/issues/301>`_ Remove the installation app
|
||||||
|
* `GitLab issue #303 <https://gitlab.com/mayan-edms/mayan-edms/issues/303>`_ Update urlpatterns in urls.py files to be a list of django.conf.urls.url() instances instead.
|
||||||
|
* `GitLab issue #304 <https://gitlab.com/mayan-edms/mayan-edms/issues/304>`_ Remove string view arguments of url() in urls.py files.
|
||||||
|
* `GitLab issue #307 <https://gitlab.com/mayan-edms/mayan-edms/issues/307>`_ Enter multiple Tags at once
|
||||||
|
* `GitLab issue #310 <https://gitlab.com/mayan-edms/mayan-edms/issues/310>`_ Metadata's lookup with chinese messages when new document
|
||||||
|
* `GitLab issue #311 <https://gitlab.com/mayan-edms/mayan-edms/issues/311>`_ acl page return ContentType:Document
|
||||||
|
* `GitLab issue #319 <https://gitlab.com/mayan-edms/mayan-edms/issues/319>`_ TransformationResize issue with very "long" image
|
||||||
|
* `GitLab issue #328 <https://gitlab.com/mayan-edms/mayan-edms/issues/328>`_ Upgrade Warning/Error during performupgrade (v2.1.3 to v2.1.4)
|
||||||
|
* `GitLab issue #342 <https://gitlab.com/mayan-edms/mayan-edms/issues/342>`_ Tags should be of unordered / unsorted data type
|
||||||
|
* `GitLab issue #343 <https://gitlab.com/mayan-edms/mayan-edms/issues/343>`_ Bootstrap's dependency on fonts.googleapis.com causes Mayan EDMS web interface load slowly if public internet is unreachable
|
||||||
|
* `GitLab issue #355 <https://gitlab.com/mayan-edms/mayan-edms/issues/355>`_ Workflow changes only on new added documents
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
101
docs/releases/2.3.rst
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
=============================
|
||||||
|
Mayan EDMS v2.3 release notes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Released: June 08, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a bug-fix and minor feature release and all users are encouraged to
|
||||||
|
upgrade.
|
||||||
|
|
||||||
|
Changes
|
||||||
|
-------------
|
||||||
|
- Index node expression template field changed from a 128 character field to an
|
||||||
|
unlimited size text field to allow for complex indexing expressions.
|
||||||
|
- When updating the metadata of a document, any input in the value form field
|
||||||
|
will select the adjacent checkbox.
|
||||||
|
- Support for passing the FUSE option `allow-other` and `allow-root` was added
|
||||||
|
to the index mirroring management command.
|
||||||
|
- Added support for checking for the latest released version of Mayan from the
|
||||||
|
About menu.
|
||||||
|
- Added support for rebuilding specific indexes instead of only being able to
|
||||||
|
rebuild all index. GitLab issue #372.
|
||||||
|
- Rewrite document indexing code to be faster and use less locking. Thanks to
|
||||||
|
Macrobb Simpson (@Macrobb) for the initial implementation.
|
||||||
|
- Use a predefined file path for the file lock.
|
||||||
|
- Catch documents with not document version when displaying their thumbnails.
|
||||||
|
- Add custom script_prefix aware resolve function and use it for the
|
||||||
|
document page navigation views. Fixes an issue when Mayan is installed
|
||||||
|
as a sub URL app. Thanks to Gustavo Teixeira(@gsteixei) for the issue and
|
||||||
|
investigation.
|
||||||
|
- Support was added to update document indexes after workflow state changes.
|
||||||
|
- An helper was added to access a documents workflow by name. To this end
|
||||||
|
a new field was added to the Workflow class called `Internal name`.
|
||||||
|
This new field makes it much easier to get a document's workflow instance.
|
||||||
|
If for example a document has a workflow called `Publish` with the internal
|
||||||
|
name `publish_workflow`, it will be accessible in the indexing template as
|
||||||
|
{{ document.workflow.publish_workflow }}. The latest state of the workflow
|
||||||
|
can be accessed using {{ document.workflow.publish_workflow.get_current_state }}.
|
||||||
|
- Added a new API endpoint to display a list of all the available search models.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitLab issue #371 <https://gitlab.com/mayan-edms/mayan-edms/issues/371>`_ Auto select checkbox when updating metadata
|
||||||
|
* `GitLab issue #372 <https://gitlab.com/mayan-edms/mayan-edms/issues/372>`_ (Feature request) Allow 'rebuild index' to rebuild only a selected index
|
||||||
|
* `GitLab issue #383 <https://gitlab.com/mayan-edms/mayan-edms/issues/383>`_ Page not found when deployed to sub-uri
|
||||||
|
* `GitLab issue #385 <https://gitlab.com/mayan-edms/mayan-edms/issues/385>`_ mountindex: how to specify FUSE mount option allow_other?
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
156
docs/releases/2.4.rst
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
=============================
|
||||||
|
Mayan EDMS v2.4 release notes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Released: June 23, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
SANE document source
|
||||||
|
--------------------
|
||||||
|
A new document source has been added with the ability to retrieve documents from
|
||||||
|
scanners directly. This new document source uses the SANE (Scanner Access Now Easy)
|
||||||
|
(https://en.wikipedia.org/wiki/Scanner_Access_Now_Easy) API client to communicate
|
||||||
|
with USB and network scanners. SANE must be properly installed for this document
|
||||||
|
source to work. Your scanner must also be supported by the SANE API
|
||||||
|
(http://www.sane-project.org/sane-supported-devices.html).
|
||||||
|
|
||||||
|
Automatic PDF orientation detection
|
||||||
|
-----------------------------------
|
||||||
|
The orientation of PDF documents is now detected at creation and a rotation
|
||||||
|
transformation applied to each of the document's pages to correct the orientation.
|
||||||
|
|
||||||
|
Environment variables
|
||||||
|
---------------------
|
||||||
|
Configuration options can now be updated from environment variables. To update
|
||||||
|
a configuration option, prepend the string `MAYAN_` to the name of the configuration
|
||||||
|
option. For example, to increase the number of documents displayed per search results
|
||||||
|
page (from a default of 40) to 50 documents, set the environment variable
|
||||||
|
MAYAN_COMMON_PAGINATE_BY to 50 with::
|
||||||
|
|
||||||
|
$ export MAYAN_COMMON_PAGINATE_BY=50
|
||||||
|
|
||||||
|
and restart Mayan EDMS. A list of the configuration options can be found in the
|
||||||
|
`Setup` menu, under `Settings`.
|
||||||
|
|
||||||
|
Math filters
|
||||||
|
------------
|
||||||
|
The django-mathfilters (https://pypi.python.org/pypi/django-mathfilters) package
|
||||||
|
has been included to provide proper math filters in the indexes. An example of
|
||||||
|
this is indexing documents by quarter::
|
||||||
|
|
||||||
|
{% load mathfilters %}{{ document.metadata_value_of.date|date:"Y"}}Q{{ document.metadata_value_of.date|date:"m"|sub:1|intdiv:3|add:1 }}
|
||||||
|
|
||||||
|
|
||||||
|
Expand searchable objects
|
||||||
|
-------------------------
|
||||||
|
Previously, only documents and later on document pages were searchable. This release
|
||||||
|
add support for searching for tags, metadata types and cabinets. This search support
|
||||||
|
is available via the dynamic search API.
|
||||||
|
|
||||||
|
Management command to reset locks
|
||||||
|
---------------------------------
|
||||||
|
During testing or development error occur and locks can remain behind, blocking
|
||||||
|
execution of a process or task until they expire. To help resolve this a
|
||||||
|
management command has been added called `purgelocks` that will delete all locks
|
||||||
|
in the system.
|
||||||
|
|
||||||
|
Index by workflow state
|
||||||
|
-----------------------
|
||||||
|
Support was added to update the a document indexes from workflow state changes.
|
||||||
|
To make workflow referencing easier from the index template, a new fields was
|
||||||
|
added to the workflow model called internal_name. For example, for a workflow
|
||||||
|
called `Publishing Workflow` with an internal name of `publishing_workflow`,
|
||||||
|
use the following string to reference the current state in an index::
|
||||||
|
|
||||||
|
{{ document.workflow.publishing_workflow.get_current_state }}
|
||||||
|
|
||||||
|
|
||||||
|
Task manager
|
||||||
|
------------
|
||||||
|
A new app to monitor the distribution and consumption of background task has been
|
||||||
|
added. This app is call `Task manager` and can be found in the `Tools` menu.
|
||||||
|
Use this new tool to diagnose your background task workers or to determine when
|
||||||
|
to scale up the number of workers.
|
||||||
|
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
-------------
|
||||||
|
- Improve render of documents with no pages.
|
||||||
|
- Fix repeated permission list API URL. GitLab issue #389.
|
||||||
|
- Fix role creation API endpoint not returning id. GitLab issue #390.
|
||||||
|
- Fix index rebuilding for multi value first levels. GitLab issue #391.
|
||||||
|
- Add hardware requirements. GitHub issue #247.
|
||||||
|
- Fix URL query string encoding for the document page navigation views. GitLab
|
||||||
|
issue #383.
|
||||||
|
- Truncate views titles via the APPEARANCE_MAXIMUM_TITLE_LENGTH setting.
|
||||||
|
GitLab issue #217.
|
||||||
|
- Add link to show a document's OCR errors. GitLab issue #291.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitHub issue #247 <https://github.com/mayan-edms/mayan-edms/issues/247>`_ Hardware requirements
|
||||||
|
* `GitLab issue #132 <https://gitlab.com/mayan-edms/mayan-edms/issues/132>`_ Task queue viewer
|
||||||
|
* `GitLab issue #217 <https://gitlab.com/mayan-edms/mayan-edms/issues/217>`_ [Documents] Truncate document label for avoid double lines in mobile or reduce font
|
||||||
|
* `GitLab issue #221 <https://gitlab.com/mayan-edms/mayan-edms/issues/221>`_ Add flush lock management command
|
||||||
|
* `GitLab issue #291 <https://gitlab.com/mayan-edms/mayan-edms/issues/291>`_ Link to OCR error log from document OCR tab
|
||||||
|
* `GitLab issue #344 <https://gitlab.com/mayan-edms/mayan-edms/issues/344>`_ Add support for searching folders, tags, metadata.
|
||||||
|
* `GitLab issue #383 <https://gitlab.com/mayan-edms/mayan-edms/issues/383>`_ Page not found when deployed to sub-uri
|
||||||
|
* `GitLab issue #387 <https://gitlab.com/mayan-edms/mayan-edms/issues/387>`_ Document Scanning not Functioning on rotated landscape PDF's
|
||||||
|
* `GitLab issue #389 <https://gitlab.com/mayan-edms/mayan-edms/issues/389>`_ How can we map permissions with a particular role using REST API?
|
||||||
|
* `GitLab issue #390 <https://gitlab.com/mayan-edms/mayan-edms/issues/390>`_ Id is not getting in response
|
||||||
|
* `GitLab issue #391 <https://gitlab.com/mayan-edms/mayan-edms/issues/391>`_ "Rebuild indexes" does not work in Mayan EDMS 2.3
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
69
docs/releases/2.5.1.rst
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.5.1 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: July 07, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This version is identical to version 2.5. It was released to workaround some
|
||||||
|
issues with the recent migration of PyPI (https://mail.python.org/pipermail/distutils-sig/2017-June/030766.html)
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitLab issue #378 <https://gitlab.com/mayan-edms/mayan-edms/issues/378>`_ Add metadata widget changes from @Macrobb
|
||||||
|
* `GitLab issue #379 <https://gitlab.com/mayan-edms/mayan-edms/issues/379>`_ Add new document version list view permission.
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
74
docs/releases/2.5.2.rst
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.5.2 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: July 08, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
Improve duplicate document scan
|
||||||
|
-------------------------------
|
||||||
|
Previously the way document creation code was enclosed in a single database
|
||||||
|
transactions. This cause the duplicate scan at upload code to received a
|
||||||
|
document reference to uncommitted database data. The single database
|
||||||
|
transaction was split into smaller units to make sure the duplicate scan
|
||||||
|
recevies saved and committed data.
|
||||||
|
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
243
docs/releases/2.5.rst
Normal file
@@ -0,0 +1,243 @@
|
|||||||
|
=============================
|
||||||
|
Mayan EDMS v2.5 release notes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Released: July 07, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
OCR text download
|
||||||
|
-----------------
|
||||||
|
A link and view were added to download the entire OCR text of a document as a
|
||||||
|
separate file. The link can be found under the "Actions" dropdown when the
|
||||||
|
"OCR" tab of a document is selected.
|
||||||
|
|
||||||
|
SANE document source
|
||||||
|
--------------------
|
||||||
|
A validation error was being raised when the resolution field of the SANE
|
||||||
|
document source was left blank. This issue has been fixed and works as expected
|
||||||
|
now.
|
||||||
|
|
||||||
|
Mailing profiles
|
||||||
|
----------------
|
||||||
|
Previously, the way documents were emailed was controlled by configuration
|
||||||
|
settings that only system administrator could change as the OS level. It is
|
||||||
|
now possible to create mailing profiles from within the user interface. This
|
||||||
|
allows for Mayan administrators to add mailing profiles without the
|
||||||
|
intervention system administrators. It also provides the opportunity to create
|
||||||
|
multiple mailing profiles. This is useful for sending documents via different
|
||||||
|
email providers depending on things like priority of delivery, or email size
|
||||||
|
limitations. For multi-tenant environments, this also means that each tenant
|
||||||
|
can now send documents via email with their own respective email accounts.
|
||||||
|
For system administrators, this means there is no longer a need to rely on a
|
||||||
|
single email profile for the entirety of all the tenants in a deployment,
|
||||||
|
which could be taxing email quota limits or triggering spam filters. For
|
||||||
|
more information on the multi-tenant plugin visit the Mayan app store at:
|
||||||
|
http://www.mayan-edms.com/store/
|
||||||
|
|
||||||
|
New transformation
|
||||||
|
------------------
|
||||||
|
A lineart transformation was added to reduce the amount of colors in a
|
||||||
|
document's image to just 2. This is useful to increase the OCR accuracy on
|
||||||
|
some kind of documents whose color or layout may confuse the OCR engine
|
||||||
|
and lower the accuracy of the text recognition.
|
||||||
|
|
||||||
|
UI reorganization
|
||||||
|
-----------------
|
||||||
|
The main menu was been reorganization for clarity of function. The "About" menu
|
||||||
|
has been renamed to "System" to signify that the items in this menu relate
|
||||||
|
to system configuration topics. The "Tools" and "Setup" sub-menus, were moved
|
||||||
|
from the "Profile" menu to the new "System" menu. The "Profile" menu has been
|
||||||
|
renamed to "User". Additionally, the "User" menu is now part of the main menu
|
||||||
|
instead of floating right on the layout. This change along with others
|
||||||
|
improve the usability on small devices like tablets and smartphones.
|
||||||
|
|
||||||
|
PDF compatibility updates
|
||||||
|
-------------------------
|
||||||
|
Support for non-compliant, "broken", and PDFs encrypted with no passwords has
|
||||||
|
been added. Previously no effort was made to process the images for these
|
||||||
|
files. The code for detecting the number of pages in a PDF has also been
|
||||||
|
improved to retry several methods when failing on non-compliant PDF documents.
|
||||||
|
|
||||||
|
Office documents compatibility updates
|
||||||
|
--------------------------------------
|
||||||
|
Improvements to the Libre Office conversion code were added, including a
|
||||||
|
workaround for Libre Office bug #37531 (https://bugs.documentfoundation.org/show_bug.cgi?id=37531)
|
||||||
|
which sometimes manifested when uploading multiple office documents
|
||||||
|
sequentially.
|
||||||
|
|
||||||
|
Metadata setup UI improvements
|
||||||
|
------------------------------
|
||||||
|
A new widget to define the document type to metadata type relationship has been
|
||||||
|
added. The new widget provides a method to switch between required metadata
|
||||||
|
and optional metadata for a document type. This new method is not only faster
|
||||||
|
but does not force users to remove a metadata type before making the switch
|
||||||
|
and thus avoid deletion of existing metadata entries. A new view was also added
|
||||||
|
to change the document type to metadata type relation not only the document
|
||||||
|
type view but also from the metadata type view eliminating travel between these
|
||||||
|
two views when creating new metadata types and assigning them to document
|
||||||
|
types.
|
||||||
|
|
||||||
|
Duplicated document scanning
|
||||||
|
----------------------------
|
||||||
|
Support to scan and list duplicated document scanning was added in the form of
|
||||||
|
a new document list link under the "Documents" main menu. Every time a document
|
||||||
|
is uploaded, a document scan will be triggered to determine if the new document
|
||||||
|
is a duplicate of an existing document. Duplicate documents will be listed
|
||||||
|
in a new "Duplicated documents" link in the main menu. A full document list
|
||||||
|
scan can also be triggered by using the new "Duplicated document scan" button
|
||||||
|
in the tools menu. Finally, a new tab in the document view has been added
|
||||||
|
called "Duplicates" that will list all duplicates of the currently
|
||||||
|
selected document when in the document's view. Related to this feature is the
|
||||||
|
addition of being able to search documents by their checksum. This was done by
|
||||||
|
indexing the checksum database field and by adding the checksum as a search
|
||||||
|
field in the advanced document search view and via the API.
|
||||||
|
|
||||||
|
Login session control
|
||||||
|
---------------------
|
||||||
|
Support was added to control the length of time a log in session lasts. First
|
||||||
|
from the user interface side of things a "Remember me" checkbox was added to
|
||||||
|
the log in form that will cause the session to persist after the browser is
|
||||||
|
closed. If this checkbox is left blank the session will be destroyed when the
|
||||||
|
browser closes and the user will need to log in again when accessing any of the
|
||||||
|
URLs. The second part of this feature is for administrators. The configuration
|
||||||
|
setting AUTHENTICATION_MAXIMUM_SESSION_LENGTH was added to control the maximum
|
||||||
|
time a logged in session will persist when users click the "Remember me"
|
||||||
|
checkbox. The default of this setting is 30 days.
|
||||||
|
|
||||||
|
Document image cache disabling
|
||||||
|
------------------------------
|
||||||
|
It is now possible to disable the document page image caching. The document
|
||||||
|
image cache works on two level and hence two setting options were added.
|
||||||
|
The first is the DOCUMENTS_DISABLE_BASE_IMAGE_CACHE option which disables the
|
||||||
|
first layer of caching, the generation of a master image file for each document
|
||||||
|
page. This means that subsequent request for a page's image will trigger the
|
||||||
|
conversion of the document from its original uploaded file. The second option,
|
||||||
|
DOCUMENTS_DISABLE_TRANSFORMED_IMAGE_CACHE, disables just the caching of the
|
||||||
|
transformed (rotated, resized, zoomed) images of document pages. The settings
|
||||||
|
can be used together or separately depending on how much disk space saving is
|
||||||
|
desired. These settings give control over the trade-off between disk space
|
||||||
|
savings and higher CPU utilization. These settings are ideal for installations
|
||||||
|
with a lot of documents, that want to conserve disk space, and have CPU capacity
|
||||||
|
to spare. Multi-tenant installations can also benefit from these new settings.
|
||||||
|
|
||||||
|
Document filter by workflow state
|
||||||
|
---------------------------------
|
||||||
|
A few versions over, a main menu item was added to list documents by their
|
||||||
|
workflow and/or their current workflow state. Support for filtering by the
|
||||||
|
initial workflow state has been added to this feature.
|
||||||
|
|
||||||
|
Support for restoring forgotten password
|
||||||
|
----------------------------------------
|
||||||
|
Views and templates were added to enable the typical "Forgotten
|
||||||
|
password" worflow using a signed token via email.
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
-------------
|
||||||
|
- Add missing OCR migration.
|
||||||
|
- Improve error output of the performupgrade command to debug upgrade errors
|
||||||
|
that could stop an upgrade (missing document files, etc).
|
||||||
|
- Enable the django-mathfilters app added in version 2.4.
|
||||||
|
- Do a complete pull and synchronization of the translations to fix missing
|
||||||
|
translations for Polish. Thanks to Wojtek Warczakowski for the report.
|
||||||
|
- Allow null for the SANE source resolution field. Even though the field was
|
||||||
|
marked as allowing blank values it was failing because it is a number field
|
||||||
|
and number fields need to allow explicit null values when left blank.
|
||||||
|
- Rename the mayan_task_manager app to task_manager.
|
||||||
|
- Make the task manager translatable.
|
||||||
|
- Add Turkish to the list of processes languages.
|
||||||
|
- Use Toastr libary for screen messages.
|
||||||
|
- Reduce verbosity of some debug messages in the MayanAppConfig, settings and,
|
||||||
|
mailing discovery.
|
||||||
|
- Make sure lookup selection widgets also trigger the metadata update
|
||||||
|
checkbox on change.
|
||||||
|
- Usability improvements on small displays.
|
||||||
|
- Removal of the CONVERTER_LIBREOFFICE_PATH and CONVERTER_PDFTOPPM_PATH
|
||||||
|
settings. These setting have been consolidated into
|
||||||
|
CONVERTER_GRAPHICS_BACKEND_CONFIG.
|
||||||
|
- Improve the documentation of the document creation API endpoint.
|
||||||
|
GitHub issue #255. Thanks to @lcerliani opening the issue.
|
||||||
|
- Libre Office conversion improvements. Give every libreoffice instance
|
||||||
|
its own separate $HOME directory. Additionally give every libreoffice
|
||||||
|
its own UserInstallation file in the $HOME directory. Works around
|
||||||
|
Libre Office issue: https://bugs.documentfoundation.org/show_bug.cgi?id=37531
|
||||||
|
Solves or affects GitLab issues #393 #258 #198 #175
|
||||||
|
- The trashed document deletion action is now a background task. This
|
||||||
|
feature results is much faster trashed document deletion and trash
|
||||||
|
can emptying.
|
||||||
|
- Remove animated spinners to lower browser memory usage and increase
|
||||||
|
responsiveness.
|
||||||
|
- Render a document page placeholder while the real document page
|
||||||
|
loads. This change avoids "jumping" effect when loading many thumbnails.
|
||||||
|
- Increase lazy load thresholds. More thumbnails and document pages
|
||||||
|
will be loaded and visible by default when a view loads.
|
||||||
|
- Improve usability and appearance on medium and small devices like
|
||||||
|
tablets and smartphones.
|
||||||
|
- Do hard word break on form titles to avoid horizontal scroll on
|
||||||
|
small displays.
|
||||||
|
- Python3 compatilibty improvements by removing all explicit conversion
|
||||||
|
using the unicode() function.
|
||||||
|
- Unicode handling improvements.
|
||||||
|
- Update required versions of Pillow and django-suit.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitHub issue #255 <https://github.com/mayan-edms/mayan-edms/issues/255>`_ Uploading a local file via api
|
||||||
|
* `GitLab issue #215 <https://gitlab.com/mayan-edms/mayan-edms/issues/215>`_ Download text contents
|
||||||
|
* `GitLab issue #286 <https://gitlab.com/mayan-edms/mayan-edms/issues/286>`_ User configurable mailer
|
||||||
|
* `GitLab issue #337 <https://gitlab.com/mayan-edms/mayan-edms/issues/337>`_ Better way to switch Optional to Required Metadata
|
||||||
|
* `GitLab issue #373 <https://gitlab.com/mayan-edms/mayan-edms/issues/373>`_ (feature request) Allow selecting document types for metadata
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
69
docs/releases/2.6.1.rst
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
=============================
|
||||||
|
Mayan EDMS v2.6 release notes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Released: July 18, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
-------------
|
||||||
|
- Fix issue when editing or removing metadata from multiple documents.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
78
docs/releases/2.6.2.rst
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.6.2 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: July 22, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a bug fix release and users are encouraged to upgrade.
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
-------------
|
||||||
|
- Fix deprecation warning to prepare upgrade to Django 1.11 and 2.0.
|
||||||
|
- Fix zoom feature in document page view.
|
||||||
|
- Add support to run tests against a MySQL or Postgres container.
|
||||||
|
- Improve tag widget customization by moving the markup to its own template.
|
||||||
|
- Fix document page widget appearance in the document page list view.
|
||||||
|
- Make document version order deterministic.
|
||||||
|
- Allow total page number instrospection of encrypted PDF with non ASCII
|
||||||
|
user properties. GitLab issue #411.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
87
docs/releases/2.6.3.rst
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.6.3 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: July 25, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a bug fix release and users are encouraged to upgrade.
|
||||||
|
|
||||||
|
Changes
|
||||||
|
-------
|
||||||
|
- Add makefile target to launch a PostgreSQL container.
|
||||||
|
- Use resolve_url instead of redirect to resolve the post login URL.
|
||||||
|
- Make the intialsetup and performupgrade management tasks work
|
||||||
|
with signals to allow customization from 3rd party apps.
|
||||||
|
- PEP8 cleanups.
|
||||||
|
- Add tag_ids keyword argument to the Source.handle_upload
|
||||||
|
model method. GitLab issue #413.
|
||||||
|
- Add overflow wrapping so wrap long titles in Firefox too.
|
||||||
|
- Makes Roles searchable. GitLab issue #402.
|
||||||
|
- Add line numbers to the debug and production loggers.
|
||||||
|
Add date and time to the production logger.
|
||||||
|
- Add support for generating setup.py from a template. GitLab
|
||||||
|
#149 #200.
|
||||||
|
- Add fade in animation to document images.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitLab issue #149 <https://gitlab.com/mayan-edms/mayan-edms/issues/149>`_ Autogenerate setup.py
|
||||||
|
* `GitLab issue #200 <https://gitlab.com/mayan-edms/mayan-edms/issues/200>`_ dependencies in setup.py not up to date with requirements
|
||||||
|
* `GitLab issue #402 <https://gitlab.com/mayan-edms/mayan-edms/issues/402>`_ Make permissions and roles searchable.
|
||||||
|
* `GitLab issue #413 <https://gitlab.com/mayan-edms/mayan-edms/issues/413>`_ source.models.Source.handle_upload does not support tag_ids but upload_document does
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
71
docs/releases/2.6.4.rst
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.6.4 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: July 25, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a bug fix release and users are encouraged to upgrade.
|
||||||
|
|
||||||
|
Changes
|
||||||
|
-------
|
||||||
|
- Add missing replacements of reverse to resolve_url.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
143
docs/releases/2.6.rst
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
=============================
|
||||||
|
Mayan EDMS v2.6 release notes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Released: July 18, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
Sending documents to multiple recipients
|
||||||
|
----------------------------------------
|
||||||
|
Support was added to send a document as an attachment, or a link to a document
|
||||||
|
to multiple email recipients. To use this feature enter a comman separated
|
||||||
|
list of email recipients in the "Email address" field.
|
||||||
|
|
||||||
|
Visual changes
|
||||||
|
--------------
|
||||||
|
Several patches to change and improve the user interface landed on this release.
|
||||||
|
The first, by Macrobb Simpson @Macrobb, makes the content area width, match
|
||||||
|
window area. This means that on almost all device screen sizes the content area
|
||||||
|
will be almost fullscreen. Another path from Macrobb Simpson, improves the
|
||||||
|
visual appearance of the document metadata widget. The other big change is the
|
||||||
|
new list item view template which lists documents in an column, row layout.
|
||||||
|
With this layout document thumbnails are more clearly visible, much more
|
||||||
|
information can be displayed for each document, and works much better on small
|
||||||
|
screen devices like tablets and smartphone than a responsive table which
|
||||||
|
requires two axis navigation on small screens. The height of the dashboard
|
||||||
|
items is now adjusted via javascript to ensure correct layout regardless of
|
||||||
|
screen size of message length when translated.
|
||||||
|
|
||||||
|
Search
|
||||||
|
------
|
||||||
|
This release adds users and groups to the list of objects that are searchable
|
||||||
|
via the API. The current list of searchable objects is: metadata types,
|
||||||
|
users, groups, tags, documents, document pages, and cabinets.
|
||||||
|
|
||||||
|
Logging
|
||||||
|
-------
|
||||||
|
The logging configuration was improved to create a log for critical errors
|
||||||
|
when running on production mode. The default location for this log file is:
|
||||||
|
/mayan/error.log. This path can be changed with the COMMON_PRODUCTION_ERROR_LOG_PATH
|
||||||
|
setting. This log file will capture application errors and request exceptions.
|
||||||
|
|
||||||
|
Cabinets
|
||||||
|
--------
|
||||||
|
The access control for cabinets has been fixed in some regards and improved in
|
||||||
|
others. The permission to add and remove documents can now be applied to
|
||||||
|
individual root cabinets instead of globally for a role. Also, the permission
|
||||||
|
to add or remove documents from cabinets must also now be granted to a document
|
||||||
|
or document type. In other words, to add a document to a cabinet, the user's
|
||||||
|
role must have the permission to add documents to cabinet, for the cabinet
|
||||||
|
to recieve the document and for the document about to be added.
|
||||||
|
|
||||||
|
New permission
|
||||||
|
--------------
|
||||||
|
The patch to add a permission to view a document's version list was backported
|
||||||
|
from the development branch to make it accesible now. Like cabinets, the tag
|
||||||
|
access control now works on two levels. Now to attach a tag to a document,
|
||||||
|
the permission to attach tags must be granted to the tag to attach and to the
|
||||||
|
document that will receive the tag.
|
||||||
|
|
||||||
|
ACL changes
|
||||||
|
-----------
|
||||||
|
The document type permissions namespace was renamed from "Document setup" to
|
||||||
|
"Document types" for clarity. Along with that change, support was added
|
||||||
|
for granting the document type edit, document type delete, and document type view
|
||||||
|
permissions to individual document type instances instead of just globally.
|
||||||
|
|
||||||
|
Testing
|
||||||
|
-------
|
||||||
|
The documents app view tests now test for view access and not just permission.
|
||||||
|
Testing against access is more robust and also tests for permissions
|
||||||
|
implicitly.
|
||||||
|
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
-------------
|
||||||
|
- Fix HTML mark up in window title. GitLab #397.
|
||||||
|
- Sort setting by namespace label and by global name second.
|
||||||
|
- Sort indexes by label.
|
||||||
|
- Switch the order of the DEFAULT_AUTHENTICATION_CLASSES of DRF. GitLab #400.
|
||||||
|
- Improve code to unbind menu entries.
|
||||||
|
- Increase the size of the mailing profile label field to 128 characters.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitLab issue #378 <https://gitlab.com/mayan-edms/mayan-edms/issues/378>`_ Add metadata widget changes from @Macrobb
|
||||||
|
* `GitLab issue #396 <https://gitlab.com/mayan-edms/mayan-edms/issues/396>`_ Add support for emailing documents to a recipient list.
|
||||||
|
* `GitLab issue #397 <https://gitlab.com/mayan-edms/mayan-edms/issues/397>`_ Title on Index Page is Broken
|
||||||
|
* `GitLab issue #400 <https://gitlab.com/mayan-edms/mayan-edms/issues/400>`_ Django REST framework's BasicAuthentication doesn't work with Oauth2_proxy
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
97
docs/releases/2.7.1.rst
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.7.1 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: September 3, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
Unicode metadata when uploading a document
|
||||||
|
------------------------------------------
|
||||||
|
An issue with Django's unquote_plus caused documents being uploaded with an
|
||||||
|
unicode, no English character in an initial metadata value field to fail.
|
||||||
|
The unquote_plus usage was remove in favor of a dedicate URL parsing library
|
||||||
|
called furl. GitLab issue #423. Thanks to Gustavo Teixeira (@gsteixei) for the
|
||||||
|
find.
|
||||||
|
|
||||||
|
Silent errors during initialization
|
||||||
|
-----------------------------------
|
||||||
|
When Python raises an ImportError exception, it is not possible to determine
|
||||||
|
the cause of the error. The local.py import code was updated to interpret the
|
||||||
|
text of the ImportError exception and ignore it only if the local.py was
|
||||||
|
missing, which is the case during the initialization commands execute after
|
||||||
|
the initial installation. Any error in the local.py file will now cause Mayan
|
||||||
|
to exit. Thanks to MacRobb Simpson for the report and solution.
|
||||||
|
|
||||||
|
String usage in the local.py file
|
||||||
|
---------------------------------
|
||||||
|
Python 2.7 uses byte strings by default. Byte strings cannot be used in
|
||||||
|
conjunction with unicode strings. A missing import was causing strings in
|
||||||
|
the local.py file to be interpreted as byte string while the rest of Mayan
|
||||||
|
uses unicode strings. Using non English special characters in a string located
|
||||||
|
in the local.py file would have cause a Unicode errors. For new installations
|
||||||
|
from Mayan version 2.7.1 onwards, the line
|
||||||
|
`from __future__ import absolute_imports, unicode_literals` is included when
|
||||||
|
generating the local.py for the first time. For existing installations,
|
||||||
|
adding this line at the top is all that's needed. GitLab issue #424. Thanks to
|
||||||
|
Gustavo Teixeira (@gsteixei) for the find and researching the cause.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitLab issue #423 <https://gitlab.com/mayan-edms/mayan-edms/issues/423>`_ Metadata can't handle non ascii chars on upload
|
||||||
|
* `GitLab issue #424 <https://gitlab.com/mayan-edms/mayan-edms/issues/424>`_ DjangoUnicodeDecodeError on document proprieties due document language field
|
||||||
|
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
101
docs/releases/2.7.2.rst
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.7.2 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: September 06, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
Fixes to the new mailer creation view
|
||||||
|
-------------------------------------
|
||||||
|
Some last minute changes to the dynamic form creation code added to support
|
||||||
|
workflow state actions broke the creation of new mailer profiles. This is fixed
|
||||||
|
now and a test was added to avoid future regressions. GitLab issue #431.
|
||||||
|
Thanks to Robert Schöftner (@robert.schoeftner) for the report and the solution.
|
||||||
|
|
||||||
|
Event consolidation
|
||||||
|
-------------------
|
||||||
|
Several events were created to audit the creation of new documents. These events
|
||||||
|
caused some confusion and were improved. When creating a new document the two
|
||||||
|
'document properties edited' events were removed as this is an internal process
|
||||||
|
and not an user event. Another change is the preservation of the user ID that
|
||||||
|
submits the file to create the document. Now instead of 'System' the actual
|
||||||
|
username of the user that uploaded the document will appear in the events log.
|
||||||
|
GitLab issue #433. Thanks to Jesaja Everling (@jeverling) for the report.
|
||||||
|
|
||||||
|
Cabinet list sorting
|
||||||
|
--------------------
|
||||||
|
The root cabinet list is now displayed alphabetically sorted. The list of
|
||||||
|
cabinets to which a document belongs to is now displayed sorted too. Thanks
|
||||||
|
to Thomas Plotkowiak for the request.
|
||||||
|
|
||||||
|
Visual cue for the document cabinet list
|
||||||
|
----------------------------------------
|
||||||
|
In the document list item view, a simple visual cue in the form of italized
|
||||||
|
text was added to the document cabinet list. GitLab issue #435. Thanks to LeVon
|
||||||
|
Smoker for the request.
|
||||||
|
|
||||||
|
Easier testing of production deployments
|
||||||
|
----------------------------------------
|
||||||
|
The testing library mock is now installed by default, making it easier to run
|
||||||
|
the entire test suit on deployed instances.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitLab issue #431 <https://gitlab.com/mayan-edms/mayan-edms/issues/431>`_ can't create new mailer
|
||||||
|
* `GitLab issue #433 <https://gitlab.com/mayan-edms/mayan-edms/issues/433>`_ Events are not created correctly for document upload
|
||||||
|
* `GitLab issue #435 <https://gitlab.com/mayan-edms/mayan-edms/issues/435>`_ Add visual cue to differentiate the Cabinet list on a document's preview card.
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
74
docs/releases/2.7.3.rst
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
===============================
|
||||||
|
Mayan EDMS v2.7.3 release notes
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Released: September 11, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
- Fix task manager queue list view. Thanks to LeVon Smoker for
|
||||||
|
the report.
|
||||||
|
- Fix resolved link class URL mangling when the keep_query argument is
|
||||||
|
used. Fixes source navigation on the document upload wizard. Thanks to
|
||||||
|
Nick Douma (LordGaav) for the report and diagnostic information. GitLab
|
||||||
|
issue #436.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
* None
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitLab issue #431 <https://gitlab.com/mayan-edms/mayan-edms/issues/431>`_ can't create new mailer
|
||||||
|
* `GitLab issue #436 <https://gitlab.com/mayan-edms/mayan-edms/issues/436>`_ New document source menu does not contain source_ids
|
||||||
|
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
279
docs/releases/2.7.rst
Normal file
@@ -0,0 +1,279 @@
|
|||||||
|
=============================
|
||||||
|
Mayan EDMS v2.7 release notes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Released: August 30, 2017
|
||||||
|
|
||||||
|
What's new
|
||||||
|
==========
|
||||||
|
|
||||||
|
Beta Python 3 support
|
||||||
|
---------------------
|
||||||
|
Preliminary support for Python 3 has landed in this version. More testing
|
||||||
|
is still needed but for the most part seems to be usable. This is just
|
||||||
|
initial support and not meant for production. Please submit any issue with
|
||||||
|
Python 3 to help improve the support for it.
|
||||||
|
|
||||||
|
|
||||||
|
PDF introspection improvements
|
||||||
|
------------------------------
|
||||||
|
Some PDF files encode their page rotation information using indirect values
|
||||||
|
instead of actually storing the rotation value as an integer. Support these
|
||||||
|
types of PDF files was added.
|
||||||
|
|
||||||
|
|
||||||
|
3rd party apps
|
||||||
|
--------------
|
||||||
|
Support was added to allow 3rd party app adding data columns to existing
|
||||||
|
models to specify the order in which such new columns will appear. Support
|
||||||
|
was also added to allow any app to remove existing main menus. App can now in
|
||||||
|
addition to adding their own dashboard widget, remove existing widgets. As
|
||||||
|
part of the dashboard updates support was also added to allow app developers to
|
||||||
|
create multiple dashboards.
|
||||||
|
|
||||||
|
|
||||||
|
Converter customization improvements
|
||||||
|
------------------------------------
|
||||||
|
For users wanting more control over the document image conversion process,
|
||||||
|
support was added to change the internal format used for image conversion.
|
||||||
|
By default JPG used but via the `pdftoppm_format` and `pillow_format` entries
|
||||||
|
of the CONVERTER_GRAPHICS_BACKEND_CONFIG setting option any other format
|
||||||
|
support by Python's Pillow can use used. Support was also added to change the
|
||||||
|
DPI value used by the conversion process of PDF files to images. The default
|
||||||
|
value for this coversion was set to 300 DPI. The entry used to specify this
|
||||||
|
value is `pdftoppm_dpi`.
|
||||||
|
|
||||||
|
|
||||||
|
Workflow refactor
|
||||||
|
-----------------
|
||||||
|
This version includes a preview release of the workflow refactor that includes
|
||||||
|
three new features: transition triggers, state actions, and graphical previews.
|
||||||
|
The transition triggers allow setting document events as triggers to perform
|
||||||
|
a workflow transition automatically. State actions allow performing system
|
||||||
|
actions when a workflow enters or leaves a specify state. For this release
|
||||||
|
5 actions were included: attaching and removing tags to a document, granting
|
||||||
|
or revoking access via the ACL, and performing a HTTP POST request. As the
|
||||||
|
feature matures more actions will be added. These two features make the
|
||||||
|
workflow app the automation center for Mayan. This feature allow users to program
|
||||||
|
behaviors to perform, even provoke changes in 3rd party software using the HTTP
|
||||||
|
POST. This feature works very much like services like IFTTT [ifttt.com]
|
||||||
|
(If This Then That) or conditionals in programming languages. The last
|
||||||
|
improvement added to the workflow app is the ability to render a workflow
|
||||||
|
in a graphical manner, useful for visually understanding, explaining and
|
||||||
|
debugging workflows.
|
||||||
|
|
||||||
|
|
||||||
|
OCR refactor
|
||||||
|
------------
|
||||||
|
As part of the plan to add OCR zone and barcode support the first set of
|
||||||
|
changes was included in this version. These initial changes bring the OCR
|
||||||
|
app up to standard with the rest of the system and splits the OCR app into two
|
||||||
|
new apps: the OCR app and the Document parsing app. The document parsing app
|
||||||
|
will read text content from documents that provide them and display the result
|
||||||
|
under the "Content" document tab. The OCR app will also launch for each
|
||||||
|
document even if they provide text content to recognize any text on images.
|
||||||
|
This separation gives users the two choices of text information one extracted
|
||||||
|
from the document (not always available or of quality) and the other recognized
|
||||||
|
by OCR.
|
||||||
|
|
||||||
|
|
||||||
|
Document parsing
|
||||||
|
----------------
|
||||||
|
Historically Mayan has had two methods to extract text from PDF files. First
|
||||||
|
it will try the program called `pdftotext` and failing that will try the
|
||||||
|
PDFMiner Python library. The official PDFMiner library is unmaintained and
|
||||||
|
doesn't support Python 3 will be a requirement for Django 2.0, which will
|
||||||
|
force Mayan to move to Python 3 exclusively in the near future. For this
|
||||||
|
reason the PDFMiner parser has been removed. A new library called PyPDF2 was
|
||||||
|
added in a past version to improve the PDF page count and rotation detection,
|
||||||
|
initial experience with this library has been positive and since it supports
|
||||||
|
text extraction might also replace PDFMiner as the secondary PDF text
|
||||||
|
extraction strategy.
|
||||||
|
|
||||||
|
|
||||||
|
Document version UI
|
||||||
|
-------------------
|
||||||
|
The list of versions of a document was updated to use the new item list
|
||||||
|
view templated added in version 2.6 for document lists. Along with this update
|
||||||
|
preview support was added for individual document version. It is also possible
|
||||||
|
to explore and navigate different versions of a document much easier and with
|
||||||
|
more information that previously available, being able to visually see for
|
||||||
|
example the difference in a document's versions.
|
||||||
|
|
||||||
|
|
||||||
|
Events system
|
||||||
|
-------------
|
||||||
|
The events system has been updated to provide more information and improve
|
||||||
|
navigation. The `Actor` field will now display `System` when an event was
|
||||||
|
performed by the system instead of displaying the document name. The
|
||||||
|
column `Action object` was added to help identify via which object the
|
||||||
|
event was performed. This is significant when performing actions on objects
|
||||||
|
which are children of another like document versions. The number and types
|
||||||
|
of events that are monitored has been increased all of which can also be used
|
||||||
|
to trigger a workflow transition. The current list:
|
||||||
|
|
||||||
|
- Document added to cabinet
|
||||||
|
- Document removed from cabinet
|
||||||
|
- Document automatically checked in
|
||||||
|
- Document checked in
|
||||||
|
- Document checked out
|
||||||
|
- Document forcefully checked in
|
||||||
|
- Document comment created
|
||||||
|
- Document comment deleted
|
||||||
|
- Document created
|
||||||
|
- Document downloaded
|
||||||
|
- Document properties edited
|
||||||
|
- New version uploaded
|
||||||
|
- Document type changed
|
||||||
|
- Document version reverted
|
||||||
|
- Document viewed
|
||||||
|
- Document version OCR finished
|
||||||
|
- Document version submitted for OCR
|
||||||
|
- Document version parsing finished
|
||||||
|
- Document version submitted for parsing
|
||||||
|
- Tag attached to document
|
||||||
|
- Tag removed from document
|
||||||
|
|
||||||
|
|
||||||
|
Metadata on document type change
|
||||||
|
--------------------------------
|
||||||
|
Changing document types will no longer delete all metadata from the document.
|
||||||
|
Any existing metadata whose type matches the metadata in the new type will be
|
||||||
|
preserved.
|
||||||
|
|
||||||
|
|
||||||
|
Permission rebalance
|
||||||
|
--------------------
|
||||||
|
In order to attach or remove a tag to a document, the tag view permissions
|
||||||
|
was needed. This has been update to required the tag attach and remove
|
||||||
|
permissions respectively.
|
||||||
|
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
-------------
|
||||||
|
- Add workaround for PDF with IndirectObject as the
|
||||||
|
rotation value. GitHub #261.
|
||||||
|
- Add ACL list link with icon and use it for the document facet menu.
|
||||||
|
- Fix mailing app permissions labels.
|
||||||
|
- Add ACLs link and ACLs permissions to the mailer profile model.
|
||||||
|
- Improve mailer URL regex.
|
||||||
|
- Add ordering support to the SourceColumn class. GitLab issue #417.
|
||||||
|
- Shows the cabinets in the document list. GitLab #417 @corneliusludmann
|
||||||
|
- Update the index information colums to show the
|
||||||
|
total number of documents and nodes contained in a level.
|
||||||
|
- Add workaround for pycountry versions without the bibliographical key.
|
||||||
|
GitHub issue #250.
|
||||||
|
- Skip UUID migration on Oracle backends. GitHub issue #251.
|
||||||
|
- Allow changing the output format, DPI of the pdftoppm command, and
|
||||||
|
the output format of the converter via the CONVERTER_GRAPHICS_BACKEND_CONFIG
|
||||||
|
setting sub options: pdftoppm_dpi: 300, pdftoppm_format: jpeg, pillow_format: jpeg
|
||||||
|
GitHub issues #256 #257 GitLab issue #416.
|
||||||
|
- Add support for workflow triggers.
|
||||||
|
- Add support for workflow actions. Includes actions to attach and remove tags,
|
||||||
|
grant and remove access and perform an HTTP POST request.
|
||||||
|
- Add support for rendering workflows. Required graphviz binary.
|
||||||
|
- Add support for unbinding sub menus.
|
||||||
|
- Fix mailing profile test view.
|
||||||
|
- Disregard the last 3 dots that mark the end of the YAML document.
|
||||||
|
- Add support for multiple dashboards.
|
||||||
|
- Add support for removing dashboard widgets.
|
||||||
|
- Convert document version view to item list view.
|
||||||
|
- Add support for browsing individual document versions.
|
||||||
|
- Add support for dropdown menus to the item list view template.
|
||||||
|
- Add support for preserving the file extenstion when downloading a document
|
||||||
|
version. GitLab #415.
|
||||||
|
- Split OCR app into OCR and parsing.
|
||||||
|
- Use the literal 'System' instead of the target name when
|
||||||
|
the action user in unknown.
|
||||||
|
- When changing document types, don't delete the old metadata that is
|
||||||
|
also found in the new document type. GitLab issue #421.
|
||||||
|
- Change the permission needed to attach and remove tags.
|
||||||
|
- Reduces debug verbosity during tests.
|
||||||
|
- Remove the NoMimetype match exception. Not needed now that this is
|
||||||
|
a separate app from the OCR app.
|
||||||
|
- Make error messages persistent.
|
||||||
|
- Add 'Action object' column to the event list. Display the
|
||||||
|
object or target type (document, tag, etc).
|
||||||
|
- Rebalance tag permissions. Change the required permission to attach
|
||||||
|
and remove a tag from view to attach and remove respectively.
|
||||||
|
- Start of error log consolidation sub project.
|
||||||
|
- Implement field order for the action dynamic forms.
|
||||||
|
Perform action class validation by importing the class and
|
||||||
|
not relying on an instance of action model, which might not
|
||||||
|
exisit when still creating the action.
|
||||||
|
- Navigation improvements in the workflow app.
|
||||||
|
- Rename index nodes to index levels.
|
||||||
|
- Avoid Maximum recursion depth exceeded exception on index document
|
||||||
|
list view.
|
||||||
|
|
||||||
|
Removals
|
||||||
|
--------
|
||||||
|
- Folders app.
|
||||||
|
- The view to submit all document for OCR. The view to submit documents by type
|
||||||
|
substitutes this once.
|
||||||
|
- The PDFMiner parser.
|
||||||
|
|
||||||
|
Upgrading from a previous version
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using PIP
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Type in the console::
|
||||||
|
|
||||||
|
$ pip install -U mayan-edms
|
||||||
|
|
||||||
|
the requirements will also be updated automatically.
|
||||||
|
|
||||||
|
Using Git
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||||
|
|
||||||
|
$ git reset --hard HEAD
|
||||||
|
$ git pull
|
||||||
|
|
||||||
|
otherwise download the compressed archived and uncompress it overriding the
|
||||||
|
existing installation.
|
||||||
|
|
||||||
|
Next upgrade/add the new requirements::
|
||||||
|
|
||||||
|
$ pip install --upgrade -r requirements.txt
|
||||||
|
|
||||||
|
Common steps
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Migrate existing database schema with::
|
||||||
|
|
||||||
|
$ mayan-edms.py performupgrade
|
||||||
|
|
||||||
|
Add new static media::
|
||||||
|
|
||||||
|
$ mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
|
The upgrade procedure is now complete.
|
||||||
|
|
||||||
|
|
||||||
|
Backward incompatible changes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
* None
|
||||||
|
|
||||||
|
Bugs fixed or issues closed
|
||||||
|
===========================
|
||||||
|
|
||||||
|
* `GitHub issue #250 <https://github.com/mayan-edms/mayan-edms/issues/250>`_ migrate fails on documents.0025_auto_20150718_0742
|
||||||
|
* `GitHub issue #251 <https://github.com/mayan-edms/mayan-edms/issues/251>`_ migrate fails on documents.0032_auto_20160315_0537
|
||||||
|
* `GitHub issue #256 <https://github.com/mayan-edms/mayan-edms/issues/256>`_ Make it possible to adjust values in apps\converter\literals.py from Settings
|
||||||
|
* `GitHub issue #257 <https://github.com/mayan-edms/mayan-edms/issues/257>`_ Use the DEFAULT_FILE_FORMAT from literals.py in python.py
|
||||||
|
* `GitHub issue #261 <https://github.com/mayan-edms/mayan-edms/issues/261>`_ fix_orientation method causes document add to crash
|
||||||
|
* `GitHub issue #263 <https://github.com/mayan-edms/mayan-edms/issues/263>`_ Typo in mayan/apps/ocr/migrations/0004_documenttypesettings.py
|
||||||
|
* `GitLab issue #172 <https://gitlab.com/mayan-edms/mayan-edms/issues/172>`_ Metadata default value ignored when changing document type
|
||||||
|
* `GitLab issue #329 <https://gitlab.com/mayan-edms/mayan-edms/issues/329>`_ Move code to Python 3
|
||||||
|
* `GitLab issue #415 <https://gitlab.com/mayan-edms/mayan-edms/issues/415>`_ Wrong filename when downloading document version
|
||||||
|
* `GitLab issue #416 <https://gitlab.com/mayan-edms/mayan-edms/issues/416>`_ DPI value for OCR not taken from document metadata
|
||||||
|
* `GitLab issue #417 <https://gitlab.com/mayan-edms/mayan-edms/issues/417>`_ Display document cabinets in documents list
|
||||||
|
* `GitLab issue #421 <https://gitlab.com/mayan-edms/mayan-edms/issues/421>`_ Metadata lost when changing document type
|
||||||
|
|
||||||
|
|
||||||
|
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||||
625
docs/releases/3.0.rst
Normal file
@@ -17,11 +17,43 @@ Final releases
|
|||||||
Below are release notes through Mayan EDMS |version| and its minor releases. Newer
|
Below are release notes through Mayan EDMS |version| and its minor releases. Newer
|
||||||
versions of the documentation contain the release notes for any later releases.
|
versions of the documentation contain the release notes for any later releases.
|
||||||
|
|
||||||
|
3.0 series
|
||||||
|
----------
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
3.0
|
||||||
|
|
||||||
|
|
||||||
2.0 series
|
2.0 series
|
||||||
----------
|
----------
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
|
2.7.3
|
||||||
|
2.7.2
|
||||||
|
2.7.1
|
||||||
|
2.7
|
||||||
|
2.6.4
|
||||||
|
2.6.3
|
||||||
|
2.6.2
|
||||||
|
2.6.1
|
||||||
|
2.6
|
||||||
|
2.5.2
|
||||||
|
2.5.1
|
||||||
|
2.5
|
||||||
|
2.4
|
||||||
|
2.3
|
||||||
|
2.2
|
||||||
|
2.1.11
|
||||||
|
2.1.10
|
||||||
|
2.1.9
|
||||||
|
2.1.8
|
||||||
|
2.1.7
|
||||||
|
2.1.6
|
||||||
|
2.1.5
|
||||||
|
2.1.4
|
||||||
|
2.1.3
|
||||||
2.1.2
|
2.1.2
|
||||||
2.1.1
|
2.1.1
|
||||||
2.1
|
2.1
|
||||||
|
|||||||
@@ -11,11 +11,13 @@ system-wide.
|
|||||||
.. blockdiag::
|
.. blockdiag::
|
||||||
|
|
||||||
blockdiag {
|
blockdiag {
|
||||||
|
default_shape = roundedbox
|
||||||
|
|
||||||
document [ label = 'Document' ];
|
document [ label = 'Document' ];
|
||||||
role [ label = 'Role' ];
|
role [ label = 'Role' ];
|
||||||
permission [ label = 'Permission' ];
|
permission [ label = 'Permission' ];
|
||||||
|
|
||||||
role -> document <- permission;
|
role -> permission -> document;
|
||||||
}
|
}
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
@@ -23,11 +25,13 @@ Example:
|
|||||||
.. blockdiag::
|
.. blockdiag::
|
||||||
|
|
||||||
blockdiag {
|
blockdiag {
|
||||||
|
default_shape = roundedbox
|
||||||
|
|
||||||
document [ label = '2015 Payroll report.txt', width=200 ];
|
document [ label = '2015 Payroll report.txt', width=200 ];
|
||||||
role [ label = 'Accountants' ];
|
role [ label = 'Accountants' ];
|
||||||
permission [ label = 'View document' ];
|
permission [ label = 'View document' ];
|
||||||
|
|
||||||
role -> document <- permission;
|
role -> permission -> document;
|
||||||
}
|
}
|
||||||
|
|
||||||
In this scenario only users in groups belonging to the ``Accountants`` role
|
In this scenario only users in groups belonging to the ``Accountants`` role
|
||||||
@@ -43,11 +47,14 @@ permission for all documents of that type.
|
|||||||
.. blockdiag::
|
.. blockdiag::
|
||||||
|
|
||||||
blockdiag {
|
blockdiag {
|
||||||
|
default_shape = roundedbox
|
||||||
document_type [ label = 'Document type' ];
|
document_type [ label = 'Document type' ];
|
||||||
role [ label = 'Role' ];
|
role [ label = 'Role' ];
|
||||||
permission [ label = 'Permission' ];
|
permission [ label = 'Permission' ];
|
||||||
|
documents [shape = "note", stacked];
|
||||||
|
|
||||||
role -> document_type <- permission;
|
role -> permission -> document_type ;
|
||||||
|
document_type -> documents [folded, label = "inherit" ];
|
||||||
}
|
}
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
@@ -55,11 +62,14 @@ Example:
|
|||||||
.. blockdiag::
|
.. blockdiag::
|
||||||
|
|
||||||
blockdiag {
|
blockdiag {
|
||||||
|
default_shape = roundedbox
|
||||||
document_type [ label = 'Payroll reports', width=200 ];
|
document_type [ label = 'Payroll reports', width=200 ];
|
||||||
role [ label = 'Accountants' ];
|
role [ label = 'Accountants' ];
|
||||||
permission [ label = 'View document' ];
|
permission [ label = 'View document' ];
|
||||||
|
documents [shape = "note", stacked, label="payroll_report*.pdf" ];
|
||||||
|
|
||||||
role -> document_type <- permission;
|
role -> permission -> document_type ;
|
||||||
|
document_type -> documents [folded, label = "inherit" ];
|
||||||
}
|
}
|
||||||
|
|
||||||
The role ``Accountants`` is given the permission ``document view`` for the
|
The role ``Accountants`` is given the permission ``document view`` for the
|
||||||
|
|||||||
@@ -4,12 +4,66 @@ Backups
|
|||||||
|
|
||||||
To backup your install of Mayan EDMS just copy the actual document files and
|
To backup your install of Mayan EDMS just copy the actual document files and
|
||||||
the database content. If you are using the default storage backend, the
|
the database content. If you are using the default storage backend, the
|
||||||
document files should be found in ``mayan/media/document_storage/``.
|
document files should be found in the ``media`` folder of your installation.
|
||||||
|
|
||||||
To dump the content of your database manager refer to the documentation chapter
|
To dump the content of your database manager refer to the documentation chapter
|
||||||
regarding database data "dumping".
|
regarding database data "dumping".
|
||||||
|
|
||||||
Example:
|
Here is an example of how to perform a backup and a restore of a PostgreSQL
|
||||||
|
database.
|
||||||
|
|
||||||
|
To dump the database into an SQL text file::
|
||||||
|
|
||||||
|
pg_dump -h <host> -U <database user> -c <database name> -W > `date +%Y-%m-%d"_"%H-%M-%S`.sql
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
pg_dump -h 127.0.0.1 -U mayan -c mayan -W > `date +%Y-%m-%d"_"%H-%M-%S`.sql
|
||||||
|
|
||||||
|
To restore the database from the SQL text file::
|
||||||
|
|
||||||
|
psql -h <host> -U <database user> -d <database name> -W -f <sql dump file>
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
psql -h 127.0.0.1 -U mayan -d mayan -W -f 2018-06-07_18-10-56.sql
|
||||||
|
|
||||||
|
Here is an example of how to perform a backup and a restore of a PostgreSQL
|
||||||
|
Docker container using a compressed dump file. A dump file is not compatible or
|
||||||
|
can be used interchangeable with an SQL text file.
|
||||||
|
|
||||||
|
To backup a PostgreSQL Docker container::
|
||||||
|
|
||||||
|
docker exec <container name> pg_dump -U <database user> -Fc -c <database name> > `date +%Y-%m-%d"_"%H-%M-%S`.dump
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
docker exec mayan-edms-db pg_dump -U mayan -Fc -c mayan > `date +%Y-%m-%d"_"%H-%M-%S`.dump
|
||||||
|
|
||||||
|
This will produce a compressed dump file with the current date and time as the filename.
|
||||||
|
|
||||||
|
To restore a PostgreSQL Docker container::
|
||||||
|
|
||||||
|
docker exec -i <container name> pg_restore -U <database user> -d <database name> < <dump file>
|
||||||
|
|
||||||
|
Since it is not possible to drop a currently open PostgreSQL database, this
|
||||||
|
command must be used on a new and empty PostsgreSQL container.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
docker run -d \
|
||||||
|
--name mayan-edms-pg-new \
|
||||||
|
--restart=always \
|
||||||
|
-p 5432:5432 \
|
||||||
|
-e POSTGRES_USER=mayan \
|
||||||
|
-e POSTGRES_DB=mayan \
|
||||||
|
-e POSTGRES_PASSWORD=mayanuserpass \
|
||||||
|
-v /docker-volumes/mayan-edms/postgres-new:/var/lib/postgresql/data \
|
||||||
|
-d postgres:9.5
|
||||||
|
|
||||||
|
docker exec -i mayan-edms-pg-new pg_restore -U mayan -d mayan < 2018-06-07_17-09-34.dump
|
||||||
|
|
||||||
|
More information at:
|
||||||
|
|
||||||
- Postgresl: http://www.postgresql.org/docs/current/static/backup.html
|
- Postgresl: http://www.postgresql.org/docs/current/static/backup.html
|
||||||
- MySQL: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
|
- MySQL: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
|
||||||
|
|||||||
217
docs/topics/caa_entity.rst
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
==================================================
|
||||||
|
Mayan EDMS Entity Contributor Assignment Agreement
|
||||||
|
==================================================
|
||||||
|
|
||||||
|
Thank you for your interest in contributing to Mayan EDMS ("We" or "Us").
|
||||||
|
|
||||||
|
This contributor agreement ("Agreement") documents the rights granted by
|
||||||
|
contributors to Us. To make this document effective, please print it, sign it
|
||||||
|
(by copyright holder or authorized party) and send it to Us by email to
|
||||||
|
caa@mayan-edms.com. This is a legally binding document, so please read it
|
||||||
|
carefully before agreeing to it. The Agreement may cover more than one
|
||||||
|
software project managed by Us.
|
||||||
|
|
||||||
|
1. Definitions
|
||||||
|
--------------
|
||||||
|
"You" means any Legal Entity on behalf of whom a Contribution has been received
|
||||||
|
by Us. "Legal Entity" means an entity which is not a natural person.
|
||||||
|
"Affiliates" means other Legal Entities that control, are controlled by, or
|
||||||
|
under common control with that Legal Entity. For the purposes of this
|
||||||
|
definition, "control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such Legal Entity, whether by contract or otherwise,
|
||||||
|
(ii) ownership of fifty percent (50%) or more of the outstanding shares or
|
||||||
|
securities which vote to elect the management or other persons who direct such
|
||||||
|
Legal Entity or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"Contribution" means any work of authorship that is Submitted by You to Us in
|
||||||
|
which You own or assert ownership of the Copyright. We cannot accept
|
||||||
|
contributions for which you do not own the Copyright or for which you don't
|
||||||
|
have the necesary legal power to transfer.
|
||||||
|
|
||||||
|
"Copyright" means all rights protecting works of authorship owned or controlled
|
||||||
|
by You or Your Affiliates, including copyright, moral and neighboring rights,
|
||||||
|
as appropriate, for the full term of their existence including any extensions
|
||||||
|
by You.
|
||||||
|
|
||||||
|
"Material" means the work of authorship which is made available by Us to third
|
||||||
|
parties. When this Agreement covers more than one software project, the
|
||||||
|
Material means the work of authorship to which the Contribution was Submitted.
|
||||||
|
After You Submit the Contribution, it may be included in the Material.
|
||||||
|
|
||||||
|
"Submit" means any form of electronic, verbal, or written communication sent
|
||||||
|
to Us or our representatives, including but not limited to electronic mailing
|
||||||
|
lists, source code control systems, and issue tracking systems that are managed
|
||||||
|
by, or on behalf of, Us for the purpose of discussing and improving the
|
||||||
|
Material, but excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by You as "Not a Contribution."
|
||||||
|
|
||||||
|
"Submission Date" means the date on which You Submit a Contribution to Us.
|
||||||
|
|
||||||
|
"Effective Date" means the date You execute this Agreement or the date You
|
||||||
|
first Submit a Contribution to Us, whichever is earlier.
|
||||||
|
|
||||||
|
2. Grant of Rights
|
||||||
|
------------------
|
||||||
|
2.1 Copyright Assignment
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
a. At the time the Contribution is Submitted, You assign to Us all right, title,
|
||||||
|
and interest worldwide in all Copyright covering the Contribution; provided
|
||||||
|
that this transfer is conditioned upon compliance with Section 2.3.
|
||||||
|
|
||||||
|
b. To the extent that any of the rights in Section 2.1(a) cannot be assigned by
|
||||||
|
You to Us, You grant to Us a perpetual, worldwide, exclusive, royalty-free,
|
||||||
|
transferable, irrevocable license under such non-assigned rights, with rights
|
||||||
|
to sublicense through multiple tiers of sublicensees, to practice such
|
||||||
|
non-assigned rights, including, but not limited to, the right to reproduce,
|
||||||
|
modify, display, perform and distribute the Contribution; provided that this
|
||||||
|
license is conditioned upon compliance with Section 2.3.
|
||||||
|
|
||||||
|
c. To the extent that any of the rights in Section 2.1(a) can neither be
|
||||||
|
assigned nor licensed by You to Us, You irrevocably waive and agree never to
|
||||||
|
assert such rights against Us, any of our successors in interest, or any of
|
||||||
|
our licensees, either direct or indirect; provided that this agreement not
|
||||||
|
to assert is conditioned upon compliance with Section 2.3.
|
||||||
|
|
||||||
|
d. Upon such transfer of rights to Us, the Contribution will be licenses under
|
||||||
|
the terms of the Material.
|
||||||
|
|
||||||
|
2.2 Patent License
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
For patent claims including, without limitation, method, process, and apparatus
|
||||||
|
claims which You or Your Affiliates own, control or have the right to grant,
|
||||||
|
now or in the future, You grant to Us a perpetual, worldwide, non-exclusive,
|
||||||
|
transferable, royalty-free, irrevocable patent license, with the right to
|
||||||
|
sublicense these rights to multiple tiers of sublicensees, to make, have made,
|
||||||
|
use, sell, offer for sale, import and otherwise transfer the Contribution and
|
||||||
|
the Contribution in combination with the Material (and portions of such
|
||||||
|
combination). This license is granted only to the extent that the exercise of
|
||||||
|
the licensed rights infringes such patent claims; and provided that this license
|
||||||
|
is conditioned upon compliance with Section 2.3.
|
||||||
|
|
||||||
|
2.3 Outbound License
|
||||||
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
As a condition on the grant of rights in Sections 2.1 and 2.2, We agree to
|
||||||
|
license the Contribution only under the terms of the license or licenses which
|
||||||
|
We are using on the Submission Date for the Material (including any rights to
|
||||||
|
adopt any future version of a license if permitted).
|
||||||
|
|
||||||
|
2.4 Moral Rights
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
If moral rights apply to the Contribution, to the maximum extent permitted by
|
||||||
|
law, You waive and agree not to assert such moral rights against Us or our
|
||||||
|
successors in interest, or any of our licensees, either direct or indirect.
|
||||||
|
|
||||||
|
2.5 Our Rights
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
You acknowledge that We are not obligated to use Your Contribution as part of
|
||||||
|
the Material and may decide to include any Contribution We consider appropriate.
|
||||||
|
|
||||||
|
2.6 Reservation of Rights
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Any rights not expressly assigned or licensed under this section are expressly
|
||||||
|
reserved by You.
|
||||||
|
|
||||||
|
3. Agreement
|
||||||
|
------------
|
||||||
|
You confirm that:
|
||||||
|
|
||||||
|
a. You have the legal authority to enter into this Agreement.
|
||||||
|
|
||||||
|
b. You or Your Affiliates own the Copyright and patent claims covering the
|
||||||
|
Contribution which are required to grant the rights under Section 2.
|
||||||
|
|
||||||
|
c. The grant of rights under Section 2 does not violate any grant of rights
|
||||||
|
which You or Your Affiliates have made to third parties.
|
||||||
|
|
||||||
|
|
||||||
|
4. Disclaimer
|
||||||
|
-------------
|
||||||
|
EXCEPT FOR THE EXPRESS WARRANTIES IN SECTION 3, THE CONTRIBUTION IS PROVIDED
|
||||||
|
"AS IS". MORE PARTICULARLY, ALL EXPRESS OR IMPLIED WARRANTIES INCLUDING,
|
||||||
|
WITHOUT LIMITATION, ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED BY YOU TO US
|
||||||
|
AND BY US TO YOU. TO THE EXTENT THAT ANY SUCH WARRANTIES CANNOT BE DISCLAIMED,
|
||||||
|
SUCH WARRANTY IS LIMITED IN DURATION TO THE MINIMUM PERIOD PERMITTED BY LAW.
|
||||||
|
|
||||||
|
5. Consequential Damage Waiver
|
||||||
|
------------------------------
|
||||||
|
TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL YOU OR US
|
||||||
|
BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF ANTICIPATED SAVINGS, LOSS OF DATA,
|
||||||
|
INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL AND EXEMPLARY DAMAGES ARISING OUT
|
||||||
|
OF THIS AGREEMENT REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT
|
||||||
|
OR OTHERWISE) UPON WHICH THE CLAIM IS BASED.
|
||||||
|
|
||||||
|
6. Miscellaneous
|
||||||
|
----------------
|
||||||
|
6.1 Juristiction
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
This Agreement will be governed by and construed in accordance with the laws of
|
||||||
|
Puerto Rico excluding its conflicts of law provisions. Under certain circumstances,
|
||||||
|
the governing law in this section might be superseded by the United Nations
|
||||||
|
Convention on Contracts for the International Sale of Goods ("UN Convention")
|
||||||
|
and the parties intend to avoid the application of the UN Convention to this
|
||||||
|
Agreement and, thus, exclude the application of the UN Convention in its
|
||||||
|
entirety to this Agreement.
|
||||||
|
|
||||||
|
6.2 Acceptance
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
This Agreement sets out the entire agreement between You and Us for Your
|
||||||
|
Contributions to Us and overrides all other agreements or understandings.
|
||||||
|
|
||||||
|
6.3 Third parties
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
If You or We assign the rights or obligations received through this Agreement
|
||||||
|
to a third party, as a condition of the assignment, that third party must
|
||||||
|
agree in writing to abide by all the rights and obligations in the Agreement.
|
||||||
|
|
||||||
|
6.4 Unmet responsabilities
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
The failure of either party to require performance by the other party of any
|
||||||
|
provision of this Agreement in one situation shall not affect the right of a
|
||||||
|
party to require such performance at any time in the future. A waiver of
|
||||||
|
performance under a provision in one situation shall not be considered a
|
||||||
|
waiver of the performance of the provision in the future or a waiver of the
|
||||||
|
provision in its entirety.
|
||||||
|
|
||||||
|
6.5 Continuation
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
If any provision of this Agreement is found void and unenforceable, such
|
||||||
|
provision will be replaced to the extent possible with a provision that comes
|
||||||
|
closest to the meaning of the original provision and which is enforceable.
|
||||||
|
The terms and conditions set forth in this Agreement shall apply
|
||||||
|
notwithstanding any failure of essential purpose of this Agreement or any
|
||||||
|
limited remedy to the maximum extent possible under law.
|
||||||
|
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
|
||||||
|
Name: _________________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
Email: ________________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
Address: ______________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
Address (cont): _______________________________________
|
||||||
|
|
||||||
|
|
||||||
|
Country: ______________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
Phone number: _________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
Fax number: ___________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_______________________________________________________
|
||||||
|
Signature
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Mayan EDMS Entity CAA Version 1.0 April 8, 2018
|
||||||
211
docs/topics/caa_individual.rst
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
======================================================
|
||||||
|
Mayan EDMS Individual Contributor Assignment Agreement
|
||||||
|
======================================================
|
||||||
|
|
||||||
|
Thank you for your interest in contributing to Mayan EDMS ("We" or "Us").
|
||||||
|
|
||||||
|
This contributor agreement ("Agreement") documents the rights granted by
|
||||||
|
contributors to Us. To make this document effective, please print it, sign it
|
||||||
|
(by copyright holder or authorized party) and send it to Us by email to
|
||||||
|
caa@mayan-edms.com. This is a legally binding document, so please read it
|
||||||
|
carefully before agreeing to it. The Agreement may cover more than one
|
||||||
|
software project managed by Us.
|
||||||
|
|
||||||
|
1. Definitions
|
||||||
|
--------------
|
||||||
|
|
||||||
|
"You" means the individual who Submits a Contribution to Us.
|
||||||
|
|
||||||
|
"Contribution" means any work of authorship that is Submitted by You to Us
|
||||||
|
in which You own or assert ownership of the Copyright. We cannot accept
|
||||||
|
contributions for which you do not own the Copyright or for which you don't
|
||||||
|
have the necesary legal power to transfer.
|
||||||
|
|
||||||
|
"Copyright" means all rights protecting works of authorship owned or
|
||||||
|
controlled by You, including copyright, moral and neighboring rights,
|
||||||
|
as appropriate, for the full term of their existence including any extensions
|
||||||
|
by You.
|
||||||
|
|
||||||
|
"Material" means the work of authorship which is made available by Us to third
|
||||||
|
parties. When this Agreement covers more than one software project, the Material
|
||||||
|
means the work of authorship to which the Contribution was Submitted. After
|
||||||
|
You Submit the Contribution, it may be included in the Material.
|
||||||
|
|
||||||
|
"Submit" means any form of electronic, verbal, or written communication
|
||||||
|
sent to Us or our representatives, including but not limited to
|
||||||
|
electronic mailing lists, source code control systems, and issue tracking systems
|
||||||
|
that are managed by, or on behalf of, Us for the purpose of discussing and
|
||||||
|
improving the Material, but excluding communication that is conspicuously marked
|
||||||
|
or otherwise designated in writing by You as "Not a Contribution."
|
||||||
|
|
||||||
|
"Submission Date" means the date on which You Submit a Contribution to Us.
|
||||||
|
|
||||||
|
"Effective Date" means the date You execute this Agreement or the date You first
|
||||||
|
Submit a Contribution to Us, whichever is earlier.
|
||||||
|
|
||||||
|
2. Grant of Rights
|
||||||
|
------------------
|
||||||
|
|
||||||
|
2.1 Copyright Assignment
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
a. At the time the Contribution is Submitted, You assign to Us all right,
|
||||||
|
title, and interest worldwide in all Copyright covering the Contribution;
|
||||||
|
provided that this transfer is conditioned upon compliance with Section 2.3.
|
||||||
|
|
||||||
|
b. To the extent that any of the rights in Section 2.1(a) cannot be assigned
|
||||||
|
by You to Us, You grant to Us a perpetual, worldwide, exclusive, royalty-free,
|
||||||
|
transferable, irrevocable license under such non-assigned rights, with rights
|
||||||
|
to sublicense through multiple tiers of sublicensees, to practice such
|
||||||
|
non-assigned rights, including, but not limited to, the right to reproduce,
|
||||||
|
modify, display, perform and distribute the Contribution; provided that
|
||||||
|
this license is conditioned upon compliance with Section 2.3.
|
||||||
|
|
||||||
|
c. To the extent that any of the rights in Section 2.1(a) can neither be
|
||||||
|
assigned nor licensed by You to Us, You irrevocably waive and agree never to
|
||||||
|
assert such rights against Us, any of our successors in interest, or any of
|
||||||
|
our licensees, either direct or indirect; provided that this agreement not
|
||||||
|
to assert is conditioned upon compliance with Section 2.3.
|
||||||
|
|
||||||
|
d. Upon such transfer of rights to Us, the Contribution will be licenses under
|
||||||
|
the terms of the Material.
|
||||||
|
|
||||||
|
2.2 Patent License
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
For patent claims including, without limitation, method, process, and apparatus
|
||||||
|
claims which You own, control or have the right to grant, now or in the future,
|
||||||
|
You grant to Us a perpetual, worldwide, non-exclusive, transferable, royalty-free,
|
||||||
|
irrevocable patent license, with the right to sublicense these rights to multiple
|
||||||
|
tiers of sublicensees, to make, have made, use, sell, offer for sale, import and
|
||||||
|
otherwise transfer the Contribution and the Contribution in combination with
|
||||||
|
the Material (and portions of such combination). This license is granted only
|
||||||
|
to the extent that the exercise of the licensed rights infringes such patent claims;
|
||||||
|
and provided that this license is conditioned upon compliance with Section 2.3.
|
||||||
|
|
||||||
|
2.3 Outbound License
|
||||||
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
As a condition on the grant of rights in Sections 2.1 and 2.2, We agree to
|
||||||
|
license the Contribution only under the terms of the license or licenses which
|
||||||
|
We are using on the Submission Date for the Material (including any rights to
|
||||||
|
adopt any future version of a license if permitted).
|
||||||
|
|
||||||
|
2.4 Moral Rights
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
If moral rights apply to the Contribution, to the maximum extent permitted by law,
|
||||||
|
You waive and agree not to assert such moral rights against Us or our successors
|
||||||
|
in interest, or any of our licensees, either direct or indirect.
|
||||||
|
|
||||||
|
2.5 Our Rights
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
You acknowledge that We are not obligated to use Your Contribution as part of
|
||||||
|
the Material and may decide to include any Contribution We consider appropriate.
|
||||||
|
|
||||||
|
2.6 Reservation of Rights
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Any rights not expressly assigned or licensed under this section are expressly
|
||||||
|
reserved by You.
|
||||||
|
|
||||||
|
3. Agreement
|
||||||
|
------------
|
||||||
|
You confirm that:
|
||||||
|
|
||||||
|
a. You have the legal authority to enter into this Agreement.
|
||||||
|
|
||||||
|
b. You own the Copyright and patent claims covering the Contribution which are
|
||||||
|
required to grant the rights under Section 2.
|
||||||
|
|
||||||
|
c. The grant of rights under Section 2 does not violate any grant of rights
|
||||||
|
which You have made to third parties, including Your employer. If You are an
|
||||||
|
employee, You have had Your employer approve this Agreement or sign the Entity
|
||||||
|
version of this document. If You are less than eighteen years old, please have
|
||||||
|
Your parents or guardian sign the Agreement.
|
||||||
|
|
||||||
|
4. Disclaimer
|
||||||
|
-------------
|
||||||
|
EXCEPT FOR THE EXPRESS WARRANTIES IN SECTION 3, THE CONTRIBUTION IS PROVIDED
|
||||||
|
"AS IS". MORE PARTICULARLY, ALL EXPRESS OR IMPLIED WARRANTIES INCLUDING, WITHOUT
|
||||||
|
LIMITATION, ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED BY YOU TO US AND BY US
|
||||||
|
TO YOU. TO THE EXTENT THAT ANY SUCH WARRANTIES CANNOT BE DISCLAIMED, SUCH
|
||||||
|
WARRANTY IS LIMITED IN DURATION TO THE MINIMUM PERIOD PERMITTED BY LAW.
|
||||||
|
|
||||||
|
5. Consequential Damage Waiver
|
||||||
|
------------------------------
|
||||||
|
TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL YOU OR US
|
||||||
|
BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF ANTICIPATED SAVINGS, LOSS OF DATA,
|
||||||
|
INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL AND EXEMPLARY DAMAGES ARISING OUT
|
||||||
|
OF THIS AGREEMENT REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT
|
||||||
|
OR OTHERWISE) UPON WHICH THE CLAIM IS BASED.
|
||||||
|
|
||||||
|
6. Miscellaneous
|
||||||
|
----------------
|
||||||
|
6.1 Juristiction
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
This Agreement will be governed by and construed in accordance with the laws of
|
||||||
|
Puerto Rico excluding its conflicts of law provisions. Under certain circumstances,
|
||||||
|
the governing law in this section might be superseded by the United Nations
|
||||||
|
Convention on Contracts for the International Sale of Goods ("UN Convention")
|
||||||
|
and the parties intend to avoid the application of the UN Convention to this
|
||||||
|
Agreement and, thus, exclude the application of the UN Convention in its
|
||||||
|
entirety to this Agreement.
|
||||||
|
|
||||||
|
6.2 Acceptance
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
This Agreement sets out the entire agreement between You and Us for Your
|
||||||
|
Contributions to Us and overrides all other agreements or understandings.
|
||||||
|
|
||||||
|
6.3 Third parties
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
If You or We assign the rights or obligations received through this Agreement
|
||||||
|
to a third party, as a condition of the assignment, that third party must
|
||||||
|
agree in writing to abide by all the rights and obligations in the Agreement.
|
||||||
|
|
||||||
|
6.4 Unmet responsabilities
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
The failure of either party to require performance by the other party of any
|
||||||
|
provision of this Agreement in one situation shall not affect the right of a
|
||||||
|
party to require such performance at any time in the future. A waiver of
|
||||||
|
performance under a provision in one situation shall not be considered a
|
||||||
|
waiver of the performance of the provision in the future or a waiver of the
|
||||||
|
provision in its entirety.
|
||||||
|
|
||||||
|
6.5 Continuation
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
If any provision of this Agreement is found void and unenforceable,
|
||||||
|
such provision will be replaced to the extent possible with a provision that
|
||||||
|
comes closest to the meaning of the original provision and which is enforceable.
|
||||||
|
The terms and conditions set forth in this Agreement shall apply notwithstanding
|
||||||
|
any failure of essential purpose of this Agreement or any limited remedy to
|
||||||
|
the maximum extent possible under law.
|
||||||
|
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
|
||||||
|
Name: _________________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
Email: ________________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
Address: ______________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
Address (cont): _______________________________________
|
||||||
|
|
||||||
|
|
||||||
|
Country: ______________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
Phone number: _________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
Fax number: ___________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_______________________________________________________
|
||||||
|
Signature
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Mayan EDMS Individual CAA Version 1.0 April 8, 2018
|
||||||
662
docs/topics/code_statistics.rst
Normal file
@@ -1,38 +0,0 @@
|
|||||||
.. _contributors:
|
|
||||||
|
|
||||||
============
|
|
||||||
Contributors
|
|
||||||
============
|
|
||||||
|
|
||||||
|
|
||||||
How to contribute?
|
|
||||||
------------------
|
|
||||||
|
|
||||||
You can help further the development of Mayan EDMS by testing, reporting
|
|
||||||
bugs, submitting documentation or code patches.
|
|
||||||
|
|
||||||
Lead developer
|
|
||||||
--------------
|
|
||||||
* Roberto Rosario (roberto.rosario@mayan-edms.com) <https://twitter.com/siloraptor>
|
|
||||||
|
|
||||||
Contributors (in alphabetical order)
|
|
||||||
------------------------------------
|
|
||||||
* Aziz M. Bookwala (https://github.com/azizmb)
|
|
||||||
* Bertrand Bordage (https://github.com/BertrandBordage)
|
|
||||||
* Brian E (brian@realize.org)
|
|
||||||
* David Herring (https://github.com/abadger1406)
|
|
||||||
* Emlyn Clay (https://github.com/EmlynC)
|
|
||||||
* Jens Kadenbach (https://github.com/audax)
|
|
||||||
* Kolmar Kafran
|
|
||||||
* Helga Carrero
|
|
||||||
* IHLeanne (https://github.com/IHLeanne)
|
|
||||||
* Iliya Georgiev (ikgeorgiev@gmail.com)
|
|
||||||
* Lars Kruse (devel@sumpfralle.de)
|
|
||||||
* Mathias Behrle <mbehrle@m9s.biz>
|
|
||||||
* Meurig Freeman (https://github.com/meurig)
|
|
||||||
* Nate Aune (nate@appsembler.com)
|
|
||||||
* Paul Whipp [https://github.com/pwhipp] [http://paulwhippconsulting.com]
|
|
||||||
* Rafael Esparra <rafael.esparra1@upr.edu>
|
|
||||||
* Sergey Glita (s.v.glita@gmail.com)
|
|
||||||
* Simone Federici [https://twitter.com/aldaranalton] [https://github.com/simone]
|
|
||||||
* Webfaction (https://www.webfaction.com)
|
|
||||||
@@ -1,258 +1,154 @@
|
|||||||
=========
|
.. _deploying:
|
||||||
Deploying
|
|
||||||
=========
|
|
||||||
|
|
||||||
OS "bare metal"
|
===================
|
||||||
===============
|
Advanced deployment
|
||||||
|
===================
|
||||||
|
|
||||||
Like other Django based projects Mayan EDMS can be deployed in a wide variety
|
Mayan EDMS should be deployed like any other Django_ project and
|
||||||
of ways. The method provided below is only a bare minimum example.
|
preferably using virtualenv_. Below are some ways to deploy and use Mayan EDMS.
|
||||||
These instructions are independent of the instructions mentioned in the
|
Do not use more than one method.
|
||||||
:doc:`installation` chapter but assume you have already made a test install to
|
|
||||||
test the compatibility of your operating system. These instruction are for
|
|
||||||
Ubuntu 15.04.
|
|
||||||
|
|
||||||
Switch to superuser::
|
Being a Django_ and a Python_ project, familiarity with these technologies is
|
||||||
|
recommended to better understand why Mayan EDMS does some of the things it
|
||||||
|
does.
|
||||||
|
|
||||||
sudo -i
|
Binary dependencies
|
||||||
|
===================
|
||||||
|
|
||||||
Install all system dependencies::
|
Ubuntu
|
||||||
|
------
|
||||||
|
|
||||||
apt-get install nginx supervisor redis-server postgresql \
|
If using a Debian_ or Ubuntu_ based Linux distribution, get the executable
|
||||||
libpq-dev libjpeg-dev libmagic1 libpng-dev libreoffice \
|
requirements using::
|
||||||
libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv \
|
|
||||||
tesseract-ocr unpaper poppler-utils -y
|
|
||||||
|
|
||||||
Change to the directory where the project will be deployed::
|
sudo apt-get install g++ gcc ghostscript gnupg1 graphviz libjpeg-dev libmagic1 \
|
||||||
|
libpq-dev libpng-dev libreoffice libtiff-dev poppler-utils postgresql \
|
||||||
|
python-dev python-pip python-virtualenv redis-server sane-utils supervisor \
|
||||||
|
tesseract-ocr zlib1g-dev -y
|
||||||
|
|
||||||
cd /usr/share
|
Create an user account for the installation::
|
||||||
|
|
||||||
|
sudo adduser mayan --disabled-password --disabled-login --no-create-home --gecos ""
|
||||||
|
|
||||||
|
Create the parent directory where the project will be deployed::
|
||||||
|
|
||||||
|
sudo mkdir -p /opt
|
||||||
|
|
||||||
Create the Python virtual environment for the installation::
|
Create the Python virtual environment for the installation::
|
||||||
|
|
||||||
virtualenv mayan-edms
|
sudo virtualenv /opt/mayan-edms
|
||||||
|
|
||||||
Activate the virtualenv::
|
Create the folder for the Mayan EDMS data::
|
||||||
|
|
||||||
source mayan-edms/bin/activate
|
sudo mkdir /opt/mayan-edms/media
|
||||||
|
|
||||||
|
Make the mayan user the owner of the installation directory::
|
||||||
|
|
||||||
|
sudo chown mayan:mayan /opt/mayan-edms -R
|
||||||
|
|
||||||
Install Mayan EDMS from PyPI::
|
Install Mayan EDMS from PyPI::
|
||||||
|
|
||||||
pip install mayan-edms
|
sudo -u mayan /opt/mayan-edms/bin/pip install --no-cache-dir mayan-edms
|
||||||
|
|
||||||
Install the Python client for PostgreSQL, Redis, and uWSGI::
|
Install the Python client for PostgreSQL and Redis::
|
||||||
|
|
||||||
pip install psycopg2 redis uwsgi
|
sudo -u mayan /opt/mayan-edms/bin/pip install --no-cache-dir psycopg2==2.7.3.2 redis==2.10.6
|
||||||
|
|
||||||
Create the database for the installation::
|
Create the database for the installation::
|
||||||
|
|
||||||
sudo -u postgres createuser -P mayan (provide password)
|
sudo -u postgres psql -c "CREATE USER mayan WITH password 'mayanuserpass';"
|
||||||
sudo -u postgres createdb -O mayan mayan
|
sudo -u postgres createdb -O mayan mayan
|
||||||
|
|
||||||
Create the directory for the log files::
|
Initialize the project::
|
||||||
|
|
||||||
mkdir /var/log/mayan
|
sudo -u mayan MAYAN_DATABASE_ENGINE=django.db.backends.postgresql MAYAN_DATABASE_NAME=mayan \
|
||||||
|
MAYAN_DATABASE_PASSWORD=mayanuserpass MAYAN_DATABASE_USER=mayan \
|
||||||
Change the current directory to be the one of the installation::
|
MAYAN_DATABASE_HOST=127.0.0.1 MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \
|
||||||
|
/opt/mayan-edms/bin/mayan-edms.py initialsetup
|
||||||
cd mayan-edms
|
|
||||||
|
|
||||||
Make a convenience symbolic link::
|
|
||||||
|
|
||||||
ln -s lib/python2.7/site-packages/mayan .
|
|
||||||
|
|
||||||
Create an initial settings file::
|
|
||||||
|
|
||||||
mayan-edms.py createsettings
|
|
||||||
|
|
||||||
Append the following to the ``mayan/settings/local.py`` file, paying attention to replace the ``PASSWORD`` value::
|
|
||||||
|
|
||||||
DATABASES = {
|
|
||||||
'default': {
|
|
||||||
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
|
||||||
'NAME': 'mayan',
|
|
||||||
'USER': 'mayan',
|
|
||||||
'PASSWORD': '<password used when creating postgreSQL user>',
|
|
||||||
'HOST': 'localhost',
|
|
||||||
'PORT': '5432',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
BROKER_URL = 'redis://127.0.0.1:6379/0'
|
|
||||||
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'
|
|
||||||
|
|
||||||
Migrate the database or initialize the project::
|
|
||||||
|
|
||||||
mayan-edms.py initialsetup
|
|
||||||
|
|
||||||
Disable the default NGINX site::
|
|
||||||
|
|
||||||
rm /etc/nginx/sites-enabled/default
|
|
||||||
|
|
||||||
Create a ``uwsgi.ini`` file with the following contents::
|
|
||||||
|
|
||||||
[uwsgi]
|
|
||||||
chdir = /usr/share/mayan-edms/lib/python2.7/site-packages/mayan
|
|
||||||
chmod-socket = 664
|
|
||||||
chown-socket = www-data:www-data
|
|
||||||
env = DJANGO_SETTINGS_MODULE=mayan.settings.production
|
|
||||||
gid = www-data
|
|
||||||
logto = /var/log/uwsgi/%n.log
|
|
||||||
pythonpath = /usr/share/mayan-edms/lib/python2.7/site-packages
|
|
||||||
master = True
|
|
||||||
max-requests = 5000
|
|
||||||
socket = /usr/share/mayan-edms/uwsgi.sock
|
|
||||||
uid = www-data
|
|
||||||
vacuum = True
|
|
||||||
wsgi-file = /usr/share/mayan-edms/lib/python2.7/site-packages/mayan/wsgi.py
|
|
||||||
|
|
||||||
Create the directory for the uWSGI log files::
|
|
||||||
|
|
||||||
mkdir /var/log/uwsgi
|
|
||||||
|
|
||||||
Create the NGINX site file for Mayan EDMS, ``/etc/nginx/sites-available/mayan``::
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name localhost;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
include uwsgi_params;
|
|
||||||
uwsgi_pass unix:/usr/share/mayan-edms/uwsgi.sock;
|
|
||||||
|
|
||||||
client_max_body_size 30M; # Increse if your plan to upload bigger documents
|
|
||||||
proxy_read_timeout 30s; # Increase if your document uploads take more than 30 seconds
|
|
||||||
}
|
|
||||||
|
|
||||||
location /static {
|
|
||||||
alias /usr/share/mayan-edms/mayan/media/static;
|
|
||||||
expires 1h;
|
|
||||||
}
|
|
||||||
|
|
||||||
location /favicon.ico {
|
|
||||||
alias /usr/share/mayan-edms/mayan/media/static/appearance/images/favicon.ico;
|
|
||||||
expires 1h;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Enable the NGINX site for Mayan EDMS::
|
|
||||||
|
|
||||||
ln -s /etc/nginx/sites-available/mayan /etc/nginx/sites-enabled/
|
|
||||||
|
|
||||||
Create the supervisor file for the uWSGI process, ``/etc/supervisor/conf.d/mayan-uwsgi.conf``::
|
|
||||||
|
|
||||||
[program:mayan-uwsgi]
|
|
||||||
command = /usr/share/mayan-edms/bin/uwsgi --ini /usr/share/mayan-edms/uwsgi.ini
|
|
||||||
user = root
|
|
||||||
autostart = true
|
|
||||||
autorestart = true
|
|
||||||
redirect_stderr = true
|
|
||||||
|
|
||||||
Create the supervisor file for the Celery worker, ``/etc/supervisor/conf.d/mayan-celery.conf``::
|
|
||||||
|
|
||||||
[program:mayan-worker]
|
|
||||||
command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production worker -Ofair -l ERROR
|
|
||||||
directory = /usr/share/mayan-edms
|
|
||||||
user = www-data
|
|
||||||
stdout_logfile = /var/log/mayan/worker-stdout.log
|
|
||||||
stderr_logfile = /var/log/mayan/worker-stderr.log
|
|
||||||
autostart = true
|
|
||||||
autorestart = true
|
|
||||||
startsecs = 10
|
|
||||||
stopwaitsecs = 10
|
|
||||||
killasgroup = true
|
|
||||||
priority = 998
|
|
||||||
|
|
||||||
[program:mayan-beat]
|
|
||||||
command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production beat -l ERROR
|
|
||||||
directory = /usr/share/mayan-edms
|
|
||||||
user = www-data
|
|
||||||
numprocs = 1
|
|
||||||
stdout_logfile = /var/log/mayan/beat-stdout.log
|
|
||||||
stderr_logfile = /var/log/mayan/beat-stderr.log
|
|
||||||
autostart = true
|
|
||||||
autorestart = true
|
|
||||||
startsecs = 10
|
|
||||||
stopwaitsecs = 1
|
|
||||||
killasgroup = true
|
|
||||||
priority = 998
|
|
||||||
|
|
||||||
Collect the static files::
|
Collect the static files::
|
||||||
|
|
||||||
mayan-edms.py collectstatic --noinput
|
sudo -u mayan MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \
|
||||||
|
/opt/mayan-edms/bin/mayan-edms.py collectstatic --noinput
|
||||||
|
|
||||||
Make the installation directory readable and writable by the webserver user::
|
Create the supervisor file at ``/etc/supervisor/conf.d/mayan.conf``::
|
||||||
|
|
||||||
chown www-data:www-data /usr/share/mayan-edms -R
|
[supervisord]
|
||||||
|
environment=
|
||||||
|
MAYAN_ALLOWED_HOSTS="*", # Allow access to other network hosts other than localhost
|
||||||
|
MAYAN_CELERY_RESULT_BACKEND="redis://127.0.0.1:6379/0",
|
||||||
|
MAYAN_BROKER_URL="redis://127.0.0.1:6379/0",
|
||||||
|
PYTHONPATH=/opt/mayan-edms/lib/python2.7/site-packages:/opt/mayan-edms/data,
|
||||||
|
MAYAN_MEDIA_ROOT=/opt/mayan-edms/media,
|
||||||
|
MAYAN_DATABASE_ENGINE=django.db.backends.postgresql,
|
||||||
|
MAYAN_DATABASE_HOST=127.0.0.1,
|
||||||
|
MAYAN_DATABASE_NAME=mayan,
|
||||||
|
MAYAN_DATABASE_PASSWORD=mayanuserpass,
|
||||||
|
MAYAN_DATABASE_USER=mayan,
|
||||||
|
MAYAN_DATABASE_CONN_MAX_AGE=60,
|
||||||
|
DJANGO_SETTINGS_MODULE=mayan.settings.production
|
||||||
|
|
||||||
Restart the services::
|
[program:mayan-gunicorn]
|
||||||
|
autorestart = true
|
||||||
|
autostart = true
|
||||||
|
command = /opt/mayan-edms/bin/gunicorn -w 2 mayan.wsgi --max-requests 500 --max-requests-jitter 50 --worker-class gevent --bind 0.0.0.0:8000
|
||||||
|
user = mayan
|
||||||
|
|
||||||
/etc/init.d/nginx restart
|
[program:mayan-worker-fast]
|
||||||
/etc/init.d/supervisor restart
|
autorestart = true
|
||||||
|
autostart = true
|
||||||
|
command = nice -n 1 /opt/mayan-edms/bin/mayan-edms.py celery worker -Ofair -l ERROR -Q converter -n mayan-worker-fast.%%h --concurrency=1
|
||||||
|
killasgroup = true
|
||||||
|
numprocs = 1
|
||||||
|
priority = 998
|
||||||
|
startsecs = 10
|
||||||
|
stopwaitsecs = 1
|
||||||
|
user = mayan
|
||||||
|
|
||||||
Docker
|
[program:mayan-worker-medium]
|
||||||
======
|
autorestart = true
|
||||||
|
autostart = true
|
||||||
|
command = nice -n 18 /opt/mayan-edms/bin/mayan-edms.py celery worker -Ofair -l ERROR -Q checkouts_periodic,documents_periodic,indexing,metadata,sources,sources_periodic,uploads,documents -n mayan-worker-medium.%%h --concurrency=1
|
||||||
|
killasgroup = true
|
||||||
|
numprocs = 1
|
||||||
|
priority = 998
|
||||||
|
startsecs = 10
|
||||||
|
stopwaitsecs = 1
|
||||||
|
user = mayan
|
||||||
|
|
||||||
Deploy the Docker image stack::
|
[program:mayan-worker-slow]
|
||||||
|
autorestart = true
|
||||||
|
autostart = true
|
||||||
|
command = nice -n 19 /opt/mayan-edms/bin/mayan-edms.py celery worker -Ofair -l ERROR -Q mailing,tools,statistics,parsing,ocr -n mayan-worker-slow.%%h --concurrency=1
|
||||||
|
killasgroup = true
|
||||||
|
numprocs = 1
|
||||||
|
priority = 998
|
||||||
|
startsecs = 10
|
||||||
|
stopwaitsecs = 1
|
||||||
|
user = mayan
|
||||||
|
|
||||||
docker run --name postgres -e POSTGRES_DB=mayan -e POSTGRES_USER=mayan -e POSTGRES_PASSWORD=mysecretpassword -v /var/lib/postgresql/data -d postgres
|
[program:mayan-celery-beat]
|
||||||
docker run --name redis -d redis
|
autorestart = true
|
||||||
docker run --name mayan-edms -p 80:80 --link postgres:postgres --link redis:redis -e POSTGRES_DB=mayan -e POSTGRES_USER=mayan -e POSTGRES_PASSWORD=mysecretpassword -v /usr/local/lib/python2.7/dist-packages/mayan/media -d mayanedms/monolithic
|
autostart = true
|
||||||
|
command = nice -n 1 /opt/mayan-edms/bin/mayan-edms.py celery beat --pidfile= -l ERROR
|
||||||
|
killasgroup = true
|
||||||
|
numprocs = 1
|
||||||
|
priority = 998
|
||||||
|
startsecs = 10
|
||||||
|
stopwaitsecs = 1
|
||||||
|
user = mayan
|
||||||
|
|
||||||
After the Mayan EDMS container finishes initializing (about 5 minutes), it will
|
Enable and restart the services [1_]::
|
||||||
be available by browsing to http://127.0.0.1. You can inspect the initialization
|
|
||||||
with::
|
|
||||||
|
|
||||||
docker logs mayan-edms
|
systemctl enable supervisor
|
||||||
|
systemctl restart supervisor
|
||||||
|
|
||||||
|
[1]: https://bugs.launchpad.net/ubuntu/+source/supervisor/+bug/1594740
|
||||||
|
|
||||||
Docker Compose
|
.. _Debian: http://www.debian.org/
|
||||||
==============
|
.. _Django: http://www.djangoproject.com/
|
||||||
|
.. _Python: http://www.python.org/
|
||||||
Create a file named ``environment`` with the following content::
|
.. _SQLite: https://www.sqlite.org/
|
||||||
|
.. _Ubuntu: http://www.ubuntu.com/
|
||||||
POSTGRES_DB=mayan
|
.. _virtualenv: http://www.virtualenv.org/en/latest/index.html
|
||||||
POSTGRES_PASSWORD=mayanpassword
|
.. _1: https://bugs.launchpad.net/ubuntu/+source/supervisor/+bug/1594740
|
||||||
POSTGRES_USER=mayan
|
|
||||||
|
|
||||||
Create a file named ``docker-compose.yml`` with the content::
|
|
||||||
|
|
||||||
postgres:
|
|
||||||
env_file:
|
|
||||||
- ./environment
|
|
||||||
image: postgres
|
|
||||||
volumes:
|
|
||||||
- /var/lib/postgresql/data
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: redis
|
|
||||||
|
|
||||||
mayan-edms:
|
|
||||||
env_file:
|
|
||||||
- ./environment
|
|
||||||
image: mayanedms/monolithic
|
|
||||||
links:
|
|
||||||
- postgres
|
|
||||||
- redis
|
|
||||||
ports:
|
|
||||||
- "80:80"
|
|
||||||
volumes:
|
|
||||||
- /usr/local/lib/python2.7/dist-packages/mayan/media
|
|
||||||
|
|
||||||
Launch the entire stack (Postgres, Redis, and Mayan EDMS) using::
|
|
||||||
|
|
||||||
docker-compose -f docker-compose.yml -p mayanedms up -d
|
|
||||||
|
|
||||||
After the Mayan EDMS container finishes initializing (about 5 minutes), it will
|
|
||||||
be available by browsing to http://127.0.0.1. You can inspect the initialization
|
|
||||||
with::
|
|
||||||
|
|
||||||
docker logs mayanedms_mayan-edms_1
|
|
||||||
|
|
||||||
Vagrant
|
|
||||||
=======
|
|
||||||
Make sure you have Vagrant and a provider properly installed as per
|
|
||||||
https://docs.vagrantup.com/v2/installation/index.html
|
|
||||||
Clone the repository and execute::
|
|
||||||
|
|
||||||
vagrant up production
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ Development
|
|||||||
Mayan EDMS is under active development, and contributions are welcome.
|
Mayan EDMS is under active development, and contributions are welcome.
|
||||||
|
|
||||||
If you have a feature request, suggestion or bug report, please open a new
|
If you have a feature request, suggestion or bug report, please open a new
|
||||||
issue on the `GitLab issue tracker`_. To submit patches, please send a pull
|
issue on the `GitLab issue tracker`_. To submit patches, please send a merge
|
||||||
request on GitLab_. Make sure to add yourself to the :ref:`contributors` file.
|
request on GitLab_.
|
||||||
|
|
||||||
.. _GitLab: https://gitlab.com/mayan-edms/mayan-edms/
|
.. _GitLab: https://gitlab.com/mayan-edms/mayan-edms/
|
||||||
.. _`GitLab issue tracker`: https://gitlab.com/mayan-edms/mayan-edms/issues
|
.. _`GitLab issue tracker`: https://gitlab.com/mayan-edms/mayan-edms/issues
|
||||||
@@ -16,8 +16,8 @@ request on GitLab_. Make sure to add yourself to the :ref:`contributors` file.
|
|||||||
Project philosophies
|
Project philosophies
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
How to think about Mayan EDMS when doing changes or adding new features,
|
How to think about Mayan EDMS when doing changes or adding new features;
|
||||||
why things are the way they are in Mayan EDMS.
|
why things are the way they are in Mayan EDMS:
|
||||||
|
|
||||||
- Functionality must be as market/sector independent as possible, code for the
|
- Functionality must be as market/sector independent as possible, code for the
|
||||||
95% of use cases.
|
95% of use cases.
|
||||||
@@ -36,7 +36,7 @@ why things are the way they are in Mayan EDMS.
|
|||||||
not viable/mature/efficient.
|
not viable/mature/efficient.
|
||||||
- Each app is as independent and self contained as possible. Exceptions, the
|
- Each app is as independent and self contained as possible. Exceptions, the
|
||||||
basic requirements: navigation, permissions, common, main.
|
basic requirements: navigation, permissions, common, main.
|
||||||
- If an app is meant to be used by more than one other app it should be as
|
- If an app is meant to be used by more than one other app, it should be as
|
||||||
generic as possible in regard to the project and another app will bridge the functionality.
|
generic as possible in regard to the project and another app will bridge the functionality.
|
||||||
|
|
||||||
- Example: since indexing (document_indexing) only applies to documents, the
|
- Example: since indexing (document_indexing) only applies to documents, the
|
||||||
@@ -48,12 +48,18 @@ Coding conventions
|
|||||||
|
|
||||||
Follow PEP8
|
Follow PEP8
|
||||||
~~~~~~~~~~~
|
~~~~~~~~~~~
|
||||||
Whenever possible, but don't obsess over things like line length.
|
Whenever possible, but don't obsess over things like line length:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
$ flake8 --ignore=E501,E128,E122 |less
|
$ flake8 --ignore=E501,E128,E122 |less
|
||||||
|
|
||||||
|
To perform automatic PEP8 checks, install flake8's git hook using:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ flake8 --install-hook git
|
||||||
|
|
||||||
Imports
|
Imports
|
||||||
~~~~~~~
|
~~~~~~~
|
||||||
|
|
||||||
@@ -103,9 +109,9 @@ Example:
|
|||||||
)
|
)
|
||||||
from .models import Index, IndexInstanceNode, DocumentRenameCount
|
from .models import Index, IndexInstanceNode, DocumentRenameCount
|
||||||
|
|
||||||
All local app module imports are in relative form, local app module name is to
|
All local app module imports are in relative form. Local app module name is to
|
||||||
be referenced as little as possible, unless required by a specific feature,
|
be referenced as little as possible, unless required by a specific feature,
|
||||||
trick, restriction, ie: Runtime modification of the module's attributes.
|
trick, restriction (e.g., Runtime modification of the module's attributes).
|
||||||
|
|
||||||
Incorrect:
|
Incorrect:
|
||||||
|
|
||||||
@@ -128,7 +134,7 @@ Dependencies
|
|||||||
Mayan EDMS apps follow a hierarchical model of dependency. Apps import from
|
Mayan EDMS apps follow a hierarchical model of dependency. Apps import from
|
||||||
their parents or siblings, never from their children. Think plugins. A parent
|
their parents or siblings, never from their children. Think plugins. A parent
|
||||||
app must never assume anything about a possible existing child app. The
|
app must never assume anything about a possible existing child app. The
|
||||||
documents app and the Document model are the basic entities they must never
|
documents app and the Document model are the basic entities; they must never
|
||||||
import anything else. The common and main apps are the base apps.
|
import anything else. The common and main apps are the base apps.
|
||||||
|
|
||||||
|
|
||||||
@@ -203,7 +209,7 @@ Mayan EDMS source is controlled with Git_.
|
|||||||
|
|
||||||
The project is publicly accessible, hosted and can be cloned from **GitLab** using::
|
The project is publicly accessible, hosted and can be cloned from **GitLab** using::
|
||||||
|
|
||||||
git clone https://gitlab.com/mayan-edms/mayan-edms.git
|
$ git clone https://gitlab.com/mayan-edms/mayan-edms.git
|
||||||
|
|
||||||
|
|
||||||
Git branch structure
|
Git branch structure
|
||||||
@@ -235,65 +241,19 @@ Steps to deploy a development version
|
|||||||
-------------------------------------
|
-------------------------------------
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
git clone https://gitlab.com/mayan-edms/mayan-edms.git
|
$ git clone https://gitlab.com/mayan-edms/mayan-edms.git
|
||||||
cd mayan-edms
|
$ cd mayan-edms
|
||||||
git checkout development
|
$ git checkout development
|
||||||
virtualenv venv
|
$ virtualenv venv
|
||||||
source venv/bin/activate
|
$ source venv/bin/activate
|
||||||
pip install -r requirements.txt
|
$ pip install -r requirements.txt
|
||||||
./manage.py initialsetup
|
$ ./manage.py initialsetup
|
||||||
./manage.py runserver
|
$ ./manage.py runserver
|
||||||
|
|
||||||
|
|
||||||
Setting up a development version using Vagrant
|
|
||||||
----------------------------------------------
|
|
||||||
Make sure you have Vagrant and a provider properly installed as per
|
|
||||||
https://docs.vagrantup.com/v2/installation/index.html
|
|
||||||
|
|
||||||
Start and provision a machine using:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
vagrant up development
|
|
||||||
|
|
||||||
To launch a standalone development server
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
vagrant ssh
|
|
||||||
vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/
|
|
||||||
vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate
|
|
||||||
vagrant@vagrant-ubuntu-trusty-32:~$ ./manage.py runserver 0.0.0.0:8000
|
|
||||||
|
|
||||||
To launch a development server with a celery worker and Redis as broker
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
vagrant ssh
|
|
||||||
vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/
|
|
||||||
vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate
|
|
||||||
vagrant@vagrant-ubuntu-trusty-32:~$ ./manage.py runserver 0.0.0.0:8000 --settings=mayan.settings.celery_redis
|
|
||||||
|
|
||||||
Then on a separate console launch a celery worker from the same provisioned Vagrant machine:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
vagrant ssh
|
|
||||||
vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/
|
|
||||||
vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate
|
|
||||||
vagrant@vagrant-ubuntu-trusty-32:~$ DJANGO_SETTINGS_MODULE='mayan.settings.celery_redis' celery -A mayan worker -l DEBUG -Q checkouts,mailing,uploads,converter,ocr,tools,indexing,metadata -Ofair -B
|
|
||||||
|
|
||||||
|
|
||||||
Contributing changes
|
Contributing changes
|
||||||
--------------------
|
--------------------
|
||||||
Once your have created and committed some new code or feature, submit a Pull
|
Follow the latest contributing guidelines outlined here: https://gitlab.com/mayan-edms/mayan-edms/blob/master/CONTRIBUTING.md
|
||||||
Request. Be sure to merge with the development branch before doing a Pull
|
|
||||||
Request so that patches apply as cleanly as possible. If there are no conflicts,
|
|
||||||
Merge Requests can be merged directly from the website UI otherwise a manual
|
|
||||||
command line merge has to be done and your patches might take longer to get
|
|
||||||
merged.
|
|
||||||
|
|
||||||
|
|
||||||
Debugging
|
Debugging
|
||||||
@@ -361,12 +321,12 @@ The documentation is written in `reStructured Text`_ format, processed with
|
|||||||
Sphinx_, and resides in the ``docs`` directory. In order to build it, you will
|
Sphinx_, and resides in the ``docs`` directory. In order to build it, you will
|
||||||
first need to install the documentation editing dependencies with::
|
first need to install the documentation editing dependencies with::
|
||||||
|
|
||||||
pip install -r requirements/documentation.txt
|
$ pip install -r requirements/documentation.txt
|
||||||
|
|
||||||
Then, to build an HTML version of the documentation, run the following command
|
Then, to build an HTML version of the documentation, run the following command
|
||||||
from the **docs** directory::
|
from the **docs** directory::
|
||||||
|
|
||||||
make livehtml
|
$ make docs-serve
|
||||||
|
|
||||||
The generated documentation can be viewed by browsing to http://127.0.0.1:8000
|
The generated documentation can be viewed by browsing to http://127.0.0.1:8000
|
||||||
or by browsing to the ``docs/_build/html`` directory.
|
or by browsing to the ``docs/_build/html`` directory.
|
||||||
@@ -386,22 +346,18 @@ Source file package
|
|||||||
|
|
||||||
This is the sequence of step used to produce an installable package:
|
This is the sequence of step used to produce an installable package:
|
||||||
|
|
||||||
1. Make sure there are no lingering packages from previous attempts::
|
1. Generate the packaged version (will produce dist/mayan-edms-x.y.z.tar.gz)::
|
||||||
|
|
||||||
rm dist -R
|
$ make sdist
|
||||||
|
|
||||||
2. Generate the packaged version (will produce dist/mayan-edms-x.y.z.tar.gz)::
|
2. Do a test install::
|
||||||
|
|
||||||
python setup.py sdist
|
$ cd /tmp
|
||||||
|
$ virtualenv venv
|
||||||
3. Do a test install::
|
$ source venv/bin/activate
|
||||||
|
$ pip install <path of the Git repository>/dist/mayan-edms-x.y.z.tar.gz
|
||||||
cd /tmp
|
$ mayan-edms.py initialsetup
|
||||||
virtualenv venv
|
$ mayan-edms.py runserver
|
||||||
source venv/bin/activate
|
|
||||||
pip install <path of the Git repository>/dist/mayan-edms-x.y.z.tar.gz
|
|
||||||
mayan-edms.py initialsetup
|
|
||||||
mayan-edms.py runserver
|
|
||||||
|
|
||||||
|
|
||||||
Wheel package
|
Wheel package
|
||||||
@@ -411,9 +367,9 @@ Wheel package
|
|||||||
|
|
||||||
$ pip install -r requirements/development.txt
|
$ pip install -r requirements/development.txt
|
||||||
|
|
||||||
2. Create wheel package using the source file package (Until issue #99 of wheel is fixed: https://bitbucket.org/pypa/wheel/issue/99/cannot-exclude-directory)::
|
2. Create wheel package using the makefile::
|
||||||
|
|
||||||
$ pip wheel --no-index --no-deps --wheel-dir dist dist/mayan-edms-x.y.z.tar.gz
|
$ make wheel
|
||||||
|
|
||||||
3. Do a test install::
|
3. Do a test install::
|
||||||
|
|
||||||
@@ -423,3 +379,72 @@ Wheel package
|
|||||||
$ pip install <path of the Git repository>/dist/mayan_edms-x.y.z-py2-none-any.whl
|
$ pip install <path of the Git repository>/dist/mayan_edms-x.y.z-py2-none-any.whl
|
||||||
$ mayan-edms.py initialsetup
|
$ mayan-edms.py initialsetup
|
||||||
$ mayan-edms.py runserver
|
$ mayan-edms.py runserver
|
||||||
|
|
||||||
|
|
||||||
|
Version numbering
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Mayan EDMS uses the Semantic Versioning (http://semver.org/) method to choose
|
||||||
|
version numbers along with Python's PEP-0440 (https://www.python.org/dev/peps/pep-0440/)
|
||||||
|
to format them.
|
||||||
|
|
||||||
|
X.YaN # Alpha release
|
||||||
|
X.YbN # Beta release
|
||||||
|
X.YrcN # Release Candidate
|
||||||
|
X.Y # Final release
|
||||||
|
|
||||||
|
|
||||||
|
Release checklist
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
1. Check for missing migrations::
|
||||||
|
|
||||||
|
make check-missing-migrations
|
||||||
|
|
||||||
|
2. Synchronize translations::
|
||||||
|
|
||||||
|
make translations-pull
|
||||||
|
|
||||||
|
3. Compile translations::
|
||||||
|
|
||||||
|
make translations-compile
|
||||||
|
|
||||||
|
4. Write release notes.
|
||||||
|
5. Update changelog.
|
||||||
|
6. Scan the code with flake8 for simple style warnings.
|
||||||
|
7. Check README.rst format with::
|
||||||
|
|
||||||
|
python setup.py check -r -s
|
||||||
|
|
||||||
|
or with::
|
||||||
|
|
||||||
|
make check-readme
|
||||||
|
|
||||||
|
8. Bump version in `mayan/__init__.py` and in `docker/version`.
|
||||||
|
9. Update requirements version in `setup.py` using::
|
||||||
|
|
||||||
|
make generate-setup
|
||||||
|
|
||||||
|
10. Build source package and test::
|
||||||
|
|
||||||
|
make test-sdist-via-docker-ubuntu
|
||||||
|
|
||||||
|
11. Build wheel package and test::
|
||||||
|
|
||||||
|
make test-wheel-via-docker-ubuntu
|
||||||
|
|
||||||
|
12. Tag version::
|
||||||
|
|
||||||
|
git tag -a vX.Y.Z -m "Version X.Y.Z"
|
||||||
|
|
||||||
|
13. Push tag upstream::
|
||||||
|
|
||||||
|
git push --tags
|
||||||
|
|
||||||
|
14. Build and upload a test release::
|
||||||
|
|
||||||
|
make release-test-via-docker-ubuntu
|
||||||
|
|
||||||
|
15. Build and upload a final release::
|
||||||
|
|
||||||
|
make release-via-docker-ubuntu
|
||||||
|
|||||||
372
docs/topics/docker.rst
Normal file
@@ -0,0 +1,372 @@
|
|||||||
|
.. _docker:
|
||||||
|
|
||||||
|
|
||||||
|
============
|
||||||
|
Docker image
|
||||||
|
============
|
||||||
|
|
||||||
|
How to use this image
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Start a Mayan EDMS instance
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
With Docker properly installed, proceed to download the Mayan EDMS image using the command::
|
||||||
|
|
||||||
|
docker pull mayanedms/mayanedms:<version>
|
||||||
|
|
||||||
|
Then download version 9.5 of the Docker PostgreSQL image::
|
||||||
|
|
||||||
|
docker pull postgres:9.5
|
||||||
|
|
||||||
|
Create and run a PostgreSQL container::
|
||||||
|
|
||||||
|
docker run -d \
|
||||||
|
--name mayan-edms-postgres \
|
||||||
|
--restart=always \
|
||||||
|
-p 5432:5432 \
|
||||||
|
-e POSTGRES_USER=mayan \
|
||||||
|
-e POSTGRES_DB=mayan \
|
||||||
|
-e POSTGRES_PASSWORD=mayanuserpass \
|
||||||
|
-v /docker-volumes/mayan-edms/postgres:/var/lib/postgresql/data \
|
||||||
|
-d postgres:9.5
|
||||||
|
|
||||||
|
The PostgreSQL container will have one database named ``mayan``, with an user
|
||||||
|
named ``mayan`` too, with a password of ``mayanuserpass``. The container will
|
||||||
|
expose its internal 5432 port (PostgreSQL's default port) via the host's
|
||||||
|
5432 port. The data of this container will reside on the host's
|
||||||
|
``/docker-volumes/mayan-edms/postgres`` folder.
|
||||||
|
|
||||||
|
Finally create and run a Mayan EDMS container. Change <version> with the
|
||||||
|
latest version in numeric form (example: 2.7.3) or use the ``latest``
|
||||||
|
identifier::
|
||||||
|
|
||||||
|
docker run -d \
|
||||||
|
--name mayan-edms \
|
||||||
|
--restart=always \
|
||||||
|
-p 80:8000 \
|
||||||
|
-e MAYAN_DATABASE_ENGINE=django.db.backends.postgresql \
|
||||||
|
-e MAYAN_DATABASE_HOST=172.17.0.1 \
|
||||||
|
-e MAYAN_DATABASE_NAME=mayan \
|
||||||
|
-e MAYAN_DATABASE_PASSWORD=mayanuserpass \
|
||||||
|
-e MAYAN_DATABASE_USER=mayan \
|
||||||
|
-e MAYAN_DATABASE_CONN_MAX_AGE=60 \
|
||||||
|
-v /docker-volumes/mayan-edms/media:/var/lib/mayan \
|
||||||
|
mayanedms/mayanedms:<version>
|
||||||
|
|
||||||
|
The Mayan EDMS container will connect to the PostgreSQL container via the
|
||||||
|
``172.17.0.1`` IP address (the Docker host's default IP address). It will
|
||||||
|
connect using the ``django.db.backends.postgresql`` database drivern and
|
||||||
|
connect to the ``mayan`` database using the ``mayan`` user with the password
|
||||||
|
``mayanuserpass``. The container will keep connections to the database
|
||||||
|
for up to 60 seconds in an attempt to reuse them increasing response time
|
||||||
|
and reducing memory usage. The files of the container will be store in the
|
||||||
|
host's ``/docker-volumes/mayan-edms/media`` folder. The container will
|
||||||
|
expose its web service running on port 8000 on the host's port 80.
|
||||||
|
|
||||||
|
The container will be available by browsing to ``http://localhost`` or to
|
||||||
|
the IP address of the computer running the container.
|
||||||
|
|
||||||
|
If another web server is running on port 80 use a different port in the
|
||||||
|
``-p`` option. For example: ``-p 81:8000``.
|
||||||
|
|
||||||
|
|
||||||
|
Stopping and starting the container
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
To stop the container use::
|
||||||
|
|
||||||
|
docker stop mayan-edms
|
||||||
|
|
||||||
|
|
||||||
|
To start the container again::
|
||||||
|
|
||||||
|
docker start mayan-edms
|
||||||
|
|
||||||
|
|
||||||
|
Environment Variables
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
The Mayan EDMS image can be configure via environment variables.
|
||||||
|
|
||||||
|
``MAYAN_DATABASE_ENGINE``
|
||||||
|
|
||||||
|
Defaults to ``None``. This environment variable configures the database
|
||||||
|
backend to use. If left unset, SQLite will be used. The database backends
|
||||||
|
supported by this Docker image are:
|
||||||
|
|
||||||
|
- ``'django.db.backends.postgresql'``
|
||||||
|
- ``'django.db.backends.mysql'``
|
||||||
|
- ``'django.db.backends.sqlite3'``
|
||||||
|
|
||||||
|
When using the SQLite backend, the database file will be saved in the Docker
|
||||||
|
volume. The SQLite database as used by Mayan EDMS is meant only for development
|
||||||
|
or testing, never use it in production.
|
||||||
|
|
||||||
|
``MAYAN_DATABASE_NAME``
|
||||||
|
|
||||||
|
Defaults to 'mayan'. This optional environment variable can be used to define
|
||||||
|
the database name that Mayan EDMS will connect to. For more information read
|
||||||
|
the pertinent Django documentation page: `Connecting to the database`_
|
||||||
|
|
||||||
|
.. _Connecting to the database: https://docs.djangoproject.com/en/1.10/ref/databases/#connecting-to-the-database
|
||||||
|
|
||||||
|
``MAYAN_DATABASE_USER``
|
||||||
|
|
||||||
|
Defaults to 'mayan'. This optional environment variable is used to set the
|
||||||
|
username that will be used to connect to the database. For more information
|
||||||
|
read the pertinent Django documentation page: `Settings, USER`_
|
||||||
|
|
||||||
|
.. _Settings, USER: https://docs.djangoproject.com/en/1.10/ref/settings/#user
|
||||||
|
|
||||||
|
``MAYAN_DATABASE_PASSWORD``
|
||||||
|
|
||||||
|
Defaults to ''. This optional environment variable is used to set the
|
||||||
|
password that will be used to connect to the database. For more information
|
||||||
|
read the pertinent Django documentation page: `Settings, PASSWORD`_
|
||||||
|
|
||||||
|
.. _Settings, PASSWORD: https://docs.djangoproject.com/en/1.10/ref/settings/#password
|
||||||
|
|
||||||
|
``MAYAN_DATABASE_HOST``
|
||||||
|
|
||||||
|
Defaults to `None`. This optional environment variable is used to set the
|
||||||
|
hostname that will be used to connect to the database. This can be the
|
||||||
|
hostname of another container or an IP address. For more information read
|
||||||
|
the pertinent Django documentation page: `Settings, HOST`_
|
||||||
|
|
||||||
|
.. _Settings, HOST: https://docs.djangoproject.com/en/1.10/ref/settings/#host
|
||||||
|
|
||||||
|
``MAYAN_DATABASE_PORT``
|
||||||
|
|
||||||
|
Defaults to `None`. This optional environment variable is used to set the
|
||||||
|
port number to use when connecting to the database. An empty string means
|
||||||
|
the default port. Not used with SQLite. For more information read the
|
||||||
|
pertinent Django documentation page: `Settings, PORT`_
|
||||||
|
|
||||||
|
.. _Settings, PORT: https://docs.djangoproject.com/en/1.11/ref/settings/#port
|
||||||
|
|
||||||
|
``MAYAN_BROKER_URL``
|
||||||
|
|
||||||
|
This optional environment variable determines the broker that Celery will use
|
||||||
|
to relay task messages between the frontend code and the background workers.
|
||||||
|
For more information read the pertinent Celery Kombu documentation page: `Broker URL`_
|
||||||
|
|
||||||
|
.. _Broker URL: http://kombu.readthedocs.io/en/latest/userguide/connections.html#connection-urls
|
||||||
|
|
||||||
|
This Docker image supports using Redis and RabbitMQ as brokers.
|
||||||
|
|
||||||
|
Caveat: If the `MAYAN_BROKER_URL` and `MAYAN_CELERY_RESULT_BACKEND` environment
|
||||||
|
variables are specified, the built-in Redis server inside the container will
|
||||||
|
be disabled.
|
||||||
|
|
||||||
|
``MAYAN_CELERY_RESULT_BACKEND``
|
||||||
|
|
||||||
|
This optional environment variable determines the results backend that Celery
|
||||||
|
will use to relay result messages from the background workers to the frontend
|
||||||
|
code. For more information read the pertinent Celery Kombu documentation page:
|
||||||
|
`Task result backend settings`_
|
||||||
|
|
||||||
|
.. _Task result backend settings: http://docs.celeryproject.org/en/3.1/configuration.html#celery-result-backend
|
||||||
|
|
||||||
|
This Docker image supports using Redis and RabbitMQ as result backends.
|
||||||
|
|
||||||
|
Caveat: If the `MAYAN_BROKER_URL` and `MAYAN_CELERY_RESULT_BACKEND` environment
|
||||||
|
variables are specified, the built-in Redis server inside the container will
|
||||||
|
be disabled.
|
||||||
|
|
||||||
|
``MAYAN_SETTINGS_MODULE``
|
||||||
|
|
||||||
|
Optional. Allows loading an alternate settings file.
|
||||||
|
|
||||||
|
|
||||||
|
``MAYAN_DATABASE_CONN_MAX_AGE``
|
||||||
|
|
||||||
|
Amount in seconds to keep a database connection alive. Allow reuse of database
|
||||||
|
connections. For more information read the pertinent Django documentation
|
||||||
|
page: `Settings, CONN_MAX_AGE`_
|
||||||
|
|
||||||
|
.. _Settings, CONN_MAX_AGE: https://docs.djangoproject.com/en/1.10/ref/settings/#conn-max-age
|
||||||
|
|
||||||
|
|
||||||
|
``MAYAN_SETTINGS_FILE``
|
||||||
|
|
||||||
|
Optional. Previously only the ``local.py`` file was the only settings file
|
||||||
|
available to allow users to make configuration changes to their installations.
|
||||||
|
Now with this environment variable, users are free to create multiple settings
|
||||||
|
files and tell the Mayan EDMS container which setting file to import. The
|
||||||
|
only requirement is that the setting file starts with a global import of
|
||||||
|
``mayan.settings.production``. In the form::
|
||||||
|
|
||||||
|
from mayan.settings.production import *
|
||||||
|
|
||||||
|
|
||||||
|
``MAYAN_GUNICORN_WORKERS``
|
||||||
|
|
||||||
|
Optional. This environment variable controls the number of frontend workers
|
||||||
|
that will be executed. If not specified the default is 2. For heavier loads,
|
||||||
|
user a higher number. A formula recommended for this setting is the number
|
||||||
|
of CPU cores + 1.
|
||||||
|
|
||||||
|
Accessing outside data
|
||||||
|
======================
|
||||||
|
|
||||||
|
To use Mayan EDMS's staging folders or watch folders from Docker, the data
|
||||||
|
for these source must be made accessible to the container. This is done by
|
||||||
|
mounting the folders in the host computer to folders inside the container.
|
||||||
|
This is necessary because Docker containers do not have access to host data
|
||||||
|
on purpose. For example, to make a folder in the host accessible as a watch
|
||||||
|
folder, add the following to the Docker command line when starting the
|
||||||
|
container::
|
||||||
|
|
||||||
|
-v /opt/scanned_files:/srv/watch_folder
|
||||||
|
|
||||||
|
The command line would look like this::
|
||||||
|
|
||||||
|
docker run ... -v /opt/scanned_files:/srv/watch_folder mayanedms/mayanedms:latest
|
||||||
|
|
||||||
|
Now create a watch folder in Mayan EDMS using the path ``/srv/watch_folder``
|
||||||
|
and the documents from the host folder ``/opt/scanned_files`` will be
|
||||||
|
automatically available. Use the same procedure to mount host folders to be
|
||||||
|
used as staging folderes. In this example ``/srv/watch_folder`` was as the
|
||||||
|
container directory, but any path can be used as long as it is not an
|
||||||
|
already existing path or a path used by any other program.
|
||||||
|
|
||||||
|
|
||||||
|
Performing backups
|
||||||
|
==================
|
||||||
|
|
||||||
|
To backup the existing data, stop the image and copy the content of the volume.
|
||||||
|
For the example::
|
||||||
|
|
||||||
|
docker run -d --name mayan-edms --restart=always -p 80:8000 \
|
||||||
|
-v /docker-volumes/mayan:/var/lib/mayan \
|
||||||
|
-v /opt/scanned_files:/srv/watch_folder mayanedms/mayanedms:latest
|
||||||
|
|
||||||
|
That would be the ``/docker-volumes/mayan folder``::
|
||||||
|
|
||||||
|
sudo tar -zcvf backup.tar.gz /docker-volumes/mayan
|
||||||
|
sudo chown `whoami` backup.tar.gz
|
||||||
|
|
||||||
|
If using an external PostgreSQL or MySQL database or database containers, these
|
||||||
|
too need to be backed up using their respective procedures. A simple solution
|
||||||
|
is to copy the entire database container volume after the container has
|
||||||
|
been stopped.
|
||||||
|
|
||||||
|
Restoring from a backup
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Uncompress the backup archive in the original docker volume using::
|
||||||
|
|
||||||
|
sudo tar -xvzf backup.tar.gz -C /
|
||||||
|
|
||||||
|
Upgrading
|
||||||
|
=========
|
||||||
|
|
||||||
|
Upgrading a Mayan EDMS Docker container is actually a matter of stopping and
|
||||||
|
deleting the container, downloading the most recent version of the image and
|
||||||
|
starting a container again. The container will take care of updating the
|
||||||
|
database structure to the newest version if necessary.
|
||||||
|
|
||||||
|
**IMPORTANT!** Do not delete the volume storing the data, only the container.
|
||||||
|
|
||||||
|
Stop the container to be upgraded::
|
||||||
|
|
||||||
|
docker stop mayan-edms
|
||||||
|
|
||||||
|
|
||||||
|
Remove the container::
|
||||||
|
|
||||||
|
docker rm mayan-edms
|
||||||
|
|
||||||
|
|
||||||
|
Pull the new image version::
|
||||||
|
|
||||||
|
docker pull mayanedms/mayanedms:latest
|
||||||
|
|
||||||
|
|
||||||
|
Start the container again with the new image version::
|
||||||
|
|
||||||
|
docker run -d --name mayan-edms --restart=always -p 80:8000 -v /docker-volumes/mayan:/var/lib/mayan mayanedms/mayanedms:latest
|
||||||
|
|
||||||
|
Building the image
|
||||||
|
==================
|
||||||
|
|
||||||
|
Clone the repository with::
|
||||||
|
|
||||||
|
git clone https://gitlab.com/mayan-edms/mayan-edms.git
|
||||||
|
|
||||||
|
Change to the directory of the cloned repository::
|
||||||
|
|
||||||
|
cd mayan-edms
|
||||||
|
|
||||||
|
Execute Docker's build command using the provided makefile::
|
||||||
|
|
||||||
|
make docker-build
|
||||||
|
|
||||||
|
Or using an apt cacher to speed up the build::
|
||||||
|
|
||||||
|
make docker-build-with-proxy APT_PROXY=172.17.0.1:3142
|
||||||
|
|
||||||
|
Replace the IP address `172.17.0.1` with the IP address of the computer
|
||||||
|
running the APT proxy and caching service.
|
||||||
|
|
||||||
|
Customizing the image
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Simple method
|
||||||
|
-------------
|
||||||
|
|
||||||
|
If you just need to add a few Ubuntu or Python packages to your installation,
|
||||||
|
you can use the following environment variables:
|
||||||
|
|
||||||
|
``MAYAN_APT_INSTALLS``
|
||||||
|
|
||||||
|
Specifies a list of Ubuntu .deb packages to be installed via APT when the
|
||||||
|
container is first created. The installed packages are not lost when the image
|
||||||
|
is stopped. Example: To install the Tesseract OCR language packs for German
|
||||||
|
and Spanish add the following in your ``docker start`` command line::
|
||||||
|
|
||||||
|
-e MAYAN_APT_INSTALLS="tesseract-ocr-deu tesseract-ocr-spa"
|
||||||
|
|
||||||
|
``MAYAN_PIP_INSTALLS``
|
||||||
|
|
||||||
|
Specifies a list of Python packages to be installed via ``pip``. Packages will
|
||||||
|
be downloaded from the Python Package Index (https://pypi.python.org) by
|
||||||
|
default.
|
||||||
|
|
||||||
|
Using Docker compose
|
||||||
|
====================
|
||||||
|
|
||||||
|
To deploy a complete production stack using the included Docker compose file
|
||||||
|
execute::
|
||||||
|
|
||||||
|
docker-compose -f docker-compose.yml up -d
|
||||||
|
|
||||||
|
This Docker compose file will provision four containers:
|
||||||
|
|
||||||
|
- Postgres as the database
|
||||||
|
- Redis as the Celery result storage
|
||||||
|
- RabbitMQ as the Celery broker
|
||||||
|
- Mayan EDMS using the above service containers
|
||||||
|
|
||||||
|
To stop the stack use::
|
||||||
|
|
||||||
|
docker-compose -f docker-compose.yml stop
|
||||||
|
|
||||||
|
The stack will also create four volumes to store the data of each container.
|
||||||
|
These are:
|
||||||
|
|
||||||
|
- mayan_app - The Mayan EDMS data container, normally called `mayan_data` when not using Docker compose.
|
||||||
|
- mayan_broker - The broker volume, in this case RabbitMQ.
|
||||||
|
- mayan_db - The database volume, in this case Postgres.
|
||||||
|
- mayan_results - The celery result backend volume, in this case Redis.
|
||||||
|
|
||||||
|
|
||||||
|
Nightly images
|
||||||
|
==============
|
||||||
|
The continious integration pipeline used for testing development builds also
|
||||||
|
produces a resulting Docker image. These are build automatically and their
|
||||||
|
stability is not guaranteed. They should never be used in production.
|
||||||
|
If you want to try out the Docker images the development uses or want a sneak
|
||||||
|
peek at the new features being worked on checkout the container registry at:
|
||||||
|
https://gitlab.com/mayan-edms/mayan-edms/container_registry
|
||||||
@@ -9,6 +9,46 @@ uploaded. It is not possible to upload documents without assigning them a
|
|||||||
document type. Examples of document type: **invoices**, **blueprints**,
|
document type. Examples of document type: **invoices**, **blueprints**,
|
||||||
**receipts**.
|
**receipts**.
|
||||||
|
|
||||||
|
.. blockdiag::
|
||||||
|
|
||||||
|
blockdiag {
|
||||||
|
default_shape = roundedbox
|
||||||
|
|
||||||
|
document_type [ label = 'Document type' ];
|
||||||
|
documents [ label = 'Documents' ];
|
||||||
|
|
||||||
|
document_type -> documents;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. blockdiag::
|
||||||
|
|
||||||
|
blockdiag {
|
||||||
|
default_shape = roundedbox
|
||||||
|
|
||||||
|
document_type [ label = 'Invoice' ];
|
||||||
|
documents_1 [ label = 'invoice_001.pdf', width=200 ];
|
||||||
|
documents_2 [ label = 'invoice_032.pdf', width=200 ];
|
||||||
|
|
||||||
|
document_type -> documents_1, documents_2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.. blockdiag::
|
||||||
|
|
||||||
|
blockdiag {
|
||||||
|
default_shape = roundedbox
|
||||||
|
|
||||||
|
document_type [ label = 'Receipts' ];
|
||||||
|
documents_1 [ label = 'groceries_18-01-11.pdf', width=200 ];
|
||||||
|
documents_2 [ label = 'car_payment-17-01-02.png', width=200 ];
|
||||||
|
|
||||||
|
document_type -> documents_1, documents_2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Settings and attributes are applied to document types and documents will
|
Settings and attributes are applied to document types and documents will
|
||||||
inherit those settings and attributes based on the document type they were
|
inherit those settings and attributes based on the document type they were
|
||||||
assigned when uploaded into Mayan EDMS. A document can only be of one
|
assigned when uploaded into Mayan EDMS. A document can only be of one
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ When using ``MySQL`` and doing OCR on languages other than English
|
|||||||
|
|
||||||
**Q: Is virtualenv required as specified in the documentation?**
|
**Q: Is virtualenv required as specified in the documentation?**
|
||||||
|
|
||||||
* It is not necessary, it's just a strong recommendation mainly to reduce
|
* It is not necessary, but it's a strong recommendation mainly to reduce
|
||||||
dependency conflicts by isolation from the main Python system install.
|
dependency conflicts by isolation from the main Python system install.
|
||||||
If not using a virtualenv, pip would install Mayan's dependencies
|
If not using a virtualenv, pip would install Mayan's dependencies
|
||||||
globally coming in conflict with the distribution's prepackaged Python
|
globally coming in conflict with the distribution's prepackaged Python
|
||||||
@@ -116,3 +116,22 @@ http://mayan-edms-ru.blogspot.com/2011/11/blog-post_09.html
|
|||||||
**Q: Can you change the display order of documents...i.e can they be in alphabetical order?**
|
**Q: Can you change the display order of documents...i.e can they be in alphabetical order?**
|
||||||
|
|
||||||
A the moment no, but it is something being considered.
|
A the moment no, but it is something being considered.
|
||||||
|
|
||||||
|
**Q: Does Mayan EDMS work with Python 3?**
|
||||||
|
|
||||||
|
Not at the moment. When all the projects and libraries upon which Mayan is
|
||||||
|
dependent support Python 3 then will the project move to fully support Python 3.
|
||||||
|
Update 2018-06-04: Python 3 will be required from Django 2.0 onwards. As such
|
||||||
|
this is now a bigger priority and the transition to Python 3 has begun.
|
||||||
|
|
||||||
|
**Q: The watched folder feature is not working**
|
||||||
|
|
||||||
|
Make sure that the Celery BEAT scheduler is running correctly as it is the element
|
||||||
|
that triggers the periodics tasks.
|
||||||
|
|
||||||
|
**Q: How to do LDAP authentication**
|
||||||
|
|
||||||
|
A sample settings file called ldap_connection_settings.py is included in the
|
||||||
|
contrib/settings/ folder of the repository showing how to setup LDAP
|
||||||
|
authentication.
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ Features
|
|||||||
* Dynamic default values for metadata.
|
* Dynamic default values for metadata.
|
||||||
|
|
||||||
* Metadata fields can have an initial value, which can be static or determined
|
* Metadata fields can have an initial value, which can be static or determined
|
||||||
by an user provided template code snippet.
|
by a template code snippet provided by the user.
|
||||||
|
|
||||||
* Documents can be uploaded from different sources.
|
* Documents can be uploaded from different sources.
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ Features
|
|||||||
|
|
||||||
* Multi page document support.
|
* Multi page document support.
|
||||||
|
|
||||||
* Multiple page PDFs and TIFFs files are supported.
|
* Multiple page PDF and TIFF files are supported.
|
||||||
|
|
||||||
* Automatic OCR processing.
|
* Automatic OCR processing.
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ without extension, and stored in a simple flat arrangement in a directory.
|
|||||||
.. blockdiag::
|
.. blockdiag::
|
||||||
|
|
||||||
blockdiag {
|
blockdiag {
|
||||||
|
default_shape = roundedbox
|
||||||
file [ label = 'mayan_1-1.pdf', width=120];
|
file [ label = 'mayan_1-1.pdf', width=120];
|
||||||
document [ label = 'mayan/media/document_storage/ab6c1cfe-8a8f-4a30-96c9-f54f606b9248', width=450];
|
document [ label = 'mayan/media/document_storage/ab6c1cfe-8a8f-4a30-96c9-f54f606b9248', width=450];
|
||||||
file -> document [label = "upload"];
|
file -> document [label = "upload"];
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Concepts
|
Topics
|
||||||
========
|
======
|
||||||
|
|
||||||
Introductions to all the key parts of Mayan EDMS you'll need to know:
|
Introductions to all the key parts of Mayan EDMS you'll need to know:
|
||||||
|
|
||||||
@@ -24,4 +24,7 @@ Introductions to all the key parts of Mayan EDMS you'll need to know:
|
|||||||
settings
|
settings
|
||||||
file_storage
|
file_storage
|
||||||
backups
|
backups
|
||||||
screenshots
|
upload_wizard
|
||||||
|
pending_work
|
||||||
|
code_statistics
|
||||||
|
docker
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ Example:
|
|||||||
.. blockdiag::
|
.. blockdiag::
|
||||||
|
|
||||||
blockdiag {
|
blockdiag {
|
||||||
|
default_shape = roundedbox
|
||||||
|
span_width = 30;
|
||||||
|
|
||||||
index [ label = 'Product sheets per year', width=180 ];
|
index [ label = 'Product sheets per year', width=180 ];
|
||||||
root [ label = 'Root (Has document links? No)', width=450];
|
root [ label = 'Root (Has document links? No)', width=450];
|
||||||
level_2 [ label = '{{ document.metadata_value_of.product_year }} (Has document links? Yes)', width=450];
|
level_2 [ label = '{{ document.metadata_value_of.product_year }} (Has document links? Yes)', width=450];
|
||||||
@@ -50,6 +53,8 @@ that will be generate based on the tree template would be as follows:
|
|||||||
.. blockdiag::
|
.. blockdiag::
|
||||||
|
|
||||||
blockdiag {
|
blockdiag {
|
||||||
|
default_shape = roundedbox
|
||||||
|
|
||||||
index [ label = 'Product sheets per year', width=180 ];
|
index [ label = 'Product sheets per year', width=180 ];
|
||||||
year_1 [ label = '2001', width = 60 ];
|
year_1 [ label = '2001', width = 60 ];
|
||||||
year_2 [ label = '2002', width = 60 ];
|
year_2 [ label = '2002', width = 60 ];
|
||||||
@@ -89,5 +94,20 @@ via the network with network file system software like
|
|||||||
`Samba <https://www.samba.org/>`_ or
|
`Samba <https://www.samba.org/>`_ or
|
||||||
`NFS <https://en.wikipedia.org/wiki/Network_File_System>`_.
|
`NFS <https://en.wikipedia.org/wiki/Network_File_System>`_.
|
||||||
|
|
||||||
|
.. blockdiag::
|
||||||
|
|
||||||
|
blockdiag {
|
||||||
|
orientation = portrait
|
||||||
|
span_width = 200;
|
||||||
|
|
||||||
|
index [ label = 'Product sheets per year', width=180 ];
|
||||||
|
block_device [ height = 100, label = "Block device\n(Hard drive)", shape = flowchart.database ];
|
||||||
|
network [ label = "Network", shape = cloud ];
|
||||||
|
user [ label = "Users", shape = actor ];
|
||||||
|
|
||||||
|
index -> block_device [ label = "mirroring", fontsize = 8 ];
|
||||||
|
block_device -> network -> user;
|
||||||
|
}
|
||||||
|
|
||||||
Indexes and mirrored indexes are Read Only as they are generated as a result of
|
Indexes and mirrored indexes are Read Only as they are generated as a result of
|
||||||
prior activities like document uploads, metadata changes.
|
prior activities like document uploads, metadata changes.
|
||||||
|
|||||||
@@ -1,143 +1,42 @@
|
|||||||
============
|
|
||||||
Installation
|
Installation
|
||||||
============
|
============
|
||||||
|
|
||||||
Mayan EDMS should be deployed like any other Django_ project and
|
The easiest way to use Mayan EDMS is by using the official Docker_ image.
|
||||||
preferably using virtualenv_.
|
Make sure Docker is properly installed and working before attempting to install
|
||||||
|
Mayan EDMS.
|
||||||
|
|
||||||
Being a Django_ and a Python_ project, familiarity with these technologies is
|
Hardware requirements
|
||||||
recommended to better understand why Mayan EDMS does some of the things it
|
---------------------
|
||||||
does.
|
|
||||||
|
|
||||||
Bellow are the step needed for a test install.
|
- 2 Gigabytes of RAM (1 Gigabyte if OCR is turned off).
|
||||||
|
- Multiple core CPU (64 bit, faster than 1 GHz recommended).
|
||||||
|
|
||||||
Binary dependencies
|
Docker procedure
|
||||||
===================
|
----------------
|
||||||
|
|
||||||
Ubuntu
|
Docker is a computer program that performs operating-system-level
|
||||||
------
|
virtualization also known as containerization. It allows independent
|
||||||
|
"containers" to run within a single Linux instance, avoiding the overhead
|
||||||
|
of starting and maintaining virtual machines (VMs).
|
||||||
|
|
||||||
If using a Debian_ or Ubuntu_ based Linux distribution, get the executable
|
Docker can be installed using their automated script::
|
||||||
requirements using::
|
|
||||||
|
|
||||||
sudo apt-get install libjpeg-dev libmagic1 libpng-dev libreoffice libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv tesseract-ocr poppler-utils -y
|
wget -qO- https://get.docker.com/ | sh
|
||||||
|
|
||||||
|
This installs the latest versions of Docker. If you don't want run an automated
|
||||||
|
script follow the instructions outlined in their documentation: https://docs.docker.com/install/
|
||||||
|
|
||||||
|
Once the Docker installtion is finished, proceed to the link below to install
|
||||||
|
the Docker image for Mayan EDMS.
|
||||||
|
|
||||||
|
Docker image chapter: :ref:`docker`
|
||||||
|
|
||||||
|
Direct installation
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
For users with knowledge of Python, Django, Ubuntu, and databases.
|
||||||
|
|
||||||
|
Advanced deployment chapter: :ref:`deploying`
|
||||||
|
|
||||||
|
|
||||||
Mac OSX
|
.. _Docker: https://www.docker.com/
|
||||||
-------
|
|
||||||
|
|
||||||
Mayan EDMS is dependent on a number of binary packages and the recommended
|
|
||||||
way is to use a package manager such as `MacPorts <https://www.macports.org/>`_
|
|
||||||
or `Homebrew <http://brew.sh/>`_.
|
|
||||||
|
|
||||||
|
|
||||||
Use MacPorts to install binary dependencies
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
With MacPorts installed run the command:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo port install python-dev gcc tesseract-ocr unpaper \
|
|
||||||
python-virtualenv ghostscript libjpeg-dev libpng-dev \
|
|
||||||
poppler-utils
|
|
||||||
|
|
||||||
Set the Binary paths
|
|
||||||
********************
|
|
||||||
|
|
||||||
Mayan EDMS by default will look in /usr/bin/ for the binary files it needs
|
|
||||||
so either you can symlink the binaries installed via MacPorts in /opt/local/bin/
|
|
||||||
to /usr/bin/ with ...
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo ln -s /opt/local/bin/tesseract /usr/bin/tesseract
|
|
||||||
|
|
||||||
... alternatively set the paths in the ``settings/locals.py``
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
LIBREOFFICE_PATH = '/Applications/LibreOffice.app/Contents/MacOS/soffice'
|
|
||||||
|
|
||||||
Or Use Homebrew
|
|
||||||
~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
With Homebrew installed run the command:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
brew install python gcc tesseract unpaper poppler libpng postgresql
|
|
||||||
|
|
||||||
Set the Binary paths
|
|
||||||
********************
|
|
||||||
|
|
||||||
Mayan EDMS by default will look in /usr/bin/ for the binary files it needs
|
|
||||||
so either you can symlink the binaries installed via brew in /usr/local/bin/
|
|
||||||
to /usr/bin/ with ...
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo ln -s /usr/local/bin/tesseract /usr/bin/tesseract && \
|
|
||||||
sudo ln -s /usr/local/bin/unpaper /usr/bin/unpaper && \
|
|
||||||
sudo ln -s /usr/local/bin/pdftotext /usr/bin/pdftotext && \
|
|
||||||
sudo ln -s /usr/local/bin/gs /usr/bin/gs
|
|
||||||
|
|
||||||
... alternatively set the paths in the ``settings/locals.py``
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
LIBREOFFICE_PATH = '/Applications/LibreOffice.app/Contents/MacOS/soffice'
|
|
||||||
|
|
||||||
Actual project installation
|
|
||||||
===========================
|
|
||||||
|
|
||||||
Initialize a ``virtualenv`` to deploy the project:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
virtualenv venv
|
|
||||||
source venv/bin/activate
|
|
||||||
pip install mayan-edms
|
|
||||||
|
|
||||||
By default Mayan EDMS will create a single file SQLite_ database, which makes
|
|
||||||
it very easy to start using Mayan EDMS. Populate the database with the
|
|
||||||
project's schema doing:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
mayan-edms.py initialsetup
|
|
||||||
mayan-edms.py runserver
|
|
||||||
|
|
||||||
Point your browser to http://127.0.0.1:8000. If everything was installed
|
|
||||||
correctly you should see the login screen and panel showing a randomly generated
|
|
||||||
admin password.
|
|
||||||
|
|
||||||
Background tasks and scheduled tasks will not run when using the test server.
|
|
||||||
|
|
||||||
The ``runserver`` command is only meant for testing, do not use in a production
|
|
||||||
server.
|
|
||||||
|
|
||||||
Note that the default IP address, 127.0.0.1, is not accessible from other
|
|
||||||
machines on your network. To make your test server viewable to other
|
|
||||||
machines on the network, use its own IP address (e.g. 192.168.2.1) or 0.0.0.0 or :: (with IPv6 enabled).
|
|
||||||
|
|
||||||
You can provide an IPv6 address surrounded by brackets (e.g. [200a::1]:8000). This will automatically enable IPv6 support.
|
|
||||||
|
|
||||||
Production use
|
|
||||||
==============
|
|
||||||
|
|
||||||
After making sure everything is running correctly, stop the ``runserver`` command.
|
|
||||||
Deploy Mayan EDMS using the webserver of your preference. For more information
|
|
||||||
on deployment instructions and examples, checkout Django's official documentation
|
|
||||||
on the topic https://docs.djangoproject.com/en/1.7/howto/deployment/
|
|
||||||
For a simple production deployment setup follow the instructions in the
|
|
||||||
:doc:`deploying` chapter.
|
|
||||||
|
|
||||||
|
|
||||||
.. _Debian: http://www.debian.org/
|
|
||||||
.. _Django: http://www.djangoproject.com/
|
|
||||||
.. _Download: https://github.com/mayan-edms/mayan-edms/archives/master
|
|
||||||
.. _Python: http://www.python.org/
|
|
||||||
.. _SQLite: https://www.sqlite.org/
|
|
||||||
.. _Ubuntu: http://www.ubuntu.com/
|
|
||||||
.. _virtualenv: http://www.virtualenv.org/en/latest/index.html
|
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ Languages
|
|||||||
|
|
||||||
The list of languages choices in the language dropdown used for documents is
|
The list of languages choices in the language dropdown used for documents is
|
||||||
based on the current ISO 639 list. This list can be quite extensive. To reduce
|
based on the current ISO 639 list. This list can be quite extensive. To reduce
|
||||||
the number of languages available use the settings ``DOCUMENTS_LANGUAGE_CHOICES``,
|
the number of languages available use the settings ``DOCUMENTS_LANGUAGE_CODES``,
|
||||||
and set it to a nested list of abbreviations + languages names like::
|
and set it to a nested list of abbreviations + languages names like::
|
||||||
|
|
||||||
DOCUMENTS_LANGUAGE_CHOICES = (('eng', 'English'), ('spa', 'Spanish'))
|
DOCUMENTS_LANGUAGE_CODES = ('eng', 'spa')
|
||||||
|
|
||||||
|
|
||||||
The default language to appear on the dropdown can also be configured using::
|
The default language to appear on the dropdown can also be configured using::
|
||||||
|
|||||||
@@ -2,8 +2,9 @@
|
|||||||
OCR backend
|
OCR backend
|
||||||
===========
|
===========
|
||||||
|
|
||||||
Mayan EDMS ships an OCR backend that uses the FLOSS engine Tesseract, but it can
|
Mayan EDMS ships an OCR backend that uses the FLOSS engine Tesseract
|
||||||
use other engines. To support other engines a wrapper that subclasess the
|
(https://github.com/tesseract-ocr/tesseract/), but it can
|
||||||
|
use other engines. To support other engines crate a wrapper that subclasess the
|
||||||
``OCRBackendBase`` class defined in mayan/apps/ocr/classes. This subclass should
|
``OCRBackendBase`` class defined in mayan/apps/ocr/classes. This subclass should
|
||||||
expose the ``execute`` method. For an example of how the Tesseract backend
|
expose the ``execute`` method. For an example of how the Tesseract backend
|
||||||
is implemented take a look at the file ``mayan/apps/ocr/backends/tesseract.py``
|
is implemented take a look at the file ``mayan/apps/ocr/backends/tesseract.py``
|
||||||
@@ -13,3 +14,8 @@ OCR_BACKEND and point it to your new OCR backend class path.
|
|||||||
|
|
||||||
The default value of OCR_BACKEND is ``"ocr.backends.tesseract.Tesseract"``
|
The default value of OCR_BACKEND is ``"ocr.backends.tesseract.Tesseract"``
|
||||||
|
|
||||||
|
To add support to OCR more languages when using Tesseract, install the
|
||||||
|
corresponding language file. If using a Debian based OS, this command will
|
||||||
|
display the available language files:
|
||||||
|
|
||||||
|
apt-cache search tesseract-ocr
|
||||||
|
|||||||
312
docs/topics/pending_work.rst
Normal file
@@ -0,0 +1,312 @@
|
|||||||
|
============
|
||||||
|
Pending work
|
||||||
|
============
|
||||||
|
|
||||||
|
Release blockers
|
||||||
|
----------------
|
||||||
|
|
||||||
|
These are errors or issues that are blocking a release.
|
||||||
|
|
||||||
|
- None
|
||||||
|
|
||||||
|
Pending work
|
||||||
|
------------
|
||||||
|
|
||||||
|
These are tasks that need to be completed but are missing a dependency or
|
||||||
|
a design decision. As more information is added to each, they should be
|
||||||
|
converted into a MERC.
|
||||||
|
|
||||||
|
API
|
||||||
|
~~~
|
||||||
|
- User API edit view: Should not be able to add of remove groups without
|
||||||
|
corresponding group access.
|
||||||
|
- User group list API get & post views: Should adding a group to an user
|
||||||
|
via the API return 201 or 200. Currently returns 201.
|
||||||
|
- Consistent API return code for delete views without access. Some views
|
||||||
|
return 403 other return 404.
|
||||||
|
- Update API docstrings. The upgrade to the latest DRF broke all formatting.
|
||||||
|
- Make views smaller. Much as much as possible to serializers.
|
||||||
|
- Switch to ViewSets.
|
||||||
|
- Add API filtering. Example unread notifications.
|
||||||
|
|
||||||
|
|
||||||
|
Documents
|
||||||
|
~~~~~~~~~
|
||||||
|
- Navigating to the interactive document page image is not triggering
|
||||||
|
the document view event.
|
||||||
|
|
||||||
|
|
||||||
|
Events
|
||||||
|
~~~~~~
|
||||||
|
- New event: document emailed.
|
||||||
|
|
||||||
|
|
||||||
|
Forms processing
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
- Remove usage of self.cleaned_data. Use self.clean_data instead.
|
||||||
|
|
||||||
|
|
||||||
|
Permissions
|
||||||
|
~~~~~~~~~~~
|
||||||
|
- Permission should be reciprocal. Example: To be able to add a tag to a
|
||||||
|
document, the user must hold the tag add permission for the document
|
||||||
|
and for the tag to be added. To be able to enable a metadata type to a
|
||||||
|
document type, the user must hold the metadata add permissions for the
|
||||||
|
metadata type and for the document type.
|
||||||
|
- Edit type permissions should only grant the ability to edit the properties
|
||||||
|
of an object. To modify its relationship with other objects a reciprocal
|
||||||
|
permission check should be instead.
|
||||||
|
|
||||||
|
|
||||||
|
Search
|
||||||
|
~~~~~~
|
||||||
|
- Rename SearchModel.pk to id
|
||||||
|
|
||||||
|
|
||||||
|
Sources
|
||||||
|
~~~~~~~
|
||||||
|
- Add ACLs support to sources.
|
||||||
|
- Provide error message/feedback when scanning from a remote scanner fails.
|
||||||
|
- Require a permission for document types to avoid a user that has the workflow
|
||||||
|
creation permission to attach a workflow to a document type they don't
|
||||||
|
control.
|
||||||
|
- Research making APIWorkflowDocumentTypeList a subclass of documents.api_views.APIDocumentTypeList
|
||||||
|
- A POST request to APIWorkflowDocumentTypeList should require some permission
|
||||||
|
on the document type part to avoid adding non controlled document types
|
||||||
|
to a new workflow.
|
||||||
|
- To transition a workflow, the transition permission is only needed for the
|
||||||
|
workflow. Make it necesary to have the same permission for the document
|
||||||
|
of document type.
|
||||||
|
- To view the transition log, the workflow view permission is only needed for the
|
||||||
|
document. Make it necesary to have the same permission for the workflow or
|
||||||
|
for the transition and the states.
|
||||||
|
- Render date time of scanned documents using SANE to a better output
|
||||||
|
(like document versions).
|
||||||
|
|
||||||
|
|
||||||
|
Testing
|
||||||
|
~~~~~~~
|
||||||
|
- Add document test mixin that creates documents types and documents
|
||||||
|
(to be used in dynamic_search.test_api).
|
||||||
|
- Update all API tests using self.client to just self. and the HTTP method.
|
||||||
|
- Add test for searches for each app that uses search.
|
||||||
|
|
||||||
|
|
||||||
|
UI - Frontend
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
- Fix menu not collapsing at the same width of nav parent.
|
||||||
|
- Move direct CSS style from code into base.css. grep 'style' * -R. Style code in:
|
||||||
|
|
||||||
|
* appearance/templates/appearance/generic_list_items_subtemplate.html
|
||||||
|
* appearance/templates/appearance/base.html
|
||||||
|
* appearance/templates/appearance/generic_list_subtemplate.html
|
||||||
|
* appearance/templates/navigation/generic_link_instance.html
|
||||||
|
|
||||||
|
- Check if location is found in partial and remove it. Avoid circular loading.
|
||||||
|
- Add location to history after a form submit redirect.
|
||||||
|
|
||||||
|
|
||||||
|
UI
|
||||||
|
~~
|
||||||
|
- Shift click select to seletect multiple documents.
|
||||||
|
- During the document upload wizard and the option to double click to
|
||||||
|
select document type and submit the form. The purpose is to speed up
|
||||||
|
the step with less mouse travel since this is a common screen.
|
||||||
|
- Add metadata to the Menu class to allow UI code to decide where and how
|
||||||
|
to display each menu.
|
||||||
|
- Reduce the facet buttons paddings.
|
||||||
|
- Make facet action button smaller. Reduce margin-bottom.
|
||||||
|
- Remove previous from the views.py. It is not longer used by the form's cancel button.
|
||||||
|
|
||||||
|
|
||||||
|
Workflows
|
||||||
|
~~~~~~~~~
|
||||||
|
- Workflow trigger filters. Example: {{ document.document_type.name = 'invoice' }}
|
||||||
|
or same UI as the smart links app. Will allow restricting the firing of workflow
|
||||||
|
actions by an user defined filter criteria.
|
||||||
|
- Require a permission for document types to avoid a user that has the workflow
|
||||||
|
creation permission to attach a workflow to a document type they don't
|
||||||
|
control.
|
||||||
|
- Research making APIWorkflowDocumentTypeList a subclass of
|
||||||
|
documents.api_views.APIDocumentTypeList
|
||||||
|
- A POST request to APIWorkflowDocumentTypeList should require some permission
|
||||||
|
on the document type part to avoid adding non controlled document types
|
||||||
|
to a new workflow.
|
||||||
|
- To transition a workflow, the transition permission is only needed for the
|
||||||
|
workflow. Make it necesary to have the same permission for the document
|
||||||
|
of document type.
|
||||||
|
- To view the transition log, the workflow view permission is only needed for
|
||||||
|
the document. Make it necesary to have the same permission for the workflow or
|
||||||
|
for the transition and the states.
|
||||||
|
|
||||||
|
|
||||||
|
New features
|
||||||
|
------------
|
||||||
|
|
||||||
|
|
||||||
|
API
|
||||||
|
~~~
|
||||||
|
- Add converter API
|
||||||
|
- Document signatures API
|
||||||
|
- Smart settings API
|
||||||
|
- Use REST_API's 'mayan_permission_attribute_check' to simplify API views access checking and filtering.
|
||||||
|
- DRF filtering using the URL query.
|
||||||
|
|
||||||
|
|
||||||
|
Converter
|
||||||
|
~~~~~~~~~
|
||||||
|
- New zoom transformation. Resample, not just bigger final size but do
|
||||||
|
a resize * zoom multiple before. Produces a bigger image or higher
|
||||||
|
quality than the original.
|
||||||
|
|
||||||
|
|
||||||
|
Caching
|
||||||
|
~~~~~~~
|
||||||
|
- Size limited caching. A new model in the common app will keep track
|
||||||
|
of all cache files. A manager method will be provided that will
|
||||||
|
return the cache files in other of age to be deleted.
|
||||||
|
|
||||||
|
|
||||||
|
Distribution
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
- Python based Javascript package manager. Each app specifies what
|
||||||
|
library and version needs. The common app (or a new app) will add all
|
||||||
|
the JS loading lines automatically so that compress can detect them.
|
||||||
|
|
||||||
|
|
||||||
|
Metadata
|
||||||
|
~~~~~~~~
|
||||||
|
- Metadata lookup memory. Add a select2 style widget that will query a
|
||||||
|
new metadata API endpoint that will return all used values so far.
|
||||||
|
- Metadata validation_choices and parser_choices as static model methods
|
||||||
|
- Metadata.api as Metadata.utils and manager
|
||||||
|
|
||||||
|
|
||||||
|
Search
|
||||||
|
~~~~~~
|
||||||
|
- Add support for highlighting the search results in pages.
|
||||||
|
|
||||||
|
|
||||||
|
Settings
|
||||||
|
~~~~~~~~
|
||||||
|
- Database based settings.
|
||||||
|
|
||||||
|
|
||||||
|
Sources
|
||||||
|
~~~~~~~
|
||||||
|
- UI improvement for staging folders files selection. GitLab issue.
|
||||||
|
|
||||||
|
|
||||||
|
UI
|
||||||
|
~~
|
||||||
|
- Upgrade to Bootstrap 4.
|
||||||
|
- Upgrade to Flatly 4.
|
||||||
|
- Better workflow transition UI. Instead of a dropdown show all the
|
||||||
|
available transitions as buttons.
|
||||||
|
|
||||||
|
|
||||||
|
Workflows
|
||||||
|
~~~~~~~~~
|
||||||
|
- Workflow trigger filters. Example: {{ document.document_type.name = 'invoice' }} or same
|
||||||
|
UI as the smart links app. Will allow restricting the firing of workflow
|
||||||
|
actions by an user defined filter criteria.
|
||||||
|
- New workflow action: send email. Subject and content are templates.
|
||||||
|
|
||||||
|
|
||||||
|
Other
|
||||||
|
~~~~~
|
||||||
|
- Python based Javascript package manager. Each app specifies what
|
||||||
|
library and version needs. The common app (or a new app) will add all
|
||||||
|
the JS loading lines automatically so that compress can detect them.
|
||||||
|
- When moving documents to the trash update the message to "submitted"
|
||||||
|
and not "moved" or "deleted" since this is handled by a task queue
|
||||||
|
and is not immediate and doesn't delete the document.
|
||||||
|
- When emptying the trash update the message to "submitted"
|
||||||
|
since this is handled by a task queue and is not immediate.
|
||||||
|
- New app that allows creating user document filters. Will provide the
|
||||||
|
same service as the document filters class. Interface can be made
|
||||||
|
using the template language or the same UI as the smart links.
|
||||||
|
- Allow add queue metadata that can be exported via a management command.
|
||||||
|
This will allow creating supervisor templates without all the worker
|
||||||
|
entries being hardcoded.
|
||||||
|
- Delete .gitignore files from copied packages. Include .gitignore files
|
||||||
|
keep compiled or distributable files from being included in the main
|
||||||
|
repository. Temporary measure until a Javascript library manager is
|
||||||
|
added.
|
||||||
|
- Automatically capture license information from installed Javascript
|
||||||
|
libraries.
|
||||||
|
- Automatically capture license information from installed Python
|
||||||
|
packages.
|
||||||
|
- Update celery to 4.1.0
|
||||||
|
- Update to use the new class based views in the authentication app.
|
||||||
|
password_change(), password_change_done(), password_reset(),
|
||||||
|
password_reset_done(), password_reset_confirm(), and password_reset_complete()
|
||||||
|
function-based views are deprecated in favor of new class-based views
|
||||||
|
PasswordChangeView, PasswordChangeDoneView, PasswordResetView,
|
||||||
|
PasswordResetDoneView, PasswordResetConfirmView, and PasswordResetCompleteView.
|
||||||
|
- django.utils.translation.string_concat() is deprecated in favor of
|
||||||
|
django.utils.text.format_lazy(). string_concat(strings) can be
|
||||||
|
replaced by format_lazy('{}' x len(strings), strings).
|
||||||
|
Found in converter/classes.py and metadata/forms.py.
|
||||||
|
- Fix warnings in preparation for Django 2.0.
|
||||||
|
- Update all tempfile.mkstemp() to tempfile.mkstemp(dir=setting_temporary_directory.value)
|
||||||
|
- Get rid of common.utils.get_descriptor only used by common.utils.copyfile
|
||||||
|
- Update common.utils.copyfile to use only file objects.
|
||||||
|
- Change metadata label column from CharField to Label
|
||||||
|
- Start testing to Python 3 compatibility.
|
||||||
|
- Unify all RelationshipForms into a common class.
|
||||||
|
- Add test for event subscription view.
|
||||||
|
- Repeated templates: password_reset_confirm.html and password_reset_form.html
|
||||||
|
- Remove unused text=get_notification_count from events.links
|
||||||
|
- Reduce number of languages so dropzone view starts faster.
|
||||||
|
- In DocumentComment model, rename comment field to text.
|
||||||
|
- class MultipleInstanceActionMixin is deprecated. Replace views using this with
|
||||||
|
MultipleObjectFormActionView or MultipleObjectConfirmActionView
|
||||||
|
- Subscribe to tag events
|
||||||
|
- Subscribe to workflow events
|
||||||
|
- Subscribe to workflow state events
|
||||||
|
- Link to go from event notification to view. Example document workflow notification to document workflow views.
|
||||||
|
- Find replacement for ``python-gnupg``. Unstable & inconsistent API.
|
||||||
|
- New app that allows creating user document filters. Will provide the
|
||||||
|
same service as the document filters class. Interface can be made
|
||||||
|
using the template language or the same UI as the smart links.
|
||||||
|
- Allow add queue metadata that can be exported via a management command.
|
||||||
|
This will allow creating supervisor templates without all the worker
|
||||||
|
entries being hardcoded.
|
||||||
|
- Automatically capture license information from installed Javascript
|
||||||
|
libraries.
|
||||||
|
- Automatically capture license information from installed Python
|
||||||
|
packages.
|
||||||
|
- Finish and merge improved compressed file branch.
|
||||||
|
- Improve and merge PCL support branch.
|
||||||
|
- Swtich to self hosted documentation.
|
||||||
|
- Unify error logs in a common model. Fields: Datetime, namespace,
|
||||||
|
message, content type, object id.
|
||||||
|
- Export documents as PDF. Each document image is used to create a PDF
|
||||||
|
dinamycally.
|
||||||
|
- Document splitting. Only for PDF files first. A document versions
|
||||||
|
relationship between the documents has to be designed.
|
||||||
|
- Manually linking documents.
|
||||||
|
- Migrate settings/base.py to Django's 1.11 format.
|
||||||
|
- Rename model methods to use ``get_`` or ``do_``
|
||||||
|
- Hunt TODO
|
||||||
|
- Hunt FIXME
|
||||||
|
- Convert SETTING_GPG_BACKEND into a setting option similar to converter and converter options.
|
||||||
|
- Reorganize modelForms Meta class and methods.
|
||||||
|
- Periodic messages, like notifications. Using an AJAX worker.
|
||||||
|
- Find replacement for ``python-gnupg``. Unstable & inconsistent API.
|
||||||
|
- Google docs integration. Upload document from Google Drive.
|
||||||
|
- Get ``dumpdata`` and ``loaddata`` working flawlessly. Will allow for easier backups, restores and database backend migrations.
|
||||||
|
- Add generic list ordering. ``django.views.generic.list.MultipleObjectMixin`` (https://docs.djangoproject.com/en/1.8/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectMixin) now supports an ``ordering`` parameter.
|
||||||
|
- Add support to convert any document to PDF. https://gitlab.mister-muffin.de/josch/img2pdf
|
||||||
|
- Add support for combining documents.
|
||||||
|
- Add support for splitting documents.
|
||||||
|
- Add new document source to get documents from an URL.
|
||||||
|
- Add support for metadata mapping files. CSV file containing filename to metadata values mapping, useful for bulk upload and migrations.
|
||||||
|
- Add support for registering widgets to the home screen.
|
||||||
|
- Merge mimetype and converter apps.
|
||||||
|
- Metadata widgets (Date, time, timedate).
|
||||||
|
- Datatime widget: https://github.com/smalot/bootstrap-datetimepicker
|
||||||
|
- Add events for document signing app (uploaded detached signateure, signed document, deleted signature)
|
||||||
|
- A configurable conversion process. Being able to invoke different binaries for file conversion, as opposed to the current libreoffice only solution.
|
||||||
|
- A tool in the admin interface to mass (re)convert the files (basically the page count function, but then applied on all documents).
|
||||||