Compare commits
719 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4397784388 | ||
|
|
d41dac13ea | ||
|
|
3b9a5080b5 | ||
|
|
de9b716e77 | ||
|
|
deef1dc19c | ||
|
|
9f3838b5f6 | ||
|
|
4a9e2c2aa7 | ||
|
|
e62835fd27 | ||
|
|
0f1e01084c | ||
|
|
0753d40a5d | ||
|
|
2fb1208888 | ||
|
|
2eb3dfcbfd | ||
|
|
cad7cd4e95 | ||
|
|
6225e8f561 | ||
|
|
e9f3ba67a6 | ||
|
|
fe2d57e2f3 | ||
|
|
a7be0d567f | ||
|
|
0ee2c98d51 | ||
|
|
f2ad6b5cde | ||
|
|
73912f11d4 | ||
|
|
3821f9bf3e | ||
|
|
474da4308d | ||
|
|
64b06dc56f | ||
|
|
7ccb3cc152 | ||
|
|
830e937e1b | ||
|
|
7681f82321 | ||
|
|
e8a0e2b5ab | ||
|
|
c7a464797c | ||
|
|
6c713bd2de | ||
|
|
95e1b9036b | ||
|
|
714af0764a | ||
|
|
6d434b57f8 | ||
|
|
ae4e7ce32e | ||
|
|
b5d09be31b | ||
|
|
daf72a8770 | ||
|
|
71c1f02a8d | ||
|
|
647835d0f5 | ||
|
|
87d27a6d7a | ||
|
|
9e9e154642 | ||
|
|
27f0fca914 | ||
|
|
2b24314d25 | ||
|
|
b4b7d610f9 | ||
|
|
9b70f6c11c | ||
|
|
2aa1c2fcce | ||
|
|
b2828d1e1c | ||
|
|
1d8266fe5d | ||
|
|
3b895d7560 | ||
|
|
b42a43bafd | ||
|
|
d75e8b345f | ||
|
|
a237217f8b | ||
|
|
c169d23714 | ||
|
|
109941fcf8 | ||
|
|
7cebb82e1c | ||
|
|
11aa9e64f1 | ||
|
|
0a72fccb97 | ||
|
|
b714aa420f | ||
|
|
827384cc95 | ||
|
|
57d3cf8f4a | ||
|
|
b74245979e | ||
|
|
5982c1b2ee | ||
|
|
46fb8dfc10 | ||
|
|
7f7ba8924d | ||
|
|
cb4c70c822 | ||
|
|
0ec69bc4fc | ||
|
|
37f79ffde3 | ||
|
|
47ac12b4d1 | ||
|
|
d48338a989 | ||
|
|
397c1ad86b | ||
|
|
fbee8cb64c | ||
|
|
aac3bd0bbe | ||
|
|
fec0d82f6f | ||
|
|
5593c3ae84 | ||
|
|
51426632ca | ||
|
|
b614ce192f | ||
|
|
416037f3f0 | ||
|
|
644a0288d7 | ||
|
|
f5145ae8ee | ||
|
|
abe8fcd90b | ||
|
|
eda919657e | ||
|
|
88bfe29365 | ||
|
|
76b0508c9e | ||
|
|
30067f46b6 | ||
|
|
799c0cfd57 | ||
|
|
2b27a86723 | ||
|
|
e230c1d4e2 | ||
|
|
c1b8544c5a | ||
|
|
278704bb91 | ||
|
|
837a3f63fb | ||
|
|
2bc008d298 | ||
|
|
5fa0c9ccfb | ||
|
|
789f68521e | ||
|
|
eabc42bf64 | ||
|
|
aef795bffa | ||
|
|
628e74da95 | ||
|
|
571ce1723c | ||
|
|
830fa56d38 | ||
|
|
b85431a4dc | ||
|
|
0d382a7dd8 | ||
|
|
6f585a2836 | ||
|
|
a4bbc65508 | ||
|
|
fa2795dd96 | ||
|
|
0477fe4b44 | ||
|
|
88a56f14ea | ||
|
|
d9b6c01ac7 | ||
|
|
d44646aa60 | ||
|
|
00eae9702a | ||
|
|
1692de6b7d | ||
|
|
fbcc556558 | ||
|
|
a44f9a1f84 | ||
|
|
a44feda52f | ||
|
|
8f119b814f | ||
|
|
ac43959c0c | ||
|
|
14487ebf05 | ||
|
|
602bf45d1b | ||
|
|
687dbaa82a | ||
|
|
d13b1d40a4 | ||
|
|
941fcad063 | ||
|
|
4bd7fa25ac | ||
|
|
da1a6420b3 | ||
|
|
036cba29c3 | ||
|
|
1a949719eb | ||
|
|
f8960eb475 | ||
|
|
85ebf42a79 | ||
|
|
bed5b4621d | ||
|
|
95137ec5b0 | ||
|
|
784467969a | ||
|
|
61730878e4 | ||
|
|
40f3445bd6 | ||
|
|
8906e5c249 | ||
|
|
d7b8ed8814 | ||
|
|
d304bcb8c7 | ||
|
|
88d4f2da0c | ||
|
|
aec8d05747 | ||
|
|
87cb368c09 | ||
|
|
29423dc85b | ||
|
|
812a7296ee | ||
|
|
ecb237ccd7 | ||
|
|
66f451b23f | ||
|
|
99303d2f95 | ||
|
|
22b31929a3 | ||
|
|
97f386e3bb | ||
|
|
5c112d8948 | ||
|
|
a332039673 | ||
|
|
e352be4f73 | ||
|
|
bec08ac617 | ||
|
|
ae40acd4f7 | ||
|
|
76b89dfb36 | ||
|
|
2cb1d7b34c | ||
|
|
f3b099d212 | ||
|
|
e9cba726a6 | ||
|
|
93bd4f2ff8 | ||
|
|
395b8564d4 | ||
|
|
231018c34c | ||
|
|
37bfe86823 | ||
|
|
7cecdb70f3 | ||
|
|
bfdeb08efe | ||
|
|
7fe25e6c46 | ||
|
|
93fb5fb85f | ||
|
|
650681bfcf | ||
|
|
50f8242b21 | ||
|
|
52c3ec8cc6 | ||
|
|
babdc4e93a | ||
|
|
8728167044 | ||
|
|
9cb9717793 | ||
|
|
08a0f80918 | ||
|
|
b06c518ee7 | ||
|
|
a243646860 | ||
|
|
4d7999cadb | ||
|
|
e63b596ff5 | ||
|
|
54a7038873 | ||
|
|
37c09c866e | ||
|
|
48aec019e7 | ||
|
|
190c273673 | ||
|
|
ea491af4d9 | ||
|
|
6b043d8622 | ||
|
|
efdaaa56b9 | ||
|
|
d79cede03a | ||
|
|
ee24389aca | ||
|
|
0299a26ebd | ||
|
|
39b477064e | ||
|
|
a7c76e1a73 | ||
|
|
43ab280e98 | ||
|
|
9ee23dabd6 | ||
|
|
d05c773be3 | ||
|
|
0a52b9189e | ||
|
|
7fc4c4ee22 | ||
|
|
3fe003b83b | ||
|
|
5af95b116f | ||
|
|
97d0ea66a0 | ||
|
|
ad44435308 | ||
|
|
0d53bb48c2 | ||
|
|
7c0a7771d2 | ||
|
|
b61be09fe2 | ||
|
|
fd5777badb | ||
|
|
9ef2bfc165 | ||
|
|
fd54e9c9d9 | ||
|
|
046aa3b993 | ||
|
|
86f2ed56e0 | ||
|
|
93814fa5b8 | ||
|
|
0c6ac337f5 | ||
|
|
9afba087bd | ||
|
|
216e977efe | ||
|
|
7ec2a1e03b | ||
|
|
4c1bfd5f61 | ||
|
|
e886dfc724 | ||
|
|
1c6e90a37d | ||
|
|
232361bd45 | ||
|
|
49c70ab8ed | ||
|
|
026647c93e | ||
|
|
4db14e71da | ||
|
|
c906a5dcee | ||
|
|
9e4a7025de | ||
|
|
0baae26168 | ||
|
|
d5d8cbded9 | ||
|
|
8e4418c1c7 | ||
|
|
dbbaf11275 | ||
|
|
40fcbc310f | ||
|
|
9eafd7d3e1 | ||
|
|
abe3885ae6 | ||
|
|
7e44247319 | ||
|
|
b0c1296ecc | ||
|
|
773442425e | ||
|
|
7180245f8c | ||
|
|
a740b63cdf | ||
|
|
88e9856a72 | ||
|
|
08cd41cd20 | ||
|
|
c25394e360 | ||
|
|
f665c52bf2 | ||
|
|
c6d2246a87 | ||
|
|
0e8c2a9325 | ||
|
|
51189281ea | ||
|
|
470d4920a6 | ||
|
|
915107e0e5 | ||
|
|
22bfb93504 | ||
|
|
cef6af6cca | ||
|
|
dac5dd3464 | ||
|
|
00b9bf6061 | ||
|
|
08dc52c653 | ||
|
|
2fbcb91417 | ||
|
|
76caa758d0 | ||
|
|
aec552a068 | ||
|
|
67b4e7ebc3 | ||
|
|
e7727a4033 | ||
|
|
a1435c7358 | ||
|
|
e2b6541e6e | ||
|
|
86ad9bbe46 | ||
|
|
df34097450 | ||
|
|
f612948ba4 | ||
|
|
4b9b8d279a | ||
|
|
c9811c6a76 | ||
|
|
29654c5f99 | ||
|
|
539d6f6581 | ||
|
|
ae6396e31b | ||
|
|
7c6bfd3471 | ||
|
|
93a72f63d1 | ||
|
|
6f3f883f75 | ||
|
|
1e3829c1d8 | ||
|
|
bae1d1004d | ||
|
|
7bb708a8c3 | ||
|
|
58019de21b | ||
|
|
e6f8817db3 | ||
|
|
b9b7ab73bb | ||
|
|
fc61ad1440 | ||
|
|
d02e5b1d37 | ||
|
|
e73d48eda3 | ||
|
|
0e9cda6547 | ||
|
|
141db9dc34 | ||
|
|
a76a3b28fd | ||
|
|
731835ef70 | ||
|
|
09c53aed19 | ||
|
|
fd3eed6bd1 | ||
|
|
82eb31e4ec | ||
|
|
d341800ec5 | ||
|
|
2860ad46af | ||
|
|
be55d23c34 | ||
|
|
388a4b0dd7 | ||
|
|
2c7fea8baf | ||
|
|
d9b246c590 | ||
|
|
ab1112ab89 | ||
|
|
d23cf986e0 | ||
|
|
91a5b5c7b3 | ||
|
|
336f9c3880 | ||
|
|
5bd4d6ee77 | ||
|
|
f705c84d4d | ||
|
|
c304d1ed27 | ||
|
|
332156b590 | ||
|
|
df527b1fd4 | ||
|
|
576a2cc643 | ||
|
|
27c0a3ef43 | ||
|
|
377032b92a | ||
|
|
37160efe9f | ||
|
|
81abd524b4 | ||
|
|
9f84439099 | ||
|
|
66c398c884 | ||
|
|
c15ec9ce8d | ||
|
|
d7ff892b8f | ||
|
|
da8d9a4b88 | ||
|
|
a1706de879 | ||
|
|
b563404324 | ||
|
|
782802136a | ||
|
|
fdfeac6ae5 | ||
|
|
a97a048d9c | ||
|
|
7c879a6546 | ||
|
|
790092f776 | ||
|
|
f0f28a397c | ||
|
|
c5515f5054 | ||
|
|
34c3fd61fb | ||
|
|
52419b8b73 | ||
|
|
6d8dc886ca | ||
|
|
8435f3c1a2 | ||
|
|
666db3dfcc | ||
|
|
29c120c9dd | ||
|
|
384209d2aa | ||
|
|
ac60654cc9 | ||
|
|
ecd88553e4 | ||
|
|
784aff8ded | ||
|
|
b812a68777 | ||
|
|
d7ddbc2c62 | ||
|
|
a50cd33b38 | ||
|
|
a5d7424fb8 | ||
|
|
59e75176fe | ||
|
|
8b4cf87368 | ||
|
|
239f6467fe | ||
|
|
9ff4ff75ff | ||
|
|
da8eb2e508 | ||
|
|
71c01670ac | ||
|
|
60b2998b65 | ||
|
|
5019b1a01f | ||
|
|
027f754209 | ||
|
|
b779042694 | ||
|
|
610f9b94e7 | ||
|
|
a549c0e6df | ||
|
|
5cd81ddebb | ||
|
|
0d8febc902 | ||
|
|
9bb7821553 | ||
|
|
7b5a64f434 | ||
|
|
198a2908d2 | ||
|
|
82cb106051 | ||
|
|
dd00296c0a | ||
|
|
f43f496241 | ||
|
|
833e149921 | ||
|
|
b238874ddb | ||
|
|
637d77fdcb | ||
|
|
c2bf923e3e | ||
|
|
cdb6e7c6c6 | ||
|
|
74b87026ca | ||
|
|
8f714a9fa9 | ||
|
|
8f08296e7b | ||
|
|
344e738c48 | ||
|
|
859109c378 | ||
|
|
ffaf01c637 | ||
|
|
c3ac4a623a | ||
|
|
87c958638d | ||
|
|
014b2f1d1f | ||
|
|
6930f76f2f | ||
|
|
60972cd0ba | ||
|
|
e0fbac66d1 | ||
|
|
d339a250fe | ||
|
|
6d8aebb411 | ||
|
|
c2da6512e4 | ||
|
|
cfb1278c7e | ||
|
|
1f2b5b6d29 | ||
|
|
c14634dafa | ||
|
|
862bb43d93 | ||
|
|
2f6a1d4e76 | ||
|
|
a7437a3ada | ||
|
|
30eb32f888 | ||
|
|
75f9c47e2b | ||
|
|
86144aa54a | ||
|
|
a574aa2c9f | ||
|
|
243e5c01fa | ||
|
|
5b5b6fd785 | ||
|
|
198538df4f | ||
|
|
96a1b68221 | ||
|
|
ba2f2fc455 | ||
|
|
28f9f32d91 | ||
|
|
3762f90ada | ||
|
|
e0abb02df0 | ||
|
|
486f983d4b | ||
|
|
20856b1589 | ||
|
|
b15f5538e1 | ||
|
|
d2e6df4dde | ||
|
|
d97b3f344d | ||
|
|
9c6f10cc1c | ||
|
|
e442979ff2 | ||
|
|
96bd7cc044 | ||
|
|
ddcc5921b9 | ||
|
|
7bfc960f9b | ||
|
|
bd2fbe605c | ||
|
|
cee79dc0cc | ||
|
|
3b44c785ca | ||
|
|
6fa0c226b0 | ||
|
|
d1e59b1d7b | ||
|
|
74ec57b931 | ||
|
|
e9c9b785c4 | ||
|
|
0c493dff14 | ||
|
|
13447a5f24 | ||
|
|
03fa9f9fb7 | ||
|
|
4c71139055 | ||
|
|
24fc48ad85 | ||
|
|
cf76d98546 | ||
|
|
e2835ec85c | ||
|
|
2812f007a1 | ||
|
|
f77c886e51 | ||
|
|
7e83a1074e | ||
|
|
6fa16ebb7e | ||
|
|
0c9a2d2c5d | ||
|
|
0ec1cc3823 | ||
|
|
64c7804611 | ||
|
|
4c8a81e2d3 | ||
|
|
7a11022b42 | ||
|
|
0f53854c91 | ||
|
|
d59f975715 | ||
|
|
60fdd18e41 | ||
|
|
b0eac5ffc3 | ||
|
|
d5ad65b93b | ||
|
|
a36d15b4e6 | ||
|
|
e6bbd5335d | ||
|
|
aa441f8212 | ||
|
|
5d86387e8e | ||
|
|
e1bd1b6f55 | ||
|
|
bd4f25df15 | ||
|
|
690b41f8d6 | ||
|
|
e9185784a7 | ||
|
|
2aff8ce165 | ||
|
|
d2d3429183 | ||
|
|
54d836ba07 | ||
|
|
f16fd37b61 | ||
|
|
4fad1c3305 | ||
|
|
f8d94be59d | ||
|
|
d41195c6a0 | ||
|
|
12487ccbca | ||
|
|
9c2bd2afae | ||
|
|
da1232d615 | ||
|
|
595c9108fd | ||
|
|
ef008c31cb | ||
|
|
eecf7c7751 | ||
|
|
24bf20b9d7 | ||
|
|
2abe2ceb99 | ||
|
|
65626120df | ||
|
|
0b69f778cf | ||
|
|
5e97ba1e71 | ||
|
|
ba550c7f03 | ||
|
|
9dc07de628 | ||
|
|
4aee439590 | ||
|
|
c5def4a5ec | ||
|
|
331fd3fe17 | ||
|
|
e2e7e4bb49 | ||
|
|
ac65a6db76 | ||
|
|
bccc228fa0 | ||
|
|
96177c8531 | ||
|
|
fb54b4f1dc | ||
|
|
1b7eea2fc2 | ||
|
|
f2e5dba492 | ||
|
|
48df2e026d | ||
|
|
a2ac5ab994 | ||
|
|
d1bb4ef185 | ||
|
|
d267988348 | ||
|
|
1778696c0b | ||
|
|
9accfba904 | ||
|
|
191fceb191 | ||
|
|
2df869c4cb | ||
|
|
abcaeb08a4 | ||
|
|
8e227d7f3e | ||
|
|
45f93f7b69 | ||
|
|
7531cf8168 | ||
|
|
65293a7402 | ||
|
|
ea19bd901a | ||
|
|
dd8d35aec6 | ||
|
|
53a35e0f1c | ||
|
|
5c7d4e982b | ||
|
|
6f2f9469b1 | ||
|
|
d7d409582f | ||
|
|
79d50b3f32 | ||
|
|
2b0702c2dd | ||
|
|
0822f6d076 | ||
|
|
b8aa5fa974 | ||
|
|
adc6c032c7 | ||
|
|
490161d649 | ||
|
|
085a0fc33d | ||
|
|
e12aa94320 | ||
|
|
4b02dad51f | ||
|
|
de2782cfda | ||
|
|
9b18be1333 | ||
|
|
2ef64bebcb | ||
|
|
930360002b | ||
|
|
c12583d39e | ||
|
|
fd719be2a2 | ||
|
|
6c6a619c73 | ||
|
|
fbe2303ede | ||
|
|
2d5fcfb41b | ||
|
|
2b3d43273a | ||
|
|
7cdd5d4d1b | ||
|
|
76b740786a | ||
|
|
615987366f | ||
|
|
f42d681f85 | ||
|
|
c2773615ce | ||
|
|
4439b9a6de | ||
|
|
383308cd73 | ||
|
|
8f9207f4fc | ||
|
|
87508db11e | ||
|
|
94fb991c14 | ||
|
|
304325ac02 | ||
|
|
739929df22 | ||
|
|
b74c66261f | ||
|
|
6f99146f5b | ||
|
|
0afa9f8123 | ||
|
|
94178eb68d | ||
|
|
1c070ab58b | ||
|
|
24130cf716 | ||
|
|
34ce26e67b | ||
|
|
9520f67fb7 | ||
|
|
2eb1469bf7 | ||
|
|
749525ba51 | ||
|
|
12115ca946 | ||
|
|
27860d8c11 | ||
|
|
240d6ede75 | ||
|
|
40e0e52e6b | ||
|
|
dbaa5cd115 | ||
|
|
080d68c169 | ||
|
|
90c411f554 | ||
|
|
22caf75653 | ||
|
|
7bd07b53fc | ||
|
|
9bbd99bcd9 | ||
|
|
7c4a458dbb | ||
|
|
5563d2e747 | ||
|
|
28ebcfa2d8 | ||
|
|
e901f3d914 | ||
|
|
ec1f97379e | ||
|
|
2fe94bb9fa | ||
|
|
9a4a3a87fe | ||
|
|
176d577142 | ||
|
|
9dda1d9035 | ||
|
|
9ee65cad7f | ||
|
|
d8b8dee509 | ||
|
|
c1d7acb6e3 | ||
|
|
de8c690934 | ||
|
|
b81c8be616 | ||
|
|
ed58ed667e | ||
|
|
7a94f7679b | ||
|
|
bb09910ae7 | ||
|
|
61fdfaa2db | ||
|
|
571002660b | ||
|
|
3094a940e1 | ||
|
|
1cc1f8f819 | ||
|
|
58f027db60 | ||
|
|
2d95824535 | ||
|
|
e3aab5c0f9 | ||
|
|
93b56a5bcc | ||
|
|
c24a3f935e | ||
|
|
e0e95af092 | ||
|
|
5b43299c41 | ||
|
|
af441349ad | ||
|
|
469f8ebdcb | ||
|
|
6a8e08db38 | ||
|
|
82baf564c6 | ||
|
|
08d68e7993 | ||
|
|
c2d7ce94b1 | ||
|
|
db0c5be74f | ||
|
|
16196a3260 | ||
|
|
f96725de55 | ||
|
|
235f77ec70 | ||
|
|
e3a173a2cd | ||
|
|
fb0070a4ea | ||
|
|
db13cd1702 | ||
|
|
15156b326b | ||
|
|
80488d0f96 | ||
|
|
a65031dab5 | ||
|
|
35a4a60d42 | ||
|
|
b3bcb274a0 | ||
|
|
895a5c7e76 | ||
|
|
1792599411 | ||
|
|
7e3e3af503 | ||
|
|
c771177666 | ||
|
|
3d5fa93be0 | ||
|
|
a4da16d8a1 | ||
|
|
09eb1b20de | ||
|
|
fac274c9c2 | ||
|
|
9333f3c0b7 | ||
|
|
5b349cb010 | ||
|
|
80e236723b | ||
|
|
675e1d3df7 | ||
|
|
ce0082ee3f | ||
|
|
1c2a89e3e8 | ||
|
|
ccc26f9566 | ||
|
|
98c387fbd0 | ||
|
|
4d8460ad8a | ||
|
|
01b6ff168e | ||
|
|
83fd8ab5cf | ||
|
|
ed517b24f3 | ||
|
|
e89959b71b | ||
|
|
2ee59df866 | ||
|
|
8e829612af | ||
|
|
738e304545 | ||
|
|
a697b74157 | ||
|
|
da48d2c28a | ||
|
|
520d6cc3af | ||
|
|
97ae34a06d | ||
|
|
007b8c10ab | ||
|
|
5adffd4e75 | ||
|
|
6a7ca922f0 | ||
|
|
71a3e16a01 | ||
|
|
9bcf7574bf | ||
|
|
0d40316305 | ||
|
|
34ebf6a263 | ||
|
|
c8129b1f5f | ||
|
|
a7b7195370 | ||
|
|
b6fcf977e5 | ||
|
|
e3505d05ec | ||
|
|
ea49395c23 | ||
|
|
0050fe4eef | ||
|
|
085d32e214 | ||
|
|
c5bce945c4 | ||
|
|
83a6f7e072 | ||
|
|
a5b88d3683 | ||
|
|
5dbceb5584 | ||
|
|
95cf290e2c | ||
|
|
021c75c665 | ||
|
|
a5280870c2 | ||
|
|
0717f346b0 | ||
|
|
afac6e7667 | ||
|
|
41facf623a | ||
|
|
8425cd6f7e | ||
|
|
ebd5016990 | ||
|
|
1d23735344 | ||
|
|
50ad0d9bf6 | ||
|
|
55a6720a84 | ||
|
|
0ff0892b25 | ||
|
|
38426ed32f | ||
|
|
6cbe1301ca | ||
|
|
ffc71ea8b3 | ||
|
|
663a5d5b3b | ||
|
|
1a117c7fb7 | ||
|
|
af49370870 | ||
|
|
8ff1997dda | ||
|
|
9f22085eef | ||
|
|
2b123799de | ||
|
|
892a7f77ae | ||
|
|
ef33a780e0 | ||
|
|
9bcdb01b79 | ||
|
|
c3f337898d | ||
|
|
cb23f94cdf | ||
|
|
fa1ee6fec0 | ||
|
|
04cad6365c | ||
|
|
0870d8228b | ||
|
|
a6f6637789 | ||
|
|
3c83334e30 | ||
|
|
22f009d0f7 | ||
|
|
3e6632dfdc | ||
|
|
eaf0293dcf | ||
|
|
5d02ed4d08 | ||
|
|
4b457aa567 | ||
|
|
6823122793 | ||
|
|
d5ddd22861 | ||
|
|
8d4ce81c34 | ||
|
|
895702cb53 | ||
|
|
6fd0854ac5 | ||
|
|
28a3e209ab | ||
|
|
dcf568ead5 | ||
|
|
7ccab82fd4 | ||
|
|
568611927b | ||
|
|
d028f54c27 | ||
|
|
4a3cdc3a5c | ||
|
|
e2e9c074b7 | ||
|
|
a3822a1836 | ||
|
|
89aeb8ad7c | ||
|
|
ffb5fc8286 | ||
|
|
8c8befabdd | ||
|
|
94ec7ca47f | ||
|
|
bc1d4cbb46 | ||
|
|
a359a171d3 | ||
|
|
b513730978 | ||
|
|
40d76b3476 | ||
|
|
11ca6772ef | ||
|
|
60edd51464 | ||
|
|
be332192e4 | ||
|
|
d6af3c629a | ||
|
|
878d6fa0c1 | ||
|
|
fb48221db5 | ||
|
|
503c7c7594 | ||
|
|
0ff1843545 | ||
|
|
19b3553705 | ||
|
|
a234c76326 | ||
|
|
b7e582928a | ||
|
|
482b9fe9e9 | ||
|
|
9731b2f1dc | ||
|
|
1d7f50478c | ||
|
|
fe27445e9e | ||
|
|
a5ac14ea3f | ||
|
|
460e0b3a26 | ||
|
|
bf981a1e8f | ||
|
|
70cb939611 | ||
|
|
c2a0ceb22e | ||
|
|
d1cf15b3eb | ||
|
|
b849352b3a | ||
|
|
0e060aec46 | ||
|
|
29c3746163 | ||
|
|
8650e9acb5 | ||
|
|
2998fe0611 | ||
|
|
7f57336d86 | ||
|
|
ef54f946a8 | ||
|
|
5651b3b4df | ||
|
|
d8be649107 | ||
|
|
4b984cd600 | ||
|
|
c9dcda3a5c | ||
|
|
11a9d87701 | ||
|
|
4e8676882f | ||
|
|
f29fd24c53 | ||
|
|
55709c3cdf | ||
|
|
92604246c2 | ||
|
|
fd81ba7a6d | ||
|
|
b37b006918 | ||
|
|
406d0fd183 | ||
|
|
7cd651638a | ||
|
|
ab9dee0a56 | ||
|
|
2d3f8fafe9 | ||
|
|
5d8235aebf | ||
|
|
93a6aae9c2 | ||
|
|
631c41c4a2 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,7 +1,8 @@
|
||||
*.orig
|
||||
*.pyc
|
||||
*.pyo
|
||||
/*.sqlite
|
||||
*.sql
|
||||
*.sqlite
|
||||
/settings_local.py
|
||||
/celerybeat-schedule
|
||||
/document_storage/
|
||||
@@ -13,3 +14,4 @@ _build/
|
||||
/static/
|
||||
/whoosh_index/
|
||||
/fabfile_install
|
||||
/server_config.yaml
|
||||
|
||||
54
.tx/config
54
.tx/config
@@ -13,10 +13,10 @@ source_lang = en
|
||||
source_file = apps/bootstrap/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-checkouts]
|
||||
file_filter = apps/checkouts/locale/<lang>/LC_MESSAGES/django.po
|
||||
[mayan-edms.apps-converter]
|
||||
file_filter = apps/converter/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = apps/checkouts/locale/en/LC_MESSAGES/django.po
|
||||
source_file = apps/converter/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-common]
|
||||
@@ -25,10 +25,16 @@ source_lang = en
|
||||
source_file = apps/common/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-converter]
|
||||
file_filter = apps/converter/locale/<lang>/LC_MESSAGES/django.po
|
||||
[mayan-edms.apps-checkouts]
|
||||
file_filter = apps/checkouts/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = apps/converter/locale/en/LC_MESSAGES/django.po
|
||||
source_file = apps/checkouts/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-clustering]
|
||||
file_filter = apps/clustering/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = apps/clustering/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-django_gpg]
|
||||
@@ -37,6 +43,12 @@ source_lang = en
|
||||
source_file = apps/django_gpg/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-diagnostics]
|
||||
file_filter = apps/diagnostics/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = apps/diagnostics/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-documents]
|
||||
file_filter = apps/documents/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
@@ -85,18 +97,36 @@ source_lang = en
|
||||
source_file = apps/installation/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-job_processor]
|
||||
file_filter = apps/job_processor/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = apps/job_processor/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-linking]
|
||||
file_filter = apps/linking/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = apps/linking/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-lock_manager]
|
||||
file_filter = apps/lock_manager/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = apps/lock_manager/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-main]
|
||||
file_filter = apps/main/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = apps/main/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-maintenance]
|
||||
file_filter = apps/maintenance/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = apps/maintenance/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-metadata]
|
||||
file_filter = apps/metadata/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
@@ -157,12 +187,24 @@ source_lang = en
|
||||
source_file = apps/sources/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-statistics]
|
||||
file_filter = apps/statistics/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = apps/statistics/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-tags]
|
||||
file_filter = apps/tags/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = apps/tags/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-trash]
|
||||
file_filter = apps/trash/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = apps/trash/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.apps-user_management]
|
||||
file_filter = apps/user_management/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
|
||||
@@ -1,39 +1,18 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from navigation.api import register_links, register_multi_item_links
|
||||
from project_setup.api import register_setup
|
||||
from navigation.api import bind_links, register_multi_item_links
|
||||
|
||||
from .classes import (AccessHolder, AccessObjectClass, ClassAccessHolder,
|
||||
AccessObject)
|
||||
from .permissions import (ACLS_EDIT_ACL, ACLS_VIEW_ACL,
|
||||
ACLS_CLASS_EDIT_ACL, ACLS_CLASS_VIEW_ACL)
|
||||
from .links import (acl_detail, acl_grant, acl_revoke,
|
||||
acl_holder_new, acl_setup_valid_classes, acl_class_list,
|
||||
acl_class_acl_list, acl_class_acl_detail, acl_class_new_holder_for,
|
||||
acl_class_grant, acl_class_revoke)
|
||||
|
||||
|
||||
acl_list = {'text': _(u'ACLs'), 'view': 'acl_list', 'famfam': 'lock', 'permissions': [ACLS_VIEW_ACL]}
|
||||
acl_detail = {'text': _(u'details'), 'view': 'acl_detail', 'args': ['access_object.gid', 'object.gid'], 'famfam': 'key_go', 'permissions': [ACLS_VIEW_ACL]}
|
||||
acl_grant = {'text': _(u'grant'), 'view': 'acl_multiple_grant', 'famfam': 'key_add', 'permissions': [ACLS_EDIT_ACL]}
|
||||
acl_revoke = {'text': _(u'revoke'), 'view': 'acl_multiple_revoke', 'famfam': 'key_delete', 'permissions': [ACLS_EDIT_ACL]}
|
||||
acl_holder_new = {'text': _(u'New holder'), 'view': 'acl_holder_new', 'args': 'access_object.gid', 'famfam': 'user', 'permissions': [ACLS_EDIT_ACL]}
|
||||
|
||||
acl_setup_valid_classes = {'text': _(u'Default ACLs'), 'view': 'acl_setup_valid_classes', 'icon': 'lock.png', 'permissions': [ACLS_CLASS_VIEW_ACL], 'children_view_regex': [r'^acl_class', r'^acl_setup']}
|
||||
acl_class_list = {'text': _(u'List of classes'), 'view': 'acl_setup_valid_classes', 'famfam': 'package', 'permissions': [ACLS_CLASS_VIEW_ACL]}
|
||||
acl_class_acl_list = {'text': _(u'ACLs for class'), 'view': 'acl_class_acl_list', 'args': 'object.gid', 'famfam': 'lock_go', 'permissions': [ACLS_CLASS_VIEW_ACL]}
|
||||
acl_class_acl_detail = {'text': _(u'details'), 'view': 'acl_class_acl_detail', 'args': ['access_object_class.gid', 'object.gid'], 'famfam': 'key_go', 'permissions': [ACLS_CLASS_VIEW_ACL]}
|
||||
acl_class_new_holder_for = {'text': _(u'New holder'), 'view': 'acl_class_new_holder_for', 'args': 'object.gid', 'famfam': 'user', 'permissions': [ACLS_CLASS_EDIT_ACL]}
|
||||
acl_class_grant = {'text': _(u'grant'), 'view': 'acl_class_multiple_grant', 'famfam': 'key_add', 'permissions': [ACLS_CLASS_EDIT_ACL]}
|
||||
acl_class_revoke = {'text': _(u'revoke'), 'view': 'acl_class_multiple_revoke', 'famfam': 'key_delete', 'permissions': [ACLS_CLASS_EDIT_ACL]}
|
||||
|
||||
register_links(AccessHolder, [acl_detail])
|
||||
bind_links([AccessHolder], [acl_detail])
|
||||
register_multi_item_links(['acl_detail'], [acl_grant, acl_revoke])
|
||||
|
||||
register_links([AccessObject], [acl_holder_new], menu_name='sidebar')
|
||||
|
||||
register_setup(acl_setup_valid_classes)
|
||||
register_links(['acl_setup_valid_classes', 'acl_class_acl_list', 'acl_class_new_holder_for', 'acl_class_acl_detail', 'acl_class_multiple_grant', 'acl_class_multiple_revoke'], [acl_class_list], menu_name='secondary_menu')
|
||||
|
||||
register_links(ClassAccessHolder, [acl_class_acl_detail])
|
||||
|
||||
register_links(AccessObjectClass, [acl_class_acl_list, acl_class_new_holder_for])
|
||||
bind_links([AccessObject], [acl_holder_new], menu_name='sidebar')
|
||||
bind_links(['acl_setup_valid_classes', 'acl_class_acl_list', 'acl_class_new_holder_for', 'acl_class_acl_detail', 'acl_class_multiple_grant', 'acl_class_multiple_revoke'], [acl_class_list], menu_name='secondary_menu')
|
||||
bind_links([ClassAccessHolder], [acl_class_acl_detail])
|
||||
bind_links([AccessObjectClass], [acl_class_acl_list, acl_class_new_holder_for])
|
||||
register_multi_item_links(['acl_class_acl_detail'], [acl_class_grant, acl_class_revoke])
|
||||
|
||||
@@ -1,136 +1,4 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import logging
|
||||
import sys
|
||||
import types
|
||||
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.db.models.base import ModelBase
|
||||
from django.template.defaultfilters import capfirst
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
|
||||
from common.models import AnonymousUserSingleton
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
_cache = {}
|
||||
|
||||
|
||||
def get_source_object(obj):
|
||||
if isinstance(obj, EncapsulatedObject):
|
||||
return obj.source_object
|
||||
else:
|
||||
return obj
|
||||
|
||||
|
||||
class EncapsulatedObject(object):
|
||||
source_object_name = u'source_object'
|
||||
|
||||
@classmethod
|
||||
def object_key(cls, app_label=None, model=None, pk=None):
|
||||
if pk:
|
||||
return '%s.%s.%s.%s' % (cls.__name__, app_label, model, pk)
|
||||
else:
|
||||
return '%s.%s.%s' % (cls.__name__, app_label, model)
|
||||
|
||||
@classmethod
|
||||
def add_to_class(cls, name, value):
|
||||
if hasattr(value, 'contribute_to_class'):
|
||||
value.contribute_to_class(cls, name)
|
||||
else:
|
||||
setattr(cls, name, value)
|
||||
|
||||
@classmethod
|
||||
def set_source_object_name(cls, new_name):
|
||||
cls.source_object_name = new_name
|
||||
|
||||
#@classmethod
|
||||
#def encapsulate_list(cls, source_object=None, app_label=None, model=None, pk=None):
|
||||
|
||||
@classmethod
|
||||
def encapsulate(cls, source_object):
|
||||
source_object = AnonymousUserSingleton.objects.passthru_check(source_object)
|
||||
content_type = ContentType.objects.get_for_model(source_object)
|
||||
|
||||
if hasattr(source_object, 'pk'):
|
||||
# Object
|
||||
object_key = cls.object_key(content_type.app_label, content_type.model, source_object.pk)
|
||||
else:
|
||||
# Class
|
||||
object_key = cls.object_key(content_type.app_label, content_type.model)
|
||||
|
||||
try:
|
||||
return _cache[object_key]
|
||||
except KeyError:
|
||||
encapsulated_object = cls(source_object)
|
||||
_cache[object_key] = encapsulated_object
|
||||
return encapsulated_object
|
||||
|
||||
@classmethod
|
||||
def get(cls, gid):
|
||||
elements = gid.split('.')
|
||||
if len(elements) == 3:
|
||||
app_label, model, pk = elements[0], elements[1], elements[2]
|
||||
elif len(elements) == 2:
|
||||
app_label, model = elements[0], elements[1]
|
||||
pk = None
|
||||
|
||||
object_key = cls.object_key(*elements)
|
||||
|
||||
try:
|
||||
return _cache[object_key]
|
||||
except KeyError:
|
||||
try:
|
||||
content_type = ContentType.objects.get(app_label=app_label, model=model)
|
||||
except ContentType.DoesNotExist:
|
||||
#cls.add_to_class('DoesNotExist', subclass_exception('DoesNotExist', (ObjectDoesNotExist,), cls.__name__))
|
||||
#raise cls.DoesNotExist("%s matching query does not exist." % ContentType._meta.object_name)
|
||||
raise ObjectDoesNotExist("%s matching query does not exist." % ContentType._meta.object_name)
|
||||
else:
|
||||
source_object_model_class = content_type.model_class()
|
||||
if pk:
|
||||
try:
|
||||
source_object = content_type.get_object_for_this_type(pk=pk)
|
||||
except source_object_model_class.DoesNotExist:
|
||||
#cls.add_to_class('DoesNotExist', subclass_exception('DoesNotExist', (ObjectDoesNotExist,), cls.__name__))
|
||||
#raise cls.DoesNotExist("%s matching query does not exist." % source_object_model_class._meta.object_name)
|
||||
raise ObjectDoesNotExist("%s matching query does not exist." % source_object_model_class._meta.object_name)
|
||||
else:
|
||||
source_object = source_object_model_class
|
||||
|
||||
return cls.encapsulate(source_object)
|
||||
|
||||
def __init__(self, source_object):
|
||||
self.content_type = ContentType.objects.get_for_model(source_object)
|
||||
self.ct_fullname = '%s.%s' % (self.content_type.app_label, self.content_type.model)
|
||||
|
||||
if isinstance(source_object, ModelBase):
|
||||
# Class
|
||||
self.gid = '%s.%s' % (self.content_type.app_label, self.content_type.model)
|
||||
else:
|
||||
# Object
|
||||
self.gid = '%s.%s.%s' % (self.content_type.app_label, self.content_type.model, source_object.pk)
|
||||
|
||||
setattr(self, self.__class__.source_object_name, source_object)
|
||||
|
||||
def __unicode__(self):
|
||||
if isinstance(self.source_object, ModelBase):
|
||||
return capfirst(unicode(self.source_object._meta.verbose_name_plural))
|
||||
elif self.ct_fullname == 'auth.user':
|
||||
return u'%s %s' % (self.source_object._meta.verbose_name, self.source_object.get_full_name())
|
||||
elif self.ct_fullname == 'common.anonymoususersingleton':
|
||||
return unicode(self.source_object)
|
||||
elif self.ct_fullname == 'acls.creatorsingleton':
|
||||
return unicode(self.source_object)
|
||||
else:
|
||||
return u'%s %s' % (self.source_object._meta.verbose_name, self.source_object)
|
||||
|
||||
def __repr__(self):
|
||||
return self.__unicode__()
|
||||
|
||||
@property
|
||||
def source_object(self):
|
||||
return getattr(self, self.__class__.source_object_name, None)
|
||||
from common.classes import EncapsulatedObject
|
||||
|
||||
|
||||
class AccessHolder(EncapsulatedObject):
|
||||
@@ -147,12 +15,3 @@ class AccessObjectClass(EncapsulatedObject):
|
||||
|
||||
class ClassAccessHolder(EncapsulatedObject):
|
||||
source_object_name = u'class_holder'
|
||||
|
||||
|
||||
if sys.version_info < (2, 5):
|
||||
# Prior to Python 2.5, Exception was an old-style class
|
||||
def subclass_exception(name, parents, unused):
|
||||
return types.ClassType(name, parents, {})
|
||||
else:
|
||||
def subclass_exception(name, parents, module):
|
||||
return type(name, parents, {'__module__': module})
|
||||
|
||||
20
apps/acls/icons.py
Normal file
20
apps/acls/icons.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from icons.literals import (KEY, KEY_GO, KEY_ADD, KEY_DELETE, LOCK, USER_ADD,
|
||||
PACKAGE, LOCK_GO)
|
||||
from icons import Icon
|
||||
|
||||
icon_acl_app = Icon(LOCK)
|
||||
|
||||
icon_acls = Icon(KEY)
|
||||
icon_acl_detail = Icon(KEY_GO)
|
||||
icon_acl_grant = Icon(KEY_ADD)
|
||||
icon_acl_revoke = Icon(KEY_DELETE)
|
||||
icon_acl_holder_new = Icon(USER_ADD)
|
||||
|
||||
icon_acl_class_list = Icon(PACKAGE)
|
||||
icon_acl_class_acl_list = Icon(LOCK_GO)
|
||||
icon_acl_class_acl_detail = Icon(KEY_GO)
|
||||
icon_acl_class_new_holder_for = Icon(USER_ADD)
|
||||
icon_acl_class_grant = Icon(KEY_ADD)
|
||||
icon_acl_class_revoke = Icon(KEY_DELETE)
|
||||
26
apps/acls/links.py
Normal file
26
apps/acls/links.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from navigation import Link
|
||||
|
||||
from .permissions import (ACLS_EDIT_ACL, ACLS_VIEW_ACL,
|
||||
ACLS_CLASS_EDIT_ACL, ACLS_CLASS_VIEW_ACL)
|
||||
from .icons import (icon_acls, icon_acl_detail, icon_acl_grant, icon_acl_revoke,
|
||||
icon_acl_holder_new, icon_acl_class_list, icon_acl_class_acl_list,
|
||||
icon_acl_class_acl_list, icon_acl_class_acl_detail, icon_acl_class_new_holder_for,
|
||||
icon_acl_class_grant, icon_acl_class_revoke)
|
||||
|
||||
acl_list = Link(text=_(u'ACLs'), view='acl_list', icon=icon_acls, permissions=[ACLS_VIEW_ACL])
|
||||
acl_detail = Link(text=_(u'details'), view='acl_detail', args=['access_object.gid', 'object.gid'], icon=icon_acl_detail, permissions=[ACLS_VIEW_ACL])
|
||||
acl_grant = Link(text=_(u'grant'), view='acl_multiple_grant', icon=icon_acl_grant, permissions=[ACLS_EDIT_ACL])
|
||||
acl_revoke = Link(text=_(u'revoke'), view='acl_multiple_revoke', icon=icon_acl_revoke, permissions=[ACLS_EDIT_ACL])
|
||||
acl_holder_new = Link(text=_(u'New holder'), view='acl_holder_new', args='access_object.gid', icon=icon_acl_holder_new, permissions=[ACLS_EDIT_ACL])
|
||||
|
||||
acl_setup_valid_classes = Link(text=_(u'Default ACLs'), view='acl_setup_valid_classes', icon=icon_acl_class_list, permissions=[ACLS_CLASS_VIEW_ACL]) # 'children_view_regex=[r'^acl_class', r'^acl_setup']}
|
||||
acl_class_list = Link(text=_(u'List of classes'), view='acl_setup_valid_classes', icon=icon_acl_class_list, permissions=[ACLS_CLASS_VIEW_ACL])
|
||||
acl_class_acl_list = Link(text=_(u'ACLs for class'), view='acl_class_acl_list', args='object.gid', icon=icon_acl_class_acl_list, permissions=[ACLS_CLASS_VIEW_ACL])
|
||||
acl_class_acl_detail = Link(text=_(u'details'), view='acl_class_acl_detail', args=['access_object_class.gid', 'object.gid'], icon=icon_acl_class_acl_detail, permissions=[ACLS_CLASS_VIEW_ACL])
|
||||
acl_class_new_holder_for = Link(text=_(u'New holder'), view='acl_class_new_holder_for', args='object.gid', icon=icon_acl_class_new_holder_for, permissions=[ACLS_CLASS_EDIT_ACL])
|
||||
acl_class_grant = Link(text=_(u'grant'), view='acl_class_multiple_grant', icon=icon_acl_class_grant, permissions=[ACLS_CLASS_EDIT_ACL])
|
||||
acl_class_revoke = Link(text=_(u'revoke'), view='acl_class_multiple_revoke', icon=icon_acl_class_revoke, permissions=[ACLS_CLASS_EDIT_ACL])
|
||||
Binary file not shown.
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:19-0400\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-10-15 10:27+0000\n"
|
||||
"Last-Translator: Pavlin Koldamov <pkoldamov@gmail.com>\n"
|
||||
"Language-Team: Bulgarian (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
@@ -20,38 +20,10 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: __init__.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "Контролни списъци за достъп"
|
||||
|
||||
#: __init__.py:15 __init__.py:23
|
||||
msgid "details"
|
||||
msgstr "детайли"
|
||||
|
||||
#: __init__.py:16 __init__.py:25
|
||||
msgid "grant"
|
||||
msgstr "предоставяне"
|
||||
|
||||
#: __init__.py:17 __init__.py:26
|
||||
msgid "revoke"
|
||||
msgstr "отменя"
|
||||
|
||||
#: __init__.py:18 __init__.py:24 forms.py:21
|
||||
#: forms.py:21 links.py:18 links.py:24
|
||||
msgid "New holder"
|
||||
msgstr "Нов притежател"
|
||||
|
||||
#: __init__.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "Контролни списъци за достъп по подразбиране"
|
||||
|
||||
#: __init__.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Списък на класовете"
|
||||
|
||||
#: __init__.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "Контролни списъци за клас"
|
||||
|
||||
#: forms.py:38
|
||||
msgid "Users"
|
||||
msgstr "Потребители"
|
||||
@@ -68,7 +40,35 @@ msgstr "Роли"
|
||||
msgid "Special"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:118 managers.py:130
|
||||
#: links.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "Контролни списъци за достъп"
|
||||
|
||||
#: links.py:15 links.py:23
|
||||
msgid "details"
|
||||
msgstr "детайли"
|
||||
|
||||
#: links.py:16 links.py:25
|
||||
msgid "grant"
|
||||
msgstr "предоставяне"
|
||||
|
||||
#: links.py:17 links.py:26
|
||||
msgid "revoke"
|
||||
msgstr "отменя"
|
||||
|
||||
#: links.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "Контролни списъци за достъп по подразбиране"
|
||||
|
||||
#: links.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Списък на класовете"
|
||||
|
||||
#: links.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "Контролни списъци за клас"
|
||||
|
||||
#: managers.py:119 managers.py:131
|
||||
msgid "Insufficient access."
|
||||
msgstr "Недостатъчен достъп."
|
||||
|
||||
@@ -120,6 +120,15 @@ msgstr ""
|
||||
msgid "View class default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:10
|
||||
#, fuzzy
|
||||
msgid "ACL"
|
||||
msgstr "Контролни списъци за достъп"
|
||||
|
||||
#: registry.py:11
|
||||
msgid "Handles object level access control."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:47
|
||||
#, python-format
|
||||
msgid "access control lists for: %s"
|
||||
|
||||
Binary file not shown.
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:19-0400\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-09-20 07:40+0000\n"
|
||||
"Last-Translator: Manticor <sl@suchreflex.de>\n"
|
||||
"Language-Team: German (Germany) (http://www.transifex.com/projects/p/mayan-"
|
||||
@@ -20,38 +20,10 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: __init__.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "ACLs"
|
||||
|
||||
#: __init__.py:15 __init__.py:23
|
||||
msgid "details"
|
||||
msgstr "Details"
|
||||
|
||||
#: __init__.py:16 __init__.py:25
|
||||
msgid "grant"
|
||||
msgstr "Erlauben"
|
||||
|
||||
#: __init__.py:17 __init__.py:26
|
||||
msgid "revoke"
|
||||
msgstr "Entziehen"
|
||||
|
||||
#: __init__.py:18 __init__.py:24 forms.py:21
|
||||
#: forms.py:21 links.py:18 links.py:24
|
||||
msgid "New holder"
|
||||
msgstr "Neuer Berechtigter"
|
||||
|
||||
#: __init__.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "Standard-ACLs"
|
||||
|
||||
#: __init__.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Liste der Klassen"
|
||||
|
||||
#: __init__.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "ACLs für Klasse"
|
||||
|
||||
#: forms.py:38
|
||||
msgid "Users"
|
||||
msgstr "Benutzer"
|
||||
@@ -68,7 +40,35 @@ msgstr "Rollen"
|
||||
msgid "Special"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:118 managers.py:130
|
||||
#: links.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "ACLs"
|
||||
|
||||
#: links.py:15 links.py:23
|
||||
msgid "details"
|
||||
msgstr "Details"
|
||||
|
||||
#: links.py:16 links.py:25
|
||||
msgid "grant"
|
||||
msgstr "Erlauben"
|
||||
|
||||
#: links.py:17 links.py:26
|
||||
msgid "revoke"
|
||||
msgstr "Entziehen"
|
||||
|
||||
#: links.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "Standard-ACLs"
|
||||
|
||||
#: links.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Liste der Klassen"
|
||||
|
||||
#: links.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "ACLs für Klasse"
|
||||
|
||||
#: managers.py:119 managers.py:131
|
||||
msgid "Insufficient access."
|
||||
msgstr "Unzureichender Zugriff."
|
||||
|
||||
@@ -120,6 +120,15 @@ msgstr "Standard-ACLs für Klasse bearbeiten"
|
||||
msgid "View class default ACLs"
|
||||
msgstr "Standard-ACLs für Klasse anzeigen"
|
||||
|
||||
#: registry.py:10
|
||||
#, fuzzy
|
||||
msgid "ACL"
|
||||
msgstr "ACLs"
|
||||
|
||||
#: registry.py:11
|
||||
msgid "Handles object level access control."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:47
|
||||
#, python-format
|
||||
msgid "access control lists for: %s"
|
||||
|
||||
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:19-0400\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -17,38 +17,10 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: __init__.py:14
|
||||
msgid "ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:15 __init__.py:23
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:16 __init__.py:25
|
||||
msgid "grant"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:17 __init__.py:26
|
||||
msgid "revoke"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:18 __init__.py:24 forms.py:21
|
||||
#: forms.py:21 links.py:18 links.py:24
|
||||
msgid "New holder"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:21
|
||||
msgid "List of classes"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr ""
|
||||
|
||||
#: forms.py:38
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
@@ -65,7 +37,35 @@ msgstr ""
|
||||
msgid "Special"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:118 managers.py:130
|
||||
#: links.py:14
|
||||
msgid "ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:15 links.py:23
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16 links.py:25
|
||||
msgid "grant"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17 links.py:26
|
||||
msgid "revoke"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
msgid "List of classes"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:119 managers.py:131
|
||||
msgid "Insufficient access."
|
||||
msgstr ""
|
||||
|
||||
@@ -117,6 +117,14 @@ msgstr ""
|
||||
msgid "View class default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:10
|
||||
msgid "ACL"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:11
|
||||
msgid "Handles object level access control."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:47
|
||||
#, python-format
|
||||
msgid "access control lists for: %s"
|
||||
|
||||
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:19-0400\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-02-12 00:16+0000\n"
|
||||
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
@@ -19,38 +19,10 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: __init__.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "LCA"
|
||||
|
||||
#: __init__.py:15 __init__.py:23
|
||||
msgid "details"
|
||||
msgstr "detalles"
|
||||
|
||||
#: __init__.py:16 __init__.py:25
|
||||
msgid "grant"
|
||||
msgstr "otorgar"
|
||||
|
||||
#: __init__.py:17 __init__.py:26
|
||||
msgid "revoke"
|
||||
msgstr "revocar"
|
||||
|
||||
#: __init__.py:18 __init__.py:24 forms.py:21
|
||||
#: forms.py:21 links.py:18 links.py:24
|
||||
msgid "New holder"
|
||||
msgstr "Nuevo titular"
|
||||
|
||||
#: __init__.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "LCA por defecto"
|
||||
|
||||
#: __init__.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Lista de clases"
|
||||
|
||||
#: __init__.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "LCA para la clase"
|
||||
|
||||
#: forms.py:38
|
||||
msgid "Users"
|
||||
msgstr "Usuarios"
|
||||
@@ -67,7 +39,35 @@ msgstr "Funciones"
|
||||
msgid "Special"
|
||||
msgstr "Especial"
|
||||
|
||||
#: managers.py:118 managers.py:130
|
||||
#: links.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "LCA"
|
||||
|
||||
#: links.py:15 links.py:23
|
||||
msgid "details"
|
||||
msgstr "detalles"
|
||||
|
||||
#: links.py:16 links.py:25
|
||||
msgid "grant"
|
||||
msgstr "otorgar"
|
||||
|
||||
#: links.py:17 links.py:26
|
||||
msgid "revoke"
|
||||
msgstr "revocar"
|
||||
|
||||
#: links.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "LCA por defecto"
|
||||
|
||||
#: links.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Lista de clases"
|
||||
|
||||
#: links.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "LCA para la clase"
|
||||
|
||||
#: managers.py:119 managers.py:131
|
||||
msgid "Insufficient access."
|
||||
msgstr "Acceso insuficiente."
|
||||
|
||||
@@ -119,6 +119,15 @@ msgstr "Editar LCA por defecto de la clase"
|
||||
msgid "View class default ACLs"
|
||||
msgstr "Ver LCA por defecto de la clase"
|
||||
|
||||
#: registry.py:10
|
||||
#, fuzzy
|
||||
msgid "ACL"
|
||||
msgstr "LCA"
|
||||
|
||||
#: registry.py:11
|
||||
msgid "Handles object level access control."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:47
|
||||
#, python-format
|
||||
msgid "access control lists for: %s"
|
||||
|
||||
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:19-0400\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-07-28 15:20+0000\n"
|
||||
"Last-Translator: Pierre Lhoste <peter.cathbad.host@gmail.com>\n"
|
||||
"Language-Team: French (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
@@ -19,38 +19,10 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: __init__.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "ACLs"
|
||||
|
||||
#: __init__.py:15 __init__.py:23
|
||||
msgid "details"
|
||||
msgstr "détails"
|
||||
|
||||
#: __init__.py:16 __init__.py:25
|
||||
msgid "grant"
|
||||
msgstr "autoriser"
|
||||
|
||||
#: __init__.py:17 __init__.py:26
|
||||
msgid "revoke"
|
||||
msgstr "révoquer"
|
||||
|
||||
#: __init__.py:18 __init__.py:24 forms.py:21
|
||||
#: forms.py:21 links.py:18 links.py:24
|
||||
msgid "New holder"
|
||||
msgstr "Nouveau détenteur"
|
||||
|
||||
#: __init__.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "ACLs par défaut"
|
||||
|
||||
#: __init__.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Liste des classes"
|
||||
|
||||
#: __init__.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "ACLs pour la classe"
|
||||
|
||||
#: forms.py:38
|
||||
msgid "Users"
|
||||
msgstr "Utilisateurs"
|
||||
@@ -67,7 +39,35 @@ msgstr "Rôles"
|
||||
msgid "Special"
|
||||
msgstr "Spécial"
|
||||
|
||||
#: managers.py:118 managers.py:130
|
||||
#: links.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "ACLs"
|
||||
|
||||
#: links.py:15 links.py:23
|
||||
msgid "details"
|
||||
msgstr "détails"
|
||||
|
||||
#: links.py:16 links.py:25
|
||||
msgid "grant"
|
||||
msgstr "autoriser"
|
||||
|
||||
#: links.py:17 links.py:26
|
||||
msgid "revoke"
|
||||
msgstr "révoquer"
|
||||
|
||||
#: links.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "ACLs par défaut"
|
||||
|
||||
#: links.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Liste des classes"
|
||||
|
||||
#: links.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "ACLs pour la classe"
|
||||
|
||||
#: managers.py:119 managers.py:131
|
||||
msgid "Insufficient access."
|
||||
msgstr "Autorisations insuffisantes."
|
||||
|
||||
@@ -119,6 +119,15 @@ msgstr "Modifier ACLs par défaut"
|
||||
msgid "View class default ACLs"
|
||||
msgstr "Afficher ACLs par défaut pour la classe"
|
||||
|
||||
#: registry.py:10
|
||||
#, fuzzy
|
||||
msgid "ACL"
|
||||
msgstr "ACLs"
|
||||
|
||||
#: registry.py:11
|
||||
msgid "Handles object level access control."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:47
|
||||
#, python-format
|
||||
msgid "access control lists for: %s"
|
||||
|
||||
Binary file not shown.
@@ -10,7 +10,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:19-0400\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-06-08 07:20+0000\n"
|
||||
"Last-Translator: Carlo Zanatto <>\n"
|
||||
"Language-Team: Italian (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
@@ -21,38 +21,10 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: __init__.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "ACL"
|
||||
|
||||
#: __init__.py:15 __init__.py:23
|
||||
msgid "details"
|
||||
msgstr "dettagli"
|
||||
|
||||
#: __init__.py:16 __init__.py:25
|
||||
msgid "grant"
|
||||
msgstr "permetti"
|
||||
|
||||
#: __init__.py:17 __init__.py:26
|
||||
msgid "revoke"
|
||||
msgstr "revocare"
|
||||
|
||||
#: __init__.py:18 __init__.py:24 forms.py:21
|
||||
#: forms.py:21 links.py:18 links.py:24
|
||||
msgid "New holder"
|
||||
msgstr "Nuovo titolare"
|
||||
|
||||
#: __init__.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "Default ACL"
|
||||
|
||||
#: __init__.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Elenco delle classi"
|
||||
|
||||
#: __init__.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "ACL per la classe"
|
||||
|
||||
#: forms.py:38
|
||||
msgid "Users"
|
||||
msgstr "Utenti"
|
||||
@@ -69,7 +41,35 @@ msgstr "Ruoli"
|
||||
msgid "Special"
|
||||
msgstr "Speciale"
|
||||
|
||||
#: managers.py:118 managers.py:130
|
||||
#: links.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "ACL"
|
||||
|
||||
#: links.py:15 links.py:23
|
||||
msgid "details"
|
||||
msgstr "dettagli"
|
||||
|
||||
#: links.py:16 links.py:25
|
||||
msgid "grant"
|
||||
msgstr "permetti"
|
||||
|
||||
#: links.py:17 links.py:26
|
||||
msgid "revoke"
|
||||
msgstr "revocare"
|
||||
|
||||
#: links.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "Default ACL"
|
||||
|
||||
#: links.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Elenco delle classi"
|
||||
|
||||
#: links.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "ACL per la classe"
|
||||
|
||||
#: managers.py:119 managers.py:131
|
||||
msgid "Insufficient access."
|
||||
msgstr "Accesso insufficiente."
|
||||
|
||||
@@ -121,6 +121,15 @@ msgstr "Modifica ACL predefiniti di classe"
|
||||
msgid "View class default ACLs"
|
||||
msgstr "Visualizza classi ACL predefinite"
|
||||
|
||||
#: registry.py:10
|
||||
#, fuzzy
|
||||
msgid "ACL"
|
||||
msgstr "ACL"
|
||||
|
||||
#: registry.py:11
|
||||
msgid "Handles object level access control."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:47
|
||||
#, python-format
|
||||
msgid "access control lists for: %s"
|
||||
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:19-0400\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-01-02 09:45+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/"
|
||||
@@ -18,38 +18,10 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: __init__.py:14
|
||||
msgid "ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:15 __init__.py:23
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:16 __init__.py:25
|
||||
msgid "grant"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:17 __init__.py:26
|
||||
msgid "revoke"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:18 __init__.py:24 forms.py:21
|
||||
#: forms.py:21 links.py:18 links.py:24
|
||||
msgid "New holder"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:21
|
||||
msgid "List of classes"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr ""
|
||||
|
||||
#: forms.py:38
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
@@ -66,7 +38,35 @@ msgstr ""
|
||||
msgid "Special"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:118 managers.py:130
|
||||
#: links.py:14
|
||||
msgid "ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:15 links.py:23
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16 links.py:25
|
||||
msgid "grant"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17 links.py:26
|
||||
msgid "revoke"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
msgid "List of classes"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:119 managers.py:131
|
||||
msgid "Insufficient access."
|
||||
msgstr ""
|
||||
|
||||
@@ -118,6 +118,14 @@ msgstr ""
|
||||
msgid "View class default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:10
|
||||
msgid "ACL"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:11
|
||||
msgid "Handles object level access control."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:47
|
||||
#, python-format
|
||||
msgid "access control lists for: %s"
|
||||
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:19-0400\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-01-02 09:45+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Polish (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
@@ -19,38 +19,10 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||
"|| n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: __init__.py:14
|
||||
msgid "ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:15 __init__.py:23
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:16 __init__.py:25
|
||||
msgid "grant"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:17 __init__.py:26
|
||||
msgid "revoke"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:18 __init__.py:24 forms.py:21
|
||||
#: forms.py:21 links.py:18 links.py:24
|
||||
msgid "New holder"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:21
|
||||
msgid "List of classes"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr ""
|
||||
|
||||
#: forms.py:38
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
@@ -67,7 +39,35 @@ msgstr ""
|
||||
msgid "Special"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:118 managers.py:130
|
||||
#: links.py:14
|
||||
msgid "ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:15 links.py:23
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16 links.py:25
|
||||
msgid "grant"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17 links.py:26
|
||||
msgid "revoke"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
msgid "List of classes"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:119 managers.py:131
|
||||
msgid "Insufficient access."
|
||||
msgstr ""
|
||||
|
||||
@@ -119,6 +119,14 @@ msgstr ""
|
||||
msgid "View class default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:10
|
||||
msgid "ACL"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:11
|
||||
msgid "Handles object level access control."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:47
|
||||
#, python-format
|
||||
msgid "access control lists for: %s"
|
||||
|
||||
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:19-0400\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-07-03 19:01+0000\n"
|
||||
"Last-Translator: Vítor Figueiró <vfigueiro@gmail.com>\n"
|
||||
"Language-Team: Portuguese (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
@@ -19,38 +19,10 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: __init__.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "ACL's"
|
||||
|
||||
#: __init__.py:15 __init__.py:23
|
||||
msgid "details"
|
||||
msgstr "detalhes"
|
||||
|
||||
#: __init__.py:16 __init__.py:25
|
||||
msgid "grant"
|
||||
msgstr "conceder"
|
||||
|
||||
#: __init__.py:17 __init__.py:26
|
||||
msgid "revoke"
|
||||
msgstr "revogar"
|
||||
|
||||
#: __init__.py:18 __init__.py:24 forms.py:21
|
||||
#: forms.py:21 links.py:18 links.py:24
|
||||
msgid "New holder"
|
||||
msgstr "Novo detentor"
|
||||
|
||||
#: __init__.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "ACL's padrão"
|
||||
|
||||
#: __init__.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Lista de classes"
|
||||
|
||||
#: __init__.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "ACL's para a classe"
|
||||
|
||||
#: forms.py:38
|
||||
msgid "Users"
|
||||
msgstr "Utilizadores"
|
||||
@@ -67,7 +39,35 @@ msgstr "Funções"
|
||||
msgid "Special"
|
||||
msgstr "Especial"
|
||||
|
||||
#: managers.py:118 managers.py:130
|
||||
#: links.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "ACL's"
|
||||
|
||||
#: links.py:15 links.py:23
|
||||
msgid "details"
|
||||
msgstr "detalhes"
|
||||
|
||||
#: links.py:16 links.py:25
|
||||
msgid "grant"
|
||||
msgstr "conceder"
|
||||
|
||||
#: links.py:17 links.py:26
|
||||
msgid "revoke"
|
||||
msgstr "revogar"
|
||||
|
||||
#: links.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "ACL's padrão"
|
||||
|
||||
#: links.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Lista de classes"
|
||||
|
||||
#: links.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "ACL's para a classe"
|
||||
|
||||
#: managers.py:119 managers.py:131
|
||||
msgid "Insufficient access."
|
||||
msgstr "Acesso insuficiente."
|
||||
|
||||
@@ -119,6 +119,15 @@ msgstr "Editar os ACL's padrão da classe"
|
||||
msgid "View class default ACLs"
|
||||
msgstr "Ver os ACL's padrão da classe"
|
||||
|
||||
#: registry.py:10
|
||||
#, fuzzy
|
||||
msgid "ACL"
|
||||
msgstr "ACL's"
|
||||
|
||||
#: registry.py:11
|
||||
msgid "Handles object level access control."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:47
|
||||
#, python-format
|
||||
msgid "access control lists for: %s"
|
||||
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:19-0400\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-01-02 09:45+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
|
||||
@@ -18,38 +18,10 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: __init__.py:14
|
||||
msgid "ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:15 __init__.py:23
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:16 __init__.py:25
|
||||
msgid "grant"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:17 __init__.py:26
|
||||
msgid "revoke"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:18 __init__.py:24 forms.py:21
|
||||
#: forms.py:21 links.py:18 links.py:24
|
||||
msgid "New holder"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:21
|
||||
msgid "List of classes"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr ""
|
||||
|
||||
#: forms.py:38
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
@@ -66,7 +38,35 @@ msgstr ""
|
||||
msgid "Special"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:118 managers.py:130
|
||||
#: links.py:14
|
||||
msgid "ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:15 links.py:23
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16 links.py:25
|
||||
msgid "grant"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17 links.py:26
|
||||
msgid "revoke"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
msgid "List of classes"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:119 managers.py:131
|
||||
msgid "Insufficient access."
|
||||
msgstr ""
|
||||
|
||||
@@ -118,6 +118,14 @@ msgstr ""
|
||||
msgid "View class default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:10
|
||||
msgid "ACL"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:11
|
||||
msgid "Handles object level access control."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:47
|
||||
#, python-format
|
||||
msgid "access control lists for: %s"
|
||||
|
||||
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:19-0400\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-02-27 04:26+0000\n"
|
||||
"Last-Translator: Sergey Glita <gsv70@mail.ru>\n"
|
||||
"Language-Team: Russian (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
@@ -20,38 +20,10 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: __init__.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "Списки ACL"
|
||||
|
||||
#: __init__.py:15 __init__.py:23
|
||||
msgid "details"
|
||||
msgstr "детали"
|
||||
|
||||
#: __init__.py:16 __init__.py:25
|
||||
msgid "grant"
|
||||
msgstr "предоставить"
|
||||
|
||||
#: __init__.py:17 __init__.py:26
|
||||
msgid "revoke"
|
||||
msgstr "отозвать"
|
||||
|
||||
#: __init__.py:18 __init__.py:24 forms.py:21
|
||||
#: forms.py:21 links.py:18 links.py:24
|
||||
msgid "New holder"
|
||||
msgstr "Новый владелец"
|
||||
|
||||
#: __init__.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "ACL по умолчанию"
|
||||
|
||||
#: __init__.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Список классов"
|
||||
|
||||
#: __init__.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "ACL для класса"
|
||||
|
||||
#: forms.py:38
|
||||
msgid "Users"
|
||||
msgstr "Пользователи"
|
||||
@@ -68,7 +40,35 @@ msgstr "Роли"
|
||||
msgid "Special"
|
||||
msgstr "Специальный"
|
||||
|
||||
#: managers.py:118 managers.py:130
|
||||
#: links.py:14
|
||||
msgid "ACLs"
|
||||
msgstr "Списки ACL"
|
||||
|
||||
#: links.py:15 links.py:23
|
||||
msgid "details"
|
||||
msgstr "детали"
|
||||
|
||||
#: links.py:16 links.py:25
|
||||
msgid "grant"
|
||||
msgstr "предоставить"
|
||||
|
||||
#: links.py:17 links.py:26
|
||||
msgid "revoke"
|
||||
msgstr "отозвать"
|
||||
|
||||
#: links.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr "ACL по умолчанию"
|
||||
|
||||
#: links.py:21
|
||||
msgid "List of classes"
|
||||
msgstr "Список классов"
|
||||
|
||||
#: links.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr "ACL для класса"
|
||||
|
||||
#: managers.py:119 managers.py:131
|
||||
msgid "Insufficient access."
|
||||
msgstr "Недостаточный доступ."
|
||||
|
||||
@@ -120,6 +120,15 @@ msgstr "Редактировать списки ACL класса по умолч
|
||||
msgid "View class default ACLs"
|
||||
msgstr "Просмотр списков ACL класса по умолчанию"
|
||||
|
||||
#: registry.py:10
|
||||
#, fuzzy
|
||||
msgid "ACL"
|
||||
msgstr "Списки ACL"
|
||||
|
||||
#: registry.py:11
|
||||
msgid "Handles object level access control."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:47
|
||||
#, python-format
|
||||
msgid "access control lists for: %s"
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
|
||||
"POT-Creation-Date: 2012-07-26 23:54-0400\n"
|
||||
"POT-Creation-Date: 2012-12-12 01:48-0400\n"
|
||||
"PO-Revision-Date: 2012-01-02 09:45+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/projects/p/mayan-edms/language/sl_SI/)\n"
|
||||
@@ -17,10 +17,38 @@ msgstr ""
|
||||
"Language: sl_SI\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
||||
|
||||
#: forms.py:21 links.py:14 links.py:20
|
||||
#: __init__.py:14
|
||||
msgid "ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:15 __init__.py:23
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:16 __init__.py:25
|
||||
msgid "grant"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:17 __init__.py:26
|
||||
msgid "revoke"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:18 __init__.py:24 forms.py:21
|
||||
msgid "New holder"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:20
|
||||
msgid "Default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:21
|
||||
msgid "List of classes"
|
||||
msgstr ""
|
||||
|
||||
#: __init__.py:22
|
||||
msgid "ACLs for class"
|
||||
msgstr ""
|
||||
|
||||
#: forms.py:38
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
@@ -37,35 +65,7 @@ msgstr ""
|
||||
msgid "Special"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:10
|
||||
msgid "ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:11 links.py:19
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:12 links.py:21
|
||||
msgid "grant"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:13 links.py:22
|
||||
msgid "revoke"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16
|
||||
msgid "Default ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17
|
||||
msgid "List of classes"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:18
|
||||
msgid "ACLs for class"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:119 managers.py:131
|
||||
#: managers.py:118 managers.py:130
|
||||
msgid "Insufficient access."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -11,9 +11,10 @@ from django.core.urlresolvers import reverse
|
||||
from django.db.models import Q
|
||||
|
||||
from common.models import AnonymousUserSingleton
|
||||
from common.classes import get_source_object
|
||||
from permissions.models import Permission, RoleMember
|
||||
|
||||
from .classes import AccessHolder, ClassAccessHolder, get_source_object
|
||||
from .classes import AccessHolder, ClassAccessHolder
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -75,7 +76,7 @@ class AccessEntryManager(models.Manager):
|
||||
|
||||
actor = AnonymousUserSingleton.objects.passthru_check(actor)
|
||||
try:
|
||||
content_type=ContentType.objects.get_for_model(obj)
|
||||
content_type = ContentType.objects.get_for_model(obj)
|
||||
except AttributeError:
|
||||
# Object doesn't have a content type, therefore allow access
|
||||
return True
|
||||
|
||||
89
apps/acls/migrations/0001_initial.py
Normal file
89
apps/acls/migrations/0001_initial.py
Normal file
@@ -0,0 +1,89 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding model 'AccessEntry'
|
||||
db.create_table('acls_accessentry', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('permission', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['permissions.StoredPermission'])),
|
||||
('holder_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='access_holder', to=orm['contenttypes.ContentType'])),
|
||||
('holder_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
||||
('content_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='object_content_type', to=orm['contenttypes.ContentType'])),
|
||||
('object_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
||||
))
|
||||
db.send_create_signal('acls', ['AccessEntry'])
|
||||
|
||||
# Adding model 'DefaultAccessEntry'
|
||||
db.create_table('acls_defaultaccessentry', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('permission', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['permissions.StoredPermission'])),
|
||||
('holder_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='default_access_entry_holder', to=orm['contenttypes.ContentType'])),
|
||||
('holder_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
||||
('content_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='default_access_entry_class', to=orm['contenttypes.ContentType'])),
|
||||
))
|
||||
db.send_create_signal('acls', ['DefaultAccessEntry'])
|
||||
|
||||
# Adding model 'CreatorSingleton'
|
||||
db.create_table('acls_creatorsingleton', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('lock_id', self.gf('django.db.models.fields.CharField')(default=1, unique=True, max_length=1)),
|
||||
))
|
||||
db.send_create_signal('acls', ['CreatorSingleton'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting model 'AccessEntry'
|
||||
db.delete_table('acls_accessentry')
|
||||
|
||||
# Deleting model 'DefaultAccessEntry'
|
||||
db.delete_table('acls_defaultaccessentry')
|
||||
|
||||
# Deleting model 'CreatorSingleton'
|
||||
db.delete_table('acls_creatorsingleton')
|
||||
|
||||
|
||||
models = {
|
||||
'acls.accessentry': {
|
||||
'Meta': {'object_name': 'AccessEntry'},
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'object_content_type'", 'to': "orm['contenttypes.ContentType']"}),
|
||||
'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'access_holder'", 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.StoredPermission']"})
|
||||
},
|
||||
'acls.creatorsingleton': {
|
||||
'Meta': {'object_name': 'CreatorSingleton'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'lock_id': ('django.db.models.fields.CharField', [], {'default': '1', 'unique': 'True', 'max_length': '1'})
|
||||
},
|
||||
'acls.defaultaccessentry': {
|
||||
'Meta': {'object_name': 'DefaultAccessEntry'},
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_access_entry_class'", 'to': "orm['contenttypes.ContentType']"}),
|
||||
'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_access_entry_holder'", 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.StoredPermission']"})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'permissions.storedpermission': {
|
||||
'Meta': {'ordering': "('namespace',)", 'unique_together': "(('namespace', 'name'),)", 'object_name': 'StoredPermission'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'namespace': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['acls']
|
||||
@@ -1,7 +1,17 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from .cleanup import cleanup
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from .cleanup import cleanup
|
||||
from .icons import icon_acl_app
|
||||
from .links import acl_setup_valid_classes
|
||||
|
||||
name = 'acls'
|
||||
label = _(u'ACL')
|
||||
description = _(u'Handles object level access control.')
|
||||
icon = icon_acl_app
|
||||
setup_links = [acl_setup_valid_classes]
|
||||
dependencies = ['app_registry', 'permissions', 'navigation']
|
||||
bootstrap_models = [
|
||||
{
|
||||
'name': 'defaultaccessentry',
|
||||
|
||||
@@ -4,10 +4,10 @@ import logging
|
||||
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
from common.classes import get_source_object
|
||||
from common.models import AnonymousUserSingleton
|
||||
|
||||
from .models import AccessEntry, DefaultAccessEntry, CreatorSingleton
|
||||
from .classes import get_source_object
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ def acl_detail_for(request, actor, obj):
|
||||
{'name': _(u'label'), 'attribute': 'label'},
|
||||
{
|
||||
'name':_(u'has permission'),
|
||||
'attribute': encapsulate(lambda permission: two_state_template(AccessEntry.objects.has_access(permission, actor, obj, db_only=True)))
|
||||
'attribute': encapsulate(lambda permission: two_state_template(AccessEntry.objects.has_access(permission, actor, obj, db_only=True)).display_small())
|
||||
},
|
||||
],
|
||||
'hide_object': True,
|
||||
@@ -443,7 +443,7 @@ def acl_class_acl_detail(request, access_object_class_gid, holder_object_gid):
|
||||
{'name': _(u'label'), 'attribute': 'label'},
|
||||
{
|
||||
'name':_(u'has permission'),
|
||||
'attribute': encapsulate(lambda x: two_state_template(DefaultAccessEntry.objects.has_access(x, actor.source_object, access_object_class.source_object)))
|
||||
'attribute': encapsulate(lambda x: two_state_template(DefaultAccessEntry.objects.has_access(x, actor.source_object, access_object_class.source_object)).display_small())
|
||||
},
|
||||
],
|
||||
'hide_object': True,
|
||||
|
||||
6
apps/app_registry/icons.py
Normal file
6
apps/app_registry/icons.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from icons.literals import PLUGIN
|
||||
from icons import Icon
|
||||
|
||||
icon_app = Icon(PLUGIN)
|
||||
10
apps/app_registry/links.py
Normal file
10
apps/app_registry/links.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from navigation import Link
|
||||
|
||||
from .icons import icon_app
|
||||
|
||||
app_registry_tool_link = Link(text=_(u'Apps'), view='app_list', icon=icon_app)#, permissions=[PERMISSION_BACKUP_JOB_VIEW])
|
||||
app_list = Link(text=_(u'app list'), view='app_list', icon=icon_app)#, permissions=[PERMISSION_BACKUP_JOB_VIEW])
|
||||
32
apps/app_registry/migrations/0001_initial.py
Normal file
32
apps/app_registry/migrations/0001_initial.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding model 'App'
|
||||
db.create_table('app_registry_app', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||
))
|
||||
db.send_create_signal('app_registry', ['App'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting model 'App'
|
||||
db.delete_table('app_registry_app')
|
||||
|
||||
|
||||
models = {
|
||||
'app_registry.app': {
|
||||
'Meta': {'ordering': "('name',)", 'object_name': 'App'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['app_registry']
|
||||
@@ -0,0 +1,37 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding field 'App.icon'
|
||||
db.add_column('app_registry_app', 'icon',
|
||||
self.gf('django.db.models.fields.CharField')(default='', max_length=64, blank=True),
|
||||
keep_default=False)
|
||||
|
||||
# Adding unique constraint on 'App', fields ['name']
|
||||
db.create_unique('app_registry_app', ['name'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Removing unique constraint on 'App', fields ['name']
|
||||
db.delete_unique('app_registry_app', ['name'])
|
||||
|
||||
# Deleting field 'App.icon'
|
||||
db.delete_column('app_registry_app', 'icon')
|
||||
|
||||
|
||||
models = {
|
||||
'app_registry.app': {
|
||||
'Meta': {'ordering': "('name',)", 'object_name': 'App'},
|
||||
'icon': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['app_registry']
|
||||
58
apps/app_registry/migrations/0003_auto__add_backupjob.py
Normal file
58
apps/app_registry/migrations/0003_auto__add_backupjob.py
Normal file
@@ -0,0 +1,58 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding model 'BackupJob'
|
||||
db.create_table('app_registry_backupjob', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||
('enabled', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||
('begin_datetime', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2012, 8, 18, 0, 0))),
|
||||
('storage_module_name', self.gf('django.db.models.fields.CharField')(max_length=32)),
|
||||
('storage_arguments_json', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||
))
|
||||
db.send_create_signal('app_registry', ['BackupJob'])
|
||||
|
||||
# Adding M2M table for field apps on 'BackupJob'
|
||||
db.create_table('app_registry_backupjob_apps', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('backupjob', models.ForeignKey(orm['app_registry.backupjob'], null=False)),
|
||||
('app', models.ForeignKey(orm['app_registry.app'], null=False))
|
||||
))
|
||||
db.create_unique('app_registry_backupjob_apps', ['backupjob_id', 'app_id'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting model 'BackupJob'
|
||||
db.delete_table('app_registry_backupjob')
|
||||
|
||||
# Removing M2M table for field apps on 'BackupJob'
|
||||
db.delete_table('app_registry_backupjob_apps')
|
||||
|
||||
|
||||
models = {
|
||||
'app_registry.app': {
|
||||
'Meta': {'ordering': "('name',)", 'object_name': 'App'},
|
||||
'icon': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
},
|
||||
'app_registry.backupjob': {
|
||||
'Meta': {'object_name': 'BackupJob'},
|
||||
'apps': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['app_registry.App']", 'symmetrical': 'False'}),
|
||||
'begin_datetime': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 8, 18, 0, 0)'}),
|
||||
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'storage_arguments_json': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'storage_module_name': ('django.db.models.fields.CharField', [], {'max_length': '32'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['app_registry']
|
||||
45
apps/app_registry/migrations/0004_auto.py
Normal file
45
apps/app_registry/migrations/0004_auto.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding M2M table for field dependencies on 'App'
|
||||
db.create_table('app_registry_app_dependencies', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('from_app', models.ForeignKey(orm['app_registry.app'], null=False)),
|
||||
('to_app', models.ForeignKey(orm['app_registry.app'], null=False))
|
||||
))
|
||||
db.create_unique('app_registry_app_dependencies', ['from_app_id', 'to_app_id'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Removing M2M table for field dependencies on 'App'
|
||||
db.delete_table('app_registry_app_dependencies')
|
||||
|
||||
|
||||
models = {
|
||||
'app_registry.app': {
|
||||
'Meta': {'ordering': "('name',)", 'object_name': 'App'},
|
||||
'dependencies': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'dependencies_rel_+'", 'null': 'True', 'to': "orm['app_registry.App']"}),
|
||||
'icon': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
},
|
||||
'app_registry.backupjob': {
|
||||
'Meta': {'object_name': 'BackupJob'},
|
||||
'apps': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['app_registry.App']", 'symmetrical': 'False'}),
|
||||
'begin_datetime': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 8, 18, 0, 0)'}),
|
||||
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'storage_arguments_json': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'storage_module_name': ('django.db.models.fields.CharField', [], {'max_length': '32'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['app_registry']
|
||||
44
apps/app_registry/migrations/0005_auto.py
Normal file
44
apps/app_registry/migrations/0005_auto.py
Normal file
@@ -0,0 +1,44 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Removing M2M table for field dependencies on 'App'
|
||||
db.delete_table('app_registry_app_dependencies')
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Adding M2M table for field dependencies on 'App'
|
||||
db.create_table('app_registry_app_dependencies', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('from_app', models.ForeignKey(orm['app_registry.app'], null=False)),
|
||||
('to_app', models.ForeignKey(orm['app_registry.app'], null=False))
|
||||
))
|
||||
db.create_unique('app_registry_app_dependencies', ['from_app_id', 'to_app_id'])
|
||||
|
||||
|
||||
models = {
|
||||
'app_registry.app': {
|
||||
'Meta': {'ordering': "('name',)", 'object_name': 'App'},
|
||||
'icon': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
},
|
||||
'app_registry.backupjob': {
|
||||
'Meta': {'object_name': 'BackupJob'},
|
||||
'apps': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['app_registry.App']", 'symmetrical': 'False'}),
|
||||
'begin_datetime': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 8, 18, 0, 0)'}),
|
||||
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'storage_arguments_json': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'storage_module_name': ('django.db.models.fields.CharField', [], {'max_length': '32'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['app_registry']
|
||||
45
apps/app_registry/migrations/0006_auto.py
Normal file
45
apps/app_registry/migrations/0006_auto.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding M2M table for field dependencies on 'App'
|
||||
db.create_table('app_registry_app_dependencies', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('from_app', models.ForeignKey(orm['app_registry.app'], null=False)),
|
||||
('to_app', models.ForeignKey(orm['app_registry.app'], null=False))
|
||||
))
|
||||
db.create_unique('app_registry_app_dependencies', ['from_app_id', 'to_app_id'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Removing M2M table for field dependencies on 'App'
|
||||
db.delete_table('app_registry_app_dependencies')
|
||||
|
||||
|
||||
models = {
|
||||
'app_registry.app': {
|
||||
'Meta': {'ordering': "('name',)", 'object_name': 'App'},
|
||||
'dependencies': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['app_registry.App']", 'null': 'True', 'blank': 'True'}),
|
||||
'icon': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
},
|
||||
'app_registry.backupjob': {
|
||||
'Meta': {'object_name': 'BackupJob'},
|
||||
'apps': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['app_registry.App']", 'symmetrical': 'False'}),
|
||||
'begin_datetime': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 8, 18, 0, 0)'}),
|
||||
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'storage_arguments_json': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'storage_module_name': ('django.db.models.fields.CharField', [], {'max_length': '32'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['app_registry']
|
||||
@@ -0,0 +1,56 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Deleting model 'BackupJob'
|
||||
db.delete_table('app_registry_backupjob')
|
||||
|
||||
# Removing M2M table for field apps on 'BackupJob'
|
||||
db.delete_table('app_registry_backupjob_apps')
|
||||
|
||||
# Deleting field 'App.icon'
|
||||
db.delete_column('app_registry_app', 'icon')
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Adding model 'BackupJob'
|
||||
db.create_table('app_registry_backupjob', (
|
||||
('storage_arguments_json', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||
('storage_module_name', self.gf('django.db.models.fields.CharField')(max_length=32)),
|
||||
('begin_datetime', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2012, 8, 18, 0, 0))),
|
||||
('enabled', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
))
|
||||
db.send_create_signal('app_registry', ['BackupJob'])
|
||||
|
||||
# Adding M2M table for field apps on 'BackupJob'
|
||||
db.create_table('app_registry_backupjob_apps', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('backupjob', models.ForeignKey(orm['app_registry.backupjob'], null=False)),
|
||||
('app', models.ForeignKey(orm['app_registry.app'], null=False))
|
||||
))
|
||||
db.create_unique('app_registry_backupjob_apps', ['backupjob_id', 'app_id'])
|
||||
|
||||
# Adding field 'App.icon'
|
||||
db.add_column('app_registry_app', 'icon',
|
||||
self.gf('django.db.models.fields.CharField')(default='', max_length=64, blank=True),
|
||||
keep_default=False)
|
||||
|
||||
|
||||
models = {
|
||||
'app_registry.app': {
|
||||
'Meta': {'ordering': "('name',)", 'object_name': 'App'},
|
||||
'dependencies': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['app_registry.App']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['app_registry']
|
||||
@@ -5,38 +5,82 @@ import imp
|
||||
import sys
|
||||
|
||||
from django.db import models
|
||||
from django.db import DatabaseError, transaction
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.importlib import import_module
|
||||
|
||||
from common.models import TranslatableLabelMixin, LiveObjectMixin
|
||||
from smart_settings import SettingsNamespace
|
||||
from project_setup.api import register_setup
|
||||
from project_tools.api import register_tool
|
||||
from statistics.api import register_statistics
|
||||
from navigation.api import register_top_menu
|
||||
from bootstrap.classes import Cleanup, BootstrapModel
|
||||
|
||||
#from .classes import AppBackup, StorageModuleBase, Setting
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class App(object):
|
||||
class App(TranslatableLabelMixin, LiveObjectMixin, models.Model):
|
||||
translatables = ['label', 'description', 'icon']
|
||||
|
||||
#class UnableToRegister(Exception):
|
||||
# pass
|
||||
|
||||
name = models.CharField(max_length=64, verbose_name=_(u'name'), unique=True)
|
||||
dependencies = models.ManyToManyField('self', verbose_name=_(u'dependencies'), symmetrical=False, blank=True, null=True)
|
||||
#version
|
||||
#top_urls
|
||||
#namespace
|
||||
|
||||
@classmethod
|
||||
@transaction.commit_on_success
|
||||
def register(cls, app_name):
|
||||
logger.debug('Trying to import: %s' % app_name)
|
||||
try:
|
||||
app_module = import_module(app_name)
|
||||
except ImportError:
|
||||
transaction.rollback
|
||||
logger.debug('Unable to import app: %s' % app_name)
|
||||
else:
|
||||
logger.debug('Trying to import registry from: %s' % app_name)
|
||||
try:
|
||||
registration = import_module('%s.registry' % app_name)
|
||||
except ImportError:
|
||||
transaction.rollback
|
||||
logger.debug('Unable to import registry for app: %s' % app_name)
|
||||
else:
|
||||
if not getattr(registration, 'disabled', False):
|
||||
app = App()
|
||||
app.name=app_name
|
||||
# If there are not error go ahead with the stored app instance
|
||||
app.label = getattr(registration, 'label', app_name)
|
||||
app.description = getattr(registration, 'description', u'')
|
||||
try:
|
||||
app, created = App.objects.get_or_create(name=app_name)
|
||||
except DatabaseError:
|
||||
transaction.rollback()
|
||||
# If database is not ready create a memory only app instance
|
||||
app = App()
|
||||
app.label = getattr(registration, 'label', app_name)
|
||||
app.description = getattr(registration, 'description', u'')
|
||||
else:
|
||||
# If there are not error go ahead with the stored app instance
|
||||
app.label = getattr(registration, 'label', app_name)
|
||||
app.description = getattr(registration, 'description', u'')
|
||||
app.dependencies.clear()
|
||||
app.save()
|
||||
for dependency_name in getattr(registration, 'dependencies', []):
|
||||
dependency, created = App.objects.get_or_create(name=dependency_name)
|
||||
app.dependencies.add(dependency)
|
||||
|
||||
app.icon = getattr(registration, 'icon', None)
|
||||
settings = getattr(registration, 'settings', None)
|
||||
|
||||
if settings:
|
||||
logger.debug('settings: %s' % settings)
|
||||
settings_module = imp.new_module('settings')
|
||||
setattr(app_module, 'settings', settings_module)
|
||||
sys.modules['%s.settings' % app_name] = settings_module
|
||||
settings_namespace = SettingsNamespace(app_name, app.label, '%s.settings' % app_name)
|
||||
for setting in settings:
|
||||
settings_namespace.add_setting(**setting)
|
||||
|
||||
for link in getattr(registration, 'setup_links', []):
|
||||
logger.debug('setup link: %s' % link)
|
||||
@@ -46,6 +90,10 @@ class App(object):
|
||||
logger.debug('tool link: %s' % link)
|
||||
register_tool(link)
|
||||
|
||||
for statistic in getattr(registration, 'statistics', []):
|
||||
logger.debug('statistic: %s' % statistic)
|
||||
register_statistics(statistic)
|
||||
|
||||
for index, link in enumerate(getattr(registration, 'menu_links', [])):
|
||||
logger.debug('menu_link: %s' % link)
|
||||
register_top_menu(name='%s.%s' % (app_name, index), link=link)
|
||||
@@ -60,3 +108,8 @@ class App(object):
|
||||
|
||||
def __unicode__(self):
|
||||
return unicode(self.label)
|
||||
|
||||
class Meta:
|
||||
ordering = ('name', )
|
||||
verbose_name = _(u'app')
|
||||
verbose_name_plural = _(u'apps')
|
||||
|
||||
13
apps/app_registry/registry.py
Normal file
13
apps/app_registry/registry.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from .icons import icon_app
|
||||
from .links import app_registry_tool_link
|
||||
|
||||
name = 'app_registry'
|
||||
label = _(u'App registry')
|
||||
description = _(u'Handles the registration of apps in a project.')
|
||||
icon = icon_app
|
||||
tool_links = [app_registry_tool_link]
|
||||
dependencies = ['navigation']
|
||||
BIN
apps/app_registry/static/images/icons/plugin.png
Normal file
BIN
apps/app_registry/static/images/icons/plugin.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
5
apps/app_registry/urls.py
Normal file
5
apps/app_registry/urls.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from django.conf.urls.defaults import patterns, url
|
||||
|
||||
urlpatterns = patterns('app_registry.views',
|
||||
url(r'^list/$', 'app_list', (), 'app_list'),
|
||||
)
|
||||
27
apps/app_registry/views.py
Normal file
27
apps/app_registry/views.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.shortcuts import render_to_response
|
||||
from django.template import RequestContext
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from common.utils import encapsulate
|
||||
from permissions.models import Permission
|
||||
|
||||
from .models import App
|
||||
from .icons import icon_app
|
||||
|
||||
|
||||
def app_list(request):
|
||||
#order = [i for i,f in sorted(smart_modules.items(), key=lambda k: 'dependencies' in k[1] and k[1]['dependencies'])]
|
||||
|
||||
return render_to_response('generic_list.html', {
|
||||
'object_list': App.live.all(),
|
||||
'hide_object': True,
|
||||
'title': _(u'registered apps'),
|
||||
'extra_columns': [
|
||||
{'name': _(u'label'), 'attribute': 'label'},
|
||||
{'name': _(u'icon'), 'attribute': encapsulate(lambda x: (getattr(x, 'icon') or icon_app).display_big())},
|
||||
{'name': _(u'description'), 'attribute': 'description'},
|
||||
{'name': _(u'dependencies'), 'attribute': encapsulate(lambda x: u', '.join([unicode(dependency) for dependency in x.dependencies.all()]))},
|
||||
],
|
||||
}, context_instance=RequestContext(request))
|
||||
63
apps/backups/__init__.py
Normal file
63
apps/backups/__init__.py
Normal file
@@ -0,0 +1,63 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import inspect
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import transaction, DatabaseError
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.importlib import import_module
|
||||
|
||||
#from common.utils import encapsulate
|
||||
#from job_processor.exceptions import JobQueuePushError
|
||||
#from job_processor.models import JobQueue, JobType
|
||||
#from project_tools.api import register_tool
|
||||
#from project_setup.api import register_setup
|
||||
#from navigation.api import bind_links, register_model_list_columns
|
||||
|
||||
#from .classes import AppBackup, ModelBackup
|
||||
|
||||
#from .links import (app_registry_tool_link, app_list, backup_tool_link,
|
||||
# restore_tool_link, backup_job_list, backup_job_create, backup_job_edit,
|
||||
# backup_job_test)
|
||||
#from .literals import BACKUP_JOB_QUEUE_NAME
|
||||
#from .models import App
|
||||
#from . import models
|
||||
|
||||
#class UnableToRegister(Exception):
|
||||
# pass
|
||||
|
||||
#apipkg.initpkg(__name__, {
|
||||
# #'App': _App,
|
||||
## 'App': 'app_registry.models:App',
|
||||
# #'App': models.App
|
||||
#})
|
||||
#pp = 1
|
||||
#from .models import App#as _App#, BackupJob as _BackupJob
|
||||
|
||||
#@transaction.commit_on_success
|
||||
#def create_backups_job_queue():
|
||||
# global backups_job_queue
|
||||
# try:
|
||||
# backups_job_queue, created = JobQueue.objects.get_or_create(name=BACKUP_JOB_QUEUE_NAME, defaults={'label': _('Backups'), 'unique_jobs': True})
|
||||
# except DatabaseError:
|
||||
# transaction.rollback()
|
||||
|
||||
|
||||
#bind_links(['app_list'], [app_list], menu_name='secondary_menu')
|
||||
|
||||
#create_backups_job_queue()
|
||||
###backup_job_type = JobType('remote_backup', _(u'Remove backup'), do_backup)
|
||||
|
||||
#register_setup(backup_tool_link)
|
||||
#register_tool(restore_tool_link)
|
||||
#bind_links([BackupJob, 'backup_job_list', 'backup_job_create'], [backup_job_list], menu_name='secondary_menu')
|
||||
#bind_links([BackupJob, 'backup_job_list', 'backup_job_create'], [backup_job_create], menu_name='sidebar')
|
||||
#bind_links([BackupJob], [backup_job_edit, backup_job_test])
|
||||
|
||||
#register_model_list_columns(BackupJob, [
|
||||
# {'name':_(u'begin date time'), 'attribute': 'begin_datetime'},
|
||||
# {'name':_(u'storage module'), 'attribute': 'storage_module.label'},
|
||||
# {'name':_(u'apps'), 'attribute': encapsulate(lambda x: u', '.join([unicode(app) for app in x.apps.all()]))},
|
||||
#])
|
||||
|
||||
###app.set_backup([ModelBackup()])
|
||||
161
apps/backups/classes.py
Normal file
161
apps/backups/classes.py
Normal file
@@ -0,0 +1,161 @@
|
||||
import logging
|
||||
import os
|
||||
|
||||
from django.core.files.base import ContentFile
|
||||
from django.core.files.storage import FileSystemStorage
|
||||
from django.core.management.commands.dumpdata import Command
|
||||
from django.conf import settings
|
||||
from django.db import router, DEFAULT_DB_ALIAS
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import ugettext
|
||||
from django.utils.importlib import import_module
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
# Data types
|
||||
class ElementDataBase(object):
|
||||
"""
|
||||
The basic unit of a backup, a data type
|
||||
it is produced or consumed by the ElementBackup classes
|
||||
"""
|
||||
def make_filename(self, id):
|
||||
return '%s-%s' % (self.model_backup.app_backup.app.name, id)
|
||||
|
||||
def save(self):
|
||||
"""
|
||||
Must return a file like object
|
||||
"""
|
||||
raise NotImplemented
|
||||
|
||||
def load(self, file_object):
|
||||
"""
|
||||
Must read a file like object and store content
|
||||
"""
|
||||
raise NotImplemented
|
||||
|
||||
|
||||
class Fixture(ElementDataBase):
|
||||
name = 'fixture'
|
||||
|
||||
def __init__(self, model_backup, content):
|
||||
self.model_backup = model_backup
|
||||
self.content = content
|
||||
|
||||
@property
|
||||
def filename(self):
|
||||
return self.make_filename(self.__class__.name)
|
||||
|
||||
def save(self):
|
||||
return ContentFile(name=self.filename, content=self.content)
|
||||
|
||||
#def load(self):
|
||||
|
||||
|
||||
# Element backup
|
||||
class ElementBackupBase(object):
|
||||
"""
|
||||
Sub classes must provide at least:
|
||||
info()
|
||||
backup()
|
||||
restore()
|
||||
"""
|
||||
|
||||
label = _(u'Base backup manager')
|
||||
|
||||
def info(self):
|
||||
"""
|
||||
Must return at least None
|
||||
"""
|
||||
return None
|
||||
|
||||
def link(self, app_backup):
|
||||
self.app_backup = app_backup
|
||||
return self
|
||||
|
||||
def __unicode__(self):
|
||||
return unicode(self.__class__.label)
|
||||
|
||||
|
||||
class ModelBackup(ElementBackupBase):
|
||||
label = _(u'Model fixtures')
|
||||
|
||||
def __init__(self, models=None):
|
||||
self.model_list = models or []
|
||||
|
||||
def info(self):
|
||||
return _(u'models: %s') % (u', '.join(self.model_list) if self.model_list else _(u'All'))
|
||||
|
||||
def backup(self):
|
||||
"""
|
||||
"""
|
||||
#TODO: turn into a generator
|
||||
|
||||
command = Command()
|
||||
if not self.model_list:
|
||||
result = [self.app_backup.app.name]
|
||||
else:
|
||||
result = [u'%s.%s' (self.app_backup.app.name, model) for model in self.model_list]
|
||||
|
||||
#TODO: a single Fixture or a list of Fixtures for each model?
|
||||
#Can't return multiple Fixture until a way to find all of an app's models is found
|
||||
return [Fixture(
|
||||
model_backup=self,
|
||||
content=command.handle(u' '.join(result), format='json', indent=4, using=DEFAULT_DB_ALIAS, exclude=[], user_base_manager=False, use_natural_keys=False)
|
||||
)]
|
||||
|
||||
|
||||
class FileBackup(ElementBackupBase):
|
||||
label = _(u'File copy')
|
||||
|
||||
def __init__(self, storage_class, filepath=None):
|
||||
self.storage_class = storage_class
|
||||
self.filepath = filepath
|
||||
|
||||
def info(self):
|
||||
return _(u'%s from %s') % (self.filepath or _(u'all files'), self.storage_class)
|
||||
|
||||
def backup(self):
|
||||
"""
|
||||
Fetch a file specified by filepath from the Django storage class
|
||||
and return a file like object
|
||||
"""
|
||||
return None
|
||||
|
||||
|
||||
# App config
|
||||
class AppBackup(object):
|
||||
_registry = {}
|
||||
|
||||
STATE_BACKING_UP = 'backing_up'
|
||||
STATE_RESTORING = 'restoring'
|
||||
STATE_IDLE = 'idle'
|
||||
|
||||
STATE_CHOICES = (
|
||||
(STATE_BACKING_UP, _(u'backing up')),
|
||||
(STATE_RESTORING, _(u'restoring')),
|
||||
(STATE_IDLE, _(u'idle')),
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def get(cls, name):
|
||||
return cls._registry[name]
|
||||
|
||||
@classmethod
|
||||
def get_all(cls):
|
||||
return cls._registry.values()
|
||||
|
||||
def __init__(self, app, backup_managers):
|
||||
# app = App instance from app_registry app
|
||||
self.app = app
|
||||
self.backup_managers = [manager.link(self) for manager in backup_managers]
|
||||
self.state = self.__class__.STATE_IDLE
|
||||
self.__class__._registry[app] = self
|
||||
|
||||
def info(self):
|
||||
results = []
|
||||
for manager in self.backup_managers:
|
||||
results.append(u'%s - %s' % (manager, manager.info() or _(u'Nothing')))
|
||||
return u', '.join(results)
|
||||
|
||||
|
||||
20
apps/backups/forms.py
Normal file
20
apps/backups/forms.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django import forms
|
||||
|
||||
from common.widgets import ScrollableCheckboxSelectMultiple
|
||||
|
||||
#from .classes import AppBackup
|
||||
#from .models import App, BackupJob
|
||||
|
||||
|
||||
#def valid_app_choices():
|
||||
# # Return app that exist in the app registry and that have been registered for backup
|
||||
# return App.live.filter(pk__in=[appbackup.app.pk for appbackup in AppBackup.get_all()])
|
||||
|
||||
|
||||
#class BackupJobForm(forms.ModelForm):
|
||||
# apps = forms.ModelMultipleChoiceField(queryset=valid_app_choices(), widget=ScrollableCheckboxSelectMultiple())
|
||||
#
|
||||
# class Meta:
|
||||
# model = BackupJob
|
||||
17
apps/backups/links.py
Normal file
17
apps/backups/links.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from navigation import Link
|
||||
|
||||
from .icons import icon_app
|
||||
from .permissions import PERMISSION_BACKUP_JOB_VIEW, PERMISSION_BACKUP_JOB_CREATE, PERMISSION_BACKUP_JOB_EDIT, PERMISSION_BACKUP_JOB_DELETE
|
||||
|
||||
backup_tool_link = Link(text=_(u'backups'), view='backup_job_list', icon='cd_burn.png', permissions=[PERMISSION_BACKUP_JOB_VIEW])
|
||||
backup_job_list = Link(text=_(u'backup job list'), view='backup_job_list', sprite='cd_burn', permissions=[PERMISSION_BACKUP_JOB_VIEW])
|
||||
backup_job_create = Link(text=_(u'create'), view='backup_job_create', sprite='cd_add', permissions=[PERMISSION_BACKUP_JOB_CREATE])
|
||||
backup_job_edit = Link(text=_(u'edit'), view='backup_job_edit', args='object.pk', sprite='cd_edit', permissions=[PERMISSION_BACKUP_JOB_EDIT])
|
||||
backup_job_test = Link(text=_(u'test'), view='backup_job_test', args='object.pk', sprite='cd_go')#, permissions=[PERMISSION_BACKUP_JOB_TEST])
|
||||
backup_job_delete = Link(text=_(u'delete'), view='backup_job_delete', args='object.pk', sprite='cd_delete', permissions=[PERMISSION_BACKUP_JOB_DELETE])
|
||||
|
||||
restore_tool_link = Link(text=_(u'restore'), view='restore_view', icon='cd_eject.png')#, permissions=[])
|
||||
1
apps/backups/literals.py
Normal file
1
apps/backups/literals.py
Normal file
@@ -0,0 +1 @@
|
||||
BACKUP_JOB_QUEUE_NAME = 'backups_queue'
|
||||
58
apps/backups/models.py
Normal file
58
apps/backups/models.py
Normal file
@@ -0,0 +1,58 @@
|
||||
from django.db import models
|
||||
|
||||
from app_registry.models import App
|
||||
|
||||
"""
|
||||
class BackupJob(models.Model):
|
||||
name = models.CharField(max_length=64, verbose_name=_(u'name'))
|
||||
enabled = models.BooleanField(default=True, verbose_name=_(u'enabled'))
|
||||
apps = models.ManyToManyField(App)
|
||||
begin_datetime = models.DateTimeField(verbose_name=_(u'begin date and time'), default=lambda: datetime.datetime.now())
|
||||
|
||||
# * repetition =
|
||||
# day - 1 days
|
||||
# weekly - days of week checkbox
|
||||
# month - day of month, day of week
|
||||
# * repetition option field
|
||||
# * ends
|
||||
# - never
|
||||
# - After # ocurrences
|
||||
# - On date
|
||||
# * end option field
|
||||
# * type
|
||||
# - Full
|
||||
# - Incremental
|
||||
storage_module_name = models.CharField(max_length=32, choices=StorageModuleBase.get_as_choices(), verbose_name=_(u'storage module'))
|
||||
storage_arguments_json = models.TextField(verbose_name=_(u'storage module arguments (in JSON)'), blank=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
@property
|
||||
def storage_module(self):
|
||||
return StorageModuleBase.get(self.storage_module_name)
|
||||
|
||||
def backup(self, dry_run=False):
|
||||
logger.debug('starting: %s', self)
|
||||
logger.debug('dry_run: %s' % dry_run)
|
||||
storage_module = self.storage_module
|
||||
#TODO: loads
|
||||
for app in self.apps.all():
|
||||
app_backup = AppBackup.get(app)
|
||||
app_backup.backup(storage_module(backup_path='/tmp'), dry_run=dry_run)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
#dump
|
||||
super(BackupJob, self).save(*args, **kwargs)
|
||||
|
||||
@models.permalink
|
||||
def get_absolute_url(self):
|
||||
return ('checkout_info', [self.document.pk])
|
||||
|
||||
class Meta:
|
||||
verbose_name = _(u'document checkout')
|
||||
verbose_name_plural = _(u'document checkouts')
|
||||
|
||||
|
||||
#class BackupJobLog
|
||||
"""
|
||||
12
apps/backups/permissions.py
Normal file
12
apps/backups/permissions.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from permissions.models import PermissionNamespace, Permission
|
||||
|
||||
namespace = PermissionNamespace('backups', _(u'Backups'))
|
||||
|
||||
PERMISSION_BACKUP_JOB_VIEW = Permission.objects.register(namespace, 'backup_job_view', _(u'View a backup job'))
|
||||
PERMISSION_BACKUP_JOB_CREATE = Permission.objects.register(namespace, 'backup_job_view', _(u'Create backup jobs'))
|
||||
PERMISSION_BACKUP_JOB_EDIT = Permission.objects.register(namespace, 'backup_job_edit', _(u'Edit an existing backup jobs'))
|
||||
PERMISSION_BACKUP_JOB_DELETE = Permission.objects.register(namespace, 'backup_job_delete', _(u'Delete an existing backup jobs'))
|
||||
9
apps/backups/urls.py
Normal file
9
apps/backups/urls.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from django.conf.urls.defaults import patterns, url
|
||||
|
||||
urlpatterns = patterns('backups.views',
|
||||
#url(r'^jobs/list/$', 'backup_job_list', (), 'backup_job_list'),
|
||||
#url(r'^jobs/create/$', 'backup_job_create', (), 'backup_job_create'),
|
||||
#url(r'^jobs/(?P<backup_job_pk>\d+)/edit/$', 'backup_job_edit', (), 'backup_job_edit'),
|
||||
#url(r'^jobs/(?P<backup_job_pk>\d+)/test/$', 'backup_job_test', (), 'backup_job_test'),
|
||||
#url(r'^jobs/(?P<backup_job_pk>\d+)/delete/$', 'backup_job_delete', (), 'backup_job_delete'),
|
||||
)
|
||||
126
apps/backups/views.py
Normal file
126
apps/backups/views.py
Normal file
@@ -0,0 +1,126 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib import messages
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
from django.template import RequestContext
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from common.utils import encapsulate
|
||||
from permissions.models import Permission
|
||||
|
||||
#from .classes import AppBackup
|
||||
#from .forms import BackupJobForm
|
||||
#from .models import App#, BackupJob
|
||||
from .permissions import PERMISSION_BACKUP_JOB_VIEW, PERMISSION_BACKUP_JOB_CREATE, PERMISSION_BACKUP_JOB_EDIT
|
||||
|
||||
|
||||
def backup_job_list(request):
|
||||
pre_object_list = BackupJob.objects.all()
|
||||
|
||||
try:
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_BACKUP_JOB_VIEW])
|
||||
except PermissionDenied:
|
||||
# If user doesn't have global permission, get a list of backup jobs
|
||||
# for which he/she does have access use it to filter the
|
||||
# provided object_list
|
||||
final_object_list = AccessEntry.objects.filter_objects_by_access(PERMISSION_BACKUP_JOB_VIEW, request.user, pre_object_list)
|
||||
else:
|
||||
final_object_list = pre_object_list
|
||||
|
||||
context = {
|
||||
'object_list': final_object_list,
|
||||
'title': _(u'backup jobs'),
|
||||
'hide_link': True,
|
||||
#'extra_columns': [
|
||||
# {'name': _(u'info'), 'attribute': 'info'},
|
||||
#],
|
||||
}
|
||||
return render_to_response('generic_list.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def backup_job_create(request):
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_BACKUP_JOB_CREATE])
|
||||
|
||||
if request.method == 'POST':
|
||||
form = BackupJobForm(data=request.POST)
|
||||
if form.is_valid():
|
||||
try:
|
||||
backup_job = form.save()
|
||||
except Exception, exc:
|
||||
messages.error(request, _(u'Error creating backup job; %s') % exc)
|
||||
else:
|
||||
messages.success(request, _(u'Backup job "%s" created successfully.') % backup_job)
|
||||
return HttpResponseRedirect(reverse('backup_job_list'))
|
||||
else:
|
||||
form = BackupJobForm()
|
||||
|
||||
return render_to_response('generic_form.html', {
|
||||
'form': form,
|
||||
'title': _(u'Create backup job')
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def backup_job_edit(request, backup_job_pk):
|
||||
backup_job = get_object_or_404(BackupJob, pk=backup_job_pk)
|
||||
try:
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_BACKUP_JOB_EDIT])
|
||||
except PermissionDenied:
|
||||
AccessEntry.objects.check_access(PERMISSION_BACKUP_JOB_EDIT, request.user, backup_job)
|
||||
|
||||
if request.method == 'POST':
|
||||
form = BackupJobForm(data=request.POST, instance=backup_job)
|
||||
if form.is_valid():
|
||||
try:
|
||||
backup_job = form.save()
|
||||
except Exception, exc:
|
||||
messages.error(request, _(u'Error editing backup job; %s') % exc)
|
||||
else:
|
||||
messages.success(request, _(u'Backup job "%s" edited successfully.') % backup_job)
|
||||
return HttpResponseRedirect(reverse('backup_job_list'))
|
||||
else:
|
||||
form = BackupJobForm(instance=backup_job)
|
||||
|
||||
return render_to_response('generic_form.html', {
|
||||
'form': form,
|
||||
'object': backup_job,
|
||||
'title': _(u'Edit backup job: %s') % backup_job
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def backup_job_test(request, backup_job_pk):
|
||||
backup_job = get_object_or_404(BackupJob, pk=backup_job_pk)
|
||||
#try:
|
||||
# Permission.objects.check_permissions(request.user, [PERMISSION_BACKUP_JOB_EDIT])
|
||||
#except PermissionDenied:
|
||||
# AccessEntry.objects.check_access(PERMISSION_BACKUP_JOB_EDIT, request.user, backup_job)
|
||||
|
||||
try:
|
||||
backup_job.backup(dry_run=True)
|
||||
except Exception, exc:
|
||||
if settings.DEBUG:
|
||||
raise
|
||||
else:
|
||||
messages.error(request, _(u'Error testing backup job; %s') % exc)
|
||||
return HttpResponseRedirect(reverse('backup_job_list'))
|
||||
else:
|
||||
messages.success(request, _(u'Test for backup job "%s" finished successfully.') % backup_job)
|
||||
return HttpResponseRedirect(reverse('backup_job_list'))
|
||||
|
||||
|
||||
def backup_view(request):
|
||||
#Permission.objects.check_permissions(request.user, [])
|
||||
|
||||
context = {
|
||||
'object_list': AppBackup.get_all(),
|
||||
'title': _(u'registered apps for backup'),
|
||||
'hide_link': True,
|
||||
'extra_columns': [
|
||||
{'name': _(u'info'), 'attribute': 'info'},
|
||||
],
|
||||
}
|
||||
return render_to_response('generic_list.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
14
apps/bootstrap/icons.py
Normal file
14
apps/bootstrap/icons.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from icons.literals import (WIZARD, LIGHTNING, RADIOACTIVITY, MAGIC_WAND_2,
|
||||
WIZARD_ADD, WIZARD_EDIT, WIZARD_DELETE, WIZARD_LIGHTNING)
|
||||
from icons import Icon
|
||||
|
||||
icon_bootstrap_setup = Icon(WIZARD)
|
||||
icon_bootstrap_setup_view = Icon(WIZARD)
|
||||
icon_bootstrap_setup_create = Icon(WIZARD_ADD)
|
||||
icon_bootstrap_setup_edit = Icon(WIZARD_EDIT)
|
||||
icon_bootstrap_setup_delete = Icon(WIZARD_DELETE)
|
||||
icon_bootstrap_setup_execute = Icon(WIZARD_LIGHTNING)
|
||||
icon_bootstrap_setup_dump = Icon(MAGIC_WAND_2)
|
||||
icon_nuke_database = Icon(RADIOACTIVITY)
|
||||
@@ -2,22 +2,29 @@ from __future__ import absolute_import
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from navigation import Link
|
||||
|
||||
from .permissions import (PERMISSION_BOOTSTRAP_VIEW, PERMISSION_BOOTSTRAP_CREATE,
|
||||
PERMISSION_BOOTSTRAP_EDIT, PERMISSION_BOOTSTRAP_DELETE,
|
||||
PERMISSION_BOOTSTRAP_EXECUTE, PERMISSION_BOOTSTRAP_DUMP,
|
||||
PERMISSION_NUKE_DATABASE, PERMISSION_BOOTSTRAP_EXPORT,
|
||||
PERMISSION_BOOTSTRAP_IMPORT, PERMISSION_BOOTSTRAP_REPOSITORY_SYNC)
|
||||
from .icons import (icon_bootstrap_setup, icon_bootstrap_setup_execute, icon_bootstrap_setup_create,
|
||||
icon_bootstrap_setup_edit, icon_bootstrap_setup_delete, icon_bootstrap_setup_view,
|
||||
icon_bootstrap_setup_dump, icon_nuke_database)
|
||||
|
||||
link_bootstrap_setup_tool = {'text': _(u'bootstrap'), 'view': 'bootstrap_setup_list', 'icon': 'lightning.png', 'permissions': [PERMISSION_BOOTSTRAP_VIEW]}
|
||||
link_bootstrap_setup_list = {'text': _(u'bootstrap setup list'), 'view': 'bootstrap_setup_list', 'famfam': 'lightning', 'permissions': [PERMISSION_BOOTSTRAP_VIEW]}
|
||||
link_bootstrap_setup_create = {'text': _(u'create new bootstrap setup'), 'view': 'bootstrap_setup_create', 'famfam': 'lightning_add', 'permissions': [PERMISSION_BOOTSTRAP_CREATE]}
|
||||
link_bootstrap_setup_edit = {'text': _(u'edit'), 'view': 'bootstrap_setup_edit', 'args': 'object.pk', 'famfam': 'pencil', 'permissions': [PERMISSION_BOOTSTRAP_EDIT]}
|
||||
link_bootstrap_setup_delete = {'text': _(u'delete'), 'view': 'bootstrap_setup_delete', 'args': 'object.pk', 'famfam': 'lightning_delete', 'permissions': [PERMISSION_BOOTSTRAP_DELETE]}
|
||||
link_bootstrap_setup_view = {'text': _(u'details'), 'view': 'bootstrap_setup_view', 'args': 'object.pk', 'famfam': 'lightning', 'permissions': [PERMISSION_BOOTSTRAP_VIEW]}
|
||||
link_bootstrap_setup_execute = {'text': _(u'execute'), 'view': 'bootstrap_setup_execute', 'args': 'object.pk', 'famfam': 'lightning_go', 'permissions': [PERMISSION_BOOTSTRAP_EXECUTE]}
|
||||
link_bootstrap_setup_dump = {'text': _(u'dump current setup'), 'view': 'bootstrap_setup_dump', 'famfam': 'arrow_down', 'permissions': [PERMISSION_BOOTSTRAP_DUMP]}
|
||||
link_bootstrap_setup_tool = Link(text=_(u'bootstrap'), view='bootstrap_setup_list', icon=icon_bootstrap_setup, permissions=[PERMISSION_BOOTSTRAP_VIEW])
|
||||
link_bootstrap_setup_list = Link(text=_(u'bootstrap setup list'), view='bootstrap_setup_list', icon=icon_bootstrap_setup, permissions=[PERMISSION_BOOTSTRAP_VIEW])
|
||||
link_bootstrap_setup_create = Link(text=_(u'create new bootstrap setup'), view='bootstrap_setup_create', icon=icon_bootstrap_setup_create, permissions=[PERMISSION_BOOTSTRAP_CREATE])
|
||||
link_bootstrap_setup_edit = Link(text=_(u'edit'), view='bootstrap_setup_edit', args='object.pk', icon=icon_bootstrap_setup_edit, permissions=[PERMISSION_BOOTSTRAP_EDIT])
|
||||
link_bootstrap_setup_delete = Link(text=_(u'delete'), view='bootstrap_setup_delete', args='object.pk', icon=icon_bootstrap_setup_delete, permissions=[PERMISSION_BOOTSTRAP_DELETE])
|
||||
link_bootstrap_setup_view = Link(text=_(u'details'), view='bootstrap_setup_view', args='object.pk', icon=icon_bootstrap_setup_view, permissions=[PERMISSION_BOOTSTRAP_VIEW])
|
||||
link_bootstrap_setup_execute = Link(text=_(u'execute'), view='bootstrap_setup_execute', args='object.pk', icon=icon_bootstrap_setup_execute, permissions=[PERMISSION_BOOTSTRAP_EXECUTE])
|
||||
link_bootstrap_setup_dump = Link(text=_(u'dump current setup'), view='bootstrap_setup_dump', icon=icon_bootstrap_setup_dump, permissions=[PERMISSION_BOOTSTRAP_DUMP])
|
||||
link_erase_database = Link(text=_(u'erase database'), view='erase_database_view', icon=icon_nuke_database, permissions=[PERMISSION_NUKE_DATABASE])
|
||||
|
||||
# TODO: convert to Link class and assign icon
|
||||
link_bootstrap_setup_export = {'text': _(u'export'), 'view': 'bootstrap_setup_export', 'args': 'object.pk', 'famfam': 'disk', 'permissions': [PERMISSION_BOOTSTRAP_EXPORT]}
|
||||
link_bootstrap_setup_import_from_file = {'text': _(u'import from file'), 'view': 'bootstrap_setup_import_from_file', 'famfam': 'folder', 'permissions': [PERMISSION_BOOTSTRAP_IMPORT]}
|
||||
link_bootstrap_setup_import_from_url = {'text': _(u'import from URL'), 'view': 'bootstrap_setup_import_from_url', 'famfam': 'world', 'permissions': [PERMISSION_BOOTSTRAP_IMPORT]}
|
||||
link_bootstrap_setup_repository_sync = {'text': _(u'sync with repository'), 'view': 'bootstrap_setup_repository_sync', 'famfam': 'world', 'permissions': [PERMISSION_BOOTSTRAP_REPOSITORY_SYNC]}
|
||||
link_erase_database = {'text': _(u'erase database'), 'view': 'erase_database_view', 'icon': 'radioactivity.png', 'permissions': [PERMISSION_NUKE_DATABASE]}
|
||||
|
||||
Binary file not shown.
@@ -8,9 +8,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:20-0400\n"
|
||||
"PO-Revision-Date: 2012-10-17 10:27+0000\n"
|
||||
"Last-Translator: Pavlin Koldamov <pkoldamov@gmail.com>\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
|
||||
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
|
||||
"Language-Team: Bulgarian (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
"language/bg/)\n"
|
||||
"Language: bg\n"
|
||||
@@ -27,58 +27,58 @@ msgstr ""
|
||||
msgid "Bootstrap setup URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:11
|
||||
#: links.py:16
|
||||
msgid "bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:12
|
||||
#: links.py:17
|
||||
msgid "bootstrap setup list"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:13
|
||||
#: links.py:18
|
||||
msgid "create new bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:14
|
||||
#: links.py:19
|
||||
msgid "edit"
|
||||
msgstr "редактиране"
|
||||
|
||||
#: links.py:15
|
||||
#: links.py:20
|
||||
msgid "delete"
|
||||
msgstr "изтриване"
|
||||
|
||||
#: links.py:16
|
||||
#: links.py:21
|
||||
msgid "details"
|
||||
msgstr "детайли"
|
||||
|
||||
#: links.py:17
|
||||
#: links.py:22
|
||||
msgid "execute"
|
||||
msgstr "изпълнение"
|
||||
|
||||
#: links.py:18
|
||||
#: links.py:23
|
||||
msgid "dump current setup"
|
||||
msgstr "изпринтване на текущата настройка"
|
||||
|
||||
#: links.py:19
|
||||
#: links.py:24
|
||||
msgid "erase database"
|
||||
msgstr "изтриване на база данни"
|
||||
|
||||
#: links.py:27
|
||||
msgid "export"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
#: links.py:28
|
||||
msgid "import from file"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
#: links.py:29
|
||||
msgid "import from URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
#: links.py:30
|
||||
msgid "sync with repository"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:23
|
||||
msgid "erase database"
|
||||
msgstr "изтриване на база данни"
|
||||
|
||||
#: literals.py:20
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
@@ -99,7 +99,7 @@ msgstr "име"
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:32 views.py:34
|
||||
#: models.py:32 views.py:35
|
||||
msgid "description"
|
||||
msgstr "описание"
|
||||
|
||||
@@ -112,7 +112,7 @@ msgid "These are the actual database structure creation instructions."
|
||||
msgstr ""
|
||||
"Това са текущите инструкции за създаване на структурата на базата данни."
|
||||
|
||||
#: models.py:34 views.py:35
|
||||
#: models.py:34 views.py:36
|
||||
msgid "type"
|
||||
msgstr "тип"
|
||||
|
||||
@@ -120,11 +120,11 @@ msgstr "тип"
|
||||
msgid "creation date and time"
|
||||
msgstr "дата и време на създаване"
|
||||
|
||||
#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172
|
||||
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
|
||||
msgid "bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:105 views.py:31
|
||||
#: models.py:105 views.py:32
|
||||
msgid "bootstrap setups"
|
||||
msgstr ""
|
||||
|
||||
@@ -172,158 +172,151 @@ msgstr ""
|
||||
msgid "Erase the entire database and document storage"
|
||||
msgstr "Изтрийте цялата база данни за съхраняване и документното пространство"
|
||||
|
||||
#: registry.py:7
|
||||
#: registry.py:8
|
||||
msgid "Bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:8
|
||||
#: registry.py:9
|
||||
msgid "Provides pre configured setups for indexes, document types, tags, etc."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:50
|
||||
#, fuzzy
|
||||
#: views.py:51
|
||||
msgid "Bootstrap setup created successfully"
|
||||
msgstr "Базата данни е изтрита успешно."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:53
|
||||
#: views.py:54
|
||||
msgid "Error creating bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:59
|
||||
msgid "create bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:78
|
||||
#: views.py:79
|
||||
msgid "Bootstrap setup edited successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:81
|
||||
#: views.py:82
|
||||
msgid "Error editing bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:86
|
||||
#: views.py:87
|
||||
#, python-format
|
||||
msgid "edit bootstrap setup: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:111
|
||||
#: views.py:112
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %s deleted successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:113
|
||||
#: views.py:114
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:124
|
||||
#: views.py:125
|
||||
#, python-format
|
||||
msgid "Are you sure you with to delete the bootstrap setup: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:164
|
||||
#: views.py:165
|
||||
msgid ""
|
||||
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
|
||||
"try again."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:166
|
||||
#: views.py:167
|
||||
#, python-format
|
||||
msgid "Error executing bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:168
|
||||
#: views.py:169
|
||||
#, python-format
|
||||
msgid "Bootstrap setup \"%s\" executed successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:180
|
||||
#, fuzzy, python-format
|
||||
#: views.py:181
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Are you sure you wish to execute the database bootstrap setup named: %s?"
|
||||
msgstr ""
|
||||
"Сигурен ли сте, че искате да изтриете цялата база данни и документното "
|
||||
"пространство?"
|
||||
|
||||
#: views.py:196
|
||||
#: views.py:197
|
||||
#, python-format
|
||||
msgid "Error dumping configuration into a bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:200
|
||||
#, fuzzy
|
||||
#: views.py:201
|
||||
msgid "Bootstrap setup created successfully."
|
||||
msgstr "Базата данни е изтрита успешно."
|
||||
|
||||
#: views.py:206
|
||||
msgid "dump current configuration into a bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:240 views.py:268
|
||||
#: views.py:207
|
||||
#, fuzzy
|
||||
msgid "Bootstrap setup imported successfully."
|
||||
msgstr "Базата данни е изтрита успешно."
|
||||
msgid "dump current setup into a bootstrap setup"
|
||||
msgstr "изпринтване на текущата настройка"
|
||||
|
||||
#: views.py:243
|
||||
#: views.py:241 views.py:269
|
||||
msgid "Bootstrap setup imported successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:244
|
||||
msgid "File is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:245
|
||||
#: views.py:246
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from file; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:251
|
||||
#: views.py:252
|
||||
msgid "Import bootstrap setup from file"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:271
|
||||
#: views.py:272
|
||||
msgid "Data from URL is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:273
|
||||
#: views.py:274
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from URL; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:279
|
||||
#: views.py:280
|
||||
msgid "Import bootstrap setup from URL"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:298
|
||||
#: views.py:299
|
||||
#, python-format
|
||||
msgid "Error erasing database; %s"
|
||||
msgstr "Грешка при изтриване на база данни; %s"
|
||||
|
||||
#: views.py:300
|
||||
#: views.py:301
|
||||
msgid "Database erased successfully."
|
||||
msgstr "Базата данни е изтрита успешно."
|
||||
|
||||
#: views.py:310
|
||||
#: views.py:311
|
||||
msgid ""
|
||||
"Are you sure you wish to erase the entire database and document storage?"
|
||||
msgstr ""
|
||||
"Сигурен ли сте, че искате да изтриете цялата база данни и документното "
|
||||
"пространство?"
|
||||
|
||||
#: views.py:311
|
||||
#: views.py:312
|
||||
msgid ""
|
||||
"All documents, sources, metadata, metadata types, set, tags, indexes and "
|
||||
"logs will be lost irreversibly!"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:328
|
||||
#: views.py:329
|
||||
msgid "Bootstrap repository successfully synchronized."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:330
|
||||
#: views.py:331
|
||||
#, python-format
|
||||
msgid "Bootstrap repository synchronization error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:337
|
||||
#, fuzzy
|
||||
#: views.py:338
|
||||
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
|
||||
msgstr ""
|
||||
"Сигурен ли сте, че искате да изтриете цялата база данни и документното "
|
||||
"пространство?"
|
||||
|
||||
Binary file not shown.
@@ -1,21 +1,22 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:20-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
|
||||
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
|
||||
"Language-Team: German (Germany) (http://www.transifex.com/projects/p/mayan-"
|
||||
"edms/language/de_DE/)\n"
|
||||
"Language: de_DE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: forms.py:50
|
||||
msgid "Bootstrap setup file"
|
||||
@@ -25,58 +26,58 @@ msgstr ""
|
||||
msgid "Bootstrap setup URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:11
|
||||
#: links.py:16
|
||||
msgid "bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:12
|
||||
#: links.py:17
|
||||
msgid "bootstrap setup list"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:13
|
||||
#: links.py:18
|
||||
msgid "create new bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:14
|
||||
#: links.py:19
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:15
|
||||
#: links.py:20
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16
|
||||
#: links.py:21
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17
|
||||
#: links.py:22
|
||||
msgid "execute"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:18
|
||||
#: links.py:23
|
||||
msgid "dump current setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:19
|
||||
#: links.py:24
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:27
|
||||
msgid "export"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
#: links.py:28
|
||||
msgid "import from file"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
#: links.py:29
|
||||
msgid "import from URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
#: links.py:30
|
||||
msgid "sync with repository"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:23
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: literals.py:20
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
@@ -97,7 +98,7 @@ msgstr ""
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:32 views.py:34
|
||||
#: models.py:32 views.py:35
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
|
||||
@@ -109,7 +110,7 @@ msgstr ""
|
||||
msgid "These are the actual database structure creation instructions."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:34 views.py:35
|
||||
#: models.py:34 views.py:36
|
||||
msgid "type"
|
||||
msgstr ""
|
||||
|
||||
@@ -117,11 +118,11 @@ msgstr ""
|
||||
msgid "creation date and time"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172
|
||||
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
|
||||
msgid "bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:105 views.py:31
|
||||
#: models.py:105 views.py:32
|
||||
msgid "bootstrap setups"
|
||||
msgstr ""
|
||||
|
||||
@@ -169,148 +170,148 @@ msgstr ""
|
||||
msgid "Erase the entire database and document storage"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:7
|
||||
#: registry.py:8
|
||||
msgid "Bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:8
|
||||
#: registry.py:9
|
||||
msgid "Provides pre configured setups for indexes, document types, tags, etc."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:50
|
||||
#: views.py:51
|
||||
msgid "Bootstrap setup created successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:53
|
||||
#: views.py:54
|
||||
msgid "Error creating bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:59
|
||||
msgid "create bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:78
|
||||
#: views.py:79
|
||||
msgid "Bootstrap setup edited successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:81
|
||||
#: views.py:82
|
||||
msgid "Error editing bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:86
|
||||
#: views.py:87
|
||||
#, python-format
|
||||
msgid "edit bootstrap setup: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:111
|
||||
#: views.py:112
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %s deleted successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:113
|
||||
#: views.py:114
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:124
|
||||
#: views.py:125
|
||||
#, python-format
|
||||
msgid "Are you sure you with to delete the bootstrap setup: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:164
|
||||
#: views.py:165
|
||||
msgid ""
|
||||
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
|
||||
"try again."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:166
|
||||
#: views.py:167
|
||||
#, python-format
|
||||
msgid "Error executing bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:168
|
||||
#: views.py:169
|
||||
#, python-format
|
||||
msgid "Bootstrap setup \"%s\" executed successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:180
|
||||
#: views.py:181
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Are you sure you wish to execute the database bootstrap setup named: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:196
|
||||
#: views.py:197
|
||||
#, python-format
|
||||
msgid "Error dumping configuration into a bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:200
|
||||
#: views.py:201
|
||||
msgid "Bootstrap setup created successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:206
|
||||
msgid "dump current configuration into a bootstrap setup"
|
||||
#: views.py:207
|
||||
msgid "dump current setup into a bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:240 views.py:268
|
||||
#: views.py:241 views.py:269
|
||||
msgid "Bootstrap setup imported successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:243
|
||||
#: views.py:244
|
||||
msgid "File is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:245
|
||||
#: views.py:246
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from file; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:251
|
||||
#: views.py:252
|
||||
msgid "Import bootstrap setup from file"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:271
|
||||
#: views.py:272
|
||||
msgid "Data from URL is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:273
|
||||
#: views.py:274
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from URL; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:279
|
||||
#: views.py:280
|
||||
msgid "Import bootstrap setup from URL"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:298
|
||||
#: views.py:299
|
||||
#, python-format
|
||||
msgid "Error erasing database; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:300
|
||||
#: views.py:301
|
||||
msgid "Database erased successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:310
|
||||
#: views.py:311
|
||||
msgid ""
|
||||
"Are you sure you wish to erase the entire database and document storage?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:311
|
||||
#: views.py:312
|
||||
msgid ""
|
||||
"All documents, sources, metadata, metadata types, set, tags, indexes and "
|
||||
"logs will be lost irreversibly!"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:328
|
||||
#: views.py:329
|
||||
msgid "Bootstrap repository successfully synchronized."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:330
|
||||
#: views.py:331
|
||||
#, python-format
|
||||
msgid "Bootstrap repository synchronization error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:337
|
||||
#: views.py:338
|
||||
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:20-0400\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -25,58 +25,58 @@ msgstr ""
|
||||
msgid "Bootstrap setup URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:11
|
||||
#: links.py:16
|
||||
msgid "bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:12
|
||||
#: links.py:17
|
||||
msgid "bootstrap setup list"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:13
|
||||
#: links.py:18
|
||||
msgid "create new bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:14
|
||||
#: links.py:19
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:15
|
||||
#: links.py:20
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16
|
||||
#: links.py:21
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17
|
||||
#: links.py:22
|
||||
msgid "execute"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:18
|
||||
#: links.py:23
|
||||
msgid "dump current setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:19
|
||||
#: links.py:24
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:27
|
||||
msgid "export"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
#: links.py:28
|
||||
msgid "import from file"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
#: links.py:29
|
||||
msgid "import from URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
#: links.py:30
|
||||
msgid "sync with repository"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:23
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: literals.py:20
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
@@ -97,7 +97,7 @@ msgstr ""
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:32 views.py:34
|
||||
#: models.py:32 views.py:35
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
|
||||
@@ -109,7 +109,7 @@ msgstr ""
|
||||
msgid "These are the actual database structure creation instructions."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:34 views.py:35
|
||||
#: models.py:34 views.py:36
|
||||
msgid "type"
|
||||
msgstr ""
|
||||
|
||||
@@ -117,11 +117,11 @@ msgstr ""
|
||||
msgid "creation date and time"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172
|
||||
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
|
||||
msgid "bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:105 views.py:31
|
||||
#: models.py:105 views.py:32
|
||||
msgid "bootstrap setups"
|
||||
msgstr ""
|
||||
|
||||
@@ -169,148 +169,148 @@ msgstr ""
|
||||
msgid "Erase the entire database and document storage"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:7
|
||||
#: registry.py:8
|
||||
msgid "Bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:8
|
||||
#: registry.py:9
|
||||
msgid "Provides pre configured setups for indexes, document types, tags, etc."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:50
|
||||
#: views.py:51
|
||||
msgid "Bootstrap setup created successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:53
|
||||
#: views.py:54
|
||||
msgid "Error creating bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:59
|
||||
msgid "create bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:78
|
||||
#: views.py:79
|
||||
msgid "Bootstrap setup edited successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:81
|
||||
#: views.py:82
|
||||
msgid "Error editing bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:86
|
||||
#: views.py:87
|
||||
#, python-format
|
||||
msgid "edit bootstrap setup: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:111
|
||||
#: views.py:112
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %s deleted successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:113
|
||||
#: views.py:114
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:124
|
||||
#: views.py:125
|
||||
#, python-format
|
||||
msgid "Are you sure you with to delete the bootstrap setup: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:164
|
||||
#: views.py:165
|
||||
msgid ""
|
||||
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
|
||||
"try again."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:166
|
||||
#: views.py:167
|
||||
#, python-format
|
||||
msgid "Error executing bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:168
|
||||
#: views.py:169
|
||||
#, python-format
|
||||
msgid "Bootstrap setup \"%s\" executed successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:180
|
||||
#: views.py:181
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Are you sure you wish to execute the database bootstrap setup named: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:196
|
||||
#: views.py:197
|
||||
#, python-format
|
||||
msgid "Error dumping configuration into a bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:200
|
||||
#: views.py:201
|
||||
msgid "Bootstrap setup created successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:206
|
||||
msgid "dump current configuration into a bootstrap setup"
|
||||
#: views.py:207
|
||||
msgid "dump current setup into a bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:240 views.py:268
|
||||
#: views.py:241 views.py:269
|
||||
msgid "Bootstrap setup imported successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:243
|
||||
#: views.py:244
|
||||
msgid "File is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:245
|
||||
#: views.py:246
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from file; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:251
|
||||
#: views.py:252
|
||||
msgid "Import bootstrap setup from file"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:271
|
||||
#: views.py:272
|
||||
msgid "Data from URL is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:273
|
||||
#: views.py:274
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from URL; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:279
|
||||
#: views.py:280
|
||||
msgid "Import bootstrap setup from URL"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:298
|
||||
#: views.py:299
|
||||
#, python-format
|
||||
msgid "Error erasing database; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:300
|
||||
#: views.py:301
|
||||
msgid "Database erased successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:310
|
||||
#: views.py:311
|
||||
msgid ""
|
||||
"Are you sure you wish to erase the entire database and document storage?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:311
|
||||
#: views.py:312
|
||||
msgid ""
|
||||
"All documents, sources, metadata, metadata types, set, tags, indexes and "
|
||||
"logs will be lost irreversibly!"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:328
|
||||
#: views.py:329
|
||||
msgid "Bootstrap repository successfully synchronized."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:330
|
||||
#: views.py:331
|
||||
#, python-format
|
||||
msgid "Bootstrap repository synchronization error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:337
|
||||
#: views.py:338
|
||||
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:20-0400\n"
|
||||
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-12-12 07:20+0000\n"
|
||||
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
"language/es/)\n"
|
||||
@@ -27,58 +27,58 @@ msgstr ""
|
||||
msgid "Bootstrap setup URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:11
|
||||
#: links.py:16
|
||||
msgid "bootstrap"
|
||||
msgstr "arranque"
|
||||
|
||||
#: links.py:12
|
||||
#: links.py:17
|
||||
msgid "bootstrap setup list"
|
||||
msgstr "list de configuraciones de arranque"
|
||||
|
||||
#: links.py:13
|
||||
#: links.py:18
|
||||
msgid "create new bootstrap setup"
|
||||
msgstr "crear nueva configuración de arranque"
|
||||
|
||||
#: links.py:14
|
||||
#: links.py:19
|
||||
msgid "edit"
|
||||
msgstr "editar"
|
||||
|
||||
#: links.py:15
|
||||
#: links.py:20
|
||||
msgid "delete"
|
||||
msgstr "borrar"
|
||||
|
||||
#: links.py:16
|
||||
#: links.py:21
|
||||
msgid "details"
|
||||
msgstr "detalles"
|
||||
|
||||
#: links.py:17
|
||||
#: links.py:22
|
||||
msgid "execute"
|
||||
msgstr "ejecutar"
|
||||
|
||||
#: links.py:18
|
||||
#: links.py:23
|
||||
msgid "dump current setup"
|
||||
msgstr "grabar la configuración actual"
|
||||
|
||||
#: links.py:19
|
||||
msgid "export"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
msgid "import from file"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
msgid "import from URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
msgid "sync with repository"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:23
|
||||
#: links.py:24
|
||||
msgid "erase database"
|
||||
msgstr "borrar la base de datos"
|
||||
|
||||
#: links.py:27
|
||||
msgid "export"
|
||||
msgstr "exportar"
|
||||
|
||||
#: links.py:28
|
||||
msgid "import from file"
|
||||
msgstr "importar desde el archivo"
|
||||
|
||||
#: links.py:29
|
||||
msgid "import from URL"
|
||||
msgstr "importar desde URL"
|
||||
|
||||
#: links.py:30
|
||||
msgid "sync with repository"
|
||||
msgstr "sincronizar con el repositorio"
|
||||
|
||||
#: literals.py:20
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
@@ -97,9 +97,9 @@ msgstr "nombre"
|
||||
|
||||
#: models.py:31
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
msgstr "identificador"
|
||||
|
||||
#: models.py:32 views.py:34
|
||||
#: models.py:32 views.py:35
|
||||
msgid "description"
|
||||
msgstr "descripción"
|
||||
|
||||
@@ -113,7 +113,7 @@ msgstr ""
|
||||
"Estas son la instrucciones reales para la creación de las estructuras de la "
|
||||
"base de datos."
|
||||
|
||||
#: models.py:34 views.py:35
|
||||
#: models.py:34 views.py:36
|
||||
msgid "type"
|
||||
msgstr "tipo"
|
||||
|
||||
@@ -121,11 +121,11 @@ msgstr "tipo"
|
||||
msgid "creation date and time"
|
||||
msgstr "fecha y hora de creación"
|
||||
|
||||
#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172
|
||||
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
|
||||
msgid "bootstrap setup"
|
||||
msgstr "configuración de arranque"
|
||||
|
||||
#: models.py:105 views.py:31
|
||||
#: models.py:105 views.py:32
|
||||
msgid "bootstrap setups"
|
||||
msgstr "configuraciones de arranque"
|
||||
|
||||
@@ -174,138 +174,140 @@ msgstr ""
|
||||
msgid "Erase the entire database and document storage"
|
||||
msgstr "Borrar toda la base de datos y almacenamiento de documentos"
|
||||
|
||||
#: registry.py:7
|
||||
#: registry.py:8
|
||||
msgid "Bootstrap"
|
||||
msgstr "Arranque"
|
||||
|
||||
#: registry.py:8
|
||||
#: registry.py:9
|
||||
msgid "Provides pre configured setups for indexes, document types, tags, etc."
|
||||
msgstr ""
|
||||
"Proporciona configuraciones pre ajustadas para los índices, tipos de "
|
||||
"documentos, etiquetas, etc"
|
||||
|
||||
#: views.py:50
|
||||
#: views.py:51
|
||||
msgid "Bootstrap setup created successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:53
|
||||
#: views.py:54
|
||||
msgid "Error creating bootstrap setup."
|
||||
msgstr "Error al crear la configuración de arranque."
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:59
|
||||
msgid "create bootstrap"
|
||||
msgstr "crear configuración de arranque"
|
||||
|
||||
#: views.py:78
|
||||
#: views.py:79
|
||||
msgid "Bootstrap setup edited successfully"
|
||||
msgstr "Configuración de arranque editada exitosamente."
|
||||
|
||||
#: views.py:81
|
||||
#: views.py:82
|
||||
msgid "Error editing bootstrap setup."
|
||||
msgstr "Error editando la configuración de arranque."
|
||||
|
||||
#: views.py:86
|
||||
#: views.py:87
|
||||
#, python-format
|
||||
msgid "edit bootstrap setup: %s"
|
||||
msgstr "editar configuración de arranque: %s"
|
||||
|
||||
#: views.py:111
|
||||
#: views.py:112
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %s deleted successfully."
|
||||
msgstr "Configuración de arranque :%s eliminada exitosamente."
|
||||
|
||||
#: views.py:113
|
||||
#: views.py:114
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:124
|
||||
#: views.py:125
|
||||
#, python-format
|
||||
msgid "Are you sure you with to delete the bootstrap setup: %s?"
|
||||
msgstr "¿Seguro que desea borrar la configuración de arranque: %s?"
|
||||
|
||||
#: views.py:164
|
||||
#: views.py:165
|
||||
msgid ""
|
||||
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
|
||||
"try again."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:166
|
||||
#: views.py:167
|
||||
#, python-format
|
||||
msgid "Error executing bootstrap setup; %s"
|
||||
msgstr "Error al ejecutar la configuración de arranque; %s"
|
||||
|
||||
#: views.py:168
|
||||
#: views.py:169
|
||||
#, python-format
|
||||
msgid "Bootstrap setup \"%s\" executed successfully."
|
||||
msgstr "Configuración de arranque \"%s\" ejecutada exitosamente."
|
||||
|
||||
#: views.py:180
|
||||
#: views.py:181
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Are you sure you wish to execute the database bootstrap setup named: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:196
|
||||
#: views.py:197
|
||||
#, python-format
|
||||
msgid "Error dumping configuration into a bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:200
|
||||
#: views.py:201
|
||||
msgid "Bootstrap setup created successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:206
|
||||
msgid "dump current configuration into a bootstrap setup"
|
||||
#: views.py:207
|
||||
#, fuzzy
|
||||
msgid "dump current setup into a bootstrap setup"
|
||||
msgstr ""
|
||||
"Grabar la configuración actual del projecto en una configuración de arranque"
|
||||
|
||||
#: views.py:240 views.py:268
|
||||
#: views.py:241 views.py:269
|
||||
msgid "Bootstrap setup imported successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:243
|
||||
#: views.py:244
|
||||
msgid "File is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:245
|
||||
#: views.py:246
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from file; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:251
|
||||
#: views.py:252
|
||||
msgid "Import bootstrap setup from file"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:271
|
||||
#: views.py:272
|
||||
msgid "Data from URL is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:273
|
||||
#: views.py:274
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from URL; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:279
|
||||
#: views.py:280
|
||||
msgid "Import bootstrap setup from URL"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:298
|
||||
#: views.py:299
|
||||
#, python-format
|
||||
msgid "Error erasing database; %s"
|
||||
msgstr "Error borrando la base de datos; %s"
|
||||
|
||||
#: views.py:300
|
||||
#: views.py:301
|
||||
msgid "Database erased successfully."
|
||||
msgstr "Base de datos borrada exitosamente."
|
||||
|
||||
#: views.py:310
|
||||
#: views.py:311
|
||||
msgid ""
|
||||
"Are you sure you wish to erase the entire database and document storage?"
|
||||
msgstr ""
|
||||
"¿Está seguro que desea borrar de la base de datos completamente y el "
|
||||
"almacenamiento de documentos?"
|
||||
|
||||
#: views.py:311
|
||||
#: views.py:312
|
||||
msgid ""
|
||||
"All documents, sources, metadata, metadata types, set, tags, indexes and "
|
||||
"logs will be lost irreversibly!"
|
||||
@@ -314,15 +316,15 @@ msgstr ""
|
||||
"los conjuntos de metadatos, las etiquetas, los índices y vitacoras se "
|
||||
"perderán irreversiblemente!"
|
||||
|
||||
#: views.py:328
|
||||
#: views.py:329
|
||||
msgid "Bootstrap repository successfully synchronized."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:330
|
||||
#: views.py:331
|
||||
#, python-format
|
||||
msgid "Bootstrap repository synchronization error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:337
|
||||
#: views.py:338
|
||||
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -1,22 +1,24 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
# Translators:
|
||||
# <patrick.hetu@gmail.com>, 2012.
|
||||
# Pierre Lhoste <peter.cathbad.host@gmail.com>, 2012.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:20-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
|
||||
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
|
||||
"Language-Team: French (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
"language/fr/)\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: forms.py:50
|
||||
msgid "Bootstrap setup file"
|
||||
@@ -26,58 +28,58 @@ msgstr ""
|
||||
msgid "Bootstrap setup URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:11
|
||||
#: links.py:16
|
||||
msgid "bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:12
|
||||
#: links.py:17
|
||||
msgid "bootstrap setup list"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:13
|
||||
#: links.py:18
|
||||
msgid "create new bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:14
|
||||
#: links.py:19
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:15
|
||||
#: links.py:20
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16
|
||||
#: links.py:21
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17
|
||||
#: links.py:22
|
||||
msgid "execute"
|
||||
msgstr ""
|
||||
msgstr "exécuter"
|
||||
|
||||
#: links.py:18
|
||||
#: links.py:23
|
||||
msgid "dump current setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:19
|
||||
#: links.py:24
|
||||
msgid "erase database"
|
||||
msgstr "Supprimer la base de données"
|
||||
|
||||
#: links.py:27
|
||||
msgid "export"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
#: links.py:28
|
||||
msgid "import from file"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
#: links.py:29
|
||||
msgid "import from URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
#: links.py:30
|
||||
msgid "sync with repository"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:23
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: literals.py:20
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
@@ -98,9 +100,9 @@ msgstr ""
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:32 views.py:34
|
||||
#: models.py:32 views.py:35
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
msgstr "description"
|
||||
|
||||
#: models.py:33
|
||||
msgid "fixture"
|
||||
@@ -110,7 +112,7 @@ msgstr ""
|
||||
msgid "These are the actual database structure creation instructions."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:34 views.py:35
|
||||
#: models.py:34 views.py:36
|
||||
msgid "type"
|
||||
msgstr ""
|
||||
|
||||
@@ -118,17 +120,17 @@ msgstr ""
|
||||
msgid "creation date and time"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172
|
||||
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
|
||||
msgid "bootstrap setup"
|
||||
msgstr ""
|
||||
msgstr "pré-configuration"
|
||||
|
||||
#: models.py:105 views.py:31
|
||||
#: models.py:105 views.py:32
|
||||
msgid "bootstrap setups"
|
||||
msgstr ""
|
||||
|
||||
#: permissions.py:7
|
||||
msgid "Database bootstrap"
|
||||
msgstr ""
|
||||
msgstr "Pré-configuration de base de données"
|
||||
|
||||
#: permissions.py:9
|
||||
msgid "View bootstrap setups"
|
||||
@@ -168,150 +170,155 @@ msgstr ""
|
||||
|
||||
#: permissions.py:18
|
||||
msgid "Erase the entire database and document storage"
|
||||
msgstr ""
|
||||
msgstr "Effacer l'ensemble de la base de donnée et tous les documents stockés"
|
||||
|
||||
#: registry.py:7
|
||||
#: registry.py:8
|
||||
msgid "Bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:8
|
||||
#: registry.py:9
|
||||
msgid "Provides pre configured setups for indexes, document types, tags, etc."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:50
|
||||
#: views.py:51
|
||||
msgid "Bootstrap setup created successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:53
|
||||
#: views.py:54
|
||||
msgid "Error creating bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:59
|
||||
msgid "create bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:78
|
||||
#: views.py:79
|
||||
msgid "Bootstrap setup edited successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:81
|
||||
#: views.py:82
|
||||
msgid "Error editing bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:86
|
||||
#: views.py:87
|
||||
#, python-format
|
||||
msgid "edit bootstrap setup: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:111
|
||||
#: views.py:112
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %s deleted successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:113
|
||||
#: views.py:114
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:124
|
||||
#: views.py:125
|
||||
#, python-format
|
||||
msgid "Are you sure you with to delete the bootstrap setup: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:164
|
||||
#: views.py:165
|
||||
msgid ""
|
||||
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
|
||||
"try again."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:166
|
||||
#: views.py:167
|
||||
#, python-format
|
||||
msgid "Error executing bootstrap setup; %s"
|
||||
msgstr ""
|
||||
msgstr "Erreur lors de l'exécution de la pré-configuration; %s"
|
||||
|
||||
#: views.py:168
|
||||
#: views.py:169
|
||||
#, python-format
|
||||
msgid "Bootstrap setup \"%s\" executed successfully."
|
||||
msgstr ""
|
||||
msgstr "Pré-configuration \"%s\" effectuée avec succès."
|
||||
|
||||
#: views.py:180
|
||||
#: views.py:181
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Are you sure you wish to execute the database bootstrap setup named: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:196
|
||||
#: views.py:197
|
||||
#, python-format
|
||||
msgid "Error dumping configuration into a bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:200
|
||||
#: views.py:201
|
||||
msgid "Bootstrap setup created successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:206
|
||||
msgid "dump current configuration into a bootstrap setup"
|
||||
msgstr ""
|
||||
#: views.py:207
|
||||
#, fuzzy
|
||||
msgid "dump current setup into a bootstrap setup"
|
||||
msgstr "Erreur lors de l'exécution de la pré-configuration; %s"
|
||||
|
||||
#: views.py:240 views.py:268
|
||||
#: views.py:241 views.py:269
|
||||
msgid "Bootstrap setup imported successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:243
|
||||
#: views.py:244
|
||||
msgid "File is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:245
|
||||
#: views.py:246
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from file; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:251
|
||||
#: views.py:252
|
||||
msgid "Import bootstrap setup from file"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:271
|
||||
#: views.py:272
|
||||
msgid "Data from URL is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:273
|
||||
#: views.py:274
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from URL; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:279
|
||||
#: views.py:280
|
||||
msgid "Import bootstrap setup from URL"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:298
|
||||
#: views.py:299
|
||||
#, python-format
|
||||
msgid "Error erasing database; %s"
|
||||
msgstr ""
|
||||
msgstr "Erreur lors de l'effacement de la base de données; %s"
|
||||
|
||||
#: views.py:300
|
||||
#: views.py:301
|
||||
msgid "Database erased successfully."
|
||||
msgstr ""
|
||||
msgstr "Base de Données effacée avec succès."
|
||||
|
||||
#: views.py:310
|
||||
#: views.py:311
|
||||
msgid ""
|
||||
"Are you sure you wish to erase the entire database and document storage?"
|
||||
msgstr ""
|
||||
"Êtes vous certain de vouloir effacer l'intégralité de la base de données et "
|
||||
"des documents stockés?"
|
||||
|
||||
#: views.py:311
|
||||
#: views.py:312
|
||||
msgid ""
|
||||
"All documents, sources, metadata, metadata types, set, tags, indexes and "
|
||||
"logs will be lost irreversibly!"
|
||||
msgstr ""
|
||||
"Tous les documents, sources, métadonnées, types de métadonnées, jeux, "
|
||||
"étiquettes, indexes et logs seron définitivement perdus!"
|
||||
|
||||
#: views.py:328
|
||||
#: views.py:329
|
||||
msgid "Bootstrap repository successfully synchronized."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:330
|
||||
#: views.py:331
|
||||
#, python-format
|
||||
msgid "Bootstrap repository synchronization error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:337
|
||||
#: views.py:338
|
||||
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -1,22 +1,22 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:20-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
|
||||
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
|
||||
"Language-Team: Italian (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
"language/it/)\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: forms.py:50
|
||||
msgid "Bootstrap setup file"
|
||||
@@ -26,58 +26,58 @@ msgstr ""
|
||||
msgid "Bootstrap setup URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:11
|
||||
#: links.py:16
|
||||
msgid "bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:12
|
||||
#: links.py:17
|
||||
msgid "bootstrap setup list"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:13
|
||||
#: links.py:18
|
||||
msgid "create new bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:14
|
||||
#: links.py:19
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:15
|
||||
#: links.py:20
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16
|
||||
#: links.py:21
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17
|
||||
#: links.py:22
|
||||
msgid "execute"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:18
|
||||
#: links.py:23
|
||||
msgid "dump current setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:19
|
||||
#: links.py:24
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:27
|
||||
msgid "export"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
#: links.py:28
|
||||
msgid "import from file"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
#: links.py:29
|
||||
msgid "import from URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
#: links.py:30
|
||||
msgid "sync with repository"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:23
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: literals.py:20
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
@@ -98,7 +98,7 @@ msgstr ""
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:32 views.py:34
|
||||
#: models.py:32 views.py:35
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
|
||||
@@ -110,7 +110,7 @@ msgstr ""
|
||||
msgid "These are the actual database structure creation instructions."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:34 views.py:35
|
||||
#: models.py:34 views.py:36
|
||||
msgid "type"
|
||||
msgstr ""
|
||||
|
||||
@@ -118,11 +118,11 @@ msgstr ""
|
||||
msgid "creation date and time"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172
|
||||
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
|
||||
msgid "bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:105 views.py:31
|
||||
#: models.py:105 views.py:32
|
||||
msgid "bootstrap setups"
|
||||
msgstr ""
|
||||
|
||||
@@ -170,148 +170,148 @@ msgstr ""
|
||||
msgid "Erase the entire database and document storage"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:7
|
||||
#: registry.py:8
|
||||
msgid "Bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:8
|
||||
#: registry.py:9
|
||||
msgid "Provides pre configured setups for indexes, document types, tags, etc."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:50
|
||||
#: views.py:51
|
||||
msgid "Bootstrap setup created successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:53
|
||||
#: views.py:54
|
||||
msgid "Error creating bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:59
|
||||
msgid "create bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:78
|
||||
#: views.py:79
|
||||
msgid "Bootstrap setup edited successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:81
|
||||
#: views.py:82
|
||||
msgid "Error editing bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:86
|
||||
#: views.py:87
|
||||
#, python-format
|
||||
msgid "edit bootstrap setup: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:111
|
||||
#: views.py:112
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %s deleted successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:113
|
||||
#: views.py:114
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:124
|
||||
#: views.py:125
|
||||
#, python-format
|
||||
msgid "Are you sure you with to delete the bootstrap setup: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:164
|
||||
#: views.py:165
|
||||
msgid ""
|
||||
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
|
||||
"try again."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:166
|
||||
#: views.py:167
|
||||
#, python-format
|
||||
msgid "Error executing bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:168
|
||||
#: views.py:169
|
||||
#, python-format
|
||||
msgid "Bootstrap setup \"%s\" executed successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:180
|
||||
#: views.py:181
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Are you sure you wish to execute the database bootstrap setup named: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:196
|
||||
#: views.py:197
|
||||
#, python-format
|
||||
msgid "Error dumping configuration into a bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:200
|
||||
#: views.py:201
|
||||
msgid "Bootstrap setup created successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:206
|
||||
msgid "dump current configuration into a bootstrap setup"
|
||||
#: views.py:207
|
||||
msgid "dump current setup into a bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:240 views.py:268
|
||||
#: views.py:241 views.py:269
|
||||
msgid "Bootstrap setup imported successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:243
|
||||
#: views.py:244
|
||||
msgid "File is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:245
|
||||
#: views.py:246
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from file; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:251
|
||||
#: views.py:252
|
||||
msgid "Import bootstrap setup from file"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:271
|
||||
#: views.py:272
|
||||
msgid "Data from URL is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:273
|
||||
#: views.py:274
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from URL; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:279
|
||||
#: views.py:280
|
||||
msgid "Import bootstrap setup from URL"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:298
|
||||
#: views.py:299
|
||||
#, python-format
|
||||
msgid "Error erasing database; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:300
|
||||
#: views.py:301
|
||||
msgid "Database erased successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:310
|
||||
#: views.py:311
|
||||
msgid ""
|
||||
"Are you sure you wish to erase the entire database and document storage?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:311
|
||||
#: views.py:312
|
||||
msgid ""
|
||||
"All documents, sources, metadata, metadata types, set, tags, indexes and "
|
||||
"logs will be lost irreversibly!"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:328
|
||||
#: views.py:329
|
||||
msgid "Bootstrap repository successfully synchronized."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:330
|
||||
#: views.py:331
|
||||
#, python-format
|
||||
msgid "Bootstrap repository synchronization error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:337
|
||||
#: views.py:338
|
||||
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -1,21 +1,22 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:20-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
|
||||
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
|
||||
"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/"
|
||||
"mayan-edms/language/nl_NL/)\n"
|
||||
"Language: nl_NL\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: forms.py:50
|
||||
msgid "Bootstrap setup file"
|
||||
@@ -25,58 +26,58 @@ msgstr ""
|
||||
msgid "Bootstrap setup URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:11
|
||||
#: links.py:16
|
||||
msgid "bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:12
|
||||
#: links.py:17
|
||||
msgid "bootstrap setup list"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:13
|
||||
#: links.py:18
|
||||
msgid "create new bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:14
|
||||
#: links.py:19
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:15
|
||||
#: links.py:20
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16
|
||||
#: links.py:21
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17
|
||||
#: links.py:22
|
||||
msgid "execute"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:18
|
||||
#: links.py:23
|
||||
msgid "dump current setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:19
|
||||
#: links.py:24
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:27
|
||||
msgid "export"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
#: links.py:28
|
||||
msgid "import from file"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
#: links.py:29
|
||||
msgid "import from URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
#: links.py:30
|
||||
msgid "sync with repository"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:23
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: literals.py:20
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
@@ -97,7 +98,7 @@ msgstr ""
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:32 views.py:34
|
||||
#: models.py:32 views.py:35
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
|
||||
@@ -109,7 +110,7 @@ msgstr ""
|
||||
msgid "These are the actual database structure creation instructions."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:34 views.py:35
|
||||
#: models.py:34 views.py:36
|
||||
msgid "type"
|
||||
msgstr ""
|
||||
|
||||
@@ -117,11 +118,11 @@ msgstr ""
|
||||
msgid "creation date and time"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172
|
||||
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
|
||||
msgid "bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:105 views.py:31
|
||||
#: models.py:105 views.py:32
|
||||
msgid "bootstrap setups"
|
||||
msgstr ""
|
||||
|
||||
@@ -169,148 +170,148 @@ msgstr ""
|
||||
msgid "Erase the entire database and document storage"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:7
|
||||
#: registry.py:8
|
||||
msgid "Bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:8
|
||||
#: registry.py:9
|
||||
msgid "Provides pre configured setups for indexes, document types, tags, etc."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:50
|
||||
#: views.py:51
|
||||
msgid "Bootstrap setup created successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:53
|
||||
#: views.py:54
|
||||
msgid "Error creating bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:59
|
||||
msgid "create bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:78
|
||||
#: views.py:79
|
||||
msgid "Bootstrap setup edited successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:81
|
||||
#: views.py:82
|
||||
msgid "Error editing bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:86
|
||||
#: views.py:87
|
||||
#, python-format
|
||||
msgid "edit bootstrap setup: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:111
|
||||
#: views.py:112
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %s deleted successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:113
|
||||
#: views.py:114
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:124
|
||||
#: views.py:125
|
||||
#, python-format
|
||||
msgid "Are you sure you with to delete the bootstrap setup: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:164
|
||||
#: views.py:165
|
||||
msgid ""
|
||||
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
|
||||
"try again."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:166
|
||||
#: views.py:167
|
||||
#, python-format
|
||||
msgid "Error executing bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:168
|
||||
#: views.py:169
|
||||
#, python-format
|
||||
msgid "Bootstrap setup \"%s\" executed successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:180
|
||||
#: views.py:181
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Are you sure you wish to execute the database bootstrap setup named: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:196
|
||||
#: views.py:197
|
||||
#, python-format
|
||||
msgid "Error dumping configuration into a bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:200
|
||||
#: views.py:201
|
||||
msgid "Bootstrap setup created successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:206
|
||||
msgid "dump current configuration into a bootstrap setup"
|
||||
#: views.py:207
|
||||
msgid "dump current setup into a bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:240 views.py:268
|
||||
#: views.py:241 views.py:269
|
||||
msgid "Bootstrap setup imported successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:243
|
||||
#: views.py:244
|
||||
msgid "File is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:245
|
||||
#: views.py:246
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from file; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:251
|
||||
#: views.py:252
|
||||
msgid "Import bootstrap setup from file"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:271
|
||||
#: views.py:272
|
||||
msgid "Data from URL is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:273
|
||||
#: views.py:274
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from URL; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:279
|
||||
#: views.py:280
|
||||
msgid "Import bootstrap setup from URL"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:298
|
||||
#: views.py:299
|
||||
#, python-format
|
||||
msgid "Error erasing database; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:300
|
||||
#: views.py:301
|
||||
msgid "Database erased successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:310
|
||||
#: views.py:311
|
||||
msgid ""
|
||||
"Are you sure you wish to erase the entire database and document storage?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:311
|
||||
#: views.py:312
|
||||
msgid ""
|
||||
"All documents, sources, metadata, metadata types, set, tags, indexes and "
|
||||
"logs will be lost irreversibly!"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:328
|
||||
#: views.py:329
|
||||
msgid "Bootstrap repository successfully synchronized."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:330
|
||||
#: views.py:331
|
||||
#, python-format
|
||||
msgid "Bootstrap repository synchronization error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:337
|
||||
#: views.py:338
|
||||
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -1,23 +1,23 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:20-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
|
||||
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
|
||||
"Language-Team: Polish (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
"language/pl/)\n"
|
||||
"Language: pl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||
"|| n%100>=20) ? 1 : 2)\n"
|
||||
"|| n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: forms.py:50
|
||||
msgid "Bootstrap setup file"
|
||||
@@ -27,58 +27,58 @@ msgstr ""
|
||||
msgid "Bootstrap setup URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:11
|
||||
#: links.py:16
|
||||
msgid "bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:12
|
||||
#: links.py:17
|
||||
msgid "bootstrap setup list"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:13
|
||||
#: links.py:18
|
||||
msgid "create new bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:14
|
||||
#: links.py:19
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:15
|
||||
#: links.py:20
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16
|
||||
#: links.py:21
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17
|
||||
#: links.py:22
|
||||
msgid "execute"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:18
|
||||
#: links.py:23
|
||||
msgid "dump current setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:19
|
||||
#: links.py:24
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:27
|
||||
msgid "export"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
#: links.py:28
|
||||
msgid "import from file"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
#: links.py:29
|
||||
msgid "import from URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
#: links.py:30
|
||||
msgid "sync with repository"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:23
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: literals.py:20
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
@@ -99,7 +99,7 @@ msgstr ""
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:32 views.py:34
|
||||
#: models.py:32 views.py:35
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
|
||||
@@ -111,7 +111,7 @@ msgstr ""
|
||||
msgid "These are the actual database structure creation instructions."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:34 views.py:35
|
||||
#: models.py:34 views.py:36
|
||||
msgid "type"
|
||||
msgstr ""
|
||||
|
||||
@@ -119,11 +119,11 @@ msgstr ""
|
||||
msgid "creation date and time"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172
|
||||
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
|
||||
msgid "bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:105 views.py:31
|
||||
#: models.py:105 views.py:32
|
||||
msgid "bootstrap setups"
|
||||
msgstr ""
|
||||
|
||||
@@ -171,148 +171,148 @@ msgstr ""
|
||||
msgid "Erase the entire database and document storage"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:7
|
||||
#: registry.py:8
|
||||
msgid "Bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:8
|
||||
#: registry.py:9
|
||||
msgid "Provides pre configured setups for indexes, document types, tags, etc."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:50
|
||||
#: views.py:51
|
||||
msgid "Bootstrap setup created successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:53
|
||||
#: views.py:54
|
||||
msgid "Error creating bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:59
|
||||
msgid "create bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:78
|
||||
#: views.py:79
|
||||
msgid "Bootstrap setup edited successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:81
|
||||
#: views.py:82
|
||||
msgid "Error editing bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:86
|
||||
#: views.py:87
|
||||
#, python-format
|
||||
msgid "edit bootstrap setup: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:111
|
||||
#: views.py:112
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %s deleted successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:113
|
||||
#: views.py:114
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:124
|
||||
#: views.py:125
|
||||
#, python-format
|
||||
msgid "Are you sure you with to delete the bootstrap setup: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:164
|
||||
#: views.py:165
|
||||
msgid ""
|
||||
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
|
||||
"try again."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:166
|
||||
#: views.py:167
|
||||
#, python-format
|
||||
msgid "Error executing bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:168
|
||||
#: views.py:169
|
||||
#, python-format
|
||||
msgid "Bootstrap setup \"%s\" executed successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:180
|
||||
#: views.py:181
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Are you sure you wish to execute the database bootstrap setup named: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:196
|
||||
#: views.py:197
|
||||
#, python-format
|
||||
msgid "Error dumping configuration into a bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:200
|
||||
#: views.py:201
|
||||
msgid "Bootstrap setup created successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:206
|
||||
msgid "dump current configuration into a bootstrap setup"
|
||||
#: views.py:207
|
||||
msgid "dump current setup into a bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:240 views.py:268
|
||||
#: views.py:241 views.py:269
|
||||
msgid "Bootstrap setup imported successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:243
|
||||
#: views.py:244
|
||||
msgid "File is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:245
|
||||
#: views.py:246
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from file; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:251
|
||||
#: views.py:252
|
||||
msgid "Import bootstrap setup from file"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:271
|
||||
#: views.py:272
|
||||
msgid "Data from URL is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:273
|
||||
#: views.py:274
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from URL; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:279
|
||||
#: views.py:280
|
||||
msgid "Import bootstrap setup from URL"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:298
|
||||
#: views.py:299
|
||||
#, python-format
|
||||
msgid "Error erasing database; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:300
|
||||
#: views.py:301
|
||||
msgid "Database erased successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:310
|
||||
#: views.py:311
|
||||
msgid ""
|
||||
"Are you sure you wish to erase the entire database and document storage?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:311
|
||||
#: views.py:312
|
||||
msgid ""
|
||||
"All documents, sources, metadata, metadata types, set, tags, indexes and "
|
||||
"logs will be lost irreversibly!"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:328
|
||||
#: views.py:329
|
||||
msgid "Bootstrap repository successfully synchronized."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:330
|
||||
#: views.py:331
|
||||
#, python-format
|
||||
msgid "Bootstrap repository synchronization error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:337
|
||||
#: views.py:338
|
||||
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -1,22 +1,22 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:20-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
|
||||
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
|
||||
"Language-Team: Portuguese (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
"language/pt/)\n"
|
||||
"Language: pt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: forms.py:50
|
||||
msgid "Bootstrap setup file"
|
||||
@@ -26,58 +26,58 @@ msgstr ""
|
||||
msgid "Bootstrap setup URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:11
|
||||
#: links.py:16
|
||||
msgid "bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:12
|
||||
#: links.py:17
|
||||
msgid "bootstrap setup list"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:13
|
||||
#: links.py:18
|
||||
msgid "create new bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:14
|
||||
#: links.py:19
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:15
|
||||
#: links.py:20
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16
|
||||
#: links.py:21
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17
|
||||
#: links.py:22
|
||||
msgid "execute"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:18
|
||||
#: links.py:23
|
||||
msgid "dump current setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:19
|
||||
#: links.py:24
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:27
|
||||
msgid "export"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
#: links.py:28
|
||||
msgid "import from file"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
#: links.py:29
|
||||
msgid "import from URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
#: links.py:30
|
||||
msgid "sync with repository"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:23
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: literals.py:20
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
@@ -98,7 +98,7 @@ msgstr ""
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:32 views.py:34
|
||||
#: models.py:32 views.py:35
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
|
||||
@@ -110,7 +110,7 @@ msgstr ""
|
||||
msgid "These are the actual database structure creation instructions."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:34 views.py:35
|
||||
#: models.py:34 views.py:36
|
||||
msgid "type"
|
||||
msgstr ""
|
||||
|
||||
@@ -118,11 +118,11 @@ msgstr ""
|
||||
msgid "creation date and time"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172
|
||||
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
|
||||
msgid "bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:105 views.py:31
|
||||
#: models.py:105 views.py:32
|
||||
msgid "bootstrap setups"
|
||||
msgstr ""
|
||||
|
||||
@@ -170,148 +170,148 @@ msgstr ""
|
||||
msgid "Erase the entire database and document storage"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:7
|
||||
#: registry.py:8
|
||||
msgid "Bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:8
|
||||
#: registry.py:9
|
||||
msgid "Provides pre configured setups for indexes, document types, tags, etc."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:50
|
||||
#: views.py:51
|
||||
msgid "Bootstrap setup created successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:53
|
||||
#: views.py:54
|
||||
msgid "Error creating bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:59
|
||||
msgid "create bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:78
|
||||
#: views.py:79
|
||||
msgid "Bootstrap setup edited successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:81
|
||||
#: views.py:82
|
||||
msgid "Error editing bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:86
|
||||
#: views.py:87
|
||||
#, python-format
|
||||
msgid "edit bootstrap setup: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:111
|
||||
#: views.py:112
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %s deleted successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:113
|
||||
#: views.py:114
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:124
|
||||
#: views.py:125
|
||||
#, python-format
|
||||
msgid "Are you sure you with to delete the bootstrap setup: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:164
|
||||
#: views.py:165
|
||||
msgid ""
|
||||
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
|
||||
"try again."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:166
|
||||
#: views.py:167
|
||||
#, python-format
|
||||
msgid "Error executing bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:168
|
||||
#: views.py:169
|
||||
#, python-format
|
||||
msgid "Bootstrap setup \"%s\" executed successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:180
|
||||
#: views.py:181
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Are you sure you wish to execute the database bootstrap setup named: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:196
|
||||
#: views.py:197
|
||||
#, python-format
|
||||
msgid "Error dumping configuration into a bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:200
|
||||
#: views.py:201
|
||||
msgid "Bootstrap setup created successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:206
|
||||
msgid "dump current configuration into a bootstrap setup"
|
||||
#: views.py:207
|
||||
msgid "dump current setup into a bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:240 views.py:268
|
||||
#: views.py:241 views.py:269
|
||||
msgid "Bootstrap setup imported successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:243
|
||||
#: views.py:244
|
||||
msgid "File is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:245
|
||||
#: views.py:246
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from file; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:251
|
||||
#: views.py:252
|
||||
msgid "Import bootstrap setup from file"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:271
|
||||
#: views.py:272
|
||||
msgid "Data from URL is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:273
|
||||
#: views.py:274
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from URL; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:279
|
||||
#: views.py:280
|
||||
msgid "Import bootstrap setup from URL"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:298
|
||||
#: views.py:299
|
||||
#, python-format
|
||||
msgid "Error erasing database; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:300
|
||||
#: views.py:301
|
||||
msgid "Database erased successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:310
|
||||
#: views.py:311
|
||||
msgid ""
|
||||
"Are you sure you wish to erase the entire database and document storage?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:311
|
||||
#: views.py:312
|
||||
msgid ""
|
||||
"All documents, sources, metadata, metadata types, set, tags, indexes and "
|
||||
"logs will be lost irreversibly!"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:328
|
||||
#: views.py:329
|
||||
msgid "Bootstrap repository successfully synchronized."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:330
|
||||
#: views.py:331
|
||||
#, python-format
|
||||
msgid "Bootstrap repository synchronization error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:337
|
||||
#: views.py:338
|
||||
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -1,22 +1,22 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:20-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
|
||||
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
|
||||
"mayan-edms/language/pt_BR/)\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: forms.py:50
|
||||
msgid "Bootstrap setup file"
|
||||
@@ -26,58 +26,58 @@ msgstr ""
|
||||
msgid "Bootstrap setup URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:11
|
||||
#: links.py:16
|
||||
msgid "bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:12
|
||||
#: links.py:17
|
||||
msgid "bootstrap setup list"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:13
|
||||
#: links.py:18
|
||||
msgid "create new bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:14
|
||||
#: links.py:19
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:15
|
||||
#: links.py:20
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16
|
||||
#: links.py:21
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17
|
||||
#: links.py:22
|
||||
msgid "execute"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:18
|
||||
#: links.py:23
|
||||
msgid "dump current setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:19
|
||||
#: links.py:24
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:27
|
||||
msgid "export"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
#: links.py:28
|
||||
msgid "import from file"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
#: links.py:29
|
||||
msgid "import from URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
#: links.py:30
|
||||
msgid "sync with repository"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:23
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: literals.py:20
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
@@ -98,7 +98,7 @@ msgstr ""
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:32 views.py:34
|
||||
#: models.py:32 views.py:35
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
|
||||
@@ -110,7 +110,7 @@ msgstr ""
|
||||
msgid "These are the actual database structure creation instructions."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:34 views.py:35
|
||||
#: models.py:34 views.py:36
|
||||
msgid "type"
|
||||
msgstr ""
|
||||
|
||||
@@ -118,11 +118,11 @@ msgstr ""
|
||||
msgid "creation date and time"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172
|
||||
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
|
||||
msgid "bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:105 views.py:31
|
||||
#: models.py:105 views.py:32
|
||||
msgid "bootstrap setups"
|
||||
msgstr ""
|
||||
|
||||
@@ -170,148 +170,148 @@ msgstr ""
|
||||
msgid "Erase the entire database and document storage"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:7
|
||||
#: registry.py:8
|
||||
msgid "Bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:8
|
||||
#: registry.py:9
|
||||
msgid "Provides pre configured setups for indexes, document types, tags, etc."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:50
|
||||
#: views.py:51
|
||||
msgid "Bootstrap setup created successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:53
|
||||
#: views.py:54
|
||||
msgid "Error creating bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:59
|
||||
msgid "create bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:78
|
||||
#: views.py:79
|
||||
msgid "Bootstrap setup edited successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:81
|
||||
#: views.py:82
|
||||
msgid "Error editing bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:86
|
||||
#: views.py:87
|
||||
#, python-format
|
||||
msgid "edit bootstrap setup: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:111
|
||||
#: views.py:112
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %s deleted successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:113
|
||||
#: views.py:114
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:124
|
||||
#: views.py:125
|
||||
#, python-format
|
||||
msgid "Are you sure you with to delete the bootstrap setup: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:164
|
||||
#: views.py:165
|
||||
msgid ""
|
||||
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
|
||||
"try again."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:166
|
||||
#: views.py:167
|
||||
#, python-format
|
||||
msgid "Error executing bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:168
|
||||
#: views.py:169
|
||||
#, python-format
|
||||
msgid "Bootstrap setup \"%s\" executed successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:180
|
||||
#: views.py:181
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Are you sure you wish to execute the database bootstrap setup named: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:196
|
||||
#: views.py:197
|
||||
#, python-format
|
||||
msgid "Error dumping configuration into a bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:200
|
||||
#: views.py:201
|
||||
msgid "Bootstrap setup created successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:206
|
||||
msgid "dump current configuration into a bootstrap setup"
|
||||
#: views.py:207
|
||||
msgid "dump current setup into a bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:240 views.py:268
|
||||
#: views.py:241 views.py:269
|
||||
msgid "Bootstrap setup imported successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:243
|
||||
#: views.py:244
|
||||
msgid "File is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:245
|
||||
#: views.py:246
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from file; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:251
|
||||
#: views.py:252
|
||||
msgid "Import bootstrap setup from file"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:271
|
||||
#: views.py:272
|
||||
msgid "Data from URL is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:273
|
||||
#: views.py:274
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from URL; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:279
|
||||
#: views.py:280
|
||||
msgid "Import bootstrap setup from URL"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:298
|
||||
#: views.py:299
|
||||
#, python-format
|
||||
msgid "Error erasing database; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:300
|
||||
#: views.py:301
|
||||
msgid "Database erased successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:310
|
||||
#: views.py:311
|
||||
msgid ""
|
||||
"Are you sure you wish to erase the entire database and document storage?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:311
|
||||
#: views.py:312
|
||||
msgid ""
|
||||
"All documents, sources, metadata, metadata types, set, tags, indexes and "
|
||||
"logs will be lost irreversibly!"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:328
|
||||
#: views.py:329
|
||||
msgid "Bootstrap repository successfully synchronized."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:330
|
||||
#: views.py:331
|
||||
#, python-format
|
||||
msgid "Bootstrap repository synchronization error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:337
|
||||
#: views.py:338
|
||||
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -1,23 +1,23 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:20-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
|
||||
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
|
||||
"Language-Team: Russian (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
"language/ru/)\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: forms.py:50
|
||||
msgid "Bootstrap setup file"
|
||||
@@ -27,58 +27,58 @@ msgstr ""
|
||||
msgid "Bootstrap setup URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:11
|
||||
#: links.py:16
|
||||
msgid "bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:12
|
||||
#: links.py:17
|
||||
msgid "bootstrap setup list"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:13
|
||||
#: links.py:18
|
||||
msgid "create new bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:14
|
||||
#: links.py:19
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:15
|
||||
#: links.py:20
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:16
|
||||
#: links.py:21
|
||||
msgid "details"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:17
|
||||
#: links.py:22
|
||||
msgid "execute"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:18
|
||||
#: links.py:23
|
||||
msgid "dump current setup"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:19
|
||||
#: links.py:24
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:27
|
||||
msgid "export"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:20
|
||||
#: links.py:28
|
||||
msgid "import from file"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:21
|
||||
#: links.py:29
|
||||
msgid "import from URL"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:22
|
||||
#: links.py:30
|
||||
msgid "sync with repository"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:23
|
||||
msgid "erase database"
|
||||
msgstr ""
|
||||
|
||||
#: literals.py:20
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
@@ -99,7 +99,7 @@ msgstr ""
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:32 views.py:34
|
||||
#: models.py:32 views.py:35
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
|
||||
@@ -111,7 +111,7 @@ msgstr ""
|
||||
msgid "These are the actual database structure creation instructions."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:34 views.py:35
|
||||
#: models.py:34 views.py:36
|
||||
msgid "type"
|
||||
msgstr ""
|
||||
|
||||
@@ -119,11 +119,11 @@ msgstr ""
|
||||
msgid "creation date and time"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172
|
||||
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
|
||||
msgid "bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:105 views.py:31
|
||||
#: models.py:105 views.py:32
|
||||
msgid "bootstrap setups"
|
||||
msgstr ""
|
||||
|
||||
@@ -171,148 +171,148 @@ msgstr ""
|
||||
msgid "Erase the entire database and document storage"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:7
|
||||
#: registry.py:8
|
||||
msgid "Bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: registry.py:8
|
||||
#: registry.py:9
|
||||
msgid "Provides pre configured setups for indexes, document types, tags, etc."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:50
|
||||
#: views.py:51
|
||||
msgid "Bootstrap setup created successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:53
|
||||
#: views.py:54
|
||||
msgid "Error creating bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:59
|
||||
msgid "create bootstrap"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:78
|
||||
#: views.py:79
|
||||
msgid "Bootstrap setup edited successfully"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:81
|
||||
#: views.py:82
|
||||
msgid "Error editing bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:86
|
||||
#: views.py:87
|
||||
#, python-format
|
||||
msgid "edit bootstrap setup: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:111
|
||||
#: views.py:112
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %s deleted successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:113
|
||||
#: views.py:114
|
||||
#, python-format
|
||||
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:124
|
||||
#: views.py:125
|
||||
#, python-format
|
||||
msgid "Are you sure you with to delete the bootstrap setup: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:164
|
||||
#: views.py:165
|
||||
msgid ""
|
||||
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
|
||||
"try again."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:166
|
||||
#: views.py:167
|
||||
#, python-format
|
||||
msgid "Error executing bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:168
|
||||
#: views.py:169
|
||||
#, python-format
|
||||
msgid "Bootstrap setup \"%s\" executed successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:180
|
||||
#: views.py:181
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Are you sure you wish to execute the database bootstrap setup named: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:196
|
||||
#: views.py:197
|
||||
#, python-format
|
||||
msgid "Error dumping configuration into a bootstrap setup; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:200
|
||||
#: views.py:201
|
||||
msgid "Bootstrap setup created successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:206
|
||||
msgid "dump current configuration into a bootstrap setup"
|
||||
#: views.py:207
|
||||
msgid "dump current setup into a bootstrap setup"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:240 views.py:268
|
||||
#: views.py:241 views.py:269
|
||||
msgid "Bootstrap setup imported successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:243
|
||||
#: views.py:244
|
||||
msgid "File is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:245
|
||||
#: views.py:246
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from file; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:251
|
||||
#: views.py:252
|
||||
msgid "Import bootstrap setup from file"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:271
|
||||
#: views.py:272
|
||||
msgid "Data from URL is not a bootstrap setup."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:273
|
||||
#: views.py:274
|
||||
#, python-format
|
||||
msgid "Error importing bootstrap setup from URL; %s."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:279
|
||||
#: views.py:280
|
||||
msgid "Import bootstrap setup from URL"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:298
|
||||
#: views.py:299
|
||||
#, python-format
|
||||
msgid "Error erasing database; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:300
|
||||
#: views.py:301
|
||||
msgid "Database erased successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:310
|
||||
#: views.py:311
|
||||
msgid ""
|
||||
"Are you sure you wish to erase the entire database and document storage?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:311
|
||||
#: views.py:312
|
||||
msgid ""
|
||||
"All documents, sources, metadata, metadata types, set, tags, indexes and "
|
||||
"logs will be lost irreversibly!"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:328
|
||||
#: views.py:329
|
||||
msgid "Bootstrap repository successfully synchronized."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:330
|
||||
#: views.py:331
|
||||
#, python-format
|
||||
msgid "Bootstrap repository synchronization error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:337
|
||||
#: views.py:338
|
||||
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
|
||||
msgstr ""
|
||||
|
||||
@@ -72,4 +72,3 @@ class BootstrapSetupManager(models.Manager):
|
||||
self.import_from_url(bootstrap_setup_url, overwrite=True)
|
||||
else:
|
||||
response.raise_for_status()
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding field 'BootstrapSetup.type'
|
||||
db.add_column('bootstrap_bootstrapsetup', 'type',
|
||||
self.gf('django.db.models.fields.CharField')(default=0, max_length=16),
|
||||
keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting field 'BootstrapSetup.type'
|
||||
db.delete_column('bootstrap_bootstrapsetup', 'type')
|
||||
|
||||
|
||||
models = {
|
||||
'bootstrap.bootstrapsetup': {
|
||||
'Meta': {'object_name': 'BootstrapSetup'},
|
||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'fixture': ('django.db.models.fields.TextField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
|
||||
'type': ('django.db.models.fields.CharField', [], {'max_length': '16'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['bootstrap']
|
||||
@@ -2,7 +2,7 @@ from __future__ import absolute_import
|
||||
|
||||
import datetime
|
||||
|
||||
from navigation.api import register_links
|
||||
from navigation.api import bind_links
|
||||
from main import __version__
|
||||
|
||||
from .links import (link_bootstrap_setup_create, link_bootstrap_setup_execute,
|
||||
@@ -16,9 +16,9 @@ from .literals import (FIXTURE_METADATA_CREATED, FIXTURE_METADATA_EDITED,
|
||||
FIXTURE_METADATA_MAYAN_VERSION, FIXTURE_METADATA_FORMAT, FIXTURE_METADATA_NAME,
|
||||
FIXTURE_METADATA_DESCRIPTION, DATETIME_STRING_FORMAT, FIXTURE_METADATA_SLUG)
|
||||
|
||||
register_links([BootstrapSetup], [link_bootstrap_setup_view, link_bootstrap_setup_edit, link_bootstrap_setup_delete, link_bootstrap_setup_execute, link_bootstrap_setup_export])
|
||||
register_links([BootstrapSetup], [link_bootstrap_setup_list, link_bootstrap_setup_create, link_bootstrap_setup_dump, link_bootstrap_setup_import_from_file, link_bootstrap_setup_import_from_url, link_bootstrap_setup_repository_sync], menu_name='secondary_menu')
|
||||
register_links(['bootstrap_setup_list', 'bootstrap_setup_create', 'bootstrap_setup_dump', 'bootstrap_setup_import_from_file', 'bootstrap_setup_import_from_url', 'bootstrap_setup_repository_sync'], [link_bootstrap_setup_list, link_bootstrap_setup_create, link_bootstrap_setup_dump, link_bootstrap_setup_import_from_file, link_bootstrap_setup_import_from_url, link_bootstrap_setup_repository_sync], menu_name='secondary_menu')
|
||||
bind_links([BootstrapSetup], [link_bootstrap_setup_view, link_bootstrap_setup_edit, link_bootstrap_setup_delete, link_bootstrap_setup_execute, link_bootstrap_setup_export])
|
||||
bind_links([BootstrapSetup], [link_bootstrap_setup_list, link_bootstrap_setup_create, link_bootstrap_setup_dump, link_bootstrap_setup_import_from_file, link_bootstrap_setup_import_from_url, link_bootstrap_setup_repository_sync], menu_name='secondary_menu')
|
||||
bind_links(['bootstrap_setup_list', 'bootstrap_setup_create', 'bootstrap_setup_dump', 'bootstrap_setup_import_from_file', 'bootstrap_setup_import_from_url', 'bootstrap_setup_repository_sync'], [link_bootstrap_setup_list, link_bootstrap_setup_create, link_bootstrap_setup_dump, link_bootstrap_setup_import_from_file, link_bootstrap_setup_import_from_url, link_bootstrap_setup_repository_sync], menu_name='secondary_menu')
|
||||
|
||||
FixtureMetadata(FIXTURE_METADATA_CREATED, generate_function=lambda fixture_instance: fixture_instance.created.strftime(DATETIME_STRING_FORMAT), read_function=lambda x: datetime.datetime.strptime(x, DATETIME_STRING_FORMAT), property_name='created')
|
||||
FixtureMetadata(FIXTURE_METADATA_EDITED, generate_function=lambda fixture_instance: datetime.datetime.now().strftime(DATETIME_STRING_FORMAT))
|
||||
|
||||
@@ -2,9 +2,11 @@ from __future__ import absolute_import
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from .icons import icon_bootstrap_setup
|
||||
from .links import link_bootstrap_setup_tool, link_erase_database
|
||||
|
||||
label = _(u'Bootstrap')
|
||||
description = _(u'Provides pre configured setups for indexes, document types, tags, etc.')
|
||||
dependencies = ['app_registry', 'icons', 'navigation', 'documents', 'indexing', 'metadata', 'tags']
|
||||
icon = icon_bootstrap_setup
|
||||
setup_links = [link_bootstrap_setup_tool, link_erase_database]
|
||||
|
||||
BIN
apps/bootstrap/static/images/icons/database_lightning.png
Executable file
BIN
apps/bootstrap/static/images/icons/database_lightning.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
@@ -18,6 +18,7 @@ from .permissions import (PERMISSION_BOOTSTRAP_VIEW, PERMISSION_BOOTSTRAP_CREATE
|
||||
PERMISSION_BOOTSTRAP_EDIT, PERMISSION_BOOTSTRAP_DELETE,
|
||||
PERMISSION_BOOTSTRAP_EXECUTE, PERMISSION_NUKE_DATABASE, PERMISSION_BOOTSTRAP_DUMP,
|
||||
PERMISSION_BOOTSTRAP_EXPORT, PERMISSION_BOOTSTRAP_IMPORT, PERMISSION_BOOTSTRAP_REPOSITORY_SYNC)
|
||||
from .icons import icon_bootstrap_setup_execute, icon_nuke_database, icon_bootstrap_setup_delete
|
||||
from .forms import (BootstrapSetupForm, BootstrapSetupForm_view, BootstrapSetupForm_dump,
|
||||
BootstrapSetupForm_edit, BootstrapFileImportForm, BootstrapURLImportForm)
|
||||
from .exceptions import ExistingData, NotABootstrapSetup
|
||||
@@ -122,7 +123,7 @@ def bootstrap_setup_delete(request, bootstrap_setup_pk):
|
||||
'next': next,
|
||||
'object': bootstrap,
|
||||
'title': _(u'Are you sure you with to delete the bootstrap setup: %s?') % bootstrap,
|
||||
'form_icon': 'lightning_delete.png',
|
||||
'form_icon': icon_bootstrap_setup_delete,
|
||||
}
|
||||
|
||||
return render_to_response('generic_confirm.html', context,
|
||||
@@ -173,7 +174,7 @@ def bootstrap_setup_execute(request, bootstrap_setup_pk):
|
||||
'delete_view': False,
|
||||
'previous': previous,
|
||||
'next': next,
|
||||
'form_icon': 'lightning_go.png',
|
||||
'form_icon': icon_bootstrap_setup_execute,
|
||||
'object': bootstrap_setup,
|
||||
}
|
||||
|
||||
@@ -203,7 +204,7 @@ def bootstrap_setup_dump(request):
|
||||
form = BootstrapSetupForm_dump()
|
||||
|
||||
return render_to_response('generic_form.html', {
|
||||
'title': _(u'dump current configuration into a bootstrap setup'),
|
||||
'title': _(u'dump current setup into a bootstrap setup'),
|
||||
'form': form,
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
@@ -304,7 +305,7 @@ def erase_database_view(request):
|
||||
'delete_view': False,
|
||||
'previous': previous,
|
||||
'next': next,
|
||||
'form_icon': 'radioactivity.png',
|
||||
'form_icon': icon_nuke_database,
|
||||
}
|
||||
|
||||
context['title'] = _(u'Are you sure you wish to erase the entire database and document storage?')
|
||||
|
||||
@@ -2,14 +2,10 @@ from __future__ import absolute_import
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from navigation.api import (register_links, register_top_menu,
|
||||
register_multi_item_links, register_sidebar_template)
|
||||
from scheduler.api import register_interval_job
|
||||
|
||||
from documents.models import Document
|
||||
from documents.permissions import PERMISSION_DOCUMENT_VIEW
|
||||
from acls.api import class_permissions
|
||||
from history.api import register_history_type
|
||||
from documents.models import Document
|
||||
from navigation.api import bind_links, register_top_menu
|
||||
from scheduler.api import LocalScheduler
|
||||
|
||||
from .permissions import (PERMISSION_DOCUMENT_CHECKOUT,
|
||||
PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE,
|
||||
@@ -17,8 +13,7 @@ from .permissions import (PERMISSION_DOCUMENT_CHECKOUT,
|
||||
from .links import checkout_list, checkout_document, checkout_info, checkin_document
|
||||
from .models import DocumentCheckout
|
||||
from .tasks import task_check_expired_check_outs
|
||||
from .events import (HISTORY_DOCUMENT_CHECKED_OUT, HISTORY_DOCUMENT_CHECKED_IN,
|
||||
HISTORY_DOCUMENT_AUTO_CHECKED_IN, HISTORY_DOCUMENT_FORCEFUL_CHECK_IN)
|
||||
from .literals import CHECK_EXPIRED_CHECK_OUTS_INTERVAL
|
||||
|
||||
|
||||
def initialize_document_checkout_extra_methods():
|
||||
@@ -29,8 +24,8 @@ def initialize_document_checkout_extra_methods():
|
||||
Document.add_to_class('is_new_versions_allowed', lambda document, user=None: DocumentCheckout.objects.is_document_new_versions_allowed(document, user))
|
||||
|
||||
register_top_menu(name='checkouts', link=checkout_list)
|
||||
register_links(Document, [checkout_info], menu_name='form_header')
|
||||
register_links(['checkout_info', 'checkout_document', 'checkin_document'], [checkout_document, checkin_document], menu_name="sidebar")
|
||||
bind_links([Document], [checkout_info], menu_name='form_header')
|
||||
bind_links(['checkout_info', 'checkout_document', 'checkin_document'], [checkout_document, checkin_document], menu_name="sidebar")
|
||||
|
||||
class_permissions(Document, [
|
||||
PERMISSION_DOCUMENT_CHECKOUT,
|
||||
@@ -39,10 +34,8 @@ class_permissions(Document, [
|
||||
PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE
|
||||
])
|
||||
|
||||
CHECK_EXPIRED_CHECK_OUTS_INTERVAL=60 # Lowest check out expiration allowed
|
||||
register_interval_job('task_check_expired_check_outs', _(u'Check expired check out documents and checks them in.'), task_check_expired_check_outs, seconds=CHECK_EXPIRED_CHECK_OUTS_INTERVAL)
|
||||
checkouts_scheduler = LocalScheduler('checkouts', _(u'Document checkouts'))
|
||||
checkouts_scheduler.add_interval_job('task_check_expired_check_outs', _(u'Check expired check out documents and checks them in.'), task_check_expired_check_outs, seconds=CHECK_EXPIRED_CHECK_OUTS_INTERVAL)
|
||||
checkouts_scheduler.start()
|
||||
|
||||
initialize_document_checkout_extra_methods()
|
||||
register_history_type(HISTORY_DOCUMENT_CHECKED_OUT)
|
||||
register_history_type(HISTORY_DOCUMENT_CHECKED_IN)
|
||||
register_history_type(HISTORY_DOCUMENT_AUTO_CHECKED_IN)
|
||||
register_history_type(HISTORY_DOCUMENT_FORCEFUL_CHECK_IN)
|
||||
|
||||
@@ -1,28 +1,24 @@
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
HISTORY_DOCUMENT_CHECKED_OUT = {
|
||||
'namespace': 'checkouts', 'name': 'document_checked_out',
|
||||
'label': _(u'Document checked out'),
|
||||
'summary': _(u'Document "%(document)s" checked out by %(fullname)s.'),
|
||||
'expressions': {'fullname': 'user.get_full_name() if user.get_full_name() else user'}
|
||||
}
|
||||
from history.api import EventNamespace, Event
|
||||
|
||||
HISTORY_DOCUMENT_CHECKED_IN = {
|
||||
'namespace': 'checkouts', 'name': 'document_checked_in',
|
||||
'label': _(u'Document checked in'),
|
||||
'summary': _(u'Document "%(document)s" checked in by %(fullname)s.'),
|
||||
'expressions': {'fullname': 'user.get_full_name() if user.get_full_name() else user'}
|
||||
}
|
||||
namespace = EventNamespace('checkouts', _(u'checkouts'))
|
||||
|
||||
HISTORY_DOCUMENT_AUTO_CHECKED_IN = {
|
||||
'namespace': 'checkouts', 'name': 'document_auto_checked_in',
|
||||
'label': _(u'Document automatically checked in'),
|
||||
'summary': _(u'Document "%(document)s" automatically checked in.'),
|
||||
}
|
||||
history_document_checked_out = Event(namespace=namespace, name='document_checked_out', label=_(u'Document checked out'),
|
||||
summary=_(u'Document "%(document)s" checked out by %(fullname)s.'),
|
||||
expressions={'fullname': 'user.get_full_name() if user.get_full_name() else user'}
|
||||
)
|
||||
|
||||
HISTORY_DOCUMENT_FORCEFUL_CHECK_IN = {
|
||||
'namespace': 'checkouts', 'name': 'document_forefull_check_in',
|
||||
'label': _(u'Document forcefully checked in'),
|
||||
'summary': _(u'Document "%(document)s" forcefully checked in by %(fullname)s.'),
|
||||
'expressions': {'fullname': 'user.get_full_name() if user.get_full_name() else user'}
|
||||
}
|
||||
history_document_checked_in = Event(namespace=namespace, name='document_checked_in', label=_(u'Document checked in'),
|
||||
summary=_(u'Document "%(document)s" checked in by %(fullname)s.'),
|
||||
expressions={'fullname': 'user.get_full_name() if user.get_full_name() else user'}
|
||||
)
|
||||
|
||||
history_document_auto_checked_in = Event(namespace=namespace, name='document_auto_checked_in', label=_(u'Document automatically checked in'),
|
||||
summary=_(u'Document "%(document)s" automatically checked in.'),
|
||||
)
|
||||
|
||||
history_document_forceful_check_in = Event(namespace=namespace, name='document_forefull_check_in', label=_(u'Document forcefully checked in'),
|
||||
summary=_(u'Document "%(document)s" forcefully checked in by %(fullname)s.'),
|
||||
expressions={'fullname': 'user.get_full_name() if user.get_full_name() else user'}
|
||||
)
|
||||
|
||||
@@ -4,6 +4,7 @@ class DocumentNotCheckedOut(Exception):
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
class DocumentAlreadyCheckedOut(Exception):
|
||||
"""
|
||||
Raised when trying to checkout an already checkedout document
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from .models import DocumentCheckout
|
||||
from .exceptions import DocumentAlreadyCheckedOut
|
||||
|
||||
@@ -2,7 +2,7 @@ from __future__ import absolute_import
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from documents.permissions import PERMISSION_DOCUMENT_VIEW
|
||||
from navigation import Link
|
||||
|
||||
from .permissions import (PERMISSION_DOCUMENT_CHECKOUT, PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE)
|
||||
|
||||
@@ -15,7 +15,7 @@ def is_not_checked_out(context):
|
||||
return not context['object'].is_checked_out()
|
||||
|
||||
|
||||
checkout_list = {'text': _(u'checkouts'), 'view': 'checkout_list', 'famfam': 'basket'}
|
||||
checkout_document = {'text': _('check out document'), 'view': 'checkout_document', 'args': 'object.pk', 'famfam': 'basket_put', 'condition': is_not_checked_out, 'permissions': [PERMISSION_DOCUMENT_CHECKOUT]}
|
||||
checkin_document = {'text': _('check in document'), 'view': 'checkin_document', 'args': 'object.pk', 'famfam': 'basket_remove', 'condition': is_checked_out, 'permissions': [PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE]}
|
||||
checkout_info = {'text': _('check in/out'), 'view': 'checkout_info', 'args': 'object.pk', 'famfam': 'basket', 'children_views': ['checkout_document', 'checkin_document'], 'permissions': [PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE, PERMISSION_DOCUMENT_CHECKOUT]}
|
||||
checkout_list = Link(text=_(u'checkouts'), view='checkout_list', sprite='basket')
|
||||
checkout_document = Link(text=_('check out document'), view='checkout_document', args='object.pk', sprite='basket_put', condition=is_not_checked_out, permissions=[PERMISSION_DOCUMENT_CHECKOUT])
|
||||
checkin_document = Link(text=_('check in document'), view='checkin_document', args='object.pk', sprite='basket_remove', condition=is_checked_out, permissions=[PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE])
|
||||
checkout_info = Link(text=_('check in/out'), view='checkout_info', args='object.pk', sprite='basket', children_views=['checkout_document', 'checkin_document'], permissions=[PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE, PERMISSION_DOCUMENT_CHECKOUT])
|
||||
|
||||
@@ -14,3 +14,5 @@ STATE_LABELS = {
|
||||
STATE_CHECKED_OUT: _(u'checked out'),
|
||||
STATE_CHECKED_IN: _(u'checked in/available'),
|
||||
}
|
||||
|
||||
CHECK_EXPIRED_CHECK_OUTS_INTERVAL = 60 # Lowest check out expiration allowed
|
||||
|
||||
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:19-0400\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-10-17 09:35+0000\n"
|
||||
"Last-Translator: Pavlin Koldamov <pkoldamov@gmail.com>\n"
|
||||
"Language-Team: Bulgarian (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
@@ -19,15 +19,24 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: __init__.py:43
|
||||
#: __init__.py:37
|
||||
#, fuzzy
|
||||
msgid "Document checkouts"
|
||||
msgstr "Проверка на документ"
|
||||
|
||||
#: __init__.py:38
|
||||
msgid "Check expired check out documents and checks them in."
|
||||
msgstr "Проверете изтеклите за проверки документи и ги регистрирайте отново."
|
||||
|
||||
#: events.py:5
|
||||
#: events.py:5 links.py:18
|
||||
msgid "checkouts"
|
||||
msgstr "проверки"
|
||||
|
||||
#: events.py:7
|
||||
msgid "Document checked out"
|
||||
msgstr "Документът е проверен."
|
||||
|
||||
#: events.py:6
|
||||
#: events.py:8
|
||||
#, python-format
|
||||
msgid "Document \"%(document)s\" checked out by %(fullname)s."
|
||||
msgstr "Докумнетът \"%(document)s\" е проверен от %(fullname)s."
|
||||
@@ -41,28 +50,24 @@ msgstr "Докъментът е регистриран"
|
||||
msgid "Document \"%(document)s\" checked in by %(fullname)s."
|
||||
msgstr "Документът \"%(document)s\" е регистриран от %(fullname)s."
|
||||
|
||||
#: events.py:19
|
||||
#: events.py:17
|
||||
msgid "Document automatically checked in"
|
||||
msgstr "Автоматично регистрирани документи"
|
||||
|
||||
#: events.py:20
|
||||
#: events.py:18
|
||||
#, python-format
|
||||
msgid "Document \"%(document)s\" automatically checked in."
|
||||
msgstr "Документ \"%(document)s\" е автоматично регистриран."
|
||||
|
||||
#: events.py:25
|
||||
#: events.py:21
|
||||
msgid "Document forcefully checked in"
|
||||
msgstr "Документът е принудително регистриран"
|
||||
|
||||
#: events.py:26
|
||||
#: events.py:22
|
||||
#, python-format
|
||||
msgid "Document \"%(document)s\" forcefully checked in by %(fullname)s."
|
||||
msgstr "Документът \"%(document)s\" принудително регистриран от %(fullname)s."
|
||||
|
||||
#: links.py:18
|
||||
msgid "checkouts"
|
||||
msgstr "проверки"
|
||||
|
||||
#: links.py:19
|
||||
msgid "check out document"
|
||||
msgstr "проверка на документ"
|
||||
@@ -83,35 +88,35 @@ msgstr "проверен"
|
||||
msgid "checked in/available"
|
||||
msgstr "регистриран/наличен"
|
||||
|
||||
#: models.py:25 views.py:133
|
||||
#: models.py:23 views.py:136
|
||||
msgid "document"
|
||||
msgstr "документ"
|
||||
|
||||
#: models.py:26
|
||||
#: models.py:24
|
||||
msgid "check out date and time"
|
||||
msgstr "дата и час на проверка"
|
||||
|
||||
#: models.py:27
|
||||
#: models.py:25
|
||||
msgid "check out expiration date and time"
|
||||
msgstr "проверка на срока на валидност, дата и час"
|
||||
|
||||
#: models.py:27
|
||||
#: models.py:25
|
||||
msgid "Amount of time to hold the document checked out in minutes."
|
||||
msgstr "Време за задържане на проверения документ в минути."
|
||||
|
||||
#: models.py:32
|
||||
#: models.py:30
|
||||
msgid "block new version upload"
|
||||
msgstr "блокиране качването на нова версия"
|
||||
|
||||
#: models.py:32
|
||||
#: models.py:30
|
||||
msgid "Do not allow new version of this document to be uploaded."
|
||||
msgstr "Забранете качването на нова версия на този документ."
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:53
|
||||
msgid "document checkout"
|
||||
msgstr "проверка на документ"
|
||||
|
||||
#: models.py:56
|
||||
#: models.py:54
|
||||
msgid "document checkouts"
|
||||
msgstr "проверки на документ"
|
||||
|
||||
@@ -135,89 +140,89 @@ msgstr "Регистрирай принудилтелно документи"
|
||||
msgid "Allow overriding check out restrictions"
|
||||
msgstr "Разреши проверки незвисимо от забрана"
|
||||
|
||||
#: views.py:33
|
||||
#: views.py:32
|
||||
msgid "checked out documents"
|
||||
msgstr "проверени документи"
|
||||
|
||||
#: views.py:36
|
||||
#: views.py:35
|
||||
msgid "checkout user"
|
||||
msgstr "отписване потребител"
|
||||
|
||||
#: views.py:37
|
||||
#: views.py:36
|
||||
msgid "checkout time and date"
|
||||
msgstr "отписване, час и дата"
|
||||
|
||||
#: views.py:38
|
||||
#: views.py:37
|
||||
msgid "checkout expiration"
|
||||
msgstr "проверка срок на валидност"
|
||||
|
||||
#: views.py:55
|
||||
#: views.py:54
|
||||
#, python-format
|
||||
msgid "User: %s"
|
||||
msgstr "Потребител: %s"
|
||||
|
||||
#: views.py:56
|
||||
#: views.py:55
|
||||
#, python-format
|
||||
msgid "Check out time: %s"
|
||||
msgstr "Време на отписване: %s"
|
||||
|
||||
#: views.py:57
|
||||
#: views.py:56
|
||||
#, python-format
|
||||
msgid "Check out expiration: %s"
|
||||
msgstr "Проверка срок на валидност: %s"
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:57
|
||||
#, python-format
|
||||
msgid "New versions allowed: %s"
|
||||
msgstr "Разрешени нови версии: %s"
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:57
|
||||
msgid "yes"
|
||||
msgstr "да"
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:57
|
||||
msgid "no"
|
||||
msgstr "не"
|
||||
|
||||
#: views.py:63
|
||||
#: views.py:62
|
||||
#, python-format
|
||||
msgid "Check out details for document: %s"
|
||||
msgstr "Данни от проверката на документ: %s"
|
||||
|
||||
#: views.py:83
|
||||
#: views.py:82
|
||||
#, python-format
|
||||
msgid "Error trying to check out document; %s"
|
||||
msgstr "Грешка при проверка на документ; %s"
|
||||
|
||||
#: views.py:85
|
||||
#: views.py:84
|
||||
#, python-format
|
||||
msgid "Document \"%s\" checked out successfully."
|
||||
msgstr "Документ \"%s\" проверен успешно."
|
||||
|
||||
#: views.py:88
|
||||
#: views.py:87
|
||||
msgid "Document already checked out."
|
||||
msgstr "Документът вече е проверен."
|
||||
|
||||
#: views.py:96
|
||||
#: views.py:95
|
||||
#, python-format
|
||||
msgid "Check out document: %s"
|
||||
msgstr "Провери документ: %s"
|
||||
|
||||
#: views.py:125
|
||||
#: views.py:121 views.py:128
|
||||
msgid "Document has not been checked out."
|
||||
msgstr "Документът не е проверяван."
|
||||
|
||||
#: views.py:127
|
||||
#: views.py:130
|
||||
#, python-format
|
||||
msgid "Error trying to check in document; %s"
|
||||
msgstr "Грешка при регистрация на документ; %s"
|
||||
|
||||
#: views.py:129
|
||||
#: views.py:132
|
||||
#, python-format
|
||||
msgid "Document \"%s\" checked in successfully."
|
||||
msgstr "Документ \"%s\" е регистриран успешно."
|
||||
|
||||
#: views.py:142
|
||||
#: views.py:145
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You didn't originally checked out this document. Are you sure you wish to "
|
||||
@@ -226,7 +231,7 @@ msgstr ""
|
||||
"Проверката на този документ не е извършвана от Вас. Сигурни ли сте, че "
|
||||
"искате принудително да регистрирате документа: %s?"
|
||||
|
||||
#: views.py:144
|
||||
#: views.py:147
|
||||
#, python-format
|
||||
msgid "Are you sure you wish to check in document: %s?"
|
||||
msgstr "Сигурни ли сте, че искате да регистрирате този документ: %s?"
|
||||
|
||||
Binary file not shown.
@@ -3,64 +3,71 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# <sl@suchreflex.de>, 2012.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-12-12 03:19-0400\n"
|
||||
"PO-Revision-Date: 2012-07-10 15:47+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
|
||||
"PO-Revision-Date: 2012-09-20 07:45+0000\n"
|
||||
"Last-Translator: Manticor <sl@suchreflex.de>\n"
|
||||
"Language-Team: German (Germany) (http://www.transifex.com/projects/p/mayan-"
|
||||
"edms/language/de_DE/)\n"
|
||||
"Language: de_DE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: __init__.py:43
|
||||
#: __init__.py:37
|
||||
#, fuzzy
|
||||
msgid "Document checkouts"
|
||||
msgstr "Dokument wurde ausgecheckt"
|
||||
|
||||
#: __init__.py:38
|
||||
msgid "Check expired check out documents and checks them in."
|
||||
msgstr "Überprüfe, ob die Frist für ausgecheckte Dokumente abgelaufen ist. "
|
||||
|
||||
#: events.py:5 links.py:18
|
||||
msgid "checkouts"
|
||||
msgstr ""
|
||||
|
||||
#: events.py:5
|
||||
#: events.py:7
|
||||
msgid "Document checked out"
|
||||
msgstr ""
|
||||
msgstr "Dokument wurde ausgecheckt"
|
||||
|
||||
#: events.py:6
|
||||
#: events.py:8
|
||||
#, python-format
|
||||
msgid "Document \"%(document)s\" checked out by %(fullname)s."
|
||||
msgstr ""
|
||||
msgstr "Dokument \"%(document)s\" wurde von %(fullname)s ausgecheckt."
|
||||
|
||||
#: events.py:12
|
||||
msgid "Document checked in"
|
||||
msgstr ""
|
||||
msgstr "Dokument wurde eingecheckt"
|
||||
|
||||
#: events.py:13
|
||||
#, python-format
|
||||
msgid "Document \"%(document)s\" checked in by %(fullname)s."
|
||||
msgstr ""
|
||||
msgstr "Dokument \"%(document)s\" wude von %(fullname)s eingecheckt."
|
||||
|
||||
#: events.py:19
|
||||
#: events.py:17
|
||||
msgid "Document automatically checked in"
|
||||
msgstr ""
|
||||
msgstr "Dokument automatisch eingecheckt"
|
||||
|
||||
#: events.py:20
|
||||
#: events.py:18
|
||||
#, python-format
|
||||
msgid "Document \"%(document)s\" automatically checked in."
|
||||
msgstr ""
|
||||
msgstr "Dokument \"%(document)s\" automatisch eingecheckt."
|
||||
|
||||
#: events.py:25
|
||||
#: events.py:21
|
||||
msgid "Document forcefully checked in"
|
||||
msgstr ""
|
||||
msgstr "Dokument \"gewaltsam\" eingecheckt"
|
||||
|
||||
#: events.py:26
|
||||
#: events.py:22
|
||||
#, python-format
|
||||
msgid "Document \"%(document)s\" forcefully checked in by %(fullname)s."
|
||||
msgstr ""
|
||||
|
||||
#: links.py:18
|
||||
msgid "checkouts"
|
||||
msgstr ""
|
||||
"Dokument \" %(document)s \" \"gewaltsam\" durch %(fullname)s eingecheckt."
|
||||
|
||||
#: links.py:19
|
||||
msgid "check out document"
|
||||
@@ -82,35 +89,35 @@ msgstr ""
|
||||
msgid "checked in/available"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:25 views.py:133
|
||||
#: models.py:23 views.py:136
|
||||
msgid "document"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:26
|
||||
#: models.py:24
|
||||
msgid "check out date and time"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:27
|
||||
#: models.py:25
|
||||
msgid "check out expiration date and time"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:27
|
||||
#: models.py:25
|
||||
msgid "Amount of time to hold the document checked out in minutes."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:32
|
||||
#: models.py:30
|
||||
msgid "block new version upload"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:32
|
||||
#: models.py:30
|
||||
msgid "Do not allow new version of this document to be uploaded."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:53
|
||||
msgid "document checkout"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:56
|
||||
#: models.py:54
|
||||
msgid "document checkouts"
|
||||
msgstr ""
|
||||
|
||||
@@ -134,96 +141,96 @@ msgstr ""
|
||||
msgid "Allow overriding check out restrictions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:33
|
||||
#: views.py:32
|
||||
msgid "checked out documents"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:36
|
||||
#: views.py:35
|
||||
msgid "checkout user"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:37
|
||||
#: views.py:36
|
||||
msgid "checkout time and date"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:38
|
||||
#: views.py:37
|
||||
msgid "checkout expiration"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:55
|
||||
#: views.py:54
|
||||
#, python-format
|
||||
msgid "User: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:56
|
||||
#: views.py:55
|
||||
#, python-format
|
||||
msgid "Check out time: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:57
|
||||
#: views.py:56
|
||||
#, python-format
|
||||
msgid "Check out expiration: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:57
|
||||
#, python-format
|
||||
msgid "New versions allowed: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:57
|
||||
msgid "yes"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:58
|
||||
#: views.py:57
|
||||
msgid "no"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:63
|
||||
#: views.py:62
|
||||
#, python-format
|
||||
msgid "Check out details for document: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:83
|
||||
#: views.py:82
|
||||
#, python-format
|
||||
msgid "Error trying to check out document; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:85
|
||||
#: views.py:84
|
||||
#, python-format
|
||||
msgid "Document \"%s\" checked out successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:88
|
||||
#: views.py:87
|
||||
msgid "Document already checked out."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:96
|
||||
#: views.py:95
|
||||
#, python-format
|
||||
msgid "Check out document: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:125
|
||||
#: views.py:121 views.py:128
|
||||
msgid "Document has not been checked out."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:127
|
||||
#: views.py:130
|
||||
#, python-format
|
||||
msgid "Error trying to check in document; %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:129
|
||||
#: views.py:132
|
||||
#, python-format
|
||||
msgid "Document \"%s\" checked in successfully."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:142
|
||||
#: views.py:145
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You didn't originally checked out this document. Are you sure you wish to "
|
||||
"forcefully check in document: %s?"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:144
|
||||
#: views.py:147
|
||||
#, python-format
|
||||
msgid "Are you sure you wish to check in document: %s?"
|
||||
msgstr ""
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user