Compare commits
785 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
6bd9b954a8 | |
|
|
c621ead9a5 | |
|
|
881e62000d | |
|
|
44be298342 | |
|
|
0491c94993 | |
|
|
479f290f52 | |
|
|
5f0eb41161 | |
|
|
9f106fd35b | |
|
|
761e1dc02f | |
|
|
4c2b7f21fd | |
|
|
b8252030a4 | |
|
|
c6c96bf806 | |
|
|
ce37e112df | |
|
|
b1bb5d0437 | |
|
|
6f7f6018bf | |
|
|
e991bf61a0 | |
|
|
42dc52bd00 | |
|
|
dbb44b5940 | |
|
|
5fe3be234f | |
|
|
3d5d5ae92f | |
|
|
979c8c5c73 | |
|
|
5afe7eb6be | |
|
|
231055f80a | |
|
|
3293bea810 | |
|
|
3b9294ccec | |
|
|
d002a6a06a | |
|
|
46abd9e3b2 | |
|
|
59b1651c0c | |
|
|
7318ed3db8 | |
|
|
d3b6d5f3ba | |
|
|
f086906f46 | |
|
|
da02334a35 | |
|
|
0f3bf75ba4 | |
|
|
f42ce33978 | |
|
|
0584e58995 | |
|
|
7187331bd2 | |
|
|
e895a057fe | |
|
|
cb6e64f889 | |
|
|
3a37860af5 | |
|
|
f96acafd11 | |
|
|
83a0de60de | |
|
|
f5e0157f70 | |
|
|
6f4f6a9dd9 | |
|
|
b61d54a227 | |
|
|
a251f3bb5f | |
|
|
66e57043c9 | |
|
|
7cf35cd785 | |
|
|
087fc5e1d7 | |
|
|
302ee6ee04 | |
|
|
4d4996fd41 | |
|
|
856e4edb9e | |
|
|
5405a877c3 | |
|
|
ea44a74604 | |
|
|
6a7a230964 | |
|
|
ff0380977e | |
|
|
94f02a36b1 | |
|
|
a29ec42a83 | |
|
|
b229bc39a6 | |
|
|
a0b663be2a | |
|
|
48d0b58d30 | |
|
|
b429bde765 | |
|
|
268d331dea | |
|
|
6dbe8fec0f | |
|
|
b5980b85e6 | |
|
|
b1361d2bc1 | |
|
|
ab5ca9626a | |
|
|
4759fdf593 | |
|
|
75b1292e29 | |
|
|
6db363518d | |
|
|
a7e8c4da09 | |
|
|
3000c9024e | |
|
|
fb18a8d455 | |
|
|
13965eacf2 | |
|
|
1131e0da6b | |
|
|
66600faec6 | |
|
|
f9df5baa19 | |
|
|
67bb404a84 | |
|
|
6462083e95 | |
|
|
f32203fd9a | |
|
|
e1d79b9df0 | |
|
|
a52f670c85 | |
|
|
b393c11ecb | |
|
|
43dca1ae93 | |
|
|
55be190dc0 | |
|
|
1c1945c1d9 | |
|
|
2350854e45 | |
|
|
0ddb85298d | |
|
|
7b7de54e60 | |
|
|
b1fcedbaed | |
|
|
17f9f430fd | |
|
|
8e045c71c1 | |
|
|
0eed8c8679 | |
|
|
d74fcd4001 | |
|
|
0f69ccbb0a | |
|
|
69815ed103 | |
|
|
7aed89c244 | |
|
|
67c67fe27d | |
|
|
2d156814cc | |
|
|
2606accbea | |
|
|
40b6f187a6 | |
|
|
36a8edd0f6 | |
|
|
ea95d13c44 | |
|
|
b6cd62093c | |
|
|
d025e76e7a | |
|
|
e79e9c5705 | |
|
|
8eef625219 | |
|
|
e0c0460e59 | |
|
|
a7aeb8223a | |
|
|
f8d1660218 | |
|
|
17deb9b0f7 | |
|
|
540f33fdde | |
|
|
24a5e1f995 | |
|
|
13c43f36df | |
|
|
0e128f97ee | |
|
|
2b12910435 | |
|
|
5541d4ca70 | |
|
|
60501026a6 | |
|
|
d269de0b63 | |
|
|
5707ebfe09 | |
|
|
27b57dd2b2 | |
|
|
effc5fbd35 | |
|
|
97e1a2b315 | |
|
|
39f47b29bc | |
|
|
d9107d819f | |
|
|
7d3b967847 | |
|
|
8fbed58cd6 | |
|
|
68d7094b3e | |
|
|
fd908cbbed | |
|
|
f7be7cafb3 | |
|
|
7c4793c9b6 | |
|
|
45266906a3 | |
|
|
7a0e63e986 | |
|
|
a48575e047 | |
|
|
a8897a942d | |
|
|
a92d94f9e8 | |
|
|
a5c4c82d9a | |
|
|
cd361c461d | |
|
|
cdc281396f | |
|
|
546ed765a3 | |
|
|
cacae6eb73 | |
|
|
3d0930bf56 | |
|
|
8fd00c6c27 | |
|
|
31ee37a151 | |
|
|
544b2e68c0 | |
|
|
b56b0b9c58 | |
|
|
11905e80b7 | |
|
|
6f7a51bee8 | |
|
|
55f2c86a47 | |
|
|
42bf0f8039 | |
|
|
50e025bcd5 | |
|
|
9ddb23053f | |
|
|
4668f27c92 | |
|
|
2b21b16929 | |
|
|
4148f6ece9 | |
|
|
26368a3e05 | |
|
|
84c7cd4582 | |
|
|
64f3779f4c | |
|
|
7b12fea8b3 | |
|
|
3ed84fb071 | |
|
|
5496f996be | |
|
|
10b3adbd89 | |
|
|
6e26a27336 | |
|
|
cf100542aa | |
|
|
9a0264ca08 | |
|
|
d42f69cee7 | |
|
|
703fef4c4c | |
|
|
d7436e6abc | |
|
|
a3737c9892 | |
|
|
4deefc20b7 | |
|
|
522e4d20bc | |
|
|
9b7e963f46 | |
|
|
7926340d24 | |
|
|
bb9585c465 | |
|
|
191d82a5c2 | |
|
|
81ab67953a | |
|
|
6147fb65e6 | |
|
|
fa81b2ea5e | |
|
|
71cc60bea3 | |
|
|
e2b23c238f | |
|
|
00bedb30c2 | |
|
|
e1b997f1bf | |
|
|
91b0e1d158 | |
|
|
d0f37806c7 | |
|
|
aea0004837 | |
|
|
a7320c5645 | |
|
|
eefdd615df | |
|
|
d85690fb9c | |
|
|
d1914edfd9 | |
|
|
251a35f5c8 | |
|
|
2ebd1a7992 | |
|
|
ecc1cd77de | |
|
|
d15c0c10c2 | |
|
|
947bd4b64d | |
|
|
1762940380 | |
|
|
76de3d5481 | |
|
|
cce1c9adaf | |
|
|
88ab3485c0 | |
|
|
04ffe5340b | |
|
|
a567f93136 | |
|
|
5d67f815da | |
|
|
fd3d20ec11 | |
|
|
bb0ae3d4f7 | |
|
|
c44621dae1 | |
|
|
a7336991bc | |
|
|
b4e01fea0f | |
|
|
09f495b176 | |
|
|
c28bfcf27a | |
|
|
08bd7c9842 | |
|
|
b8a8c1595f | |
|
|
8f107309d1 | |
|
|
ab3f41c3f2 | |
|
|
5263bb02ea | |
|
|
2baae84e84 | |
|
|
265acda04a | |
|
|
7f170aadc5 | |
|
|
5f2e2982b1 | |
|
|
1b0d20f494 | |
|
|
8d82d80c19 | |
|
|
b10cb336ce | |
|
|
cc79cf1549 | |
|
|
8e0d8893c2 | |
|
|
a577210b71 | |
|
|
b3540bc019 | |
|
|
186e78b846 | |
|
|
2da294e28f | |
|
|
fca8e6d47b | |
|
|
112b5359cf | |
|
|
6ffaf22ca5 | |
|
|
a4f027055f | |
|
|
6f203e0761 | |
|
|
9522f1a156 | |
|
|
014cb9b771 | |
|
|
9c1af23785 | |
|
|
df6e330747 | |
|
|
03d318fb24 | |
|
|
5623e77b5c | |
|
|
15da0bfd9a | |
|
|
19cbeead58 | |
|
|
c414c3ad4d | |
|
|
79f3fefaad | |
|
|
98b8025ed7 | |
|
|
819fa13b1e | |
|
|
6557d2a4b5 | |
|
|
ae78cb7b86 | |
|
|
a75c16162f | |
|
|
14634aa505 | |
|
|
6b841b0916 | |
|
|
dba40e3b61 | |
|
|
63977a4d75 | |
|
|
f4df5c5289 | |
|
|
b88d7d8b95 | |
|
|
60649ac4e6 | |
|
|
d62593e01b | |
|
|
333025f877 | |
|
|
9c0251b7a4 | |
|
|
2141298e27 | |
|
|
762d1184dd | |
|
|
967f5827f2 | |
|
|
f2b800d9ca | |
|
|
07dcb77b88 | |
|
|
a76de04a8b | |
|
|
1d963230e4 | |
|
|
81ebbaa2c9 | |
|
|
5376089110 | |
|
|
79dfb2fea9 | |
|
|
5009e97086 | |
|
|
b5fdd6ec19 | |
|
|
2d839d2ff7 | |
|
|
82f2fd7a84 | |
|
|
cc1f72b23d | |
|
|
23511d04b2 | |
|
|
585bf7a52b | |
|
|
85fb723747 | |
|
|
873cce2144 | |
|
|
f3a69713a1 | |
|
|
2b7b7b13eb | |
|
|
e208ba24ad | |
|
|
8e9aa16a5b | |
|
|
7e85ebac9b | |
|
|
95fb2df285 | |
|
|
18f865beaa | |
|
|
03c95395b2 | |
|
|
c26827a75a | |
|
|
aab4435841 | |
|
|
75a52c6449 | |
|
|
0ad9ca74ae | |
|
|
76a8b9d114 | |
|
|
158128d864 | |
|
|
78041ea28b | |
|
|
e1020a29dc | |
|
|
946b9c98e0 | |
|
|
7c9340ba3a | |
|
|
363bc310a1 | |
|
|
2ee03fc2de | |
|
|
74dacaba2c | |
|
|
9272e6563b | |
|
|
d4ea141571 | |
|
|
049854f2c3 | |
|
|
0dd591716d | |
|
|
9d1c28d480 | |
|
|
1002f48986 | |
|
|
0939202824 | |
|
|
990975a0eb | |
|
|
78ae411d58 | |
|
|
98b7228f95 | |
|
|
03e5cbdf9e | |
|
|
092175202c | |
|
|
200d0cc681 | |
|
|
d48c8cc182 | |
|
|
ead930d3b4 | |
|
|
f4617ac126 | |
|
|
de27c013fa | |
|
|
5e58c35b08 | |
|
|
aecfbf0291 | |
|
|
bf72f6c982 | |
|
|
3b055dd7cc | |
|
|
53e5b66785 | |
|
|
5e5e811102 | |
|
|
da027966c0 | |
|
|
87fdcc7f16 | |
|
|
3f46d3aa32 | |
|
|
5ffd77ef0b | |
|
|
a7ca8f96cb | |
|
|
bd2fede501 | |
|
|
f8ace75f36 | |
|
|
de2979219e | |
|
|
bf89569794 | |
|
|
f25d340738 | |
|
|
56f876d25e | |
|
|
04df53ee4b | |
|
|
5ac75f5cf3 | |
|
|
40b8963d74 | |
|
|
8d3d7c9648 | |
|
|
668c8c806b | |
|
|
8562c2dbfb | |
|
|
585575dce7 | |
|
|
990db6fdc8 | |
|
|
5fb85d02a2 | |
|
|
833acf49a1 | |
|
|
a96cede14f | |
|
|
903417ab79 | |
|
|
d76c64c2d6 | |
|
|
951c07b76d | |
|
|
769fab5e84 | |
|
|
6eebeb62c1 | |
|
|
53e9b3f9f7 | |
|
|
b90ed72ef6 | |
|
|
11bde80a36 | |
|
|
003b0f9892 | |
|
|
3156882cba | |
|
|
de09ffd7b1 | |
|
|
ce552f9f0c | |
|
|
502b1af775 | |
|
|
4212a695f0 | |
|
|
04632078d1 | |
|
|
94c436b137 | |
|
|
4244b0b3ae | |
|
|
7baffaf490 | |
|
|
b8a160f746 | |
|
|
5e3e3a1480 | |
|
|
1e3b71825b | |
|
|
7d649185cb | |
|
|
3ff4f05e51 | |
|
|
d8cffd8c2c | |
|
|
8fe7178a13 | |
|
|
d2b680e477 | |
|
|
c07cad01e9 | |
|
|
9c3798b155 | |
|
|
06069644fd | |
|
|
f3e7fcef33 | |
|
|
e64614274c | |
|
|
9b252d8577 | |
|
|
1db3436e2a | |
|
|
0f58934ae4 | |
|
|
ec84ce8119 | |
|
|
369c5582a6 | |
|
|
8c4ea1f749 | |
|
|
7649fef2c2 | |
|
|
958996f119 | |
|
|
7719ac4277 | |
|
|
8930ba1ddc | |
|
|
ee63826836 | |
|
|
7c0a105c92 | |
|
|
c8ababb8e4 | |
|
|
384a63f76f | |
|
|
f6c4d50bb3 | |
|
|
84c15d2b28 | |
|
|
6d46dfafc2 | |
|
|
3f076578bb | |
|
|
cc4c379465 | |
|
|
c9f0795a95 | |
|
|
042e93a84b | |
|
|
c9e800b5ab | |
|
|
7257fbffb3 | |
|
|
1f690978bf | |
|
|
3d9cfd134d | |
|
|
017f905330 | |
|
|
796cea4a49 | |
|
|
0178e0ccff | |
|
|
70ed000f08 | |
|
|
294f8520ab | |
|
|
1b28c183f0 | |
|
|
520dceaa97 | |
|
|
2fa85eb964 | |
|
|
3bc6e6fe3b | |
|
|
3dc31df5f1 | |
|
|
8ded8e160b | |
|
|
f4e5662e49 | |
|
|
dba9c35ac8 | |
|
|
3431565f74 | |
|
|
6a42df67b1 | |
|
|
593709808f | |
|
|
3a2b59f7cc | |
|
|
b7d9b969b4 | |
|
|
cacf0e0534 | |
|
|
e2239dcb99 | |
|
|
c769a449f2 | |
|
|
3cff729a8a | |
|
|
c44db23b31 | |
|
|
485f5400db | |
|
|
a2329fdae5 | |
|
|
a388ec234c | |
|
|
a3b3f8922d | |
|
|
6b6eed3aa0 | |
|
|
fd48e5ca97 | |
|
|
fbc29246ff | |
|
|
1569828c67 | |
|
|
bb73fafeff | |
|
|
f76a41ff14 | |
|
|
4351751193 | |
|
|
044ad518e0 | |
|
|
5b976adb1d | |
|
|
74732ec9a9 | |
|
|
5c85dc9cd4 | |
|
|
66966501f8 | |
|
|
30af685edf | |
|
|
96d1568c13 | |
|
|
7c04b35b44 | |
|
|
004cd5fbcb | |
|
|
8e37cdd218 | |
|
|
ba6807b7f3 | |
|
|
59a8b4d2d7 | |
|
|
f72aac8848 | |
|
|
41c6d5b7f1 | |
|
|
554d8d27b7 | |
|
|
c337c21a03 | |
|
|
0f9d502e4f | |
|
|
c961de3391 | |
|
|
aec7ede184 | |
|
|
d338e5914e | |
|
|
36971ad662 | |
|
|
d2c8885afa | |
|
|
e9b0694c0b | |
|
|
14aa681e7d | |
|
|
c2e3545f46 | |
|
|
aed5afbfa7 | |
|
|
9b7c6ee3fe | |
|
|
a8322872ab | |
|
|
e5318b688b | |
|
|
455259f3ef | |
|
|
7d2d29a42c | |
|
|
5ed9fd75cc | |
|
|
ca71642ecf | |
|
|
4369288928 | |
|
|
f167bbf2c4 | |
|
|
1b60af57e0 | |
|
|
947202f915 | |
|
|
7eb6371104 | |
|
|
c315f366f3 | |
|
|
f2a2a98ad9 | |
|
|
5b606153de | |
|
|
87396a1b5e | |
|
|
b35a2987cc | |
|
|
2baed25204 | |
|
|
3f5a3f9ded | |
|
|
6189a7bbdb | |
|
|
d1cda34a52 | |
|
|
fdbacba4bb | |
|
|
5c56f3a2db | |
|
|
17bb35c559 | |
|
|
ed25f0fdde | |
|
|
a18e35f4c3 | |
|
|
f9817da531 | |
|
|
d94c6321aa | |
|
|
3c77bad4ae | |
|
|
aa36776490 | |
|
|
d375b04941 | |
|
|
cceb0b1721 | |
|
|
e364f9da1c | |
|
|
aec847070f | |
|
|
11f7440273 | |
|
|
02cde83181 | |
|
|
a302c87724 | |
|
|
d61ef86dd6 | |
|
|
071fe476a6 | |
|
|
9b611d1dcb | |
|
|
61c1720fd7 | |
|
|
962267de1d | |
|
|
f632929183 | |
|
|
308858a0d0 | |
|
|
db7e0770b2 | |
|
|
195ef2c44f | |
|
|
48d3952e68 | |
|
|
96570502cc | |
|
|
759b5a6f49 | |
|
|
92710be337 | |
|
|
c721359eea | |
|
|
79ea1729cc | |
|
|
8c4520d4b7 | |
|
|
b703f77f80 | |
|
|
13b1d9f15f | |
|
|
e989e623db | |
|
|
2113d009f4 | |
|
|
e967d09c8b | |
|
|
c050c4f94c | |
|
|
97cea97307 | |
|
|
826340c9be | |
|
|
28dfc70474 | |
|
|
e9038157be | |
|
|
be21550c6a | |
|
|
db87a2aae2 | |
|
|
97ac8268b6 | |
|
|
941835b5ee | |
|
|
b050d7cb61 | |
|
|
7d64545031 | |
|
|
892bfa5e16 | |
|
|
b165e6d27c | |
|
|
f0a72d5e40 | |
|
|
869d4c31ad | |
|
|
a7788b98ed | |
|
|
1045690678 | |
|
|
09548dbcdc | |
|
|
0a4949c75a | |
|
|
f36e904faf | |
|
|
f9a6f501e1 | |
|
|
f9629f5ef1 | |
|
|
084b0d65f3 | |
|
|
5935ee9d40 | |
|
|
ac66bfddb9 | |
|
|
62ccb31793 | |
|
|
4e243962d1 | |
|
|
51202a1def | |
|
|
d799242714 | |
|
|
e37142e0f4 | |
|
|
79dcc111da | |
|
|
651557bfc2 | |
|
|
5456e7ac53 | |
|
|
03f8a2704e | |
|
|
ceab3232ad | |
|
|
6a0576cb7a | |
|
|
2935c890cf | |
|
|
36f13ce164 | |
|
|
6aec3c0c7b | |
|
|
147a2a6abf | |
|
|
f7ec79eb75 | |
|
|
32e4afd90f | |
|
|
bf40b1f36b | |
|
|
94ba6c1813 | |
|
|
ca57425525 | |
|
|
535a7c0490 | |
|
|
d97fc38a88 | |
|
|
1caca70e0f | |
|
|
427c1c2a00 | |
|
|
01f4254f05 | |
|
|
8bf78d3ba0 | |
|
|
10a4ceaf90 | |
|
|
df66fa49a4 | |
|
|
d689ba43af | |
|
|
dc43ff1b0a | |
|
|
49ae15ce98 | |
|
|
1e26e5ff6c | |
|
|
8391d2ebd2 | |
|
|
fd81e75729 | |
|
|
e51e4e3ae6 | |
|
|
b3ac5df522 | |
|
|
11944eb07c | |
|
|
42dda3d91d | |
|
|
fb0582ded7 | |
|
|
1e7fa33527 | |
|
|
8bdbf31465 | |
|
|
e739b784ec | |
|
|
4a6cb3601e | |
|
|
7993467346 | |
|
|
287e4421c9 | |
|
|
aa57797297 | |
|
|
2667e96549 | |
|
|
22dbcd206b | |
|
|
aaf586721d | |
|
|
d5c14ef3f4 | |
|
|
93dfb07af9 | |
|
|
8e734864c2 | |
|
|
d1cb3c11aa | |
|
|
82923f9e98 | |
|
|
235d51ed9a | |
|
|
1baebf9d62 | |
|
|
56cdbe5d2f | |
|
|
06de101ded | |
|
|
59ab83538f | |
|
|
b04c17a4fd | |
|
|
5b0490b352 | |
|
|
8de47f2ecb | |
|
|
783464c065 | |
|
|
6b3f59788b | |
|
|
45ab7066cc | |
|
|
df013b9ba3 | |
|
|
bb83f74fb4 | |
|
|
da044864d1 | |
|
|
db7c12fdb4 | |
|
|
5b0a5e4c46 | |
|
|
0f1dde545e | |
|
|
b45e357418 | |
|
|
fa6c79c367 | |
|
|
760609cafd | |
|
|
cb3443aa4c | |
|
|
9384c6db79 | |
|
|
1a800d7d6a | |
|
|
352701ae7d | |
|
|
b4d0b4c985 | |
|
|
26e67dab66 | |
|
|
e604dcdffa | |
|
|
9b56343a81 | |
|
|
aef2d56fba | |
|
|
cb7a358c6c | |
|
|
c8690b316b | |
|
|
91bba7f522 | |
|
|
439902dce8 | |
|
|
19854f70a3 | |
|
|
8291a65a15 | |
|
|
9433287cee | |
|
|
f0a046ff7f | |
|
|
877c4da5bf | |
|
|
229a4ef573 | |
|
|
cf5e784550 | |
|
|
e58bbbeacf | |
|
|
1c2ac2a308 | |
|
|
3133beb82f | |
|
|
18d2281011 | |
|
|
7d9edddf82 | |
|
|
1c335f83e9 | |
|
|
68a9974df8 | |
|
|
efb38d5825 | |
|
|
a48d2175ba | |
|
|
8bffc8f82a | |
|
|
1870635697 | |
|
|
4e0c4a00e2 | |
|
|
4b055f7ffa | |
|
|
d6f0e5b0da | |
|
|
4cf0d8f1b9 | |
|
|
cc9b470bfe | |
|
|
01d995b031 | |
|
|
c383adb9a0 | |
|
|
4ad2d87020 | |
|
|
9284594901 | |
|
|
a3c469f032 | |
|
|
17f71ad803 | |
|
|
1913af4b7d | |
|
|
8c382f97d1 | |
|
|
89fda153de | |
|
|
3fc3fe5912 | |
|
|
acdb755071 | |
|
|
c680bb5461 | |
|
|
ce32a56cdf | |
|
|
7137cbab08 | |
|
|
3f7b1e54e9 | |
|
|
cf76fd412e | |
|
|
ab0afff087 | |
|
|
e3811e2609 | |
|
|
47a3d66d5c | |
|
|
2700b4ff12 | |
|
|
6a1897b95c | |
|
|
e5768da21b | |
|
|
dc8efcbd6b | |
|
|
01c4ad1f06 | |
|
|
4a848948a0 | |
|
|
a96a70400f | |
|
|
cc0d2a402b | |
|
|
415de9ca66 | |
|
|
7e57885988 | |
|
|
013dcedd37 | |
|
|
b011256370 | |
|
|
752ccbb603 | |
|
|
8612012783 | |
|
|
f78167b711 | |
|
|
ef9b7e6d1b | |
|
|
748b95854e | |
|
|
2f10c88375 | |
|
|
73c9a54d94 | |
|
|
eff414b40c | |
|
|
ccbf76dc5a | |
|
|
5b6e83751b | |
|
|
572294f646 | |
|
|
4e18d36c79 | |
|
|
ee9994231b | |
|
|
fb4cfdb772 | |
|
|
8535232598 | |
|
|
abbb666eae | |
|
|
d48fc882f1 | |
|
|
f968bd9ffa | |
|
|
c0592276de | |
|
|
451679d565 | |
|
|
e579134152 | |
|
|
6e57cf558c | |
|
|
d00428c30a | |
|
|
9becccce39 | |
|
|
64a9e8371c | |
|
|
8a85334f68 | |
|
|
41a5ba61c8 | |
|
|
c780ccfbcf | |
|
|
6091c886d7 | |
|
|
d05009ce44 | |
|
|
ef1eefb084 | |
|
|
e57042b1b4 | |
|
|
0b0eff8653 | |
|
|
f6cef18c6b | |
|
|
e8522fe3d7 | |
|
|
fcb8a38e50 | |
|
|
6c3a645edd | |
|
|
b9d0ac6dab | |
|
|
3f270b0b75 | |
|
|
7bc15ba61e | |
|
|
37bb3ce0df | |
|
|
66b0172195 | |
|
|
ca2f5c549e | |
|
|
21b221f9e9 | |
|
|
5fcbef3c5b | |
|
|
bc9d200461 | |
|
|
8c903d5f4c | |
|
|
c253617346 | |
|
|
ca2b405989 | |
|
|
0fd8469d9a | |
|
|
5cce94eefc | |
|
|
c4c6a2b0f2 | |
|
|
73a61080ae | |
|
|
0164e5b791 | |
|
|
bb29c637ff | |
|
|
a8e9fffdac | |
|
|
d81c7fcdd8 | |
|
|
4d07e9fec5 | |
|
|
3b982a84c3 | |
|
|
072fdcdc95 | |
|
|
07c38baa83 | |
|
|
ed669a88be | |
|
|
71ad991ba7 | |
|
|
05128a997e | |
|
|
92a816b9ae | |
|
|
4a9b6e5e5c | |
|
|
0e69ccdba6 | |
|
|
3f9dc0c58e | |
|
|
cbd414485f | |
|
|
ccb818043c | |
|
|
07d4fd65ef | |
|
|
4dd7a9dd3d | |
|
|
9ecaa3836c | |
|
|
511ad909bf | |
|
|
8fe6ffd3b2 | |
|
|
d0f8d7514a | |
|
|
78d80bc129 | |
|
|
09bd082759 | |
|
|
70b4be757d | |
|
|
486bfa9aba | |
|
|
e19cd51803 | |
|
|
2d8eeee425 | |
|
|
ef35236c58 | |
|
|
eb676d9841 | |
|
|
2301eedc8b | |
|
|
2bc5c9f9ce | |
|
|
44bae8b515 | |
|
|
ed34055290 | |
|
|
8a9842c219 | |
|
|
b449a1140c | |
|
|
3b2e567387 | |
|
|
f3c7695409 | |
|
|
15aefd48d3 | |
|
|
f6c8e84b7b | |
|
|
1865da3477 | |
|
|
b25cf463eb | |
|
|
4ef14c248a | |
|
|
165a8e4572 | |
|
|
a6df45a571 | |
|
|
b24c6010d2 | |
|
|
bb2dd77646 | |
|
|
60f451d073 | |
|
|
4c182157eb | |
|
|
dd9de6ba42 | |
|
|
a09e13fb00 |
|
|
@ -1 +1,2 @@
|
|||
admin_interface/static/ckeditor/* linguist-vendored
|
||||
admin_interface/static/admin_interface/magnific-popup/* linguist-vendored=true
|
||||
admin_interface/static/ckeditor/* linguist-vendored=true
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
github: [fabiocaccamo]
|
||||
polar: fabiocaccamo
|
||||
ko_fi: fabiocaccamo
|
||||
liberapay: fabiocaccamo
|
||||
tidelift: pypi/django-admin-interface
|
||||
custom: ["https://www.buymeacoffee.com/fabiocaccamo", "https://www.paypal.me/fabiocaccamo"]
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Report a bug for this project
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: fabiocaccamo
|
||||
|
||||
---
|
||||
|
||||
**Python version**
|
||||
?
|
||||
|
||||
**Django version**
|
||||
?
|
||||
|
||||
**Package version**
|
||||
?
|
||||
|
||||
**Current behavior (bug description)**
|
||||
?
|
||||
|
||||
**Expected behavior**
|
||||
?
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: enhancement
|
||||
assignees: fabiocaccamo
|
||||
|
||||
---
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
version: 2
|
||||
updates:
|
||||
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
open-pull-requests-limit: 100
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
open-pull-requests-limit: 100
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
name: Pull request
|
||||
about: Submit a pull request for this project
|
||||
assignees: fabiocaccamo
|
||||
|
||||
---
|
||||
|
||||
**Describe your changes**
|
||||
?
|
||||
|
||||
**Related issue**
|
||||
?
|
||||
|
||||
**Checklist before requesting a review**
|
||||
- [ ] I have performed a self-review of my code.
|
||||
- [ ] I have added tests for the proposed changes.
|
||||
- [ ] I have run the tests and there are not errors.
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ main ]
|
||||
schedule:
|
||||
- cron: '26 21 * * 0'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'javascript', 'python' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||
# Learn more:
|
||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v3
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
name: Create release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '*.*.*'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
# environment: release
|
||||
permissions:
|
||||
id-token: write
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Extract release notes
|
||||
id: extract-release-notes
|
||||
uses: ffurrer2/extract-release-notes@v2
|
||||
|
||||
- name: Create release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
body: ${{ steps.extract-release-notes.outputs.release_notes }}
|
||||
token: ${{ secrets.WORKFLOWS_CREATE_RELEASE_TOKEN }}
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
cache: 'pip'
|
||||
|
||||
- name: Build Package
|
||||
run: |
|
||||
pip install pip --upgrade
|
||||
pip install build
|
||||
python -m build
|
||||
|
||||
- name: Publish on PyPI
|
||||
uses: pypa/gh-action-pypi-publish@release/v1
|
||||
with:
|
||||
packages-dir: dist/
|
||||
# password: ${{ secrets.WORKFLOWS_PUBLISH_TO_PYPI_TOKEN }}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
name: Pre-commit auto-update
|
||||
|
||||
on:
|
||||
# every month
|
||||
schedule:
|
||||
- cron: "0 0 1 * *"
|
||||
# on demand
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
auto-update:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
- uses: browniebroke/pre-commit-autoupdate-action@main
|
||||
- uses: peter-evans/create-pull-request@v6
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
branch: update/pre-commit-hooks
|
||||
title: Update pre-commit hooks
|
||||
commit-message: "Update pre-commit hooks."
|
||||
body: Update versions of pre-commit hooks to latest version.
|
||||
|
|
@ -0,0 +1,125 @@
|
|||
name: Test package
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
|
||||
prepare:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Create matrix
|
||||
uses: fabiocaccamo/create-matrix-action@v4
|
||||
id: create_matrix
|
||||
with:
|
||||
matrix: |
|
||||
python-version {3.8}, django-version {3.0, 3.1, 3.2, 4.0, 4.1, 4.2}, database {sqlite, postgres}
|
||||
python-version {3.9}, django-version {3.0, 3.1, 3.2, 4.0, 4.1, 4.2}, database {sqlite, postgres}
|
||||
python-version {3.10}, django-version {3.2, 4.0, 4.1, 4.2, 5.0}, database {sqlite, postgres}
|
||||
python-version {3.11}, django-version {4.1, 4.2, 5.0}, database {sqlite, postgres}
|
||||
python-version {3.12}, django-version {4.2, 5.0}, database {sqlite, postgres}
|
||||
|
||||
outputs:
|
||||
matrix: ${{ steps.create_matrix.outputs.matrix }}
|
||||
|
||||
|
||||
lint:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
cache: 'pip'
|
||||
|
||||
- name: Install tools needed
|
||||
run: |
|
||||
sudo apt install gettext
|
||||
python -m pip install --upgrade pip
|
||||
pip install tox
|
||||
|
||||
- name: Check migrations
|
||||
run: |
|
||||
tox -e migrations
|
||||
|
||||
- name: Check translations
|
||||
run: |
|
||||
tox -e translations
|
||||
|
||||
|
||||
test:
|
||||
|
||||
needs: [prepare]
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include: ${{fromJson(needs.prepare.outputs.matrix)}}
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:latest
|
||||
env:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
POSTGRES_DB: postgres
|
||||
ports:
|
||||
- 5432:5432
|
||||
# needed because the postgres container does not provide a healthcheck
|
||||
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
||||
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install psycopg2 prerequisites
|
||||
run: sudo apt install libpq-dev
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
cache: 'pip'
|
||||
|
||||
- name: Upgrade pip version
|
||||
run: |
|
||||
pip install pip --upgrade
|
||||
|
||||
- name: Install django
|
||||
run: |
|
||||
pip install "Django == ${{ matrix.django-version }}.*"
|
||||
|
||||
- name: Install requirements
|
||||
run: |
|
||||
pip install -r requirements.txt
|
||||
pip install -r requirements-test.txt
|
||||
|
||||
- name: Run pre-commit
|
||||
run: |
|
||||
pre-commit run --all-files --show-diff-on-failure --verbose
|
||||
|
||||
- name: Run tests
|
||||
env:
|
||||
DATABASE_ENGINE: ${{ matrix.database }}
|
||||
run: |
|
||||
coverage run --append --source=admin_interface runtests.py
|
||||
coverage report --show-missing
|
||||
coverage xml -o ./coverage.xml
|
||||
|
||||
- name: Upload coverage to Codecov
|
||||
uses: codecov/codecov-action@v4
|
||||
with:
|
||||
fail_ci_if_error: false
|
||||
files: ./coverage.xml
|
||||
flags: unittests
|
||||
verbose: true
|
||||
|
|
@ -5,6 +5,10 @@ __pycache__/
|
|||
# C extensions
|
||||
*.so
|
||||
|
||||
## Local setup
|
||||
.vscode/
|
||||
.venv/
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
env/
|
||||
|
|
@ -44,7 +48,6 @@ coverage.xml
|
|||
*,cover
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
|
|
@ -55,3 +58,7 @@ docs/_build/
|
|||
|
||||
# PyBuilder
|
||||
target/
|
||||
screenshots
|
||||
TODO.txt
|
||||
|
||||
.idea/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
# See https://pre-commit.com for more information
|
||||
# See https://pre-commit.com/hooks.html for more hooks
|
||||
repos:
|
||||
|
||||
- repo: https://github.com/asottile/pyupgrade
|
||||
rev: v3.15.2
|
||||
hooks:
|
||||
- id: pyupgrade
|
||||
args: ["--py38-plus"]
|
||||
|
||||
- repo: https://github.com/adamchainz/django-upgrade
|
||||
rev: 1.16.0
|
||||
hooks:
|
||||
- id: django-upgrade
|
||||
args: ["--target-version", "3.0"]
|
||||
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.3.4
|
||||
hooks:
|
||||
- id: ruff
|
||||
args: [--fix, --exit-non-zero-on-fix]
|
||||
- id: ruff-format
|
||||
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.5.0
|
||||
hooks:
|
||||
- id: fix-encoding-pragma
|
||||
args: [--remove]
|
||||
- id: trailing-whitespace
|
||||
- id: end-of-file-fixer
|
||||
- id: check-yaml
|
||||
- id: check-added-large-files
|
||||
22
.travis.yml
22
.travis.yml
|
|
@ -1,22 +0,0 @@
|
|||
language: python
|
||||
python: 3.5
|
||||
env:
|
||||
- TOX_ENV=py27-17
|
||||
- TOX_ENV=py27-18
|
||||
- TOX_ENV=py27-19
|
||||
- TOX_ENV=py27-110
|
||||
- TOX_ENV=py34-17
|
||||
- TOX_ENV=py34-18
|
||||
- TOX_ENV=py34-19
|
||||
- TOX_ENV=py34-110
|
||||
- TOX_ENV=py35-18
|
||||
- TOX_ENV=py35-19
|
||||
- TOX_ENV=py35-110
|
||||
#- TOX_ENV=py36-18
|
||||
#- TOX_ENV=py36-19
|
||||
#- TOX_ENV=py36-110
|
||||
install:
|
||||
- pip install tox
|
||||
script:
|
||||
- tox -e $TOX_ENV
|
||||
sudo: false
|
||||
|
|
@ -0,0 +1,446 @@
|
|||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.28.6](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.28.6) - 2024-03-07
|
||||
- [python] Fix date hierarchy params. #374 (by [@jeroenpeters1986](https://github.com/jeroenpeters1986) in #375)
|
||||
- [js] Open any link with `_popup=1` query-string parameter in a modal window.
|
||||
- [ci] Bump requirements.
|
||||
- [ci] Bump `pre-commit` hooks.
|
||||
|
||||
## [0.28.5](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.28.5) - 2024-01-30
|
||||
- [css] Fix related widget height and buttons alignment when there is a multiline label.
|
||||
- [css] Fix inputs height when there is a multiline label.
|
||||
|
||||
## [0.28.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.28.4) - 2024-01-29
|
||||
- [css] Fix header logo not displayed correctly.
|
||||
|
||||
## [0.28.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.28.3) - 2024-01-08
|
||||
- [css] Fix help text horizontal alignment when using `show-fieldsets-as-tabs` / `show-inlines-as-tabs` theme options. #317
|
||||
- [css] Fix file-upload widget margin-left.
|
||||
- [css] Fix related widget links add button position on `many-to-many` selector.
|
||||
- [css] Fix related widget links margin from `select2` (`autocomplete_fields`).
|
||||
- [css] Reduce paginator vertical padding.
|
||||
|
||||
## [0.28.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.28.2) - 2024-01-08
|
||||
- [css] Fix related widget icon alignment. #348 #350
|
||||
|
||||
## [0.28.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.28.1) - 2023-12-28
|
||||
- [python] Fix `TemplateDoesNotExist` when using `django-nested-admin` by returning custom template for other third-party packages. #341 (by [@markdrrr](https://github.com/markdrrr) in #342)
|
||||
- [html] Display language chooser language name uppercase.
|
||||
- [css] Move save buttons to right in change form.
|
||||
- [css] Fix related widget links icons size and vertical alignment.
|
||||
- [css] Fix admin `raw_id_fields` appearance.
|
||||
- [css] Fix `autocomplete_fields` appearance.
|
||||
- [ci] Bump requirements.
|
||||
|
||||
### Contributors
|
||||
- [@markdrrr](https://github.com/markdrrr)
|
||||
|
||||
## [0.28.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.28.0) - 2023-12-21
|
||||
- [html] Remove old `flat-theme` body class.
|
||||
- [html] Remove `type="text/css"` and `type="text/javascript"` attributes.
|
||||
- [css] Fix filter input fields collapsing on different layouts. #338
|
||||
- [css] Fix paginator buttons height.
|
||||
- [css] Fix `foldable-apps` +/- button vertical alignment.
|
||||
- [css] Split `admin-interface-fix.css` CSS file into multiple files for easier debugging.
|
||||
- [css] Rename `form-controls.css` to `sticky-form-controls.css`.
|
||||
- [css] Move third-party compatibility CSS files to a `third-party` folder.
|
||||
- [css] Move `related-modal.css` to related-modal plugin folder.
|
||||
- [third-party] Update compatibility with `django-streamfield`.
|
||||
- [ci] Replace `Black` and `isort` with `Ruff-format`.
|
||||
- [ci] Bump `pre-commit` hooks.
|
||||
|
||||
## [0.27.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.27.0) - 2023-12-05
|
||||
- Add `Python 3.12` support.
|
||||
- Add `Django 5.0` support.
|
||||
- Fix broken language-chooser with `i18n_patterns(..., prefix_default_language=False)`. #327 (by [@julianwachholz](https://github.com/julianwachholz) in #328)
|
||||
- Simplify language-chooser. #327 (by [@julianwachholz](https://github.com/julianwachholz) in #328)
|
||||
- Speed-up test workflow.
|
||||
- Bump requirements.
|
||||
- Bump `pre-commit` hooks.
|
||||
|
||||
### Contributors
|
||||
- [@julianwachholz](https://github.com/julianwachholz)
|
||||
|
||||
## [0.26.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.26.1) - 2023-09-05
|
||||
- Fix logout and theme buttons style. #246
|
||||
- Add Russian translation. (by [@rustzzdevel](https://github.com/rustzzdevel) in #295)
|
||||
- Update Italian translations.
|
||||
- Update Spanish translations. (by [@smunoz-ml](https://github.com/smunoz-ml) in #307)
|
||||
- Prevent multiple `.collapse-toggle` button.
|
||||
- Bump requirements.
|
||||
- Bump `pre-commit` hooks.
|
||||
|
||||
## [0.26.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.26.0) - 2023-05-11
|
||||
- Add options for collapsible inlines. #263 (by [@fabiocaccamo](https://github.com/fabiocaccamo) in #282)
|
||||
- Bump requirements.
|
||||
- Bump `pre-commit` hooks.
|
||||
|
||||
## [0.25.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.25.0) - 2023-04-18
|
||||
- Add `Django 4.2` support.
|
||||
- Drop `Django 2.2` support.
|
||||
- Fix `date_hierarchy` with multiple fields (`ForeignKey`). #244
|
||||
- Fix tabs not working with non-ASCII alphanumeric characters. #237
|
||||
- Fix multidb tests.
|
||||
- Add `css_generic_link_active_color` field to use on active tab (tabbed changeform). #232
|
||||
- Replace `flake8` with `Ruff`.
|
||||
- Switch from `setup.py` to `pyproject.toml`.
|
||||
- Add `pyupgrade` to `pre-commit` config.
|
||||
- Add `django-upgrade` to `pre-commit` hooks.
|
||||
- Upgrade syntax for `Python >= 3.8`.
|
||||
- Run `pre-commit` also with `tox`.
|
||||
- Reformat migrations.
|
||||
- Bump requirements.
|
||||
- Bump `pre-commit` hooks.
|
||||
- Pin test requirements.
|
||||
- Add pull request template.
|
||||
- Add `CODE_OF_CONDUCT.md`. #238
|
||||
- Rename default branch from `master` to `main`.
|
||||
|
||||
## [0.24.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.24.2) - 2022-12-19
|
||||
- Fix modal and popup opening at the same time. #228
|
||||
- Make `Theme.get_active_theme` class method a manager method. (by [@MounirMesselmeni](https://github.com/MounirMesselmeni) in #230)
|
||||
|
||||
## [0.24.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.24.1) - 2022-12-14
|
||||
- Fix modal opener buttons not working when added to the DOM asynchronously. #228
|
||||
- [css] Improve changelist filter margins.
|
||||
|
||||
## [0.24.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.24.0) - 2022-12-11
|
||||
- Drop `Python < 3.8` and `Django < 2.2` versions support. (by [@merwok](https://github.com/merwok) in #220)
|
||||
- Replace `str.format` with `f-strings`.
|
||||
- Remove `post_migrate` signal handler and multi db test.
|
||||
- Add german translation. (by [@derzinn](https://github.com/derzinn) in #222)
|
||||
- Include date hierarchy in quick removal links (by [@merwok](https://github.com/merwok) in #218)
|
||||
- Fix broken tabbed inline name. (by [@VaZark](https://github.com/VaZark) in #221)
|
||||
- Minor cleanups. (by [@merwok](https://github.com/merwok) in #225)
|
||||
- Bump actions and requirements.
|
||||
- [css] Fix inlines vertical alignement. (by [@VaZark](https://github.com/VaZark) in #201)
|
||||
- [css] Fix tabbed changeform tabs text color on focus. (by [@VaZark](https://github.com/VaZark) in #223)
|
||||
- [CI] Add Farsi language to `tests.settings.LANGUAGES`. (by [@merwok](https://github.com/merwok))
|
||||
- [CI] Update `pre-commit` config.
|
||||
- [CI] Automate package build and publish on PyPI.
|
||||
|
||||
## [0.23.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.23.0) - 2022-11-30
|
||||
- Add `Python 3.11` support.
|
||||
- Add tabbed changeform support. (by [@VaZark](https://github.com/VaZark) in #211)
|
||||
- Fix #208 / Do not assume active DB when not specified. (by [@VaZark](https://github.com/VaZark) in #210)
|
||||
- Update translations.
|
||||
- Bump actions and requirements.
|
||||
- [css] Adjust list filter dropdown vertical margins.
|
||||
- [css] Improve nav filter style. #214
|
||||
- [css] Improve language chooser style.
|
||||
- [css] Reduce secondary scrollbars size.
|
||||
- [CI] Update `dependabot.yml`
|
||||
- [CI] Add `pre-commit-autoupdate.yml` workflow.
|
||||
- [CI] Update `pre-commit` hooks.
|
||||
|
||||
## [0.22.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.22.2) - 2022-11-18
|
||||
- [CI] Add `django 4.1` to tests.
|
||||
- [CI] Add `pre-commit` with `black`, `isort` and `flake8`.
|
||||
- Respect `using` in signals. #199 (by [@VaZark](https://github.com/VaZark) in #200)
|
||||
- Remove translations line numbers to avoid `lint` step failures.
|
||||
|
||||
## [0.22.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.22.1) - 2022-10-13
|
||||
- Fix `KeyError` raised by `django-rangefilter`.
|
||||
- [css] Add `django-rangefilter` style optimizations.
|
||||
- [css] Fix list-filter dropdown vertical margins.
|
||||
- [css] Fix calendar prev/next arrows style.
|
||||
|
||||
## [0.22.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.22.0) - 2022-10-12
|
||||
- Add CI checks for migrations and translations. #184 (by [@merwok](https://github.com/merwok) in #186)
|
||||
- Add option for list filter quick remove. #181 (by [@merwok](https://github.com/merwok) in #183)
|
||||
- [css] Fix left/right scrolling broken with django-import-export. #165
|
||||
- [html] Fix duplicated welcome message. #185
|
||||
|
||||
## [0.21.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.21.0) - 2022-10-06
|
||||
- Add language chooser control option (default select, minimal select). #136
|
||||
- Add option to make active list filters more visible. #174 (by [@merwok](https://github.com/merwok) in #178)
|
||||
- Add support for collapsible fieldsets that start expanded. #173 (by [@merwok](https://github.com/merwok) in #177)
|
||||
- [js] Fix modal window not closing on save with `django >= 4.0`. #169
|
||||
- [css] Move `language-chooser` style to its own CSS file.
|
||||
- [css] Fix sticky list filter scrolling. #175
|
||||
- [css] Fix paginator missing `border-top` on mobile.
|
||||
|
||||
## [0.20.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.20.0) - 2022-08-25
|
||||
- Add `django-streamfield` compatibility.
|
||||
|
||||
## [0.19.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.19.2) - 2022-08-04
|
||||
- Fix `hashlib` compatibility with `FIPS` enabled systems. #167 (by [@jonlev1n](https://github.com/jonlev1n) in #168)
|
||||
|
||||
## [0.19.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.19.1) - 2022-05-14
|
||||
- [css] Fixed dashboard alignment when recent-actions are not visible.
|
||||
|
||||
## [0.19.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.19.0) - 2022-03-08
|
||||
- Converted dynamic inline CSS to external static CSS using CSS variables. #157 #93 (thanks to [@Mustafa-Abu-Ghazy](https://github.com/Mustafa-Abu-Ghazy))
|
||||
|
||||
## [0.18.7](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.18.7) - 2022-02-24
|
||||
- Removed public disclosures of the lib's version. #154 (thanks to [@mintyPT](https://github.com/mintyPT))
|
||||
- Reformatted code with **Black**.
|
||||
|
||||
## [0.18.6](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.18.6) - 2022-02-04
|
||||
- Added polish (`pl`) localization by [paduszyk](https://github.com/paduszyk). #152
|
||||
- Fixed login logo `max-width` and title `color`.
|
||||
|
||||
## [0.18.5](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.18.5) - 2022-01-21
|
||||
- Added portuguese brazil (`pt_BR`) localization by [leandromsd](https://github.com/leandromsd). #149
|
||||
- Fixed body scroll reset to top when opening related modal. #150
|
||||
|
||||
## [0.18.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.18.4) - 2022-01-05
|
||||
- Added official django 4.0 support.
|
||||
- Added link to admin home page on logo and title. #147
|
||||
- Fixed collapsed inlines rounded bottom borders.
|
||||
- Fixed missing comma in tests settings `MIDDLEWARE_CLASSES`. #145
|
||||
|
||||
## [0.18.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.18.3) - 2021-12-07
|
||||
- Added official python 3.10 support.
|
||||
- Replaced travis with GitHub action workflow. #142
|
||||
- Fixed `check_installed_apps` checks.
|
||||
- Fixed django default appconfig deprecation warning. #141
|
||||
|
||||
## [0.18.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.18.2) - 2021-10-25
|
||||
- Fixed migration error.
|
||||
|
||||
## [0.18.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.18.1) - 2021-10-25
|
||||
- Removed wrong migration.
|
||||
|
||||
## [0.18.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.18.0) - 2021-10-24
|
||||
- Added foldable apps support. #117
|
||||
- Removed `css` field from `Theme` model.
|
||||
|
||||
## [0.17.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.17.3) - 2021-10-12
|
||||
- Fixed `FileExtensionValidator` `TypeError` on django < 1.11.
|
||||
|
||||
## [0.17.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.17.2) - 2021-10-08
|
||||
- Fixed `FileExtensionValidator` `TypeError` on django < 1.11.
|
||||
|
||||
## [0.17.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.17.1) - 2021-09-24
|
||||
- Fixed `TemplateDoesNotExist` error on `django==4.0.a1` removing checking condition for `colorfield` package. #134
|
||||
- Fixed favicon fetching incompatible with `django-storages` `S3`. #128
|
||||
|
||||
## [0.17.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.17.0) - 2021-09-16
|
||||
- Added `logo_max_width` and `logo_max_height`. #127
|
||||
|
||||
## [0.16.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.16.4) - 2021-09-04
|
||||
- Fixed `0020_module_selected_colors` migration for multiple dbs. #132
|
||||
- Fixed sticky pagination `width` and `border-bottom`.
|
||||
- Fixed inlines vertical overlow.
|
||||
- Improved header elements vertical alignment.
|
||||
|
||||
## [0.16.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.16.3) - 2021-04-26
|
||||
- Added `compat` module.
|
||||
- Added missing `0021_file_extension_validator` migration. #126
|
||||
- Formatted migrations.
|
||||
|
||||
## [0.16.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.16.2) - 2021-04-23
|
||||
- Added `python 3.9` and `django 3.2` to CI.
|
||||
- Added `FileExtensionValidator` to `logo` and `favicon` fields. #112
|
||||
- Fixed `models.W042` warning on `django 3.2`.
|
||||
- Fixed header `min-height`.
|
||||
- Fixed selects `min-width`.
|
||||
- Fixed changelist search, actions and submit button horizontal margins.
|
||||
- Fixed related widget wrapper margin/padding with normal select and in inlines.
|
||||
- Fixed tabular inlines horizontal scroll.
|
||||
|
||||
## [0.16.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.16.1) - 2021-04-07
|
||||
- Fixed style of "Delete" and "Save" buttons in the delete confirmation page. #123
|
||||
- Overridden dark-mode css variables introduced in `django 3.2`. #124
|
||||
|
||||
## [0.16.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.16.0) - 2021-03-30
|
||||
- Added customizable colors for selected apps and models in dashboard. #122
|
||||
- Added `responsive_rtl.css` stylesheet. #98
|
||||
- Updated `vazir-font` version to `27.2.2`. #98
|
||||
|
||||
## [0.15.6](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.15.6) - 2021-03-26
|
||||
- Fixed `show_change_link` related modal support. #120
|
||||
- Fixed inline changelink style.
|
||||
- Made globally available `presentRelatedObjectModal` and `presentRelatedObjectModalOnClickOn` js functions.
|
||||
|
||||
## [0.15.5](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.15.5) - 2021-03-02
|
||||
- Fixed sticky submit and pagination `z-index` issue with related modal.
|
||||
|
||||
## [0.15.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.15.4) - 2021-03-01
|
||||
- Fixed sticky submit and pagination `z-index` issue with sticky `list_filter` and `django-json-widget`.
|
||||
|
||||
## [0.15.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.15.3) - 2021-02-08
|
||||
- Fixed sticky submit and pagination width when `admin.site.enable_nav_sidebar = False`. #113
|
||||
|
||||
## [0.15.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.15.2) - 2021-02-03
|
||||
- Fixed body classes template rendering.
|
||||
- Improved sticky submit and pagination backward compatibility.
|
||||
|
||||
## [0.15.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.15.1) - 2021-02-03
|
||||
- Fixed and improved sticky form controls and pagination style.
|
||||
|
||||
## [0.15.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.15.0) - 2021-02-03
|
||||
- Added sticky form controls and pagination options. #110
|
||||
- Added support to 4-digit language code in language chooser. #111
|
||||
- Added theme css variables for third-party libraries.
|
||||
- Fixed app module section link hover color.
|
||||
|
||||
## [0.14.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.14.2) - 2021-01-04
|
||||
- Fixed tabular inline scroll bar. #101
|
||||
- Fixed module header selected link color. #102
|
||||
- Fixed main content width when `admin.site.enable_nav_sidebar = False`. #105
|
||||
|
||||
## [0.14.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.14.1) - 2020-11-12
|
||||
- Fixed sticky list-filter floating. #100
|
||||
|
||||
## [0.14.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.14.0) - 2020-10-15
|
||||
- Added list filter sticky option (only for `django >= 3.1.2`).
|
||||
- Enabled list filter dropdown by default.
|
||||
- Fixed changelist searchbar style.
|
||||
|
||||
## [0.13.7](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.13.7) - 2020-10-14
|
||||
- Improved responsive widgets style.
|
||||
- Prevented body horizontal scroll.
|
||||
- Fixed tabular inline horizontal scroll.
|
||||
- Fixed changelist filter min-width.
|
||||
- Fixed changelist and toolbar theme rounded corners.
|
||||
- Fixed calendar and timelist buttons theme color.
|
||||
- Fixed list filter select size.
|
||||
- Fixed content max-width with `django >= 3.1`.
|
||||
|
||||
## [0.13.6](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.13.6) - 2020-10-14
|
||||
- Added persian language. #98
|
||||
- Fixed logo max-width on small screens.
|
||||
- Fixed content max-width when nav-sidebar is collapsed.
|
||||
- Fixed changelist max-width on medium screens.
|
||||
|
||||
## [0.13.5](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.13.5) - 2020-09-15
|
||||
- Fixed loaddata error with initial_data.json fixture. #97
|
||||
- Fixed tests warning (admin.W411).
|
||||
- Fixed changelist thead links color.
|
||||
- Fixed changelist filter links hover color.
|
||||
|
||||
## [0.13.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.13.4) - 2020-09-04
|
||||
- Added conditional imports to avoid Django deprecation warnings. #92
|
||||
- Changed admin header content vertical align to top.
|
||||
|
||||
## [0.13.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.13.3) - 2020-09-02
|
||||
- Added `django-json-widget` theming support.
|
||||
|
||||
## [0.13.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.13.2) - 2020-08-21
|
||||
- Fixed related modal not closing on edit save and create with django 3.1 - #96
|
||||
|
||||
## [0.13.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.13.1) - 2020-08-18
|
||||
- Improved header and nav-sidebar style.
|
||||
- Added `max-width` to logo.
|
||||
- Added `requirements-dev.txt`
|
||||
|
||||
## [0.13.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.13.0) - 2020-08-05
|
||||
- Improved nav-sidebar style (`django>=3.1` support).
|
||||
- Improved header style.
|
||||
|
||||
## [0.12.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.12.3) - 2020-07-20
|
||||
- Fixed unreadable text in autocomplete multi-selects. #83
|
||||
|
||||
## [0.12.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.12.2) - 2020-04-07
|
||||
- Fixed popup javascript error when related modal is inactive. #76
|
||||
- Fixed js self invoking anonymous function expression.
|
||||
|
||||
## [0.12.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.12.1) - 2020-02-21
|
||||
- Updated `.travis` config.
|
||||
- Fixed custom django admin header. #75
|
||||
- Bumped `django-colorfield` version to `0.2.0`.
|
||||
- Added `tr` language.
|
||||
- Removed hard-coded favicon type.
|
||||
- Improved code-quality.
|
||||
|
||||
## [0.12.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.12.0) - 2019-12-02
|
||||
- Added `python 3.8` and `django 3.0` compatibility.
|
||||
|
||||
## [0.11.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.11.2) - 2019-09-27
|
||||
- Fixed `select2` background color.
|
||||
|
||||
## [0.11.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.11.1) - 2019-09-04
|
||||
- Added language chooser display option.
|
||||
|
||||
## [0.11.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.11.0) - 2019-09-03
|
||||
- Added language chooser.
|
||||
|
||||
## [0.10.5](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.10.5) - 2019-05-09
|
||||
- Fixed broken migration on postgres/windows. #52
|
||||
|
||||
## [0.10.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.10.4) - 2019-03-29
|
||||
- Added `django 2.2` to `tox` and `travis`.
|
||||
- Fixed admin duplicated count query.
|
||||
- Added admin theme caching to remove duplicated queries. #19
|
||||
- Added `django-dynamic-raw-id` support. #61
|
||||
- Updated `it` localization.
|
||||
|
||||
## [0.10.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.10.3) - 2019-03-28
|
||||
- Fixed idempotent deploy support. #40
|
||||
|
||||
## [0.10.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.10.2) - 2019-03-22
|
||||
- Fixed `raw-id-field` whith `django-admin-interface`. #58
|
||||
|
||||
## [0.10.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.10.1) - 2019-03-20
|
||||
- Updated `fr` localization.
|
||||
|
||||
## [0.10.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.10.0) - 2019-02-21
|
||||
- Updated messages.
|
||||
- Added related modal close button. #45
|
||||
- Updated fields verbose names.
|
||||
- Added environment options. #56
|
||||
|
||||
## [0.9.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.9.3) - 2019-02-06
|
||||
- Enabled travis pip cache.
|
||||
- Splitted tests to multiple files.
|
||||
- Added env badge to favicon.
|
||||
|
||||
## [0.9.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.9.2) - 2019-01-11
|
||||
- Fixed cancel button does not work. #53
|
||||
- Fixed IntegrityError on postgres
|
||||
|
||||
## [0.9.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.9.1) - 2019-01-11
|
||||
- Fixed missing migration. #51
|
||||
|
||||
## [0.9.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.9.0) - 2018-11-13
|
||||
- Added French localization.
|
||||
- Added Italian localization.
|
||||
- Added Spanish localization.
|
||||
- Added internationalization support.
|
||||
|
||||
## [0.8.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.8.2) - 2018-10-24
|
||||
## [0.8.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.8.1) - 2018-10-11
|
||||
## [0.8.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.8.0) - 2018-08-31
|
||||
## [0.7.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.7.0) - 2018-02-06
|
||||
## [0.6.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.6.3) - 2018-02-05
|
||||
## [0.6.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.6.2) - 2018-02-01
|
||||
## [0.6.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.6.1) - 2018-01-31
|
||||
## [0.6.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.6.0) - 2017-11-23
|
||||
## [0.5.9](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.9) - 2017-10-04
|
||||
## [0.5.8](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.8) - 2017-09-29
|
||||
## [0.5.7](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.7) - 2017-09-29
|
||||
## [0.5.6](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.6) - 2017-09-29
|
||||
## [0.5.5](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.5) - 2017-09-27
|
||||
## [0.5.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.4) - 2017-09-27
|
||||
## [0.5.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.3) - 2017-08-24
|
||||
## [0.5.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.2) - 2017-07-13
|
||||
## [0.5.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.1) - 2017-06-13
|
||||
## [0.5.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.0) - 2017-06-09
|
||||
## [0.4.6](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.6) - 2017-05-24
|
||||
## [0.4.5](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.5) - 2017-05-19
|
||||
## [0.4.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.4) - 2017-05-18
|
||||
## [0.4.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.3) - 2017-05-16
|
||||
## [0.4.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.2) - 2017-05-11
|
||||
## [0.4.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.1) - 2017-05-04
|
||||
## [0.4.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.0) - 2017-04-14
|
||||
## [0.3.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.3.2) - 2017-03-29
|
||||
## [0.3.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.3.1) - 2017-03-29
|
||||
## [0.3.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.3.0) - 2017-02-09
|
||||
## [0.2.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.2.1) - 2016-11-08
|
||||
## [0.2.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.2.0) - 2016-09-10
|
||||
## [0.1.9](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.9) - 2016-09-04
|
||||
## [0.1.8](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.8) - 2016-08-05
|
||||
## [0.1.7](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.7) - 2016-06-29
|
||||
## [0.1.6](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.6) - 2016-04-13
|
||||
## [0.1.5](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.5) - 2016-02-24
|
||||
## [0.1.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.4) - 2016-02-15
|
||||
## [0.1.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.3) - 2015-12-03
|
||||
## [0.1.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.2) - 2015-11-25
|
||||
## [0.1.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.1) - 2015-11-13
|
||||
## [0.0.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.0.1) - 2015-11-13
|
||||
|
|
@ -0,0 +1,128 @@
|
|||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
fabio.caccamo@gmail.com.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||
enforcement ladder](https://github.com/mozilla/diversity).
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
https://www.contributor-covenant.org/faq. Translations are available at
|
||||
https://www.contributor-covenant.org/translations.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Fabio Caccamo - fabio.caccamo@gmail.com
|
||||
Copyright (c) 2016 - present, Fabio Caccamo - fabio.caccamo@gmail.com
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
|||
322
README.md
322
README.md
|
|
@ -1,49 +1,159 @@
|
|||
[](https://travis-ci.org/fabiocaccamo/django-admin-interface)
|
||||
[](https://codecov.io/gh/fabiocaccamo/django-admin-interface)
|
||||
[](https://badge.fury.io/py/django-admin-interface)
|
||||
[](https://img.shields.io/pypi/pyversions/django-admin-interface.svg)
|
||||
[](https://img.shields.io/pypi/l/django-admin-interface.svg)
|
||||
[](https://www.python.org/)
|
||||
[](https://www.djangoproject.com/)
|
||||
|
||||
[](https://pypi.org/project/django-admin-interface/)
|
||||
[](https://pepy.tech/project/django-admin-interface)
|
||||
[](https://github.com/fabiocaccamo/django-admin-interface/stargazers)
|
||||
[](https://github.com/fabiocaccamo/django-admin-interface/blob/main/LICENSE.txt)
|
||||
|
||||
[](https://results.pre-commit.ci/latest/github/fabiocaccamo/django-admin-interface/main)
|
||||
[](https://github.com/fabiocaccamo/django-admin-interface)
|
||||
[](https://codecov.io/gh/fabiocaccamo/django-admin-interface)
|
||||
[](https://www.codacy.com/app/fabiocaccamo/django-admin-interface)
|
||||
[](https://codeclimate.com/github/fabiocaccamo/django-admin-interface/)
|
||||
[](https://github.com/psf/black)
|
||||
[](https://github.com/astral-sh/ruff)
|
||||
|
||||
# django-admin-interface
|
||||
django-admin-interface is a modern **responsive flat admin interface customizable by the admin itself**.
|
||||
|
||||

|
||||
|
||||
## Features
|
||||
- Beautiful default **django-theme**
|
||||
- Themes management and customization *(you can **customize admin title, logo and colors**)*
|
||||
- Responsive
|
||||
- List filter dropdown *(optional)*
|
||||
- **`NEW`** **Related modal** *(instead of the old popup window, optional)*
|
||||
- Style optimizations for: `django-ckeditor`, `django-modeltranslation`, `sorl-thumbnail`
|
||||
|
||||
## Requirements
|
||||
- Python 2.7, 3.4, 3.5, 3.6
|
||||
- Django 1.7, 1.8, 1.9, 1.10, 1.11
|
||||
- Related modal *(instead of the old popup window)*
|
||||
- Environment name/marker
|
||||
- Language chooser
|
||||
- Foldable apps *(accordions in the navigation bar)*
|
||||
- [Collapsible fieldsets](https://docs.djangoproject.com/en/4.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.fieldsets) can have their initial state expanded instead of collapsed
|
||||
- `NEW` Collapsible inlines
|
||||
- `NEW` Tabbed fieldsets and inlines
|
||||
- `NEW` List filter removal links
|
||||
- `NEW` List filter highlight selected options
|
||||
- List filter dropdown
|
||||
- List filter sticky
|
||||
- Form controls sticky *(pagination and save/delete buttons)*
|
||||
- Compatibility / style optimizations for:
|
||||
- `django-ckeditor`
|
||||
- `django-dynamic-raw-id`
|
||||
- `django-json-widget`
|
||||
- `django-modeltranslation`
|
||||
- `django-rangefilter`
|
||||
- `django-streamfield`
|
||||
- `django-tabbed-admin`
|
||||
- `sorl-thumbnail`
|
||||
- Translated in many languages: `de`, `es`, `fa`, `fr`, `it`, `pl`, `pt_BR`, `ru`, `tr`
|
||||
|
||||
## Installation
|
||||
- Run `pip install django-admin-interface`
|
||||
- Add `admin_interface`, `flat_responsive`, `flat` and `colorfield` to `settings.INSTALLED_APPS` **before** `django.contrib.admin`
|
||||
- Add `admin_interface` and `colorfield` to `settings.INSTALLED_APPS` **before** `django.contrib.admin`
|
||||
```python
|
||||
INSTALLED_APPS = (
|
||||
#...
|
||||
'admin_interface',
|
||||
'flat_responsive',
|
||||
'flat', #if django version < 1.9
|
||||
'colorfield',
|
||||
"admin_interface",
|
||||
"colorfield",
|
||||
#...
|
||||
'django.contrib.admin',
|
||||
"django.contrib.admin",
|
||||
#...
|
||||
)
|
||||
|
||||
X_FRAME_OPTIONS = "SAMEORIGIN"
|
||||
SILENCED_SYSTEM_CHECKS = ["security.W019"]
|
||||
```
|
||||
- Run ``python manage.py migrate``
|
||||
- Run ``python manage.py collectstatic``
|
||||
- Run `python manage.py migrate`
|
||||
- Run `python manage.py collectstatic --clear`
|
||||
- Restart your application server
|
||||
|
||||
#### Upgrade
|
||||
- Run `pip install django-admin-interface --upgrade`
|
||||
- Run ``python manage.py migrate`` *(add ``--fake-initial`` if you are upgrading from 0.1.0 version)*
|
||||
- Run ``python manage.py collectstatic --clear``
|
||||
- Restart your application server
|
||||
> [!WARNING]
|
||||
> if you want use modals instead of popup windows, ensure to add `X_FRAME_OPTIONS = "SAMEORIGIN"` setting.
|
||||
|
||||
### Optional features
|
||||
To make a fieldset start expanded with a `Hide` button to collapse, add the class `"expanded"` to its classes:
|
||||
```python
|
||||
class MyModelAdmin(admin.ModelAdmin):
|
||||
# ...
|
||||
fieldsets = [
|
||||
("Section title", {
|
||||
"classes": ("collapse", "expanded"),
|
||||
"fields": (...),
|
||||
}),
|
||||
]
|
||||
# ...
|
||||
```
|
||||
|
||||
## Optional themes
|
||||
This package ships with optional themes as fixtures, they can be installed using the [loaddata admin command](https://docs.djangoproject.com/en/1.11/ref/django-admin/#django-admin-loaddata). Optional themes are activated on installation.
|
||||
|
||||
##### [Django](https://www.djangoproject.com/) theme (default):
|
||||
Run `python manage.py loaddata admin_interface_theme_django.json`
|
||||
|
||||
##### [Bootstrap](http://getbootstrap.com/) theme:
|
||||
Run `python manage.py loaddata admin_interface_theme_bootstrap.json`
|
||||
|
||||
##### [Foundation](http://foundation.zurb.com/) theme:
|
||||
Run `python manage.py loaddata admin_interface_theme_foundation.json`
|
||||
|
||||
##### [U.S. Web Design Standards](https://standards.usa.gov/) theme:
|
||||
Run `python manage.py loaddata admin_interface_theme_uswds.json`
|
||||
|
||||
### Add more themes
|
||||
You can add a theme you've created through the admin to this repository by [sending us a PR](http://makeapullrequest.com/). Here are the steps to follow to add:
|
||||
|
||||
1. Export your exact theme as fixture using the `dumpdata` admin command:
|
||||
`python manage.py dumpdata admin_interface.Theme --indent 4 -o admin_interface_theme_{{name}}.json --pks=N`
|
||||
|
||||
2. Copy the generated json file into the fixtures folder *(making sure its name starts with* `admin_interface_theme_` *to avoid clashes with fixtures that might be provided by other third party apps)*.
|
||||
|
||||
3. Remove the `pk` from the fixture and make sure the `active` field is set to `true` *(in this way a theme is automatically activated when installed)*.
|
||||
|
||||
4. Edit the section above to document your theme.
|
||||
|
||||
### Add theme support to third-party libraries
|
||||
You can add **theme support to existing third-party libraries** using the following **CSS variables**:
|
||||
|
||||
#### Header
|
||||
|
||||
- `--admin-interface-header-background-color`
|
||||
- `--admin-interface-header-text-color`
|
||||
- `--admin-interface-header-link-color`
|
||||
- `--admin-interface-header-link_hover-color`
|
||||
- `--admin-interface-title-color`
|
||||
- `--admin-interface-env-color`
|
||||
|
||||
#### Logo
|
||||
|
||||
- `--admin-interface-logo-color`
|
||||
- `--admin-interface-logo-default-background-image`
|
||||
- `--admin-interface-logo-max-width`
|
||||
- `--admin-interface-logo-max-height`
|
||||
|
||||
#### Modules / Links
|
||||
- `--admin-interface-module-background-color`
|
||||
- `--admin-interface-module-background-selected-color`
|
||||
- `--admin-interface-module-border-radius`
|
||||
- `--admin-interface-module-text-color`
|
||||
- `--admin-interface-module-link-color`
|
||||
- `--admin-interface-module-link-selected-color`
|
||||
- `--admin-interface-module-link-hover-color`
|
||||
- `--admin-interface-generic-link-color`
|
||||
- `--admin-interface-generic-link-hover-color`
|
||||
- `--admin-interface-generic-link-active-color`
|
||||
|
||||
#### Buttons
|
||||
- `--admin-interface-save-button-background-color`
|
||||
- `--admin-interface-save-button-background-hover-color`
|
||||
- `--admin-interface-save-button-text-color`
|
||||
- `--admin-interface-delete-button-background-color`
|
||||
- `--admin-interface-delete-button-background-hover-color`
|
||||
- `--admin-interface-delete-button-text-color`
|
||||
|
||||
#### Related Modal
|
||||
- `--admin-interface-related-modal-background-color`
|
||||
- `--admin-interface-related-modal-background-opacity`
|
||||
- `--admin-interface-related-modal-border-radius`
|
||||
- `--admin-interface-related-modal-close-button-display`
|
||||
|
||||
## Screenshots
|
||||
###### Admin login
|
||||
|
|
@ -58,10 +168,162 @@ INSTALLED_APPS = (
|
|||
###### Admin theme customization
|
||||

|
||||
|
||||
#### Thanks
|
||||
- [django-flat-theme](https://github.com/elky/django-flat-theme/)
|
||||
- [django-flat-responsive](https://github.com/elky/django-flat-responsive)
|
||||
- [django-colorfield](https://github.com/jaredly/django-colorfield/)
|
||||
## Localization
|
||||
At the moment, this package has been translated into the following languages: `de`, `es`, `fa`, `fr`, `it`, `pl`, `pt_BR`, `tr`.
|
||||
|
||||
### Translate into another language
|
||||
|
||||
- Run `python -m django makemessages --ignore ".tox" --ignore "venv" --add-location "file" --extension "html,py" --locale "it"` *(example for Italian localization)*
|
||||
|
||||
- Update translations in `admin_interface/locale/it/LC_MESSAGES/django.po`
|
||||
|
||||
- Run `python -m django compilemessages --ignore ".tox" --ignore "venv"`
|
||||
|
||||
### Update translations
|
||||
|
||||
If you do some changes to the project, remember to update translations, because if the translations files are not up-to-date, the `lint` step in the CI will fail:
|
||||
- Run `tox -e translations`
|
||||
|
||||
## Caching
|
||||
|
||||
This package uses caching to improve theme load time and overall performance.
|
||||
You can customise the app caching options using `settings.CACHES["admin_interface"]` setting, otherwise the `"default"` cache will be used:
|
||||
|
||||
```python
|
||||
CACHES = {
|
||||
# ...
|
||||
"admin_interface": {
|
||||
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
|
||||
"TIMEOUT": 60 * 5,
|
||||
},
|
||||
# ...
|
||||
}
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
> There is a [known compatibility issue](https://github.com/fabiocaccamo/django-admin-interface/issues/356) when using this package with `django-redis`, more specifically, using the `JSONSerializer` the following error is raised: `TypeError: Object of type Theme is not JSON serializable`, to mitigate this problem, simply use a specific cache for this app that does not use any `json` serializer.
|
||||
|
||||
## FAQ
|
||||
|
||||
### Custom `base-site.html`
|
||||
> I already have a custom `base_site.html`, how can I make it work?
|
||||
|
||||
You can use [django-apptemplates](https://github.com/bittner/django-apptemplates), then add `{% extends "admin_interface:admin/base_site.html" %}` to your `base_site.html`
|
||||
|
||||
### Custom `LocaleMiddleware` warning
|
||||
> I'm using a `django.middleware.locale.LocaleMiddleware` subclass, but I see an unnecessary warning for missing `django.middleware.locale.LocaleMiddleware`, what can I do?
|
||||
|
||||
You can simply ignore the warning (this has been discussed [here](https://github.com/fabiocaccamo/django-admin-interface/issues/354))
|
||||
```python
|
||||
import warnings
|
||||
|
||||
warnings.filterwarnings("ignore", module="admin_interface.templatetags.admin_interface_tags")
|
||||
```
|
||||
|
||||
### Language Chooser not showing
|
||||
> I have enabled the **Language Chooser**, but it is not visible in the admin, what should I do?
|
||||
|
||||
You must configure multilanguage `settings` and `urls` correctly:
|
||||
```python
|
||||
LANGUAGES = (
|
||||
("en", _("English")),
|
||||
("it", _("Italiano")),
|
||||
("fr", _("Français")),
|
||||
# more than one language is expected here
|
||||
)
|
||||
LANGUAGE_CODE = "en"
|
||||
USE_I18N = True
|
||||
MIDDLEWARE = [
|
||||
# ...
|
||||
"django.middleware.locale.LocaleMiddleware",
|
||||
# ...
|
||||
]
|
||||
```
|
||||
|
||||
```python
|
||||
from django.conf.urls.i18n import i18n_patterns
|
||||
from django.contrib import admin
|
||||
from django.urls import include, path
|
||||
|
||||
# ...
|
||||
|
||||
urlpatterns = [
|
||||
path("i18n/", include("django.conf.urls.i18n")),
|
||||
]
|
||||
urlpatterns += i18n_patterns(path("admin/", admin.site.urls))
|
||||
```
|
||||
|
||||
### Open any url in modal window
|
||||
> I have an application with some cross-links in the admin and I would like to open them in modal windows instead of same/new window, how can I do?
|
||||
|
||||
You just need to add `_popup=1` query-string parameter to the urls:
|
||||
```python
|
||||
url = reverse(f"admin:myapp_mymodel_change", args=[mymodel_instance.pk])
|
||||
url = f"{url}?_popup=1"
|
||||
```
|
||||
|
||||
## Testing
|
||||
```bash
|
||||
# clone repository
|
||||
git clone https://github.com/fabiocaccamo/django-admin-interface.git && cd django-admin-interface
|
||||
|
||||
# create virtualenv and activate it
|
||||
python -m venv venv && . venv/bin/activate
|
||||
|
||||
# upgrade pip
|
||||
python -m pip install --upgrade pip
|
||||
|
||||
# install requirements
|
||||
pip install -r requirements.txt -r requirements-test.txt
|
||||
|
||||
# install pre-commit to run formatters and linters
|
||||
pre-commit install --install-hooks
|
||||
|
||||
# run tests
|
||||
tox
|
||||
# or
|
||||
python runtests.py
|
||||
# or
|
||||
python -m django test --settings "tests.settings"
|
||||
```
|
||||
|
||||
## Contributing
|
||||
Contributions are always welcome, please follow these steps for submitting good quality PRs:
|
||||
|
||||
- :exclamation: **Open an issue**, please don't submit any PR that doesn't refer to an existing issue.
|
||||
- :computer: **Work on changes**, changes should *preferably* be covered by tests to avoid regressions in the future.
|
||||
- :globe_with_meridians: **Update the translations** files.
|
||||
- :test_tube: **Run tests** ensuring that there are no errors.
|
||||
- :inbox_tray: **Submit a pull-request** and mark it as **"Ready for review"** only if it passes the `CI`.
|
||||
|
||||
## License
|
||||
Released under [MIT License](LICENSE).
|
||||
Released under [MIT License](LICENSE.txt).
|
||||
|
||||
---
|
||||
|
||||
## Supporting
|
||||
|
||||
- :star: Star this project on [GitHub](https://github.com/fabiocaccamo/django-admin-interface)
|
||||
- :octocat: Follow me on [GitHub](https://github.com/fabiocaccamo)
|
||||
- :blue_heart: Follow me on [Twitter](https://twitter.com/fabiocaccamo)
|
||||
- :moneybag: Sponsor me on [Github](https://github.com/sponsors/fabiocaccamo)
|
||||
|
||||
## See also
|
||||
|
||||
- [`django-colorfield`](https://github.com/fabiocaccamo/django-colorfield) - simple color field for models with a nice color-picker in the admin. 🎨
|
||||
|
||||
- [`django-extra-settings`](https://github.com/fabiocaccamo/django-extra-settings) - config and manage typed extra settings using just the django admin. ⚙️
|
||||
|
||||
- [`django-maintenance-mode`](https://github.com/fabiocaccamo/django-maintenance-mode) - shows a 503 error page when maintenance-mode is on. 🚧 🛠️
|
||||
|
||||
- [`django-redirects`](https://github.com/fabiocaccamo/django-redirects) - redirects with full control. ↪️
|
||||
|
||||
- [`django-treenode`](https://github.com/fabiocaccamo/django-treenode) - probably the best abstract model / admin for your tree based stuff. 🌳
|
||||
|
||||
- [`python-benedict`](https://github.com/fabiocaccamo/python-benedict) - dict subclass with keylist/keypath support, I/O shortcuts (base64, csv, json, pickle, plist, query-string, toml, xml, yaml) and many utilities. 📘
|
||||
|
||||
- [`python-codicefiscale`](https://github.com/fabiocaccamo/python-codicefiscale) - encode/decode Italian fiscal codes - codifica/decodifica del Codice Fiscale. 🇮🇹 💳
|
||||
|
||||
- [`python-fontbro`](https://github.com/fabiocaccamo/python-fontbro) - friendly font operations. 🧢
|
||||
|
||||
- [`python-fsutil`](https://github.com/fabiocaccamo/python-fsutil) - file-system utilities for lazy devs. 🧟♂️
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Keep this library updated to the latest version.
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| latest | :white_check_mark: |
|
||||
| oldest | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Open an issue.
|
||||
|
|
@ -1,6 +1,17 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from admin_interface.version import __version__
|
||||
|
||||
default_app_config = 'admin_interface.apps.AdminInterfaceConfig'
|
||||
from admin_interface.metadata import (
|
||||
__author__,
|
||||
__copyright__,
|
||||
__description__,
|
||||
__license__,
|
||||
__title__,
|
||||
__version__,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"__author__",
|
||||
"__copyright__",
|
||||
"__description__",
|
||||
"__license__",
|
||||
"__title__",
|
||||
"__version__",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,59 +1,224 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from django.contrib import admin
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from admin_interface.models import Theme
|
||||
from admin_interface.models import Theme, UserTheme
|
||||
|
||||
# from .import_tema.admin import ImportMixin
|
||||
|
||||
|
||||
class UserInline(admin.TabularInline):
|
||||
model = UserTheme
|
||||
extra = 0
|
||||
autocomplete_fields = ('user', )
|
||||
|
||||
|
||||
@admin.register(Theme)
|
||||
#class ThemeAdmin(ImportMixin, admin.ModelAdmin):
|
||||
class ThemeAdmin(admin.ModelAdmin):
|
||||
inlines = [UserInline, ]
|
||||
|
||||
list_display = ('name', 'active', )
|
||||
list_editable = ('active', )
|
||||
list_display = (
|
||||
"name",
|
||||
"active",
|
||||
"demo",
|
||||
"default",
|
||||
)
|
||||
list_editable = ("active",)
|
||||
list_per_page = 100
|
||||
show_full_result_count = False
|
||||
|
||||
fieldsets = (
|
||||
(None, {
|
||||
'classes': ('wide', ),
|
||||
'fields': ('name', 'active', )
|
||||
}),
|
||||
('Logo', {
|
||||
'classes': ('wide', ),
|
||||
'fields': ('logo', 'logo_visible', )
|
||||
}),
|
||||
('Title', {
|
||||
'classes': ('wide', ),
|
||||
'fields': ('title', 'title_visible', )
|
||||
}),
|
||||
('Header', {
|
||||
'classes': ('wide', ),
|
||||
'fields': ('css_header_background_color', 'css_header_title_color', 'css_header_text_color', 'css_header_link_color', 'css_header_link_hover_color', )
|
||||
}),
|
||||
('Breadcrumbs / Module headers', {
|
||||
'classes': ('wide', ),
|
||||
'fields': ('css_module_background_color', 'css_module_text_color', 'css_module_link_color', 'css_module_link_hover_color', 'css_module_rounded_corners', )
|
||||
}),
|
||||
('Generic Links', {
|
||||
'classes': ('wide', ),
|
||||
'fields': ('css_generic_link_color', 'css_generic_link_hover_color', )
|
||||
}),
|
||||
('Save Buttons', {
|
||||
'classes': ('wide', ),
|
||||
'fields': ('css_save_button_background_color', 'css_save_button_background_hover_color', 'css_save_button_text_color', )
|
||||
}),
|
||||
('Delete Buttons', {
|
||||
'classes': ('wide', ),
|
||||
'fields': ('css_delete_button_background_color', 'css_delete_button_background_hover_color', 'css_delete_button_text_color', )
|
||||
}),
|
||||
('Related Modal', {
|
||||
'classes': ('wide', ),
|
||||
'fields': ('related_modal_active', 'related_modal_background_color', 'related_modal_background_opacity', 'related_modal_rounded_corners', )
|
||||
}),
|
||||
('List Filter', {
|
||||
'classes': ('wide', ),
|
||||
'fields': ('list_filter_dropdown', )
|
||||
}),
|
||||
(
|
||||
None,
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"name",
|
||||
"active",
|
||||
"demo",
|
||||
"default",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Environment"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"env_name",
|
||||
"env_color",
|
||||
"env_visible_in_header",
|
||||
"env_visible_in_favicon",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Language chooser"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"language_chooser_active",
|
||||
"language_chooser_control",
|
||||
"language_chooser_display",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Logo"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"logo",
|
||||
"logo_max_width",
|
||||
"logo_max_height",
|
||||
"logo_color",
|
||||
"logo_visible",
|
||||
),
|
||||
},
|
||||
),
|
||||
(_("Favicon"), {"classes": ("wide",), "fields": ("favicon",)}),
|
||||
(
|
||||
_("Title"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"title",
|
||||
"title_color",
|
||||
"title_visible",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Header"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"css_header_background_color",
|
||||
"css_header_text_color",
|
||||
"css_header_link_color",
|
||||
"css_header_link_hover_color",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Breadcrumbs / Module headers"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"css_module_background_color",
|
||||
"css_module_background_selected_color",
|
||||
"css_module_text_color",
|
||||
"css_module_link_color",
|
||||
"css_module_link_selected_color",
|
||||
"css_module_link_hover_color",
|
||||
"css_module_rounded_corners",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Generic Links"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"css_generic_link_color",
|
||||
"css_generic_link_hover_color",
|
||||
"css_generic_link_active_color",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Save Buttons"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"css_save_button_background_color",
|
||||
"css_save_button_background_hover_color",
|
||||
"css_save_button_text_color",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Delete Buttons"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"css_delete_button_background_color",
|
||||
"css_delete_button_background_hover_color",
|
||||
"css_delete_button_text_color",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Navigation Bar"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": ("foldable_apps",),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Related Modal"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"related_modal_active",
|
||||
"related_modal_background_color",
|
||||
"related_modal_background_opacity",
|
||||
"related_modal_rounded_corners",
|
||||
"related_modal_close_button_visible",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Form Controls"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"form_submit_sticky",
|
||||
"form_pagination_sticky",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("List Filter"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"list_filter_highlight",
|
||||
"list_filter_dropdown",
|
||||
"list_filter_sticky",
|
||||
"list_filter_removal_links",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Change Form"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"show_fieldsets_as_tabs",
|
||||
"show_inlines_as_tabs",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Inlines"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": (
|
||||
"collapsible_stacked_inlines",
|
||||
"collapsible_stacked_inlines_collapsed",
|
||||
"collapsible_tabular_inlines",
|
||||
"collapsible_tabular_inlines_collapsed",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Recent Actions"),
|
||||
{
|
||||
"classes": ("wide",),
|
||||
"fields": ("recent_actions_visible",),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
save_on_top = True
|
||||
|
||||
admin.site.register(Theme, ThemeAdmin)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,16 +1,13 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from django.apps import AppConfig
|
||||
from django.db.models.signals import post_migrate
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class AdminInterfaceConfig(AppConfig):
|
||||
|
||||
name = 'admin_interface'
|
||||
verbose_name = 'Admin Interface'
|
||||
name = "admin_interface"
|
||||
verbose_name = _("Admin Interface")
|
||||
default_auto_field = "django.db.models.AutoField"
|
||||
|
||||
def ready(self):
|
||||
from admin_interface import settings
|
||||
|
||||
from admin_interface.models import Theme
|
||||
post_migrate.connect(Theme.post_migrate_handler, sender = self)
|
||||
|
||||
settings.check_installed_apps()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
from django.conf import settings
|
||||
from django.core.cache import cache, caches
|
||||
|
||||
|
||||
def app_cache():
|
||||
return caches["admin_interface"] if "admin_interface" in settings.CACHES else cache
|
||||
|
||||
|
||||
def del_cached_active_theme():
|
||||
app_cache().delete("admin_interface_theme")
|
||||
|
||||
|
||||
def get_cached_active_theme():
|
||||
return app_cache().get("admin_interface_theme", None)
|
||||
|
||||
|
||||
def set_cached_active_theme(theme):
|
||||
app_cache().set("admin_interface_theme", theme)
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
from .models import Theme, UserTheme
|
||||
|
||||
def get_active_theme(request):
|
||||
objs_manager = Theme.objects
|
||||
user_theme_manager = UserTheme.objects
|
||||
objs_active_qs = objs_manager.filter(active=True)
|
||||
objs_active_ls = list(objs_active_qs)
|
||||
objs_active_count = len(objs_active_ls)
|
||||
|
||||
if objs_active_count == 0:
|
||||
obj = objs_manager.first()
|
||||
if obj:
|
||||
obj.set_active()
|
||||
# else:
|
||||
# obj = objs_manager.create()
|
||||
|
||||
elif objs_active_count == 1:
|
||||
obj = objs_active_ls[0]
|
||||
|
||||
elif objs_active_count > 1:
|
||||
user = request.user
|
||||
try:
|
||||
obj = user_theme_manager.filter(user=user, theme__active=True).first().theme
|
||||
except:
|
||||
objs_default_qs = objs_active_qs.filter(default=True)
|
||||
if len(objs_default_qs) == 0:
|
||||
obj = objs_active_qs.first()
|
||||
if obj:
|
||||
obj.set_default()
|
||||
else:
|
||||
obj = objs_default_qs.first()
|
||||
|
||||
return {
|
||||
'theme': obj,
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="104px" height="36px" viewBox="0 0 104 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
|
||||
<title>logo-django</title>
|
||||
<description>Created with Sketch (http://www.bohemiancoding.com/sketch)</description>
|
||||
<defs></defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
|
||||
<g id="logo-django" sketch:type="MSArtboardGroup" transform="translate(-8.000000, -5.000000)" fill="#FFFFFF">
|
||||
<path d="M20.2602817,5 L25.9509859,5 L25.9509859,31.0824248 C23.0360563,31.6338042 20.8901408,31.8507285 18.5684507,31.8507285 C11.6180282,31.8434735 8,28.7383366 8,22.7747325 C8,17.0287781 11.8377465,13.2997118 17.7847887,13.2997118 C18.7076056,13.2997118 19.4107042,13.3722617 20.2602817,13.5899115 L20.2602817,5 L20.2602817,5 Z M20.2602817,18.1242821 C19.5938028,17.9066323 19.044507,17.8340823 18.3414085,17.8340823 C15.4630986,17.8340823 13.8005634,19.5897906 13.8005634,22.6666331 C13.8005634,25.6622196 15.3898592,27.316358 18.3047887,27.316358 C18.9346479,27.316358 19.4473239,27.2808085 20.2602817,27.1719836 L20.2602817,18.1242821 L20.2602817,18.1242821 Z M34.9960563,13.6987364 L34.9960563,26.7577235 C34.9960563,31.2550936 34.6591549,33.417807 33.6704225,35.2823401 C32.7476056,37.0750489 31.531831,38.2053768 29.0197183,39.453961 L23.7391549,36.9654985 C26.2512676,35.7981701 27.4670423,34.7665101 28.2433803,33.1921767 C29.056338,31.5822938 29.3126761,29.7177606 29.3126761,24.8133855 L29.3126761,13.6987364 L34.9960563,13.6987364 Z M29.3126761,5.02901997 L35.0033803,5.02901997 L35.0033803,10.8112493 L29.3126761,10.8112493 L29.3126761,5.02901997 Z M38.4302535,14.9828702 C40.9430986,13.8148163 43.3453521,13.2997118 45.9673239,13.2997118 C48.8895775,13.2997118 50.8077183,14.0687411 51.6580282,15.5705246 C52.1340845,16.4121037 52.2878873,17.5076077 52.2878873,19.8509704 L52.2878873,31.2993491 C49.7398873,31.6620987 46.5239437,31.922553 44.1649014,31.922553 C39.3970141,31.922553 37.2584225,30.2756696 37.2584225,26.6198787 C37.2584225,22.6659076 40.1008451,20.8376494 47.079831,20.2565245 L47.079831,19.0159207 C47.079831,17.9929667 46.559831,17.6229621 45.124338,17.6229621 C43.0223662,17.6229621 40.6567324,18.2106165 38.4375775,19.3423954 L38.4302535,14.9828702 Z M47.336169,23.9420608 C43.571662,24.3048105 42.3485634,24.8931904 42.3485634,26.3579734 C42.3485634,27.4549284 43.051662,27.9693073 44.604338,27.9693073 C45.4539155,27.9693073 46.2302535,27.8967574 47.3354366,27.7153826 L47.3354366,23.9420608 L47.336169,23.9420608 Z M55.056338,14.5765906 C58.4180282,13.6987364 61.1857465,13.2997118 63.9908169,13.2997118 C66.9057465,13.2997118 69.0157746,13.9599162 70.2674366,15.2367949 C71.4458592,16.4411237 71.8208451,17.7615324 71.8208451,20.5764696 L71.8208451,31.6258237 L66.1294085,31.6258237 L66.1294085,20.8013744 C66.1294085,18.6393866 65.3896901,17.8340823 63.3616901,17.8340823 C62.5846197,17.8340823 61.8822535,17.9066323 60.7397183,18.2403619 L60.7397183,31.6265492 L55.056338,31.6265492 L55.056338,14.5765906 Z M74.0326761,34.7012152 C76.0240563,35.7241692 78.0169014,36.1964692 80.1261972,36.1964692 C83.8540845,36.1964692 85.4433803,34.6946857 85.4433803,31.1107193 L85.4433803,31.0018944 C84.3374648,31.5460188 83.223493,31.7716491 81.7513803,31.7716491 C76.764507,31.7716491 73.5932394,28.5141573 73.5932394,23.3558574 C73.5932394,16.9496987 78.2878873,13.3294573 86.5932394,13.3294573 C89.0321127,13.3294573 91.2878873,13.583382 94.0189859,14.1347615 L92.0708169,18.1975575 C90.5562254,17.9073578 91.9463099,18.1540275 90.804507,18.0452026 L90.804507,18.6328571 L90.8777465,21.0124947 L90.9136338,24.0886117 C90.9509859,24.8583664 90.9509859,25.6259447 90.988338,26.3956994 L90.988338,27.9330324 C90.988338,32.7648576 90.5774648,35.0291409 89.3616901,36.900929 C87.5892958,39.6425908 84.5212958,41 80.1620845,41 C77.943662,41 76.0240563,40.6727998 74.0326761,39.9030451 L74.0326761,34.7012152 L74.0326761,34.7012152 Z M85.3335211,17.8703573 L85.1504225,17.8703573 L84.7395493,17.8703573 C83.6336338,17.8340823 82.3380282,18.1242821 81.4510986,18.6756615 C80.0895775,19.4446908 79.3872113,20.8376494 79.3872113,22.8110074 C79.3872113,25.6252192 80.7934085,27.2365531 83.3055211,27.2365531 C84.0811268,27.2365531 84.7117183,27.0921787 85.4441127,26.8738034 L85.4441127,26.4667983 L85.4441127,24.9294653 C85.4441127,24.269261 85.4067606,23.5365067 85.4067606,22.7674775 L85.3708732,20.17019 L85.3335211,18.3056569 L85.3335211,17.8703573 Z M102.84507,13.2271619 C108.528451,13.2271619 112,16.7748534 112,22.5208077 C112,28.4118619 108.382704,32.1039278 102.617296,32.1039278 C96.9265915,32.1039278 93.4176901,28.5569618 93.4176901,22.8480079 C93.4272113,16.9199532 97.044507,13.2271619 102.84507,13.2271619 Z M102.727887,27.5623023 C104.910423,27.5623023 106.199437,25.7710445 106.199437,22.6586526 C106.199437,19.5825356 104.94631,17.7542774 102.765239,17.7542774 C100.509465,17.7542774 99.2189859,19.5462607 99.2189859,22.6586526 C99.2189859,25.7710445 100.516056,27.5623023 102.727887,27.5623023 L102.727887,27.5623023 Z M102.727887,27.5623023" id="Shape" sketch:type="MSShapeGroup"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 5.2 KiB |
|
|
@ -0,0 +1,38 @@
|
|||
[
|
||||
{
|
||||
"model": "admin_interface.theme",
|
||||
"fields": {
|
||||
"name": "Bootstrap",
|
||||
"active": true,
|
||||
"title": "Django administration",
|
||||
"title_color": "#503873",
|
||||
"title_visible": false,
|
||||
"logo": "",
|
||||
"logo_color": "#503873",
|
||||
"logo_visible": true,
|
||||
"css_header_background_color": "#FFFFFF",
|
||||
"css_header_text_color": "#463265",
|
||||
"css_header_link_color": "#463265",
|
||||
"css_header_link_hover_color": "#7351A6",
|
||||
"css_module_background_color": "#7351A6",
|
||||
"css_module_text_color": "#FFFFFF",
|
||||
"css_module_link_color": "#CDBFE3",
|
||||
"css_module_link_hover_color": "#FFFFFF",
|
||||
"css_module_rounded_corners": true,
|
||||
"css_generic_link_color": "#463265",
|
||||
"css_generic_link_hover_color": "#7351A6",
|
||||
"css_save_button_background_color": "#5CB85C",
|
||||
"css_save_button_background_hover_color": "#449D44",
|
||||
"css_save_button_text_color": "#FFFFFF",
|
||||
"css_delete_button_background_color": "#D9534F",
|
||||
"css_delete_button_background_hover_color": "#C9302C",
|
||||
"css_delete_button_text_color": "#FFFFFF",
|
||||
"related_modal_active": true,
|
||||
"related_modal_background_color": "#503873",
|
||||
"related_modal_background_opacity": 0.2,
|
||||
"related_modal_rounded_corners": true,
|
||||
"list_filter_dropdown": false,
|
||||
"recent_actions_visible": true
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
[
|
||||
{
|
||||
"model": "admin_interface.theme",
|
||||
"fields": {
|
||||
"name": "Django",
|
||||
"active": true,
|
||||
"title": "Django administration",
|
||||
"title_color": "#F5DD5D",
|
||||
"title_visible": true,
|
||||
"logo": "",
|
||||
"logo_color": "#FFFFFF",
|
||||
"logo_visible": true,
|
||||
"css_header_background_color": "#0C4B33",
|
||||
"css_header_text_color": "#44B78B",
|
||||
"css_header_link_color": "#FFFFFF",
|
||||
"css_header_link_hover_color": "#C9F0DD",
|
||||
"css_module_background_color": "#44B78B",
|
||||
"css_module_text_color": "#FFFFFF",
|
||||
"css_module_link_color": "#FFFFFF",
|
||||
"css_module_link_hover_color": "#C9F0DD",
|
||||
"css_module_rounded_corners": true,
|
||||
"css_generic_link_color": "#0C3C26",
|
||||
"css_generic_link_hover_color": "#156641",
|
||||
"css_save_button_background_color": "#0C4B33",
|
||||
"css_save_button_background_hover_color": "#0C3C26",
|
||||
"css_save_button_text_color": "#FFFFFF",
|
||||
"css_delete_button_background_color": "#BA2121",
|
||||
"css_delete_button_background_hover_color": "#A41515",
|
||||
"css_delete_button_text_color": "#FFFFFF",
|
||||
"related_modal_active": true,
|
||||
"related_modal_background_color": "#000000",
|
||||
"related_modal_background_opacity": 0.2,
|
||||
"related_modal_rounded_corners": true,
|
||||
"list_filter_dropdown": false,
|
||||
"recent_actions_visible": true
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
[
|
||||
{
|
||||
"model": "admin_interface.theme",
|
||||
"fields": {
|
||||
"name": "Foundation",
|
||||
"active": true,
|
||||
"title": "Django administration",
|
||||
"title_color": "#DDDDDD",
|
||||
"title_visible": false,
|
||||
"logo": "",
|
||||
"logo_color": "#CCCCCC",
|
||||
"logo_visible": true,
|
||||
"css_header_background_color": "#2C3840",
|
||||
"css_header_text_color": "#FFFFFF",
|
||||
"css_header_link_color": "#FFFFFF",
|
||||
"css_header_link_hover_color": "#DDDDDD",
|
||||
"css_module_background_color": "#074E68",
|
||||
"css_module_text_color": "#FFFFFF",
|
||||
"css_module_link_color": "#FFFFFF",
|
||||
"css_module_link_hover_color": "#DDDDDD",
|
||||
"css_module_rounded_corners": true,
|
||||
"css_generic_link_color": "#000000",
|
||||
"css_generic_link_hover_color": "#074E68",
|
||||
"css_save_button_background_color": "#2199E8",
|
||||
"css_save_button_background_hover_color": "#1585CF",
|
||||
"css_save_button_text_color": "#FFFFFF",
|
||||
"css_delete_button_background_color": "#CC4B37",
|
||||
"css_delete_button_background_hover_color": "#BF4634",
|
||||
"css_delete_button_text_color": "#FFFFFF",
|
||||
"related_modal_active": true,
|
||||
"related_modal_background_color": "#000000",
|
||||
"related_modal_background_opacity": 0.2,
|
||||
"related_modal_rounded_corners": true,
|
||||
"list_filter_dropdown": false,
|
||||
"recent_actions_visible": true
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
[
|
||||
{
|
||||
"model": "admin_interface.theme",
|
||||
"fields": {
|
||||
"name": "USWDS",
|
||||
"active": true,
|
||||
"title": "Django administration",
|
||||
"title_color": "#FFFFFF",
|
||||
"title_visible": false,
|
||||
"logo": "",
|
||||
"logo_color": "#FFFFFF",
|
||||
"logo_visible": true,
|
||||
"css_header_background_color": "#112E51",
|
||||
"css_header_text_color": "#FFFFFF",
|
||||
"css_header_link_color": "#FFFFFF",
|
||||
"css_header_link_hover_color": "#E1F3F8",
|
||||
"css_module_background_color": "#205493",
|
||||
"css_module_text_color": "#FFFFFF",
|
||||
"css_module_link_color": "#FFFFFF",
|
||||
"css_module_link_hover_color": "#E1F3F8",
|
||||
"css_module_rounded_corners": true,
|
||||
"css_generic_link_color": "#205493",
|
||||
"css_generic_link_hover_color": "#0071BC",
|
||||
"css_save_button_background_color": "#205493",
|
||||
"css_save_button_background_hover_color": "#112E51",
|
||||
"css_save_button_text_color": "#FFFFFF",
|
||||
"css_delete_button_background_color": "#CD2026",
|
||||
"css_delete_button_background_hover_color": "#981B1E",
|
||||
"css_delete_button_text_color": "#FFFFFF",
|
||||
"related_modal_active": true,
|
||||
"related_modal_background_color": "#000000",
|
||||
"related_modal_background_opacity": 0.8,
|
||||
"related_modal_rounded_corners": true,
|
||||
"list_filter_dropdown": false,
|
||||
"recent_actions_visible": true
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1 +1,38 @@
|
|||
[{"model": "admin_interface.theme", "pk": 1, "fields": {"name": "Django", "active": true, "title": "Django administration", "title_visible": true, "logo": "", "logo_visible": true, "css_header_background_color": "#0C4B33", "css_header_title_color": "#F5DD5D", "css_header_text_color": "#44B78B", "css_header_link_color": "#FFFFFF", "css_header_link_hover_color": "#C9F0DD", "css_module_background_color": "#44B78B", "css_module_text_color": "#FFFFFF", "css_module_link_color": "#FFFFFF", "css_module_link_hover_color": "#C9F0DD", "css_module_rounded_corners": true, "css_generic_link_color": "#0C3C26", "css_generic_link_hover_color": "#156641", "css_save_button_background_color": "#0C4B33", "css_save_button_background_hover_color": "#0C3C26", "css_save_button_text_color": "#FFFFFF", "css_delete_button_background_color": "#BA2121", "css_delete_button_background_hover_color": "#A41515", "css_delete_button_text_color": "#FFFFFF", "css": "", "related_modal_active": true, "related_modal_background_color": "#000000", "related_modal_background_opacity": 0.2, "related_modal_rounded_corners": true, "list_filter_dropdown": false}}]
|
||||
[
|
||||
{
|
||||
"model": "admin_interface.theme",
|
||||
"fields": {
|
||||
"name": "Django",
|
||||
"active": true,
|
||||
"title": "Django administration",
|
||||
"title_color": "#F5DD5D",
|
||||
"title_visible": true,
|
||||
"logo": "",
|
||||
"logo_color": "#FFFFFF",
|
||||
"logo_visible": true,
|
||||
"css_header_background_color": "#0C4B33",
|
||||
"css_header_text_color": "#44B78B",
|
||||
"css_header_link_color": "#FFFFFF",
|
||||
"css_header_link_hover_color": "#C9F0DD",
|
||||
"css_module_background_color": "#44B78B",
|
||||
"css_module_text_color": "#FFFFFF",
|
||||
"css_module_link_color": "#FFFFFF",
|
||||
"css_module_link_hover_color": "#C9F0DD",
|
||||
"css_module_rounded_corners": true,
|
||||
"css_generic_link_color": "#0C3C26",
|
||||
"css_generic_link_hover_color": "#156641",
|
||||
"css_save_button_background_color": "#0C4B33",
|
||||
"css_save_button_background_hover_color": "#0C3C26",
|
||||
"css_save_button_text_color": "#FFFFFF",
|
||||
"css_delete_button_background_color": "#BA2121",
|
||||
"css_delete_button_background_hover_color": "#A41515",
|
||||
"css_delete_button_text_color": "#FFFFFF",
|
||||
"related_modal_active": true,
|
||||
"related_modal_background_color": "#000000",
|
||||
"related_modal_background_opacity": 0.2,
|
||||
"related_modal_rounded_corners": true,
|
||||
"list_filter_dropdown": false,
|
||||
"recent_actions_visible": true
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -0,0 +1,156 @@
|
|||
import json
|
||||
import os
|
||||
import tempfile
|
||||
import zipfile
|
||||
|
||||
import django
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
from django.contrib import admin, messages
|
||||
from django.contrib.auth import get_permission_codename
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.core.files.storage import default_storage
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.template.response import TemplateResponse
|
||||
from django.urls import path, reverse
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from .. import models
|
||||
from .forms import ImportForm
|
||||
|
||||
|
||||
class ImportMixin(admin.ModelAdmin):
|
||||
"""
|
||||
Import mixin.
|
||||
|
||||
This is intended to be mixed with django.contrib.admin.ModelAdmin
|
||||
https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#modeladmin-objects
|
||||
"""
|
||||
|
||||
#: template for change_list view
|
||||
change_list_template = 'admin/import_export/change_list_import.html'
|
||||
#: template for import view
|
||||
import_template_name = 'admin/import_export/import.html'
|
||||
|
||||
def get_model_info(self):
|
||||
app_label = self.model._meta.app_label
|
||||
return (self.model._meta.app_label, self.model._meta.model_name)
|
||||
|
||||
def has_import_permission(self, request):
|
||||
"""
|
||||
Returns whether a request has import permission.
|
||||
"""
|
||||
IMPORT_PERMISSION_CODE = getattr(settings, 'IMPORT_EXPORT_IMPORT_PERMISSION_CODE', None)
|
||||
if IMPORT_PERMISSION_CODE is None:
|
||||
return True
|
||||
|
||||
opts = self.opts
|
||||
codename = get_permission_codename(IMPORT_PERMISSION_CODE, opts)
|
||||
return request.user.has_perm("%s.%s" % (opts.app_label, codename))
|
||||
|
||||
def get_urls(self):
|
||||
urls = super().get_urls()
|
||||
info = self.get_model_info()
|
||||
my_urls = [
|
||||
path('import/',
|
||||
self.admin_site.admin_view(self.import_action),
|
||||
name='%s_%s_import' % info),
|
||||
]
|
||||
return my_urls + urls
|
||||
|
||||
def get_import_context_data(self, **kwargs):
|
||||
return self.get_context_data(**kwargs)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
return {}
|
||||
|
||||
def get_form_kwargs(self, form, *args, **kwargs):
|
||||
"""
|
||||
Prepare/returns kwargs for the import form.
|
||||
|
||||
To distinguish between import and confirm import forms,
|
||||
the following approach may be used:
|
||||
|
||||
if isinstance(form, ImportForm):
|
||||
# your code here for the import form kwargs
|
||||
# e.g. update.kwargs({...})
|
||||
elif isinstance(form, ConfirmImportForm):
|
||||
# your code here for the confirm import form kwargs
|
||||
# e.g. update.kwargs({...})
|
||||
...
|
||||
"""
|
||||
return kwargs
|
||||
|
||||
def import_action(self, request, *args, **kwargs):
|
||||
"""
|
||||
Perform a dry_run of the import to make sure the import will not
|
||||
result in errors. If there where no error, save the user
|
||||
uploaded file to a local temp file that will be used by
|
||||
'process_import' for the actual import.
|
||||
"""
|
||||
if not self.has_import_permission(request):
|
||||
raise PermissionDenied
|
||||
|
||||
context = self.get_import_context_data()
|
||||
|
||||
form_type = ImportForm
|
||||
form_kwargs = self.get_form_kwargs(form_type, *args, **kwargs)
|
||||
form = form_type(request.POST or None,
|
||||
request.FILES or None,
|
||||
**form_kwargs)
|
||||
|
||||
if request.POST and form.is_valid():
|
||||
import_file_tema = form.cleaned_data['tema']
|
||||
if zipfile.is_zipfile(import_file_tema):
|
||||
with zipfile.ZipFile(import_file_tema, 'r') as zip_ref:
|
||||
with tempfile.TemporaryDirectory() as tempdir:
|
||||
zip_ref.extractall(tempdir)
|
||||
lst = os.listdir(tempdir)
|
||||
allowed_extensions=[".gif", ".jpg", ".jpeg", ".png", ".svg"]
|
||||
try:
|
||||
tema_json = [s for s in os.listdir(f'{tempdir}/{lst[0]}') if '.json' in s][0]
|
||||
logo = [s for s in os.listdir(f'{tempdir}/{lst[0]}/logo') if any(ele in s for ele in allowed_extensions)][0]
|
||||
favicon = [s for s in os.listdir(f'{tempdir}/{lst[0]}/favicon') if any(ele in s for ele in allowed_extensions)][0]
|
||||
with open(f'{tempdir}/{lst[0]}/{tema_json}', 'r') as temporary_file:
|
||||
result = json.loads(temporary_file.read())
|
||||
with open(f'{tempdir}/{lst[0]}/logo/{logo}', 'rb') as temporary_file:
|
||||
default_storage.save(f"admin-interface/logo/{temporary_file.name.split('/')[-1]}", temporary_file)
|
||||
with open(f'{tempdir}/{lst[0]}/favicon/{favicon}', 'rb') as temporary_file:
|
||||
default_storage.save(f"admin-interface/favicon/{temporary_file.name.split('/')[-1]}", temporary_file)
|
||||
skip_result = False
|
||||
except FileNotFoundError as e:
|
||||
messages.error(request, 'Struttura del file .zip errata.')
|
||||
skip_result = True
|
||||
if not skip_result:
|
||||
try:
|
||||
new_theme = models.Theme(
|
||||
**result[0]['fields']
|
||||
)
|
||||
new_theme.save()
|
||||
|
||||
messages.success(request, _('Import finished'))
|
||||
except:
|
||||
messages.error(request, 'Struttura del file .json errata.')
|
||||
else:
|
||||
messages.error(request, 'È richiesto un file .zip')
|
||||
|
||||
url = reverse('admin:%s_%s_changelist' % self.get_model_info(),
|
||||
current_app=self.admin_site.name)
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
context.update(self.admin_site.each_context(request))
|
||||
|
||||
context['title'] = _("Import")
|
||||
context['form'] = form
|
||||
context['opts'] = self.model._meta
|
||||
|
||||
request.current_app = self.admin_site.name
|
||||
return TemplateResponse(request, [self.import_template_name],
|
||||
context)
|
||||
|
||||
def changelist_view(self, request, extra_context=None):
|
||||
if extra_context is None:
|
||||
extra_context = {}
|
||||
extra_context['has_import_permission'] = self.has_import_permission(request)
|
||||
return super().changelist_view(request, extra_context)
|
||||
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import os.path
|
||||
|
||||
from django import forms
|
||||
from django.contrib.admin.helpers import ActionForm
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class ImportForm(forms.Form):
|
||||
tema = forms.FileField(
|
||||
label='Zip'
|
||||
)
|
||||
Binary file not shown.
|
|
@ -0,0 +1,139 @@
|
|||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Christian Galeffi <chri@gallochri.com>, 2015.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-06-04 09:27+0200\n"
|
||||
"PO-Revision-Date: 2015-08-30 20:32+0100\n"
|
||||
"Last-Translator: Christian Galeffi <chri@gallochri.com>\n"
|
||||
"Language-Team: Italian <kde-i18n-it@kde.org>\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"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
|
||||
#: admin.py:194
|
||||
#, python-format
|
||||
msgid "%s through import_export"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:200
|
||||
msgid "Import finished, with {} new and {} updated {}."
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:298
|
||||
#, python-format
|
||||
msgid "<h1>Imported file has a wrong encoding: %s</h1>"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:300
|
||||
#, python-format
|
||||
msgid "<h1>%s encountered while trying to read file: %s</h1>"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:331 templates/admin/import_export/change_list_import_item.html:5
|
||||
#: templates/admin/import_export/import.html:10
|
||||
msgid "Import"
|
||||
msgstr "Importare"
|
||||
|
||||
#: admin.py:496 templates/admin/import_export/change_list_export_item.html:5
|
||||
#: templates/admin/import_export/export.html:7
|
||||
msgid "Export"
|
||||
msgstr "Esportare"
|
||||
|
||||
#: admin.py:554
|
||||
msgid "You must select an export format."
|
||||
msgstr "Devi selezionare un formato di esportazione."
|
||||
|
||||
#: admin.py:567
|
||||
#, python-format
|
||||
msgid "Export selected %(verbose_name_plural)s"
|
||||
msgstr "Esporta selezionati %(verbose_name_plural)s"
|
||||
|
||||
#: forms.py:10
|
||||
msgid "File to import"
|
||||
msgstr "File da importare"
|
||||
|
||||
#: forms.py:13 forms.py:41 forms.py:66
|
||||
msgid "Format"
|
||||
msgstr "Formato"
|
||||
|
||||
#: templates/admin/import_export/base.html:11
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
#: templates/admin/import_export/export.html:31
|
||||
#: templates/admin/import_export/import.html:52
|
||||
msgid "Submit"
|
||||
msgstr "Inviare"
|
||||
|
||||
#: templates/admin/import_export/import.html:20
|
||||
msgid ""
|
||||
"Below is a preview of data to be imported. If you are satisfied with the "
|
||||
"results, click 'Confirm import'"
|
||||
msgstr ""
|
||||
"Questa è un'anteprima dei dati che saranno importati. Se il risultato è "
|
||||
"soddisfacente, premi 'Conferma importazione'"
|
||||
|
||||
#: templates/admin/import_export/import.html:23
|
||||
msgid "Confirm import"
|
||||
msgstr "Conferma importazione"
|
||||
|
||||
#: templates/admin/import_export/import.html:31
|
||||
msgid "This importer will import the following fields: "
|
||||
msgstr "Verranno importati i seguenti campi:"
|
||||
|
||||
#: templates/admin/import_export/import.html:61
|
||||
#: templates/admin/import_export/import.html:90
|
||||
msgid "Errors"
|
||||
msgstr "Errori"
|
||||
|
||||
#: templates/admin/import_export/import.html:72
|
||||
msgid "Line number"
|
||||
msgstr "Numero linea"
|
||||
|
||||
#: templates/admin/import_export/import.html:82
|
||||
msgid "Some rows failed to validate"
|
||||
msgstr ""
|
||||
|
||||
#: templates/admin/import_export/import.html:84
|
||||
msgid ""
|
||||
"Please correct these errors in your data where possible, then reupload it "
|
||||
"using the form above."
|
||||
msgstr ""
|
||||
|
||||
#: templates/admin/import_export/import.html:89
|
||||
msgid "Row"
|
||||
msgstr ""
|
||||
|
||||
#: templates/admin/import_export/import.html:116
|
||||
msgid "Non field specific"
|
||||
msgstr ""
|
||||
|
||||
#: templates/admin/import_export/import.html:137
|
||||
msgid "Preview"
|
||||
msgstr "Anteprima"
|
||||
|
||||
#: templates/admin/import_export/import.html:152
|
||||
msgid "New"
|
||||
msgstr "Nuovo"
|
||||
|
||||
#: templates/admin/import_export/import.html:154
|
||||
msgid "Skipped"
|
||||
msgstr "Salta"
|
||||
|
||||
#: templates/admin/import_export/import.html:156
|
||||
msgid "Delete"
|
||||
msgstr "Cancella"
|
||||
|
||||
#: templates/admin/import_export/import.html:158
|
||||
msgid "Update"
|
||||
msgstr "Aggiorna"
|
||||
|
||||
#~ msgid "Import finished"
|
||||
#~ msgstr "Importazione terminata"
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
.import-preview .errors {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.validation-error-count {
|
||||
display: inline-block;
|
||||
background-color: #e40000;
|
||||
border-radius: 6px;
|
||||
color: white;
|
||||
font-size: 0.9em;
|
||||
position: relative;
|
||||
font-weight: bold;
|
||||
margin-top: -2px;
|
||||
padding: 0.2em 0.4em;
|
||||
}
|
||||
|
||||
.validation-error-container {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
background-color: #ffc1c1;
|
||||
padding: 14px 15px 10px;
|
||||
top: 25px;
|
||||
margin: 0 0 20px 0;
|
||||
width: 200px;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
table.import-preview tr.skip {
|
||||
background-color: #d2d2d2;
|
||||
}
|
||||
|
||||
table.import-preview tr.new {
|
||||
background-color: #bdd8b2;
|
||||
}
|
||||
|
||||
table.import-preview tr.delete {
|
||||
background-color: #f9bebf;
|
||||
}
|
||||
|
||||
table.import-preview tr.update {
|
||||
background-color: #fdfdcf;
|
||||
}
|
||||
|
||||
.import-preview td:hover .validation-error-count {
|
||||
z-index: 3;
|
||||
}
|
||||
.import-preview td:hover .validation-error-container {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.validation-error-list {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.validation-error-list li {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.validation-error-list > li > ul {
|
||||
margin: 8px 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.validation-error-list > li > ul > li {
|
||||
padding: 0;
|
||||
margin: 0 0 10px;
|
||||
line-height: 1.28em;
|
||||
}
|
||||
|
||||
.validation-error-field-label {
|
||||
display: block;
|
||||
border-bottom: 1px solid #e40000;
|
||||
color: #e40000;
|
||||
text-transform: uppercase;
|
||||
font-weight: bold;
|
||||
font-size: 0.85em;
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n admin_modify %}
|
||||
{% load admin_urls %}
|
||||
{% load static %}
|
||||
|
||||
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
|
||||
{% block bodyclass %}{{ block.super }} {{ opts.app_label }}-{{ opts.object_name.lower }} change-form{% endblock %}
|
||||
{% if not is_popup %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
|
||||
› <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
|
||||
› <a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>
|
||||
› {% block breadcrumbs_last %}{% endblock %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endif %}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
{% extends "admin/change_list.html" %}
|
||||
|
||||
{# Original template renders object-tools only when has_add_permission is True. #}
|
||||
{# This hack allows sub templates to add to object-tools #}
|
||||
{% block object-tools %}
|
||||
<ul class="object-tools">
|
||||
{% block object-tools-items %}
|
||||
{% if has_add_permission %}
|
||||
{{ block.super }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{% extends "admin/import_export/change_list.html" %}
|
||||
|
||||
{% block object-tools-items %}
|
||||
{% include "admin/import_export/change_list_import_item.html" %}
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
|
|
@ -0,0 +1,171 @@
|
|||
{% extends "admin/import_export/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load admin_urls %}
|
||||
{% load import_export_tags %}
|
||||
{% load static %}
|
||||
|
||||
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "import_export/import.css" %}" />{% endblock %}
|
||||
|
||||
{% block breadcrumbs_last %}
|
||||
{% trans "Import" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% if confirm_form %}
|
||||
<form action="{% url opts|admin_urlname:"process_import" %}" method="POST">
|
||||
{% csrf_token %}
|
||||
{{ confirm_form.as_p }}
|
||||
<p>
|
||||
{% trans "Below is a preview of data to be imported. If you are satisfied with the results, click 'Confirm import'" %}
|
||||
</p>
|
||||
<div class="submit-row">
|
||||
<input type="submit" class="default" name="confirm" value="{% trans "Confirm import" %}">
|
||||
</div>
|
||||
</form>
|
||||
{% else %}
|
||||
<form action="" method="post" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
|
||||
<p>
|
||||
{% trans "This importer will import the following fields: " %}
|
||||
<code>{{ fields|join:", " }}</code>
|
||||
</p>
|
||||
|
||||
<fieldset class="module aligned">
|
||||
{% for field in form %}
|
||||
<div class="form-row">
|
||||
{{ field.errors }}
|
||||
|
||||
{{ field.label_tag }}
|
||||
|
||||
{{ field }}
|
||||
|
||||
{% if field.field.help_text %}
|
||||
<p class="help">{{ field.field.help_text|safe }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</fieldset>
|
||||
|
||||
<div class="submit-row">
|
||||
<input type="submit" class="default" value="{% trans "Submit" %}">
|
||||
</div>
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
{% if result %}
|
||||
|
||||
{% if result.has_errors %}
|
||||
|
||||
<h2>{% trans "Errors" %}</h2>
|
||||
<ul>
|
||||
{% for error in result.base_errors %}
|
||||
<li>
|
||||
{{ error.error }}
|
||||
<div class="traceback">{{ error.traceback|linebreaks }}</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% for line, errors in result.row_errors %}
|
||||
{% for error in errors %}
|
||||
<li>
|
||||
{% trans "Line number" %}: {{ line }} - {{ error.error }}
|
||||
<div><code>{{ error.row.values|join:", " }}</code></div>
|
||||
<div class="traceback">{{ error.traceback|linebreaks }}</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% elif result.has_validation_errors %}
|
||||
|
||||
<h2>{% trans "Some rows failed to validate" %}</h2>
|
||||
|
||||
<p>{% trans "Please correct these errors in your data where possible, then reupload it using the form above." %}</p>
|
||||
|
||||
<table class="import-preview">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% trans "Row" %}</th>
|
||||
<th>{% trans "Errors" %}</th>
|
||||
{% for field in result.diff_headers %}
|
||||
<th>{{ field }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for row in result.invalid_rows %}
|
||||
<tr>
|
||||
<td>{{ row.number }} </td>
|
||||
<td class="errors">
|
||||
<span class="validation-error-count">{{ row.error_count }}</span>
|
||||
<div class="validation-error-container">
|
||||
<ul class="validation-error-list">
|
||||
{% for field_name, error_list in row.field_specific_errors.items %}
|
||||
<li>
|
||||
<span class="validation-error-field-label">{{ field_name }}</span>
|
||||
<ul>
|
||||
{% for error in error_list %}
|
||||
<li>{{ error }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% if row.non_field_specific_errors %}
|
||||
<li>
|
||||
<span class="validation-error-field-label">{% trans "Non field specific" %}</span>
|
||||
<ul>
|
||||
{% for error in row.non_field_specific_errors %}
|
||||
<li>{{ error }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
{% for field in row.values %}
|
||||
<td>{{ field }}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% else %}
|
||||
|
||||
<h2>{% trans "Preview" %}</h2>
|
||||
|
||||
<table class="import-preview">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
{% for field in result.diff_headers %}
|
||||
<th>{{ field }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
{% for row in result.valid_rows %}
|
||||
<tr class="{{ row.import_type }}">
|
||||
<td class="import-type">
|
||||
{% if row.import_type == 'new' %}
|
||||
{% trans "New" %}
|
||||
{% elif row.import_type == 'skip' %}
|
||||
{% trans "Skipped" %}
|
||||
{% elif row.import_type == 'delete' %}
|
||||
{% trans "Delete" %}
|
||||
{% elif row.import_type == 'update' %}
|
||||
{% trans "Update" %}
|
||||
{% endif %}
|
||||
</td>
|
||||
{% for field in row.diff %}
|
||||
<td>{{ field }}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
Binary file not shown.
|
|
@ -0,0 +1,316 @@
|
|||
# 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
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-10 18:20-0500\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"
|
||||
"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"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Environment"
|
||||
msgstr "Umgebung"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Language chooser"
|
||||
msgstr "Sprachauswahl"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Favicon"
|
||||
msgstr "Favicon"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Header"
|
||||
msgstr "Header"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Breadcrumbs / Module headers"
|
||||
msgstr "Breadcrumbs / Modul-Header"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Generic Links"
|
||||
msgstr "Generische Links"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Save Buttons"
|
||||
msgstr "Speichern-Buttons"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Delete Buttons"
|
||||
msgstr "Löschen-Buttons"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Navigation Bar"
|
||||
msgstr "Navigationsleiste"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Related Modal"
|
||||
msgstr "Modal für verwandte Objekte"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Form Controls"
|
||||
msgstr "Formularsteuerung"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "List Filter"
|
||||
msgstr "Filteranzeige"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Change Form"
|
||||
msgstr "Änderungsformular"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Recent Actions"
|
||||
msgstr "Neueste Aktionen"
|
||||
|
||||
#: admin_interface/apps.py
|
||||
msgid "Admin Interface"
|
||||
msgstr "Admin-Oberfläche"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "name"
|
||||
msgstr "Name"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "active"
|
||||
msgstr "aktiv"
|
||||
|
||||
#: admin_interface/models.py admin_interface/templates/admin/base_site.html
|
||||
msgid "Django administration"
|
||||
msgstr "Django-Administration"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "color"
|
||||
msgstr "Farbe"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible"
|
||||
msgstr "sichtbar"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Leave blank to use the default Django logo"
|
||||
msgstr "Dieses Feld leer lassen um das Django Standard Logo zu benutzen"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max width"
|
||||
msgstr "maximale Breite"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max height"
|
||||
msgstr "maximale Höhe"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "(.ico|.png|.gif - 16x16|32x32 px)"
|
||||
msgstr "(.ico|.png|.gif - 16x16|32x32 px)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "favicon"
|
||||
msgstr "Favicon"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid ""
|
||||
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: "
|
||||
"#3498DB)"
|
||||
msgstr ""
|
||||
"(rot: #E74C3C, orange: #E67E22, gelb: #F1C40F, grün: #2ECC71, blau: #3498DB)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in header (marker and name)"
|
||||
msgstr "sichtbar im Header (Marker und Name)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in favicon (marker)"
|
||||
msgstr "sichtbar im Favicon (Marker)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Default Select"
|
||||
msgstr "normale Auswahl"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Minimal Select"
|
||||
msgstr "minimale Auswahl"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "control"
|
||||
msgstr "Regler"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "code"
|
||||
msgstr "Code"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "display"
|
||||
msgstr "Anzeige"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background color"
|
||||
msgstr "Hintergrundfarbe"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "text color"
|
||||
msgstr "Textfarbe"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link color"
|
||||
msgstr "Linkfarbe"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link hover color"
|
||||
msgstr "Linkfarbe beim Überfahren"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background selected color"
|
||||
msgstr "Hintergrundfarbe bei Auswahl"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link selected color"
|
||||
msgstr "Linkfarbe bei Auswahl"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "rounded corners"
|
||||
msgstr "abgerundete Ecken"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link active color"
|
||||
msgstr "Linkfarbe beim aktiv"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background hover color"
|
||||
msgstr "Hintergrundfarbe beim Überfahren"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background opacity"
|
||||
msgstr "Deckkraft des Hintergrunds"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "close button visible"
|
||||
msgstr "Schließen-Schalter sichtbar"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "highlight active"
|
||||
msgstr "Aktiv hervorheben"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "use dropdown"
|
||||
msgstr "Dropdown-Liste nutzen"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky position"
|
||||
msgstr "angeheftete Position"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "quick remove links for active filters at top of sidebar"
|
||||
msgstr "Schnellentfernung für aktive Filter oben in der Seitenleiste"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "foldable apps"
|
||||
msgstr "einklappbare Apps"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "fieldsets as tabs"
|
||||
msgstr "Fieldsets als Tabs"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "inlines as tabs"
|
||||
msgstr "Inlines als Tabs"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky submit"
|
||||
msgstr "angeheftete Schaltfläche"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky pagination"
|
||||
msgstr "angeheftete Seitennummerierung"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Theme"
|
||||
msgstr "Thema"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Themes"
|
||||
msgstr "Themen"
|
||||
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
msgid "Filter"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: don't translate this, the django catalog already contains it
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
msgid "Clear all filters"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View on site"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Delete?"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/filter.html
|
||||
#: admin_interface/templates/admin_interface/dropdown_filter.html
|
||||
#, python-format
|
||||
msgid " By %(filter_title)s "
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/popup_response.html
|
||||
msgid "Popup closing..."
|
||||
msgstr "Popup schließen..."
|
||||
Binary file not shown.
|
|
@ -0,0 +1,323 @@
|
|||
# This file is distributed under the same license as the
|
||||
# django-admin-interface package.
|
||||
#
|
||||
# Translators:
|
||||
# Martin Vuelta <martin.vuelta@softbutterfly.io>, 2018
|
||||
# Santiago Muñoz <smunoz@mythologylabs.com.uy>, 2023
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-admin-interface\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-10 18:20-0500\n"
|
||||
"PO-Revision-Date: 2023-08-04 11:52-0300\n"
|
||||
"Last-Translator: Santiago Muñoz <smunoz@mythologylabs.com.uy>\n"
|
||||
"Language-Team: Spanish <dev@softbutterfly.io>\n"
|
||||
"Language: Spanish \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"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Environment"
|
||||
msgstr "Ambiente"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Language chooser"
|
||||
msgstr "Selección de idioma"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Favicon"
|
||||
msgstr "Favicon"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Header"
|
||||
msgstr "Encabezado"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Breadcrumbs / Module headers"
|
||||
msgstr "Breadcrumbs / Encabezados de módulos"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Generic Links"
|
||||
msgstr "Enlaces genéricos"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Save Buttons"
|
||||
msgstr "Botones de guardar"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Delete Buttons"
|
||||
msgstr "Botones de borrar"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Navigation Bar"
|
||||
msgstr "Barra de navegación"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Related Modal"
|
||||
msgstr "Modal para objetos relacionados"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Form Controls"
|
||||
msgstr "Controles del formulario"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "List Filter"
|
||||
msgstr "Lista de filtros"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Change Form"
|
||||
msgstr "Cambiar Formulario"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Recent Actions"
|
||||
msgstr "Acciones recientes"
|
||||
|
||||
#: admin_interface/apps.py
|
||||
msgid "Admin Interface"
|
||||
msgstr "Interfaz de administración"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "name"
|
||||
msgstr "nombre"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "active"
|
||||
msgstr "activo"
|
||||
|
||||
#: admin_interface/models.py admin_interface/templates/admin/base_site.html
|
||||
msgid "Django administration"
|
||||
msgstr "Administración de Django"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "title"
|
||||
msgstr "Título"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "color"
|
||||
msgstr "color"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible"
|
||||
msgstr "visible"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Leave blank to use the default Django logo"
|
||||
msgstr "Dejar en blanco para usar el logo por defecto de Django"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "logo"
|
||||
msgstr "logo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max width"
|
||||
msgstr "ancho máximo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max height"
|
||||
msgstr "altura máxima"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "(.ico|.png|.gif - 16x16|32x32 px)"
|
||||
msgstr "Formatos ico, png o gif. Tamaños de 16x16 o 32x32 pixeles"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "favicon"
|
||||
msgstr "favicon"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid ""
|
||||
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: "
|
||||
"#3498DB)"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in header (marker and name)"
|
||||
msgstr "visible en el encabezado (marcador y nombre)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in favicon (marker)"
|
||||
msgstr "visible en el favicon (marcador)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Default Select"
|
||||
msgstr "Selección por defecto"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Minimal Select"
|
||||
msgstr "Selección mínima"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "control"
|
||||
msgstr "control"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "code"
|
||||
msgstr "código"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "display"
|
||||
msgstr "mostrar"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background color"
|
||||
msgstr "color de fondo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "text color"
|
||||
msgstr "color de texto"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link color"
|
||||
msgstr "color de enlace"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link hover color"
|
||||
msgstr "color de enlace (hover)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
#, fuzzy
|
||||
#| msgid "background color"
|
||||
msgid "background selected color"
|
||||
msgstr "color de fondo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
#, fuzzy
|
||||
#| msgid "link color"
|
||||
msgid "link selected color"
|
||||
msgstr "color de enlace"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "rounded corners"
|
||||
msgstr "esquinas redondas"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link active color"
|
||||
msgstr "color de enlace (active)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background hover color"
|
||||
msgstr "color de fondo (hover)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background opacity"
|
||||
msgstr "opacidad de fondo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "close button visible"
|
||||
msgstr "mostrar botón de cerrar"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "highlight active"
|
||||
msgstr "destacar activo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "use dropdown"
|
||||
msgstr "Usar lista desplegable"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky position"
|
||||
msgstr "anclar posición"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "quick remove links for active filters at top of sidebar"
|
||||
msgstr "remover enlaces para filtros activos en la parte superior de la barra lateral"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "foldable apps"
|
||||
msgstr "aplicaciones plegables"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "fieldsets as tabs"
|
||||
msgstr "campos como pestañas"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "inlines as tabs"
|
||||
msgstr "inlines como pestañas"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines"
|
||||
msgstr "inlines apilados plegables"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines collapsed"
|
||||
msgstr "inlines apilados plegables colapsados"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines"
|
||||
msgstr "inlines tabulares plegables"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines collapsed"
|
||||
msgstr "inlines tabulares plegables colapsados"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky submit"
|
||||
msgstr "anclar botón de guardar"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky pagination"
|
||||
msgstr "anclar paginación"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Theme"
|
||||
msgstr "Tema"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Themes"
|
||||
msgstr "Temas"
|
||||
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
#, fuzzy
|
||||
#| msgid "List Filter"
|
||||
msgid "Filter"
|
||||
msgstr "Lista de filtros"
|
||||
|
||||
#. Translators: don't translate this, the django catalog already contains it
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
msgid "Clear all filters"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View on site"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Delete?"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/filter.html
|
||||
#: admin_interface/templates/admin_interface/dropdown_filter.html
|
||||
#, python-format
|
||||
msgid " By %(filter_title)s "
|
||||
msgstr " Por %(filter_title)s "
|
||||
|
||||
#: admin_interface/templates/admin/popup_response.html
|
||||
msgid "Popup closing..."
|
||||
msgstr "Cerando popup..."
|
||||
Binary file not shown.
|
|
@ -0,0 +1,321 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# Amir Ajorloo <amirajorloo@gmail.com>, 2020.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-admin-interface\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-10 18:20-0500\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Amir Ajorloo <amirajorloo@gmail.com>\n"
|
||||
"Language-Team: Farsi <LL@li.org>\n"
|
||||
"Language: FarsiMIME-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"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Environment"
|
||||
msgstr "محیط"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Language chooser"
|
||||
msgstr "انتخاب زبان"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Logo"
|
||||
msgstr "لوگو"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Favicon"
|
||||
msgstr "آیکون تب"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Title"
|
||||
msgstr "عنوان"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Header"
|
||||
msgstr "هدر"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Breadcrumbs / Module headers"
|
||||
msgstr "مسیر صفحه"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Generic Links"
|
||||
msgstr "لینکهای عمومی"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Save Buttons"
|
||||
msgstr "دکمههای ذخیره"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Delete Buttons"
|
||||
msgstr "دکمههای حذف"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Navigation Bar"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Related Modal"
|
||||
msgstr "مدلهای مرتبط"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Form Controls"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "List Filter"
|
||||
msgstr "فیلترهای لیست"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Change Form"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Recent Actions"
|
||||
msgstr "فعالیتهای اخیر"
|
||||
|
||||
#: admin_interface/apps.py
|
||||
msgid "Admin Interface"
|
||||
msgstr "ظاهر ادمین"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "name"
|
||||
msgstr "نام"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "active"
|
||||
msgstr "فعال"
|
||||
|
||||
#: admin_interface/models.py admin_interface/templates/admin/base_site.html
|
||||
msgid "Django administration"
|
||||
msgstr "مدیریت جنگو"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "title"
|
||||
msgstr "عنوان"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "color"
|
||||
msgstr "رنگ"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible"
|
||||
msgstr "نمایان"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Leave blank to use the default Django logo"
|
||||
msgstr "برای نمایش لوگوی پیش فرض، خالی بگذارید."
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "logo"
|
||||
msgstr "لوگو"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max width"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max height"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "(.ico|.png|.gif - 16x16|32x32 px)"
|
||||
msgstr "(.ico|.png|.gif - 16x16|32x32 px)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "favicon"
|
||||
msgstr "آیکون تب"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid ""
|
||||
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: "
|
||||
"#3498DB)"
|
||||
msgstr ""
|
||||
"(قرمز: #E74C3C, نارنجی: #E67E22, زرد: #F1C40F, سبز: #2ECC71, آبی: #3498DB)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in header (marker and name)"
|
||||
msgstr "نمایان در هدر"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in favicon (marker)"
|
||||
msgstr "نمایان در آیکون تب"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Default Select"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Minimal Select"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "control"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "code"
|
||||
msgstr "کد"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "display"
|
||||
msgstr "نمایش"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background color"
|
||||
msgstr "رنگ پسزمینه"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "text color"
|
||||
msgstr "رنگ متن"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link color"
|
||||
msgstr "رنگ لینک"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link hover color"
|
||||
msgstr "رنگ لینک در حالت هاور"
|
||||
|
||||
#: admin_interface/models.py
|
||||
#, fuzzy
|
||||
#| msgid "background color"
|
||||
msgid "background selected color"
|
||||
msgstr "رنگ پسزمینه"
|
||||
|
||||
#: admin_interface/models.py
|
||||
#, fuzzy
|
||||
#| msgid "link color"
|
||||
msgid "link selected color"
|
||||
msgstr "رنگ لینک"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "rounded corners"
|
||||
msgstr "گوشههای خمیده"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link active color"
|
||||
msgstr "رنگ فعال پیوند"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background hover color"
|
||||
msgstr "رنگ پسزمینه در حالت هاور"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background opacity"
|
||||
msgstr "شفافیت بکگراند"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "close button visible"
|
||||
msgstr "دکمه بستن نمایان باشد"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "highlight active"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "use dropdown"
|
||||
msgstr "استفاده از دراپ داون"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky position"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "quick remove links for active filters at top of sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "foldable apps"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "fieldsets as tabs"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "inlines as tabs"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky submit"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky pagination"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Theme"
|
||||
msgstr "تم"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Themes"
|
||||
msgstr "تمها"
|
||||
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
#, fuzzy
|
||||
#| msgid "List Filter"
|
||||
msgid "Filter"
|
||||
msgstr "فیلترهای لیست"
|
||||
|
||||
#. Translators: don't translate this, the django catalog already contains it
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
msgid "Clear all filters"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View on site"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Delete?"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/filter.html
|
||||
#: admin_interface/templates/admin_interface/dropdown_filter.html
|
||||
#, python-format
|
||||
msgid " By %(filter_title)s "
|
||||
msgstr " توسط %(filter_title)s "
|
||||
|
||||
#: admin_interface/templates/admin/popup_response.html
|
||||
msgid "Popup closing..."
|
||||
msgstr "پاپ آپ در حال بسته شدن..."
|
||||
Binary file not shown.
|
|
@ -0,0 +1,318 @@
|
|||
# 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
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-10 18:20-0500\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"
|
||||
"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"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Environment"
|
||||
msgstr "Environnement"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Language chooser"
|
||||
msgstr "Sélecteur de langue"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Favicon"
|
||||
msgstr "Favicon"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Title"
|
||||
msgstr "Titre"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Header"
|
||||
msgstr "Bannière"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Breadcrumbs / Module headers"
|
||||
msgstr "Fil d'ariane / en-têtes de module"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Generic Links"
|
||||
msgstr "Liens génériques"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Save Buttons"
|
||||
msgstr "Boutons sauvegarder"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Delete Buttons"
|
||||
msgstr "Boutons supprimer"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Navigation Bar"
|
||||
msgstr "Barre de navigation"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Related Modal"
|
||||
msgstr "Modale pour objet reliés"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Form Controls"
|
||||
msgstr "Contrôles de formulaires"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "List Filter"
|
||||
msgstr "Filtre de liste"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Change Form"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Recent Actions"
|
||||
msgstr "Actions récentes"
|
||||
|
||||
#: admin_interface/apps.py
|
||||
msgid "Admin Interface"
|
||||
msgstr "Interface Admin"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "name"
|
||||
msgstr "nom"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "active"
|
||||
msgstr "actif"
|
||||
|
||||
#: admin_interface/models.py admin_interface/templates/admin/base_site.html
|
||||
msgid "Django administration"
|
||||
msgstr "Administration Django"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "title"
|
||||
msgstr "titre"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "color"
|
||||
msgstr "couleur"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible"
|
||||
msgstr "visible"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Leave blank to use the default Django logo"
|
||||
msgstr "Laisser vide pour utiliser le logo Django par défaut"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "logo"
|
||||
msgstr "logo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max width"
|
||||
msgstr "largeur max"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max height"
|
||||
msgstr "hauteur max"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "(.ico|.png|.gif - 16x16|32x32 px)"
|
||||
msgstr "(.ico|.png|.gif - 16x16|32x32 px)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "favicon"
|
||||
msgstr "favicon"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid ""
|
||||
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: "
|
||||
"#3498DB)"
|
||||
msgstr ""
|
||||
"(rouge: #E74C3C, orange: #E67E22, jaune: #F1C40F, vert: #2ECC71, bleu: "
|
||||
"#3498DB)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in header (marker and name)"
|
||||
msgstr "visible dans l’en-tête (marqueur et nom)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in favicon (marker)"
|
||||
msgstr "visible dans la favicon (marqueur)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Default Select"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Minimal Select"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "control"
|
||||
msgstr "contrôle"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "code"
|
||||
msgstr "code"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "display"
|
||||
msgstr "affichage"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background color"
|
||||
msgstr "couleur d'arrière-plan"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "text color"
|
||||
msgstr "couleur du texte"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link color"
|
||||
msgstr "couleur de lien"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link hover color"
|
||||
msgstr "couleur de lien au survol"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background selected color"
|
||||
msgstr "couleur d'arrière-plan choisi"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link selected color"
|
||||
msgstr "couleur de lien choisi"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "rounded corners"
|
||||
msgstr "coins arrondis"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link active color"
|
||||
msgstr "couleur de lien actif"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background hover color"
|
||||
msgstr "couleur de fond au survol"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background opacity"
|
||||
msgstr "opacité de l'arrière-plan"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "close button visible"
|
||||
msgstr "bouton fermer visible"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "highlight active"
|
||||
msgstr "mise en valeur active"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "use dropdown"
|
||||
msgstr "utiliser un menu déroulant"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky position"
|
||||
msgstr "position adhérente (sticky)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "quick remove links for active filters at top of sidebar"
|
||||
msgstr ""
|
||||
"liens de suppression pour les filtres actifs en haut de la barre latérale"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "foldable apps"
|
||||
msgstr "apps repliables"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "fieldsets as tabs"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "inlines as tabs"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky submit"
|
||||
msgstr "envoi adhérent (sticky)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky pagination"
|
||||
msgstr "pagination adhérente (sticky)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Theme"
|
||||
msgstr "Thème"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Themes"
|
||||
msgstr "Thèmes"
|
||||
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
msgid "Filter"
|
||||
msgstr "Filtre"
|
||||
|
||||
#. Translators: don't translate this, the django catalog already contains it
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
msgid "Clear all filters"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View on site"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Delete?"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/filter.html
|
||||
#: admin_interface/templates/admin_interface/dropdown_filter.html
|
||||
#, python-format
|
||||
msgid " By %(filter_title)s "
|
||||
msgstr " Par %(filter_title)s "
|
||||
|
||||
#: admin_interface/templates/admin/popup_response.html
|
||||
msgid "Popup closing..."
|
||||
msgstr "Fermeture de la modale..."
|
||||
Binary file not shown.
|
|
@ -0,0 +1,324 @@
|
|||
# This file is distributed under the same license as the
|
||||
# django-admin-interface package.
|
||||
#
|
||||
# Translators:
|
||||
# Fabio Caccamo <fabio.caccamo@gmail.com>, 2018
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-admin-interface\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-10 18:20-0500\n"
|
||||
"PO-Revision-Date: 2018-12-30 19:13-0500\n"
|
||||
"Last-Translator: Fabio Caccamo <fabio.caccamo@gmail.com>\n"
|
||||
"Language-Team: Italian <LL@li.org>\n"
|
||||
"Language: Italian \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"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Environment"
|
||||
msgstr "Ambiente"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Language chooser"
|
||||
msgstr "Selettore di lingua"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Favicon"
|
||||
msgstr "Favicon"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Title"
|
||||
msgstr "Titolo"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Header"
|
||||
msgstr "Header"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Breadcrumbs / Module headers"
|
||||
msgstr "Breadcrumbs / Header dei moduli"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Generic Links"
|
||||
msgstr "Link generici"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Save Buttons"
|
||||
msgstr "Pulsanti per salvare"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Delete Buttons"
|
||||
msgstr "Pulsanti per eliminare"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Navigation Bar"
|
||||
msgstr "Barra di Navigazione"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Related Modal"
|
||||
msgstr "Modale per gli oggetti correlati"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Form Controls"
|
||||
msgstr "Controlli dei form"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "List Filter"
|
||||
msgstr "Filtro listato"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Change Form"
|
||||
msgstr "Form di modifica"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Recent Actions"
|
||||
msgstr "Azioni recenti"
|
||||
|
||||
#: admin_interface/apps.py
|
||||
msgid "Admin Interface"
|
||||
msgstr "Interfaccia di amministrazione"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "name"
|
||||
msgstr "nome"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "active"
|
||||
msgstr "attivo"
|
||||
|
||||
#: admin_interface/models.py admin_interface/templates/admin/base_site.html
|
||||
msgid "Django administration"
|
||||
msgstr "Amministrazione di Django"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "title"
|
||||
msgstr "titolo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "color"
|
||||
msgstr "colore"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible"
|
||||
msgstr "visibile"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Leave blank to use the default Django logo"
|
||||
msgstr "Lasciare vuoto per usare il logo Django di default"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "logo"
|
||||
msgstr "logo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max width"
|
||||
msgstr "larghezza massima"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max height"
|
||||
msgstr "altezza massima"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "(.ico|.png|.gif - 16x16|32x32 px)"
|
||||
msgstr "(formato ico, png o gif - dimensioni 16x16 o 32x32 px)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "favicon"
|
||||
msgstr "favicon"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid ""
|
||||
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: "
|
||||
"#3498DB)"
|
||||
msgstr ""
|
||||
"(rosso: #E74C3C, arancione: #E67E22, giallo: #F1C40F, verde: #2ECC71, blu: "
|
||||
"#3498DB)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in header (marker and name)"
|
||||
msgstr "visibile nell'header (marker e nome)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in favicon (marker)"
|
||||
msgstr "visibile nella favicon (marker)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Default Select"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Minimal Select"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "control"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "code"
|
||||
msgstr "codice"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "display"
|
||||
msgstr "visualizzazione"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background color"
|
||||
msgstr "colore di sfondo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "text color"
|
||||
msgstr "colore del testo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link color"
|
||||
msgstr "colore dei link"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link hover color"
|
||||
msgstr "colore dei link in hover"
|
||||
|
||||
#: admin_interface/models.py
|
||||
#, fuzzy
|
||||
#| msgid "background color"
|
||||
msgid "background selected color"
|
||||
msgstr "colore di sfondo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
#, fuzzy
|
||||
#| msgid "link color"
|
||||
msgid "link selected color"
|
||||
msgstr "colore dei link"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "rounded corners"
|
||||
msgstr "bordi arrotondati"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link active color"
|
||||
msgstr "colore dei link attivi"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background hover color"
|
||||
msgstr "colore di sfondo in hover"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background opacity"
|
||||
msgstr "opacità dello sfondo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "close button visible"
|
||||
msgstr "pulsante chiudi visibile"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "highlight active"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "use dropdown"
|
||||
msgstr "usa dropdown"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky position"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "quick remove links for active filters at top of sidebar"
|
||||
msgstr "links di rimozione rapida dei filtri attivi in alto nella sidebar"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "foldable apps"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "fieldsets as tabs"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "inlines as tabs"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky submit"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky pagination"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Theme"
|
||||
msgstr "Tema"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Themes"
|
||||
msgstr "Temi"
|
||||
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
#, fuzzy
|
||||
#| msgid "List Filter"
|
||||
msgid "Filter"
|
||||
msgstr "Filtro listato"
|
||||
|
||||
#. Translators: don't translate this, the django catalog already contains it
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
msgid "Clear all filters"
|
||||
msgstr "Cancella tutti i filtri"
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Change"
|
||||
msgstr "Modifica"
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View"
|
||||
msgstr "Visualizza"
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View on site"
|
||||
msgstr "Visualizza sul sito"
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Delete?"
|
||||
msgstr "Eliminare?"
|
||||
|
||||
#: admin_interface/templates/admin/filter.html
|
||||
#: admin_interface/templates/admin_interface/dropdown_filter.html
|
||||
#, python-format
|
||||
msgid " By %(filter_title)s "
|
||||
msgstr " Per %(filter_title)s "
|
||||
|
||||
#: admin_interface/templates/admin/popup_response.html
|
||||
msgid "Popup closing..."
|
||||
msgstr "Chiusura popup..."
|
||||
Binary file not shown.
|
|
@ -0,0 +1,324 @@
|
|||
# This file is distributed under the same license as the
|
||||
# django-admin-interface package.
|
||||
#
|
||||
# Translators:
|
||||
# Kamil Paduszyński <kpaduszy@gmail.com>, 2022
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-admin-interface\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-10 18:20-0500\n"
|
||||
"PO-Revision-Date: 2022-02-04 19:13-0500\n"
|
||||
"Last-Translator: Kamil Paduszyński <kpaduszy@gmail.com>\n"
|
||||
"Language-Team: Polish <LL@li.org>\n"
|
||||
"Language: Polish \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"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Environment"
|
||||
msgstr "Środowisko"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Language chooser"
|
||||
msgstr "Wybór wersji językowej"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Favicon"
|
||||
msgstr "Ikonka"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Title"
|
||||
msgstr "Tytuł"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Header"
|
||||
msgstr "Nagłówek"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Breadcrumbs / Module headers"
|
||||
msgstr "Pasek nawigacyjny / nagłówki modułów"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Generic Links"
|
||||
msgstr "Zwykłe linki"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Save Buttons"
|
||||
msgstr "Przyciski zapisywania"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Delete Buttons"
|
||||
msgstr "Przyciski usuwania"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Navigation Bar"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Related Modal"
|
||||
msgstr "Okno dialogowe"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Form Controls"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "List Filter"
|
||||
msgstr "Filtry"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Change Form"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Recent Actions"
|
||||
msgstr "Ostatnie działania"
|
||||
|
||||
#: admin_interface/apps.py
|
||||
msgid "Admin Interface"
|
||||
msgstr "Wygląd panelu administracyjnego"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "name"
|
||||
msgstr "nazwa"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "active"
|
||||
msgstr "aktywny"
|
||||
|
||||
#: admin_interface/models.py admin_interface/templates/admin/base_site.html
|
||||
msgid "Django administration"
|
||||
msgstr "Administracja Django"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "title"
|
||||
msgstr "tytuł"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "color"
|
||||
msgstr "kolor"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible"
|
||||
msgstr "widoczny"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Leave blank to use the default Django logo"
|
||||
msgstr "Puste ustawia domyślne logo Django"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "logo"
|
||||
msgstr "logo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max width"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max height"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "(.ico|.png|.gif - 16x16|32x32 px)"
|
||||
msgstr "(Format pliku: .ico, .png, .gif; wymiary: 16 x 16 lub 32 x 32 px)."
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "favicon"
|
||||
msgstr "ikonka"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid ""
|
||||
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: "
|
||||
"#3498DB)"
|
||||
msgstr ""
|
||||
"(czerwony: #E74C3C, pomarańczowy: #E67E22, żółty: #F1C40F, zielony: #2ECC71, "
|
||||
"niebieski: #3498DB)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in header (marker and name)"
|
||||
msgstr "widoczne w nagłówku (znacznik i nazwa)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in favicon (marker)"
|
||||
msgstr "widoczne przy ikonce (znacznik)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Default Select"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Minimal Select"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "control"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "code"
|
||||
msgstr "kod"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "display"
|
||||
msgstr "wyświetlaj"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background color"
|
||||
msgstr "kolor tła"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "text color"
|
||||
msgstr "kolor tekstu"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link color"
|
||||
msgstr "kolor linku"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link hover color"
|
||||
msgstr "kolor wskazywanego linku"
|
||||
|
||||
#: admin_interface/models.py
|
||||
#, fuzzy
|
||||
#| msgid "background color"
|
||||
msgid "background selected color"
|
||||
msgstr "kolor tła"
|
||||
|
||||
#: admin_interface/models.py
|
||||
#, fuzzy
|
||||
#| msgid "link color"
|
||||
msgid "link selected color"
|
||||
msgstr "kolor linku"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "rounded corners"
|
||||
msgstr "zaokrąglenie narożników"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link active color"
|
||||
msgstr "kolor aktywny linku"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background hover color"
|
||||
msgstr "kolor tła wskazywanego przycisku"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background opacity"
|
||||
msgstr "przeźroczystość tła"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "close button visible"
|
||||
msgstr "pokaż przycisk zamykania"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "highlight active"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "use dropdown"
|
||||
msgstr "zastosuj listy rozwijane"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky position"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "quick remove links for active filters at top of sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "foldable apps"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "fieldsets as tabs"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "inlines as tabs"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky submit"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky pagination"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Theme"
|
||||
msgstr "Schemat"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Themes"
|
||||
msgstr "Schematy"
|
||||
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
#, fuzzy
|
||||
#| msgid "List Filter"
|
||||
msgid "Filter"
|
||||
msgstr "Filtry"
|
||||
|
||||
#. Translators: don't translate this, the django catalog already contains it
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
msgid "Clear all filters"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View on site"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Delete?"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/filter.html
|
||||
#: admin_interface/templates/admin_interface/dropdown_filter.html
|
||||
#, python-format
|
||||
msgid " By %(filter_title)s "
|
||||
msgstr " po %(filter_title)s "
|
||||
|
||||
#: admin_interface/templates/admin/popup_response.html
|
||||
msgid "Popup closing..."
|
||||
msgstr "Zamykanie..."
|
||||
Binary file not shown.
|
|
@ -0,0 +1,321 @@
|
|||
# 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
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-10 18:20-0500\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"
|
||||
"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"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Environment"
|
||||
msgstr "Ambiente"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Language chooser"
|
||||
msgstr "Seletor de idioma"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Favicon"
|
||||
msgstr "Favicon"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Header"
|
||||
msgstr "Cabeçalho"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Breadcrumbs / Module headers"
|
||||
msgstr "Cabeçalhos de módulo"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Generic Links"
|
||||
msgstr "Links Genéricos"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Save Buttons"
|
||||
msgstr "Botões Salvar"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Delete Buttons"
|
||||
msgstr "Botões Deletar"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Navigation Bar"
|
||||
msgstr "Barra de Navegação"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Related Modal"
|
||||
msgstr "Modal Relacionado"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Form Controls"
|
||||
msgstr "Controles de Formulário"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "List Filter"
|
||||
msgstr "Filtro de lista"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Change Form"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Recent Actions"
|
||||
msgstr "Ações recentes"
|
||||
|
||||
#: admin_interface/apps.py
|
||||
msgid "Admin Interface"
|
||||
msgstr "Interface do administrador"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "name"
|
||||
msgstr "nome"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "active"
|
||||
msgstr "ativo"
|
||||
|
||||
#: admin_interface/models.py admin_interface/templates/admin/base_site.html
|
||||
msgid "Django administration"
|
||||
msgstr "Administração do Django"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "title"
|
||||
msgstr "título"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "color"
|
||||
msgstr "cor"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible"
|
||||
msgstr "visível"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Leave blank to use the default Django logo"
|
||||
msgstr "Deixe em branco para usar o logotipo padrão do Django"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "logo"
|
||||
msgstr "logo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max width"
|
||||
msgstr "largura máxima"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max height"
|
||||
msgstr "altura máxima"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "(.ico|.png|.gif - 16x16|32x32 px)"
|
||||
msgstr "(.ico|.png|.gif - 16x16|32x32 px)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "favicon"
|
||||
msgstr "favicon"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid ""
|
||||
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: "
|
||||
"#3498DB)"
|
||||
msgstr ""
|
||||
"(vermelho: #E74C3C, laranja: #E67E22, amarelo: #F1C40F, verde: #2ECC71, "
|
||||
"azul: #3498DB)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in header (marker and name)"
|
||||
msgstr "visível no cabeçalho (marcador e nome)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in favicon (marker)"
|
||||
msgstr "visível no favicon (marcador)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Default Select"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Minimal Select"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
#, fuzzy
|
||||
#| msgid "Form Controls"
|
||||
msgid "control"
|
||||
msgstr "Controles de Formulário"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "code"
|
||||
msgstr "código"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "display"
|
||||
msgstr "exibição"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background color"
|
||||
msgstr "cor de fundo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "text color"
|
||||
msgstr "cor do texto"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link color"
|
||||
msgstr "cor do link"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link hover color"
|
||||
msgstr "cor de foco do link"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background selected color"
|
||||
msgstr "cor de fundo selecionada"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link selected color"
|
||||
msgstr "link cor selecionada"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "rounded corners"
|
||||
msgstr "cantos arredondados"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link active color"
|
||||
msgstr "cor de ativação do link"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background hover color"
|
||||
msgstr "cor de fundo do foco"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background opacity"
|
||||
msgstr "opacidade de fundo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "close button visible"
|
||||
msgstr "botão fechar visível"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "highlight active"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "use dropdown"
|
||||
msgstr "usar menu suspenso"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky position"
|
||||
msgstr "posição sticky"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "quick remove links for active filters at top of sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "foldable apps"
|
||||
msgstr "aplicativos dobráveis"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "fieldsets as tabs"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "inlines as tabs"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky submit"
|
||||
msgstr "envio fixo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky pagination"
|
||||
msgstr "paginação fixa"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Theme"
|
||||
msgstr "Tema"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Themes"
|
||||
msgstr "Temas"
|
||||
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
#, fuzzy
|
||||
#| msgid "List Filter"
|
||||
msgid "Filter"
|
||||
msgstr "Filtro de lista"
|
||||
|
||||
#. Translators: don't translate this, the django catalog already contains it
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
msgid "Clear all filters"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View on site"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Delete?"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/filter.html
|
||||
#: admin_interface/templates/admin_interface/dropdown_filter.html
|
||||
#, python-format
|
||||
msgid " By %(filter_title)s "
|
||||
msgstr " por %(filter_title)s "
|
||||
|
||||
#: admin_interface/templates/admin/popup_response.html
|
||||
msgid "Popup closing..."
|
||||
msgstr "Pop-up fechando..."
|
||||
Binary file not shown.
|
|
@ -0,0 +1,320 @@
|
|||
# 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
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-23 16:28-0500\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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
|
||||
"(n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Environment"
|
||||
msgstr "Окружение"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Language chooser"
|
||||
msgstr "Вид выбора языка"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Logo"
|
||||
msgstr "Логотип"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Favicon"
|
||||
msgstr "Иконка адресной строки"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Title"
|
||||
msgstr "Заголовок"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Header"
|
||||
msgstr "Шапка"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Breadcrumbs / Module headers"
|
||||
msgstr "Шапки модулей"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Generic Links"
|
||||
msgstr "Общие ссылки"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Save Buttons"
|
||||
msgstr "Кнопки сохранения"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Delete Buttons"
|
||||
msgstr "Кнопки удаления"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Navigation Bar"
|
||||
msgstr "Строка навигации"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Related Modal"
|
||||
msgstr "Модаль для связанных объектов"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Form Controls"
|
||||
msgstr "Управление формами"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "List Filter"
|
||||
msgstr "Вид списка фильтров"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Change Form"
|
||||
msgstr "Вид формы изменения"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Inlines"
|
||||
msgstr "Вид вставок"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Recent Actions"
|
||||
msgstr "Недавние действия"
|
||||
|
||||
#: admin_interface/apps.py
|
||||
msgid "Admin Interface"
|
||||
msgstr "Интерфейс администрирования"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "name"
|
||||
msgstr "название"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "active"
|
||||
msgstr "активный"
|
||||
|
||||
#: admin_interface/models.py admin_interface/templates/admin/base_site.html
|
||||
msgid "Django administration"
|
||||
msgstr "Администрирование Django"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "title"
|
||||
msgstr "заголовок"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "color"
|
||||
msgstr "цвет"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible"
|
||||
msgstr "видимый"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Leave blank to use the default Django logo"
|
||||
msgstr "Оставьте пустым, чтобы по умолчанию использовать логотип Django"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "logo"
|
||||
msgstr "логотип"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max width"
|
||||
msgstr "максимальная ширина"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max height"
|
||||
msgstr "максимальная высота"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "(.ico|.png|.gif - 16x16|32x32 px)"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "favicon"
|
||||
msgstr "иконка в адресной строке"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid ""
|
||||
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: "
|
||||
"#3498DB)"
|
||||
msgstr ""
|
||||
"(красный: #E74C3C, оранжевый: #E67E22, желтый: #F1C40F, зеленый: #2ECC71, "
|
||||
"синий: #3498DB"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in header (marker and name)"
|
||||
msgstr "видимый в шапке (метка и название)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in favicon (marker)"
|
||||
msgstr "видимый в иконке адресной строки (метка)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Default Select"
|
||||
msgstr "Выбор по умолчанию"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Minimal Select"
|
||||
msgstr "Минимальный выбор"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "control"
|
||||
msgstr "контроль"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "code"
|
||||
msgstr "код"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "display"
|
||||
msgstr "отображение"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background color"
|
||||
msgstr "цвет заднего фона"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "text color"
|
||||
msgstr "цвет текста"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link color"
|
||||
msgstr "цвет ссылки"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link hover color"
|
||||
msgstr "цвет ссылки при наведении"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background selected color"
|
||||
msgstr "цвет заднего фона выбранного объекта"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link selected color"
|
||||
msgstr "цвет ссылки выбранного объекта"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "rounded corners"
|
||||
msgstr "закругленные края"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link active color"
|
||||
msgstr "цвет активной ссылки"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background hover color"
|
||||
msgstr "цвет заднего фона при наведении"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background opacity"
|
||||
msgstr "прозрачность заднего фона"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "close button visible"
|
||||
msgstr "видимость кнопки закрытия"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "highlight active"
|
||||
msgstr "подсвечивать активное"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "use dropdown"
|
||||
msgstr "использовать выпадающий список"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky position"
|
||||
msgstr "устойчивое положение"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "quick remove links for active filters at top of sidebar"
|
||||
msgstr "быстро удалять ссылки для активных фильтров сверху боковой панели"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "foldable apps"
|
||||
msgstr "складные приложения"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "fieldsets as tabs"
|
||||
msgstr "набор полей в виде вкладок"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "inlines as tabs"
|
||||
msgstr "вставки как вкладки"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines"
|
||||
msgstr "разборные уложенные вставки"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines collapsed"
|
||||
msgstr "сворачивающиеся уложенные вкладки свернуты"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines"
|
||||
msgstr "сворачивающиеся табличные вставки"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines collapsed"
|
||||
msgstr "сворачивающиеся табличные вставки свернуты"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky submit"
|
||||
msgstr "устойчивая отправка"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky pagination"
|
||||
msgstr "устойчивая разбивка"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Theme"
|
||||
msgstr "Тема"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Themes"
|
||||
msgstr "Темы"
|
||||
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
msgid "Filter"
|
||||
msgstr "Фильтр"
|
||||
|
||||
#. Translators: don't translate this, the django catalog already contains it
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
msgid "Clear all filters"
|
||||
msgstr "Очистить все фильтры"
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Change"
|
||||
msgstr "Изменить"
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View"
|
||||
msgstr "Посмотреть"
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View on site"
|
||||
msgstr "Посмотреть на сайте"
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Delete?"
|
||||
msgstr "Удалить?"
|
||||
|
||||
#: admin_interface/templates/admin/filter.html
|
||||
#: admin_interface/templates/admin_interface/dropdown_filter.html
|
||||
#, fuzzy, python-format
|
||||
#| msgid " By %(filter_title)s "
|
||||
msgid " By %(filter_title)s "
|
||||
msgstr " По %(filter_title)ы "
|
||||
|
||||
#: admin_interface/templates/admin/popup_response.html
|
||||
msgid "Popup closing..."
|
||||
msgstr "Закрытие всплывающего окна..."
|
||||
Binary file not shown.
|
|
@ -0,0 +1,326 @@
|
|||
# This file is distributed under the same license as the
|
||||
# django-admin-interface package.
|
||||
#
|
||||
# Translators:
|
||||
# Ishak Okutan <ishak.oktn@gmail.com>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-admin-interface\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-10 18:20-0500\n"
|
||||
"PO-Revision-Date: 2020-01-29 04:53+0300\n"
|
||||
"Last-Translator: Ishak Okutan <ishak.oktn@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: tr\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"
|
||||
"X-Generator: Poedit 2.2.4\n"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Environment"
|
||||
msgstr "Ortam"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Language chooser"
|
||||
msgstr "Dil seçimi"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Favicon"
|
||||
msgstr "Favicon"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Title"
|
||||
msgstr "Başlık"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Header"
|
||||
msgstr "Üst Kısım"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Breadcrumbs / Module headers"
|
||||
msgstr "Link alanı / Modül başlıkları"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Generic Links"
|
||||
msgstr "Genel Bağlantılar"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Save Buttons"
|
||||
msgstr "Kaydet Butonları"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Delete Buttons"
|
||||
msgstr "Kaldır Butonları"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Navigation Bar"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Related Modal"
|
||||
msgstr "İlgili Modal"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Form Controls"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "List Filter"
|
||||
msgstr "Liste Filtresi"
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Change Form"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/admin.py
|
||||
msgid "Recent Actions"
|
||||
msgstr "Son İşlemler"
|
||||
|
||||
#: admin_interface/apps.py
|
||||
msgid "Admin Interface"
|
||||
msgstr "Yönetici Arayüzü"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "name"
|
||||
msgstr "adı"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "active"
|
||||
msgstr "aktif"
|
||||
|
||||
#: admin_interface/models.py admin_interface/templates/admin/base_site.html
|
||||
msgid "Django administration"
|
||||
msgstr "Django yönetimi"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "title"
|
||||
msgstr "başlık"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "color"
|
||||
msgstr "renk"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible"
|
||||
msgstr "göster"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Leave blank to use the default Django logo"
|
||||
msgstr "Varsayılan Django logosunu kullanmak için boş bırakın"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "logo"
|
||||
msgstr "logo"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max width"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "max height"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "(.ico|.png|.gif - 16x16|32x32 px)"
|
||||
msgstr ""
|
||||
"(favicon simgesi, png veya (GIF 16x16) veya (32x32) piksel boyutlarında "
|
||||
"olmalıdır)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "favicon"
|
||||
msgstr "favicon"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid ""
|
||||
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: "
|
||||
"#3498DB)"
|
||||
msgstr ""
|
||||
"(kırmızı: # E74C3C, turuncu: # E67E22, sarı: # F1C40F, yeşil: # 2ECC71, "
|
||||
"mavi: # 3498DB)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in header (marker and name)"
|
||||
msgstr "üst kısım da görünsün (yuvarlak işaret ve ad)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "visible in favicon (marker)"
|
||||
msgstr "favicon’da görünsün (yuvarlak işaret)"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Default Select"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Minimal Select"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "control"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "code"
|
||||
msgstr "kod"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "display"
|
||||
msgstr "görüntüle"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background color"
|
||||
msgstr "arka plan rengi"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "text color"
|
||||
msgstr "metin rengi"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link color"
|
||||
msgstr "bağlantı rengi"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link hover color"
|
||||
msgstr "bağlantı üzerine gelindiğindeki rengi"
|
||||
|
||||
#: admin_interface/models.py
|
||||
#, fuzzy
|
||||
#| msgid "background color"
|
||||
msgid "background selected color"
|
||||
msgstr "arka plan rengi"
|
||||
|
||||
#: admin_interface/models.py
|
||||
#, fuzzy
|
||||
#| msgid "link color"
|
||||
msgid "link selected color"
|
||||
msgstr "bağlantı rengi"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "rounded corners"
|
||||
msgstr "köşeleri ovalleştir"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "link active color"
|
||||
msgstr "bağlantı aktif gelindiğindeki rengi"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background hover color"
|
||||
msgstr "arka planın üzerine gelindiğindeki renk"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "background opacity"
|
||||
msgstr "arka plan şeffaflığı"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "close button visible"
|
||||
msgstr "kapat düğmesi görünsün"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "highlight active"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "use dropdown"
|
||||
msgstr "açılır listeyi kullan"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky position"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "quick remove links for active filters at top of sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "foldable apps"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "fieldsets as tabs"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "inlines as tabs"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible stacked inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "collapsible tabular inlines collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky submit"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "sticky pagination"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Theme"
|
||||
msgstr "Tema"
|
||||
|
||||
#: admin_interface/models.py
|
||||
msgid "Themes"
|
||||
msgstr "Temalar"
|
||||
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
#, fuzzy
|
||||
#| msgid "List Filter"
|
||||
msgid "Filter"
|
||||
msgstr "Liste Filtresi"
|
||||
|
||||
#. Translators: don't translate this, the django catalog already contains it
|
||||
#: admin_interface/templates/admin/change_list.html
|
||||
msgid "Clear all filters"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_stacked.html
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "View on site"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/edit_inline/headerless_tabular.html
|
||||
msgid "Delete?"
|
||||
msgstr ""
|
||||
|
||||
#: admin_interface/templates/admin/filter.html
|
||||
#: admin_interface/templates/admin_interface/dropdown_filter.html
|
||||
#, python-format
|
||||
msgid " By %(filter_title)s "
|
||||
msgstr " %(filter_title)s tarafından "
|
||||
|
||||
#: admin_interface/templates/admin/popup_response.html
|
||||
msgid "Popup closing..."
|
||||
msgstr "Popup kapanıyor..."
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
__author__ = "Fabio Caccamo"
|
||||
__copyright__ = "Copyright (c) 2016-present Fabio Caccamo"
|
||||
__description__ = (
|
||||
"django's default admin interface with superpowers - "
|
||||
"customizable themes, popup windows replaced by modals and many other features."
|
||||
)
|
||||
__email__ = "fabio.caccamo@gmail.com"
|
||||
__license__ = "MIT"
|
||||
__title__ = "django-admin-interface"
|
||||
__version__ = "0.28.6"
|
||||
|
|
@ -1,50 +1,258 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
import colorfield.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
dependencies = []
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Theme',
|
||||
name="Theme",
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('name', models.CharField(default=b'Django', max_length=50)),
|
||||
('active', models.BooleanField(default=True)),
|
||||
('title', models.CharField(default=b'Django administration', max_length=50, blank=True)),
|
||||
('title_visible', models.BooleanField(default=True, verbose_name=b'visible')),
|
||||
('logo', models.FileField(upload_to=b'admin-interface/logo/', blank=True)),
|
||||
('logo_visible', models.BooleanField(default=True, verbose_name=b'visible')),
|
||||
('css_header_background_color', colorfield.fields.ColorField(default=b'#0C4B33', help_text=b'#0C4B33', max_length=10, verbose_name=b'background color', blank=True)),
|
||||
('css_header_title_color', colorfield.fields.ColorField(default=b'#F5DD5D', help_text=b'#F5DD5D', max_length=10, verbose_name=b'title color', blank=True)),
|
||||
('css_header_text_color', colorfield.fields.ColorField(default=b'#44B78B', help_text=b'#44B78B', max_length=10, verbose_name=b'text color', blank=True)),
|
||||
('css_header_link_color', colorfield.fields.ColorField(default=b'#FFFFFF', help_text=b'#FFFFFF', max_length=10, verbose_name=b'link color', blank=True)),
|
||||
('css_header_link_hover_color', colorfield.fields.ColorField(default=b'#C9F0DD', help_text=b'#C9F0DD', max_length=10, verbose_name=b'link hover color', blank=True)),
|
||||
('css_module_background_color', colorfield.fields.ColorField(default=b'#44B78B', help_text=b'#44B78B', max_length=10, verbose_name=b'background color', blank=True)),
|
||||
('css_module_text_color', colorfield.fields.ColorField(default=b'#FFFFFF', help_text=b'#FFFFFF', max_length=10, verbose_name=b'text color', blank=True)),
|
||||
('css_module_link_color', colorfield.fields.ColorField(default=b'#FFFFFF', help_text=b'#FFFFFF', max_length=10, verbose_name=b'link color', blank=True)),
|
||||
('css_module_link_hover_color', colorfield.fields.ColorField(default=b'#C9F0DD', help_text=b'#C9F0DD', max_length=10, verbose_name=b'link hover color', blank=True)),
|
||||
('css_module_rounded_corners', models.BooleanField(default=True, verbose_name=b'rounded corners')),
|
||||
('css_generic_link_color', colorfield.fields.ColorField(default=b'#0C3C26', help_text=b'#0C3C26', max_length=10, verbose_name=b'link color', blank=True)),
|
||||
('css_generic_link_hover_color', colorfield.fields.ColorField(default=b'#156641', help_text=b'#156641', max_length=10, verbose_name=b'link hover color', blank=True)),
|
||||
('css_save_button_background_color', colorfield.fields.ColorField(default=b'#0C4B33', help_text=b'#0C4B33', max_length=10, verbose_name=b'background color', blank=True)),
|
||||
('css_save_button_background_hover_color', colorfield.fields.ColorField(default=b'#0C3C26', help_text=b'#0C3C26', max_length=10, verbose_name=b'background hover color', blank=True)),
|
||||
('css_save_button_text_color', colorfield.fields.ColorField(default=b'#FFFFFF', help_text=b'#FFFFFF', max_length=10, verbose_name=b'text color', blank=True)),
|
||||
('css_delete_button_background_color', colorfield.fields.ColorField(default=b'#BA2121', help_text=b'#BA2121', max_length=10, verbose_name=b'background color', blank=True)),
|
||||
('css_delete_button_background_hover_color', colorfield.fields.ColorField(default=b'#A41515', help_text=b'#A41515', max_length=10, verbose_name=b'background hover color', blank=True)),
|
||||
('css_delete_button_text_color', colorfield.fields.ColorField(default=b'#FFFFFF', help_text=b'#FFFFFF', max_length=10, verbose_name=b'text color', blank=True)),
|
||||
('css', models.TextField(blank=True)),
|
||||
('list_filter_dropdown', models.BooleanField(default=False)),
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
verbose_name="ID",
|
||||
serialize=False,
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"name",
|
||||
models.CharField(
|
||||
default="Django",
|
||||
max_length=50,
|
||||
),
|
||||
),
|
||||
(
|
||||
"active",
|
||||
models.BooleanField(
|
||||
default=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"title",
|
||||
models.CharField(
|
||||
default="Django administration",
|
||||
max_length=50,
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"title_visible",
|
||||
models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="visible",
|
||||
),
|
||||
),
|
||||
(
|
||||
"logo",
|
||||
models.FileField(
|
||||
upload_to="admin-interface/logo/",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"logo_visible",
|
||||
models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="visible",
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_header_background_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#0C4B33",
|
||||
help_text="#0C4B33",
|
||||
max_length=10,
|
||||
verbose_name="background color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_header_title_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#F5DD5D",
|
||||
help_text="#F5DD5D",
|
||||
max_length=10,
|
||||
verbose_name="title color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_header_text_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#44B78B",
|
||||
help_text="#44B78B",
|
||||
max_length=10,
|
||||
verbose_name="text color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_header_link_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name="link color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_header_link_hover_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#C9F0DD",
|
||||
help_text="#C9F0DD",
|
||||
max_length=10,
|
||||
verbose_name="link hover color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_module_background_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#44B78B",
|
||||
help_text="#44B78B",
|
||||
max_length=10,
|
||||
verbose_name="background color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_module_text_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name="text color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_module_link_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name="link color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_module_link_hover_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#C9F0DD",
|
||||
help_text="#C9F0DD",
|
||||
max_length=10,
|
||||
verbose_name="link hover color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_module_rounded_corners",
|
||||
models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="rounded corners",
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_generic_link_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#0C3C26",
|
||||
help_text="#0C3C26",
|
||||
max_length=10,
|
||||
verbose_name="link color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_generic_link_hover_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#156641",
|
||||
help_text="#156641",
|
||||
max_length=10,
|
||||
verbose_name="link hover color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_save_button_background_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#0C4B33",
|
||||
help_text="#0C4B33",
|
||||
max_length=10,
|
||||
verbose_name="background color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_save_button_background_hover_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#0C3C26",
|
||||
help_text="#0C3C26",
|
||||
max_length=10,
|
||||
verbose_name="background hover color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_save_button_text_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name="text color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_delete_button_background_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#BA2121",
|
||||
help_text="#BA2121",
|
||||
max_length=10,
|
||||
verbose_name="background color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_delete_button_background_hover_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#A41515",
|
||||
help_text="#A41515",
|
||||
max_length=10,
|
||||
verbose_name="background hover color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css_delete_button_text_color",
|
||||
colorfield.fields.ColorField(
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name="text color",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"css",
|
||||
models.TextField(
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"list_filter_dropdown",
|
||||
models.BooleanField(
|
||||
default=False,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Theme',
|
||||
'verbose_name_plural': 'Themes',
|
||||
"verbose_name": "Theme",
|
||||
"verbose_name_plural": "Themes",
|
||||
},
|
||||
),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,40 +1,66 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import colorfield.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('admin_interface', '0001_initial'),
|
||||
("admin_interface", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='theme',
|
||||
name='list_filter_dropdown',
|
||||
field=models.BooleanField(default=False, verbose_name=b'use dropdown'),
|
||||
model_name="theme",
|
||||
name="list_filter_dropdown",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="use dropdown",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='theme',
|
||||
name='related_modal_active',
|
||||
field=models.BooleanField(default=True, verbose_name=b'active'),
|
||||
model_name="theme",
|
||||
name="related_modal_active",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="active",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='theme',
|
||||
name='related_modal_background_color',
|
||||
field=colorfield.fields.ColorField(blank=True, default=b'#000000', help_text=b'#000000', max_length=10, verbose_name=b'background color'),
|
||||
model_name="theme",
|
||||
name="related_modal_background_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#000000",
|
||||
help_text="#000000",
|
||||
max_length=10,
|
||||
verbose_name="background color",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='theme',
|
||||
name='related_modal_background_opacity',
|
||||
field=models.FloatField(choices=[(0.1, b'10%'), (0.2, b'20%'), (0.3, b'30%'), (0.4, b'40%'), (0.5, b'50%'), (0.6, b'60%'), (0.7, b'70%'), (0.8, b'80%'), (0.9, b'90%')], default=0.2, help_text=b'20%', verbose_name=b'background opacity'),
|
||||
model_name="theme",
|
||||
name="related_modal_background_opacity",
|
||||
field=models.FloatField(
|
||||
choices=[
|
||||
(0.1, "10%"),
|
||||
(0.2, "20%"),
|
||||
(0.3, "30%"),
|
||||
(0.4, "40%"),
|
||||
(0.5, "50%"),
|
||||
(0.6, "60%"),
|
||||
(0.7, "70%"),
|
||||
(0.8, "80%"),
|
||||
(0.9, "90%"),
|
||||
],
|
||||
default=0.2,
|
||||
help_text="20%",
|
||||
verbose_name="background opacity",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='theme',
|
||||
name='related_modal_rounded_corners',
|
||||
field=models.BooleanField(default=True, verbose_name=b'rounded corners'),
|
||||
model_name="theme",
|
||||
name="related_modal_rounded_corners",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="rounded corners",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
import colorfield.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0002_add_related_modal"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="logo_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name="logo color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="logo",
|
||||
field=models.FileField(
|
||||
blank=True,
|
||||
help_text="(leave blank to use the default Django logo)",
|
||||
upload_to="admin-interface/logo/",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0003_add_logo_color"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name="theme",
|
||||
old_name="css_header_title_color",
|
||||
new_name="title_color",
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0004_rename_title_color"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="recent_actions_visible",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="visible",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,294 @@
|
|||
import colorfield.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0005_add_recent_actions_visible"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_delete_button_background_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#BA2121",
|
||||
help_text="#BA2121",
|
||||
max_length=10,
|
||||
verbose_name="background color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_delete_button_background_hover_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#A41515",
|
||||
help_text="#A41515",
|
||||
max_length=10,
|
||||
verbose_name="background hover color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_delete_button_text_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name="text color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_generic_link_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#0C3C26",
|
||||
help_text="#0C3C26",
|
||||
max_length=10,
|
||||
verbose_name="link color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_generic_link_hover_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#156641",
|
||||
help_text="#156641",
|
||||
max_length=10,
|
||||
verbose_name="link hover color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_header_background_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#0C4B33",
|
||||
help_text="#0C4B33",
|
||||
max_length=10,
|
||||
verbose_name="background color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_header_link_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name="link color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_header_link_hover_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#C9F0DD",
|
||||
help_text="#C9F0DD",
|
||||
max_length=10,
|
||||
verbose_name="link hover color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_header_text_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#44B78B",
|
||||
help_text="#44B78B",
|
||||
max_length=10,
|
||||
verbose_name="text color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_module_background_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#44B78B",
|
||||
help_text="#44B78B",
|
||||
max_length=10,
|
||||
verbose_name="background color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_module_link_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name="link color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_module_link_hover_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#C9F0DD",
|
||||
help_text="#C9F0DD",
|
||||
max_length=10,
|
||||
verbose_name="link hover color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_module_rounded_corners",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="rounded corners",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_module_text_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name="text color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_save_button_background_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#0C4B33",
|
||||
help_text="#0C4B33",
|
||||
max_length=10,
|
||||
verbose_name="background color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_save_button_background_hover_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#0C3C26",
|
||||
help_text="#0C3C26",
|
||||
max_length=10,
|
||||
verbose_name="background hover color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css_save_button_text_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name="text color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="list_filter_dropdown",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="use dropdown",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="logo_visible",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="visible",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="name",
|
||||
field=models.CharField(
|
||||
default="Django",
|
||||
max_length=50,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="related_modal_active",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="active",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="related_modal_background_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#000000",
|
||||
help_text="#000000",
|
||||
max_length=10,
|
||||
verbose_name="background color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="related_modal_background_opacity",
|
||||
field=models.FloatField(
|
||||
choices=[
|
||||
(0.1, "10%"),
|
||||
(0.2, "20%"),
|
||||
(0.3, "30%"),
|
||||
(0.4, "40%"),
|
||||
(0.5, "50%"),
|
||||
(0.6, "60%"),
|
||||
(0.7, "70%"),
|
||||
(0.8, "80%"),
|
||||
(0.9, "90%"),
|
||||
],
|
||||
default=0.2,
|
||||
help_text="20%",
|
||||
verbose_name="background opacity",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="related_modal_rounded_corners",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="rounded corners",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="title",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
default="Django administration",
|
||||
max_length=50,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="title_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#F5DD5D",
|
||||
help_text="#F5DD5D",
|
||||
max_length=10,
|
||||
verbose_name="title color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="title_visible",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="visible",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0006_bytes_to_str"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="favicon",
|
||||
field=models.FileField(
|
||||
blank=True,
|
||||
help_text="(.ico|.png|.gif - 16x16|32x32 px)",
|
||||
upload_to="admin-interface/favicon/",
|
||||
verbose_name="favicon",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0007_add_favicon"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name="theme",
|
||||
name="related_modal_background_opacity",
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="related_modal_background_opacity",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("0.1", "10%"),
|
||||
("0.2", "20%"),
|
||||
("0.3", "30%"),
|
||||
("0.4", "40%"),
|
||||
("0.5", "50%"),
|
||||
("0.6", "60%"),
|
||||
("0.7", "70%"),
|
||||
("0.8", "80%"),
|
||||
("0.9", "90%"),
|
||||
],
|
||||
default="0.3",
|
||||
help_text="20%",
|
||||
max_length=5,
|
||||
verbose_name="background opacity",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0008_change_related_modal_background_opacity_type"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="env",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("development", "Development"),
|
||||
("testing", "Testing"),
|
||||
("staging", "Staging"),
|
||||
("production", "Production"),
|
||||
],
|
||||
default="development",
|
||||
max_length=50,
|
||||
verbose_name="enviroment",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="env_visible",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="visible",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0009_add_enviroment"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="active",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="active",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="css",
|
||||
field=models.TextField(
|
||||
blank=True,
|
||||
verbose_name="text color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="env",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("development", "Development"),
|
||||
("testing", "Testing"),
|
||||
("staging", "Staging"),
|
||||
("production", "Production"),
|
||||
],
|
||||
default="development",
|
||||
max_length=50,
|
||||
verbose_name="environment",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="logo",
|
||||
field=models.FileField(
|
||||
blank=True,
|
||||
help_text="Leave blank to use the default Django logo",
|
||||
upload_to="admin-interface/logo/",
|
||||
verbose_name="logo",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="name",
|
||||
field=models.CharField(
|
||||
default="Django",
|
||||
max_length=50,
|
||||
verbose_name="name",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="title",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
default="Django administration",
|
||||
max_length=50,
|
||||
verbose_name="title",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
import colorfield.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0010_add_localization"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name="theme",
|
||||
old_name="env",
|
||||
new_name="env_name",
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="env_name",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
max_length=50,
|
||||
verbose_name="name",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="env_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#E74C3C",
|
||||
help_text=(
|
||||
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, "
|
||||
"green: #2ECC71, blue: #3498DB)"
|
||||
),
|
||||
max_length=10,
|
||||
verbose_name="color",
|
||||
),
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name="theme",
|
||||
old_name="env_visible",
|
||||
new_name="env_visible_in_header",
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="env_visible_in_header",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="visible in header (marker and name)",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="env_visible_in_favicon",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="visible in favicon (marker)",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
import colorfield.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0011_add_environment_options"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="logo_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name="color",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="title_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#F5DD5D",
|
||||
help_text="#F5DD5D",
|
||||
max_length=10,
|
||||
verbose_name="color",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0012_update_verbose_names"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="related_modal_close_button_visible",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="close button visible",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0013_add_related_modal_close_button"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="name",
|
||||
field=models.CharField(
|
||||
default="Django",
|
||||
max_length=50,
|
||||
unique=True,
|
||||
verbose_name="name",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0014_name_unique"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="language_chooser_active",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="active",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0015_add_language_chooser_active"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="language_chooser_display",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("code", "code"),
|
||||
("name", "name"),
|
||||
],
|
||||
default="code",
|
||||
max_length=10,
|
||||
verbose_name="display",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0016_add_language_chooser_display"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="list_filter_dropdown",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="use dropdown",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0017_change_list_filter_dropdown"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="list_filter_sticky",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="sticky position",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0018_theme_list_filter_sticky"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="form_pagination_sticky",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="sticky pagination",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="form_submit_sticky",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="sticky submit",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
import colorfield.fields
|
||||
from django.db import migrations
|
||||
from django.db.models import F
|
||||
|
||||
|
||||
def default_link_selected(apps, schema_editor):
|
||||
Theme = apps.get_model("admin_interface", "Theme")
|
||||
db_alias = schema_editor.connection.alias
|
||||
Theme.objects.using(db_alias).update(
|
||||
css_module_link_selected_color=F("css_module_link_color")
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0019_add_form_sticky"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="css_module_background_selected_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#FFFFCC",
|
||||
help_text="#FFFFCC",
|
||||
max_length=10,
|
||||
verbose_name="background selected color",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="css_module_link_selected_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name="link selected color",
|
||||
),
|
||||
),
|
||||
migrations.RunPython(default_link_selected),
|
||||
]
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
from django.core.validators import FileExtensionValidator
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0020_module_selected_colors"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="favicon",
|
||||
field=models.FileField(
|
||||
blank=True,
|
||||
help_text="(.ico|.png|.gif - 16x16|32x32 px)",
|
||||
upload_to="admin-interface/favicon/",
|
||||
validators=[
|
||||
FileExtensionValidator(
|
||||
allowed_extensions=["gif", "ico", "jpg", "jpeg", "png", "svg"]
|
||||
)
|
||||
],
|
||||
verbose_name="favicon",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="theme",
|
||||
name="logo",
|
||||
field=models.FileField(
|
||||
blank=True,
|
||||
help_text="Leave blank to use the default Django logo",
|
||||
upload_to="admin-interface/logo/",
|
||||
validators=[
|
||||
FileExtensionValidator(
|
||||
allowed_extensions=["gif", "jpg", "jpeg", "png", "svg"]
|
||||
)
|
||||
],
|
||||
verbose_name="logo",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0021_file_extension_validator"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="logo_max_height",
|
||||
field=models.PositiveSmallIntegerField(
|
||||
blank=True,
|
||||
default=100,
|
||||
verbose_name="max height",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="logo_max_width",
|
||||
field=models.PositiveSmallIntegerField(
|
||||
blank=True,
|
||||
default=400,
|
||||
verbose_name="max width",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0022_add_logo_max_width_and_height"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="foldable_apps",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="foldable apps",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0023_theme_foldable_apps"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name="theme",
|
||||
name="css",
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0024_remove_theme_css"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="language_chooser_control",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("default-select", "Default Select"),
|
||||
("minimal-select", "Minimal Select"),
|
||||
],
|
||||
default="default-select",
|
||||
max_length=20,
|
||||
verbose_name="control",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0025_theme_language_chooser_control"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="list_filter_highlight",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="highlight active",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0026_theme_list_filter_highlight"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="list_filter_removal_links",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="quick remove links for active filters at top of sidebar",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0027_theme_list_filter_removal_links"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="show_fieldsets_as_tabs",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="fieldsets as tabs",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="show_inlines_as_tabs",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="inlines as tabs",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
import colorfield.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0028_theme_show_fieldsets_as_tabs_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="css_generic_link_active_color",
|
||||
field=colorfield.fields.ColorField(
|
||||
blank=True,
|
||||
default="#29B864",
|
||||
help_text="#29B864",
|
||||
image_field=None,
|
||||
max_length=10,
|
||||
samples=None,
|
||||
verbose_name="link active color",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("admin_interface", "0029_theme_css_generic_link_active_color"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="collapsible_stacked_inlines",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="collapsible stacked inlines",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="collapsible_stacked_inlines_collapsed",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="collapsible stacked inlines collapsed",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="collapsible_tabular_inlines",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="collapsible tabular inlines",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="collapsible_tabular_inlines_collapsed",
|
||||
field=models.BooleanField(
|
||||
default=True,
|
||||
verbose_name="collapsible tabular inlines collapsed",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("admin_interface", "0030_theme_collapsible_stacked_inlines_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="demo",
|
||||
field=models.BooleanField(default=False, verbose_name="demo"),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("admin_interface", "0031_add_demo_option"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="theme",
|
||||
name="user",
|
||||
field=models.ForeignKey('auth.User', on_delete=models.CASCADE, null=True, blank=True, verbose_name="active for user"),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
# Generated by Django 3.2.13 on 2022-04-28 16:03
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('admin_interface', '0032_add_user_option'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='theme',
|
||||
name='user',
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserTheme',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('theme', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='admin_interface.theme')),
|
||||
('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, unique=True)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Users theme',
|
||||
'verbose_name_plural': 'Users themes',
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='theme',
|
||||
name='users',
|
||||
field=models.ManyToManyField(through='admin_interface.UserTheme', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 4.0.4 on 2022-08-25 14:44
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('admin_interface', '0033_usertheme_m2m'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='theme',
|
||||
name='demo',
|
||||
field=models.BooleanField(default=False, verbose_name='is demo'),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# Generated by Django 4.0.3 on 2022-10-25 13:59
|
||||
|
||||
from django.conf import settings
|
||||
import django.db.models.deletion
|
||||
from django.db import connection, migrations, models, transaction
|
||||
|
||||
|
||||
def forward(apps, schema_editor):
|
||||
Theme = apps.get_model("admin_interface", "Theme")
|
||||
if len(Theme.objects.all()) == 1 and Theme.objects.first().name == 'Django':
|
||||
with transaction.atomic():
|
||||
cursor = connection.cursor()
|
||||
cursor.execute("""truncate table "admin_interface_theme" restart identity;""")
|
||||
|
||||
def reverse(apps, schema_editor):
|
||||
pass
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('admin_interface', '0034_alter_theme_demo'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(forward, reverse),
|
||||
migrations.AlterField(
|
||||
model_name='usertheme',
|
||||
name='user',
|
||||
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 4.0.3 on 2023-01-30 14:00
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('admin_interface', '0035_auto_20221025_1559'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='theme',
|
||||
name='default',
|
||||
field=models.BooleanField(default=False, verbose_name='default'),
|
||||
),
|
||||
]
|
||||
|
|
@ -1,139 +1,482 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from django.core.files import File
|
||||
from django.db import models
|
||||
from django.db.models.signals import post_delete, post_save
|
||||
import inspect
|
||||
|
||||
from colorfield.fields import ColorField
|
||||
from django.core.validators import FileExtensionValidator
|
||||
from django.db import models
|
||||
from django.db.models.signals import post_delete, post_save, pre_save
|
||||
from django.dispatch import receiver
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
import os
|
||||
from .cache import del_cached_active_theme
|
||||
|
||||
|
||||
class Theme(models.Model):
|
||||
class UserTheme(models.Model):
|
||||
class Meta:
|
||||
verbose_name = 'Users theme'
|
||||
verbose_name_plural = 'Users themes'
|
||||
|
||||
@staticmethod
|
||||
def post_migrate_handler(sender, **kwargs):
|
||||
Theme.get_active_theme()
|
||||
user = models.OneToOneField(
|
||||
'auth.User', on_delete=models.CASCADE, null=True)
|
||||
theme = models.ForeignKey('Theme', on_delete=models.CASCADE)
|
||||
|
||||
@staticmethod
|
||||
def post_delete_handler(instance, **kwargs):
|
||||
Theme.get_active_theme()
|
||||
|
||||
@staticmethod
|
||||
def post_save_handler(instance, created, **kwargs):
|
||||
Theme.get_active_theme()
|
||||
class ThemeQuerySet(models.QuerySet):
|
||||
def get_active(self):
|
||||
user_theme_manager = UserTheme.objects
|
||||
objs_active_qs = self.filter(active=True)
|
||||
objs_active_ls = list(objs_active_qs)
|
||||
objs_active_count = len(objs_active_ls)
|
||||
|
||||
@staticmethod
|
||||
def get_active_theme():
|
||||
if objs_active_count == 0:
|
||||
obj = self.all().first()
|
||||
if obj:
|
||||
obj.set_active()
|
||||
# else:
|
||||
# obj = self.create()
|
||||
|
||||
objs_active_qs = Theme.objects.filter( active = True )
|
||||
elif objs_active_count == 1:
|
||||
obj = objs_active_ls[0]
|
||||
|
||||
#get or create default theme and enforce default logo if deleted
|
||||
default_obj_active = (objs_active_qs.count() == 0)
|
||||
default_obj, default_obj_created = Theme.objects.get_or_create(pk = '1', defaults = { 'active':default_obj_active })
|
||||
elif objs_active_count > 1:
|
||||
for frame_record in inspect.stack():
|
||||
if frame_record[3] == 'get_response':
|
||||
request = frame_record[0].f_locals['request']
|
||||
user = request.user
|
||||
break
|
||||
else:
|
||||
request = None
|
||||
|
||||
if not default_obj_created and default_obj_active:
|
||||
default_obj.set_active()
|
||||
|
||||
default_obj.set_default_logo()
|
||||
|
||||
obj = objs_active_qs.last()
|
||||
objs_active_count = objs_active_qs.count()
|
||||
|
||||
if objs_active_count > 1:
|
||||
obj.set_active()
|
||||
try:
|
||||
return user_theme_manager.filter(user=user, theme__active=True).first().theme
|
||||
except:
|
||||
objs_default_qs = objs_active_qs.filter(default=True)
|
||||
if len(objs_default_qs) == 0:
|
||||
obj = objs_active_qs.first()
|
||||
if obj:
|
||||
obj.set_default()
|
||||
else:
|
||||
obj = objs_default_qs.first()
|
||||
|
||||
return obj
|
||||
|
||||
name = models.CharField( max_length = 50, default = 'Django' )
|
||||
active = models.BooleanField( default = True )
|
||||
|
||||
title = models.CharField( max_length = 50, default = 'Django administration', blank = True )
|
||||
title_visible = models.BooleanField( default = True, verbose_name = 'visible' )
|
||||
|
||||
logo = models.FileField( upload_to = 'admin-interface/logo/', blank = True )
|
||||
logo_visible = models.BooleanField( default = True, verbose_name = 'visible' )
|
||||
|
||||
css_header_background_color = ColorField( blank = True, default = '#0C4B33', help_text = '#0C4B33', verbose_name = 'background color' )
|
||||
css_header_title_color = ColorField( blank = True, default = '#F5DD5D', help_text = '#F5DD5D', verbose_name = 'title color' )
|
||||
css_header_text_color = ColorField( blank = True, default = '#44B78B', help_text = '#44B78B', verbose_name = 'text color' )
|
||||
css_header_link_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'link color' )
|
||||
css_header_link_hover_color = ColorField( blank = True, default = '#C9F0DD', help_text = '#C9F0DD', verbose_name = 'link hover color' )
|
||||
|
||||
css_module_background_color = ColorField( blank = True, default = '#44B78B', help_text = '#44B78B', verbose_name = 'background color' )
|
||||
css_module_text_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'text color' )
|
||||
css_module_link_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'link color' )
|
||||
css_module_link_hover_color = ColorField( blank = True, default = '#C9F0DD', help_text = '#C9F0DD', verbose_name = 'link hover color' )
|
||||
css_module_rounded_corners = models.BooleanField( default = True, verbose_name = 'rounded corners' )
|
||||
|
||||
css_generic_link_color = ColorField( blank = True, default = '#0C3C26', help_text = '#0C3C26', verbose_name = 'link color' )
|
||||
css_generic_link_hover_color = ColorField( blank = True, default = '#156641', help_text = '#156641', verbose_name = 'link hover color' )
|
||||
|
||||
css_save_button_background_color = ColorField( blank = True, default = '#0C4B33', help_text = '#0C4B33', verbose_name = 'background color' )
|
||||
css_save_button_background_hover_color = ColorField( blank = True, default = '#0C3C26', help_text = '#0C3C26', verbose_name = 'background hover color' )
|
||||
css_save_button_text_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'text color' )
|
||||
|
||||
css_delete_button_background_color = ColorField( blank = True, default = '#BA2121', help_text = '#BA2121', verbose_name = 'background color' )
|
||||
css_delete_button_background_hover_color = ColorField( blank = True, default = '#A41515', help_text = '#A41515', verbose_name = 'background hover color' )
|
||||
css_delete_button_text_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'text color' )
|
||||
|
||||
css = models.TextField( blank = True )
|
||||
|
||||
related_modal_active = models.BooleanField( default = True, verbose_name = 'active' )
|
||||
related_modal_background_color = ColorField( blank = True, default = '#000000', help_text = '#000000', verbose_name = 'background color' )
|
||||
related_modal_background_opacity_choices = (
|
||||
(0.1, '10%', ),
|
||||
(0.2, '20%', ),
|
||||
(0.3, '30%', ),
|
||||
(0.4, '40%', ),
|
||||
(0.5, '50%', ),
|
||||
(0.6, '60%', ),
|
||||
(0.7, '70%', ),
|
||||
(0.8, '80%', ),
|
||||
(0.9, '90%', ),
|
||||
class Theme(models.Model):
|
||||
name = models.CharField(
|
||||
unique=True,
|
||||
max_length=50,
|
||||
default="Django",
|
||||
verbose_name=_("name"),
|
||||
)
|
||||
active = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("active"),
|
||||
)
|
||||
related_modal_background_opacity = models.FloatField( choices = related_modal_background_opacity_choices, default = 0.2, help_text = '20%', verbose_name = 'background opacity' )
|
||||
related_modal_rounded_corners = models.BooleanField( default = True, verbose_name = 'rounded corners' )
|
||||
|
||||
list_filter_dropdown = models.BooleanField( default = False, verbose_name = 'use dropdown' )
|
||||
demo = models.BooleanField(default=False, verbose_name=_("is demo"))
|
||||
|
||||
default = models.BooleanField(default=False, verbose_name="default")
|
||||
|
||||
users = models.ManyToManyField('auth.User', through=UserTheme)
|
||||
|
||||
title = models.CharField(
|
||||
max_length=50,
|
||||
default=_("Django administration"),
|
||||
blank=True,
|
||||
verbose_name=_("title"),
|
||||
)
|
||||
title_color = ColorField(
|
||||
blank=True,
|
||||
default="#F5DD5D",
|
||||
help_text="#F5DD5D",
|
||||
max_length=10,
|
||||
verbose_name=_("color"),
|
||||
)
|
||||
title_visible = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("visible"),
|
||||
)
|
||||
|
||||
logo = models.FileField(
|
||||
upload_to="admin-interface/logo/",
|
||||
blank=True,
|
||||
validators=[
|
||||
FileExtensionValidator(
|
||||
allowed_extensions=["gif", "jpg", "jpeg", "png", "svg"]
|
||||
)
|
||||
],
|
||||
help_text=_("Leave blank to use the default Django logo"),
|
||||
verbose_name=_("logo"),
|
||||
)
|
||||
logo_color = ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name=_("color"),
|
||||
)
|
||||
logo_max_width = models.PositiveSmallIntegerField(
|
||||
blank=True,
|
||||
default=400,
|
||||
verbose_name=_("max width"),
|
||||
)
|
||||
logo_max_height = models.PositiveSmallIntegerField(
|
||||
blank=True,
|
||||
default=100,
|
||||
verbose_name=_("max height"),
|
||||
)
|
||||
logo_visible = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("visible"),
|
||||
)
|
||||
|
||||
favicon = models.FileField(
|
||||
upload_to="admin-interface/favicon/",
|
||||
blank=True,
|
||||
validators=[
|
||||
FileExtensionValidator(
|
||||
allowed_extensions=["gif", "ico", "jpg", "jpeg", "png", "svg"]
|
||||
)
|
||||
],
|
||||
help_text=_("(.ico|.png|.gif - 16x16|32x32 px)"),
|
||||
verbose_name=_("favicon"),
|
||||
)
|
||||
|
||||
env_name = models.CharField(
|
||||
blank=True,
|
||||
max_length=50,
|
||||
verbose_name=_("name"),
|
||||
)
|
||||
env_color = ColorField(
|
||||
blank=True,
|
||||
default="#E74C3C",
|
||||
help_text=_(
|
||||
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, "
|
||||
"green: #2ECC71, blue: #3498DB)"
|
||||
),
|
||||
max_length=10,
|
||||
verbose_name=_("color"),
|
||||
)
|
||||
env_visible_in_header = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("visible in header (marker and name)"),
|
||||
)
|
||||
env_visible_in_favicon = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("visible in favicon (marker)"),
|
||||
)
|
||||
|
||||
language_chooser_active = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("active"),
|
||||
)
|
||||
language_chooser_control_choices = (
|
||||
("default-select", _("Default Select")),
|
||||
("minimal-select", _("Minimal Select")),
|
||||
)
|
||||
language_chooser_control = models.CharField(
|
||||
max_length=20,
|
||||
choices=language_chooser_control_choices,
|
||||
default="default-select",
|
||||
verbose_name=_("control"),
|
||||
)
|
||||
language_chooser_display_choices = (
|
||||
("code", _("code")),
|
||||
("name", _("name")),
|
||||
)
|
||||
language_chooser_display = models.CharField(
|
||||
max_length=10,
|
||||
choices=language_chooser_display_choices,
|
||||
default="code",
|
||||
verbose_name=_("display"),
|
||||
)
|
||||
|
||||
css_header_background_color = ColorField(
|
||||
blank=True,
|
||||
default="#0C4B33",
|
||||
help_text="#0C4B33",
|
||||
max_length=10,
|
||||
verbose_name=_("background color"),
|
||||
)
|
||||
css_header_text_color = ColorField(
|
||||
blank=True,
|
||||
default="#44B78B",
|
||||
help_text="#44B78B",
|
||||
max_length=10,
|
||||
verbose_name=_("text color"),
|
||||
)
|
||||
css_header_link_color = ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name=_("link color"),
|
||||
)
|
||||
css_header_link_hover_color = ColorField(
|
||||
blank=True,
|
||||
default="#C9F0DD",
|
||||
help_text="#C9F0DD",
|
||||
max_length=10,
|
||||
verbose_name=_("link hover color"),
|
||||
)
|
||||
|
||||
css_module_background_color = ColorField(
|
||||
blank=True,
|
||||
default="#44B78B",
|
||||
help_text="#44B78B",
|
||||
max_length=10,
|
||||
verbose_name=_("background color"),
|
||||
)
|
||||
css_module_background_selected_color = ColorField(
|
||||
blank=True,
|
||||
default="#FFFFCC",
|
||||
help_text="#FFFFCC",
|
||||
max_length=10,
|
||||
verbose_name=_("background selected color"),
|
||||
)
|
||||
css_module_text_color = ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name=_("text color"),
|
||||
)
|
||||
css_module_link_color = ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name=_("link color"),
|
||||
)
|
||||
css_module_link_selected_color = ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name=_("link selected color"),
|
||||
)
|
||||
css_module_link_hover_color = ColorField(
|
||||
blank=True,
|
||||
default="#C9F0DD",
|
||||
help_text="#C9F0DD",
|
||||
max_length=10,
|
||||
verbose_name=_("link hover color"),
|
||||
)
|
||||
css_module_rounded_corners = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("rounded corners"),
|
||||
)
|
||||
|
||||
css_generic_link_color = ColorField(
|
||||
blank=True,
|
||||
default="#0C3C26",
|
||||
help_text="#0C3C26",
|
||||
max_length=10,
|
||||
verbose_name=_("link color"),
|
||||
)
|
||||
css_generic_link_hover_color = ColorField(
|
||||
blank=True,
|
||||
default="#156641",
|
||||
help_text="#156641",
|
||||
max_length=10,
|
||||
verbose_name=_("link hover color"),
|
||||
)
|
||||
css_generic_link_active_color = ColorField(
|
||||
blank=True,
|
||||
default="#29B864",
|
||||
help_text="#29B864",
|
||||
max_length=10,
|
||||
verbose_name=_("link active color"),
|
||||
)
|
||||
|
||||
css_save_button_background_color = ColorField(
|
||||
blank=True,
|
||||
default="#0C4B33",
|
||||
help_text="#0C4B33",
|
||||
max_length=10,
|
||||
verbose_name=_("background color"),
|
||||
)
|
||||
css_save_button_background_hover_color = ColorField(
|
||||
blank=True,
|
||||
default="#0C3C26",
|
||||
help_text="#0C3C26",
|
||||
max_length=10,
|
||||
verbose_name=_("background hover color"),
|
||||
)
|
||||
css_save_button_text_color = ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name=_("text color"),
|
||||
)
|
||||
|
||||
css_delete_button_background_color = ColorField(
|
||||
blank=True,
|
||||
default="#BA2121",
|
||||
help_text="#BA2121",
|
||||
max_length=10,
|
||||
verbose_name=_("background color"),
|
||||
)
|
||||
css_delete_button_background_hover_color = ColorField(
|
||||
blank=True,
|
||||
default="#A41515",
|
||||
help_text="#A41515",
|
||||
max_length=10,
|
||||
verbose_name=_("background hover color"),
|
||||
)
|
||||
css_delete_button_text_color = ColorField(
|
||||
blank=True,
|
||||
default="#FFFFFF",
|
||||
help_text="#FFFFFF",
|
||||
max_length=10,
|
||||
verbose_name=_("text color"),
|
||||
)
|
||||
|
||||
related_modal_active = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("active"),
|
||||
)
|
||||
related_modal_background_color = ColorField(
|
||||
blank=True,
|
||||
default="#000000",
|
||||
help_text="#000000",
|
||||
max_length=10,
|
||||
verbose_name=_("background color"),
|
||||
)
|
||||
related_modal_background_opacity_choices = (
|
||||
("0.1", "10%"),
|
||||
("0.2", "20%"),
|
||||
("0.3", "30%"),
|
||||
("0.4", "40%"),
|
||||
("0.5", "50%"),
|
||||
("0.6", "60%"),
|
||||
("0.7", "70%"),
|
||||
("0.8", "80%"),
|
||||
("0.9", "90%"),
|
||||
)
|
||||
related_modal_background_opacity = models.CharField(
|
||||
max_length=5,
|
||||
choices=related_modal_background_opacity_choices,
|
||||
default="0.3",
|
||||
help_text="20%",
|
||||
verbose_name=_("background opacity"),
|
||||
)
|
||||
related_modal_rounded_corners = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("rounded corners"),
|
||||
)
|
||||
related_modal_close_button_visible = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("close button visible"),
|
||||
)
|
||||
|
||||
list_filter_highlight = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("highlight active"),
|
||||
)
|
||||
list_filter_dropdown = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("use dropdown"),
|
||||
)
|
||||
list_filter_sticky = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("sticky position"),
|
||||
)
|
||||
list_filter_removal_links = models.BooleanField(
|
||||
default=False,
|
||||
verbose_name=_("quick remove links for active filters at top of sidebar"),
|
||||
)
|
||||
|
||||
foldable_apps = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("foldable apps"),
|
||||
)
|
||||
|
||||
show_fieldsets_as_tabs = models.BooleanField(
|
||||
default=False,
|
||||
verbose_name=_("fieldsets as tabs"),
|
||||
)
|
||||
|
||||
show_inlines_as_tabs = models.BooleanField(
|
||||
default=False,
|
||||
verbose_name=_("inlines as tabs"),
|
||||
)
|
||||
|
||||
collapsible_stacked_inlines = models.BooleanField(
|
||||
default=False,
|
||||
verbose_name=_("collapsible stacked inlines"),
|
||||
)
|
||||
collapsible_stacked_inlines_collapsed = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("collapsible stacked inlines collapsed"),
|
||||
)
|
||||
collapsible_tabular_inlines = models.BooleanField(
|
||||
default=False,
|
||||
verbose_name=_("collapsible tabular inlines"),
|
||||
)
|
||||
collapsible_tabular_inlines_collapsed = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("collapsible tabular inlines collapsed"),
|
||||
)
|
||||
|
||||
recent_actions_visible = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("visible"),
|
||||
)
|
||||
|
||||
form_submit_sticky = models.BooleanField(
|
||||
default=False,
|
||||
verbose_name=_("sticky submit"),
|
||||
)
|
||||
form_pagination_sticky = models.BooleanField(
|
||||
default=False,
|
||||
verbose_name=_("sticky pagination"),
|
||||
)
|
||||
|
||||
objects = ThemeQuerySet.as_manager()
|
||||
|
||||
def set_active(self):
|
||||
|
||||
Theme.objects.exclude( pk = self.pk ).update( active = False )
|
||||
|
||||
if not self.active:
|
||||
self.active = True
|
||||
self.save()
|
||||
|
||||
def set_default_logo(self):
|
||||
|
||||
if self.logo and os.path.isfile(self.logo.url):
|
||||
return
|
||||
|
||||
logo_filename = 'logo-django.svg'
|
||||
logo_path = os.path.normpath(os.path.dirname(__file__) + '/data/' + logo_filename)
|
||||
logo_file = open(logo_path)
|
||||
|
||||
self.logo = File(logo_file, logo_filename)
|
||||
|
||||
post_save.disconnect(Theme.post_save_handler, sender = Theme)
|
||||
self.active = True
|
||||
self.save()
|
||||
post_save.connect(Theme.post_save_handler, sender = Theme)
|
||||
|
||||
logo_file.close()
|
||||
def set_default(self):
|
||||
self.default = True
|
||||
self.save()
|
||||
|
||||
def save(self):
|
||||
if self.default:
|
||||
Theme.objects.update(default=False)
|
||||
super().save()
|
||||
|
||||
class Meta:
|
||||
app_label = "admin_interface"
|
||||
verbose_name = _("Theme")
|
||||
verbose_name_plural = _("Themes")
|
||||
|
||||
app_label = 'admin_interface'
|
||||
|
||||
verbose_name = 'Theme'
|
||||
verbose_name_plural = 'Themes'
|
||||
|
||||
def __unicode__(self):
|
||||
|
||||
return unicode(u'%s' % (self.name, ))
|
||||
def __str__(self):
|
||||
return force_str(self.name)
|
||||
|
||||
|
||||
post_delete.connect(Theme.post_delete_handler, sender = Theme)
|
||||
post_save.connect(Theme.post_save_handler, sender = Theme)
|
||||
@receiver(post_delete, sender=Theme)
|
||||
def post_delete_handler(sender, instance, **kwargs):
|
||||
del_cached_active_theme()
|
||||
Theme.objects.get_active()
|
||||
|
||||
|
||||
# @receiver(post_save, sender=Theme)
|
||||
# def post_save_handler(sender, instance, **kwargs):
|
||||
# del_cached_active_theme()
|
||||
# if instance.active:
|
||||
# Theme.objects.exclude(pk=instance.pk).update(active=False)
|
||||
# Theme.objects.get_active()
|
||||
|
||||
|
||||
# @receiver(pre_save, sender=Theme)
|
||||
# def pre_save_handler(sender, instance, **kwargs):
|
||||
# if instance.pk is None:
|
||||
# try:
|
||||
# obj = Theme.objects.get(name=instance.name)
|
||||
# instance.pk = obj.pk
|
||||
# except Theme.DoesNotExist:
|
||||
# pass
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
import django
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
|
||||
|
||||
def check_installed_app(app, max_dj_version=None):
|
||||
dj_version = django.VERSION
|
||||
installed_apps = settings.INSTALLED_APPS
|
||||
if max_dj_version is None:
|
||||
if app not in installed_apps:
|
||||
raise ImproperlyConfigured(
|
||||
"'{}' is required, " "add it to settings.INSTALLED_APPS.".format(app)
|
||||
)
|
||||
elif dj_version < max_dj_version:
|
||||
if app not in installed_apps:
|
||||
raise ImproperlyConfigured(
|
||||
"'{}' is required before django {}.{}, "
|
||||
"add it to settings.INSTALLED_APPS.".format(app, *max_dj_version)
|
||||
)
|
||||
else:
|
||||
if app in installed_apps:
|
||||
raise ImproperlyConfigured(
|
||||
"'{}' is no more required since django {}.{}, "
|
||||
"remove it from settings.INSTALLED_APPS.".format(app, *max_dj_version)
|
||||
)
|
||||
|
||||
|
||||
def check_installed_apps():
|
||||
check_installed_app("colorfield")
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
/** global: django */
|
||||
|
||||
if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined') {
|
||||
(function($) {
|
||||
'use strict';
|
||||
$(document).ready(function() {
|
||||
$('.cancel-link').click(function(e) {
|
||||
e.preventDefault();
|
||||
var parentWindow = window.parent;
|
||||
if (parentWindow && typeof(parentWindow.dismissRelatedObjectModal) === 'function' && parentWindow !== window) {
|
||||
parentWindow.dismissRelatedObjectModal();
|
||||
} else {
|
||||
// fallback to default behavior
|
||||
window.history.back();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
});
|
||||
})(django.jQuery);
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
/*global gettext*/
|
||||
/* copied from django 4.0.7 */
|
||||
'use strict';
|
||||
{
|
||||
window.addEventListener('load', function() {
|
||||
// Add anchor tag for Show/Hide link
|
||||
const fieldsets = document.querySelectorAll('fieldset.collapse');
|
||||
for (const [i, elem] of fieldsets.entries()) {
|
||||
// Don't hide if fields in this fieldset have errors
|
||||
if (elem.querySelectorAll('div.errors, ul.errorlist').length === 0) {
|
||||
const h2 = elem.querySelector('h2');
|
||||
const link = document.createElement('a');
|
||||
link.id = 'fieldsetcollapser' + i;
|
||||
link.className = 'collapse-toggle';
|
||||
link.href = '#';
|
||||
// changed: can opt into starting visible
|
||||
if (elem.classList.contains('expanded')) {
|
||||
link.textContent = gettext('Hide');
|
||||
} else {
|
||||
link.textContent = gettext('Show');
|
||||
elem.classList.add('collapsed');
|
||||
}
|
||||
h2.appendChild(document.createTextNode(' ('));
|
||||
h2.appendChild(link);
|
||||
h2.appendChild(document.createTextNode(')'));
|
||||
}
|
||||
}
|
||||
// Add toggle to hide/show anchor tag
|
||||
const toggleFunc = function(ev) {
|
||||
if (ev.target.matches('.collapse-toggle')) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
const fieldset = ev.target.closest('fieldset');
|
||||
if (fieldset.classList.contains('collapsed')) {
|
||||
// Show
|
||||
ev.target.textContent = gettext('Hide');
|
||||
fieldset.classList.remove('collapsed');
|
||||
} else {
|
||||
// Hide
|
||||
ev.target.textContent = gettext('Show');
|
||||
fieldset.classList.add('collapsed');
|
||||
}
|
||||
}
|
||||
};
|
||||
document.querySelectorAll('fieldset.module').forEach(function(el) {
|
||||
el.addEventListener('click', toggleFunc);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
@ -1,35 +1,48 @@
|
|||
/*global opener */
|
||||
(function() {
|
||||
|
||||
'use strict';
|
||||
|
||||
var windowRef = window;
|
||||
var windowName = windowRef.name;
|
||||
var widgetName = windowName.replace(/^(change|add|delete|lookup)_/, '');
|
||||
//var windowNames = windowName.split('____');
|
||||
//var widgetName = windowNames[(windowNames.length - 1)];
|
||||
//widgetName = widgetName.replace(/^(change|add|delete|lookup)_/, '');
|
||||
//console.log('dismiss modal and update widget with id: "' + widgetName + '"');
|
||||
var modalRef = {};
|
||||
var windowRefProxy;
|
||||
var windowName, widgetName;
|
||||
var openerRef = windowRef.opener;
|
||||
if(!openerRef){
|
||||
if (!openerRef) {
|
||||
// related modal is active
|
||||
openerRef = windowRef.parent;
|
||||
modalRef = {
|
||||
name: openerRef.id_to_windowname(widgetName),
|
||||
close: function(){
|
||||
windowName = windowRef.name;
|
||||
widgetName = windowName.replace(/^(change|add|delete|lookup)_/, '');
|
||||
if (typeof(openerRef.id_to_windowname) === 'function') {
|
||||
// django < 3.1 compatibility
|
||||
widgetName = openerRef.id_to_windowname(widgetName);
|
||||
}
|
||||
windowRefProxy = {
|
||||
name: widgetName,
|
||||
location: windowRef.location,
|
||||
close: function() {
|
||||
openerRef.dismissRelatedObjectModal();
|
||||
}
|
||||
};
|
||||
windowRef = windowRefProxy;
|
||||
}
|
||||
|
||||
// default django popup_response.js
|
||||
var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse);
|
||||
switch(initData.action){
|
||||
switch (initData.action) {
|
||||
case 'change':
|
||||
openerRef.dismissChangeRelatedObjectPopup(modalRef, initData.value, initData.obj, initData.new_value);
|
||||
if (typeof(openerRef.dismissChangeRelatedObjectPopup) === 'function') {
|
||||
openerRef.dismissChangeRelatedObjectPopup(windowRef, initData.value, initData.obj, initData.new_value);
|
||||
}
|
||||
break;
|
||||
case 'delete':
|
||||
openerRef.dismissDeleteRelatedObjectPopup(modalRef, initData.value);
|
||||
if (typeof(openerRef.dismissDeleteRelatedObjectPopup) === 'function') {
|
||||
openerRef.dismissDeleteRelatedObjectPopup(windowRef, initData.value);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
openerRef.dismissAddRelatedObjectPopup(modalRef, initData.value, initData.obj);
|
||||
if (typeof(openerRef.dismissAddRelatedObjectPopup) === 'function') {
|
||||
openerRef.dismissAddRelatedObjectPopup(windowRef, initData.value, initData.obj);
|
||||
}
|
||||
break;
|
||||
}
|
||||
})();
|
||||
|
||||
})();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,48 @@
|
|||
/** global: django */
|
||||
|
||||
if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined')
|
||||
{
|
||||
(function($) {
|
||||
|
||||
$(document).ready(function(){
|
||||
|
||||
function collapsibleInline(scope, collapsed) {
|
||||
var fieldsetCollapsed = collapsed;
|
||||
var fieldsetEl = $(scope).find('> fieldset.module');
|
||||
fieldsetEl.addClass('collapse');
|
||||
var fieldsetHasErrors = (fieldsetEl.children('.errors').length > 0);
|
||||
if (fieldsetHasErrors === true) {
|
||||
fieldsetCollapsed = false;
|
||||
}
|
||||
if (fieldsetCollapsed === true) {
|
||||
fieldsetEl.addClass('collapsed');
|
||||
}
|
||||
var collapseToggleText = (fieldsetCollapsed ? gettext('Show') : gettext('Hide'));
|
||||
var collapseToggleHTML = ' (<a class="collapse-toggle" href="#">' + collapseToggleText + '</a>)';
|
||||
var headerEl = fieldsetEl.find('> h2,> h3');
|
||||
if (headerEl.find(".collapse-toggle").length === 0) {
|
||||
// don't add collapse toggle button if already present
|
||||
headerEl.append(collapseToggleHTML);
|
||||
}
|
||||
}
|
||||
|
||||
var stackedInlinesOptionSel = '.admin-interface.collapsible-stacked-inlines';
|
||||
var stackedInlinesSel = stackedInlinesOptionSel + ' .inline-group[data-inline-type="stacked"]';
|
||||
var stackedInlinesCollapsed = $(stackedInlinesOptionSel).hasClass('collapsible-stacked-inlines-collapsed');
|
||||
|
||||
var tabularInlinesOptionSel = '.admin-interface.collapsible-tabular-inlines';
|
||||
var tabularInlinesSel = tabularInlinesOptionSel + ' .inline-group[data-inline-type="tabular"] .inline-related.tabular';
|
||||
var tabularInlinesCollapsed = $(stackedInlinesOptionSel).hasClass('collapsible-tabular-inlines-collapsed');
|
||||
|
||||
$(stackedInlinesSel).each(function() {
|
||||
collapsibleInline(this, stackedInlinesCollapsed);
|
||||
});
|
||||
|
||||
$(tabularInlinesSel).each(function() {
|
||||
collapsibleInline(this, tabularInlinesCollapsed);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
})(django.jQuery);
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue