Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
48dbf5a3dc | ||
|
|
0a95550fc0 | ||
|
|
1c2b312d49 | ||
|
|
62e08d2b7e | ||
|
|
f34adaca41 | ||
|
|
aaf5d64fe0 | ||
|
|
3f5fb4b61c | ||
|
|
f9254126e5 | ||
|
|
4676d7ef02 | ||
|
|
42b8dbb58f | ||
|
|
b7c0914f33 | ||
|
|
c8a2057410 | ||
|
|
64e42bebe2 | ||
|
|
7275ce906e | ||
|
|
7ed97eeec4 | ||
|
|
0bb40de1c4 | ||
|
|
bd7808a104 | ||
|
|
4842d589a6 | ||
|
|
11c541adc6 | ||
|
|
c746cfddfe | ||
|
|
2b7f8d8298 | ||
|
|
fe6f9aae61 | ||
|
|
8bc07c45f5 | ||
|
|
058afad9eb | ||
|
|
1e6eca1787 | ||
|
|
89b0028684 | ||
|
|
d80087f6d5 | ||
|
|
b0df4d3604 | ||
|
|
c32ff3a7ee | ||
|
|
4c55044440 | ||
|
|
b13627398b | ||
|
|
b30ec71098 | ||
|
|
649ca2eeac | ||
|
|
98546e1876 | ||
|
|
7e79814cb0 | ||
|
|
ac403d0dfa | ||
|
|
72f3730c34 | ||
|
|
aa9a4c30d3 | ||
|
|
3a2145e5fa | ||
|
|
333a22496c | ||
|
|
488dc1849d | ||
|
|
e718be72e3 | ||
|
|
9dd1bae3c7 | ||
|
|
718ac02806 | ||
|
|
7bab200e4d | ||
|
|
f5ef022ef5 | ||
|
|
5a302684f7 | ||
|
|
7d6f077cf8 | ||
|
|
b853bda2a2 | ||
|
|
abdd3190fe | ||
|
|
5894001eb2 | ||
|
|
8ae8fea6d2 | ||
|
|
81e077da5e | ||
|
|
dc65cbb08c | ||
|
|
8596f15ae7 | ||
|
|
a302269bb4 | ||
|
|
d7491ca14d | ||
|
|
700a2e8df1 | ||
|
|
e5b2ec7e2f | ||
|
|
2b1910c1c1 | ||
|
|
d046a2800d | ||
|
|
b4d44541bb | ||
|
|
cb7bcaf939 | ||
|
|
4ee40e348c | ||
|
|
f07463024c | ||
|
|
9853d8bfd6 | ||
|
|
0ed47fcd2b | ||
|
|
098ab9e428 | ||
|
|
49095ccba6 | ||
|
|
1f4affcb1e | ||
|
|
437f0df0f3 | ||
|
|
14dcb70b95 | ||
|
|
c88a63edf8 | ||
|
|
ffdd58ffb4 | ||
|
|
3a797b1efa | ||
|
|
8aea86613e | ||
|
|
7f59463e3b | ||
|
|
585ba81492 | ||
|
|
c1ba645dce | ||
|
|
811ac6eb6c | ||
|
|
53f5562468 | ||
|
|
c84df9cc0f | ||
|
|
e5d97e72e4 | ||
|
|
fe236316de | ||
|
|
27bb7d8c7a | ||
|
|
566f03beca | ||
|
|
07f2df7e66 | ||
|
|
fb0d8c348a | ||
|
|
f0c86741a4 | ||
|
|
a29890368c | ||
|
|
9c69c1a277 | ||
|
|
be31fb08f1 | ||
|
|
1321a623bd | ||
|
|
fde8d17e8d | ||
|
|
c43185ce3f | ||
|
|
3d80ec1f47 | ||
|
|
86ba622455 | ||
|
|
2872b5c5d3 | ||
|
|
723d97971d | ||
|
|
7d758d401e | ||
|
|
15b8d4711e | ||
|
|
3f63f65674 | ||
|
|
24dc7f4a91 | ||
|
|
f5cc1d1c7e | ||
|
|
b973d6055d | ||
|
|
ded65340fe | ||
|
|
4bb71c56ad | ||
|
|
ff06a18155 | ||
|
|
9395ce3fda | ||
|
|
60dbb81883 | ||
|
|
d4348bd726 | ||
|
|
3d7ecd16aa | ||
|
|
49a59f8929 | ||
|
|
bf6ee28dae | ||
|
|
80032e9658 | ||
|
|
7780cbfb83 | ||
|
|
47e9ef070e | ||
|
|
ec199e5e49 | ||
|
|
8031961205 | ||
|
|
7bad4ca535 | ||
|
|
68132e2a8f | ||
|
|
408df750be | ||
|
|
03d3b8c03c | ||
|
|
9d8360641f | ||
|
|
d6ee715d83 | ||
|
|
351d86e149 | ||
|
|
0f62fecca2 | ||
|
|
6ffb82fb6d | ||
|
|
a2be30d257 | ||
|
|
8cf7c41ad9 | ||
|
|
5e40f9904d | ||
|
|
059dad747d | ||
|
|
7d3903463c | ||
|
|
04a24680a6 | ||
|
|
d70dea5072 | ||
|
|
778e0cd402 | ||
|
|
9317fe21b2 | ||
|
|
8be3517c6d | ||
|
|
ed6ddbb8de | ||
|
|
77949ac4f7 | ||
|
|
8c7417b735 | ||
|
|
008bc6da28 | ||
|
|
faa66f1636 | ||
|
|
cb5d7190c4 | ||
|
|
6cf3913c8e | ||
|
|
9225493a93 | ||
|
|
4267207c7f | ||
|
|
cafd2af96d | ||
|
|
544483ae1f | ||
|
|
e8114b5dc6 | ||
|
|
87b9549ff4 | ||
|
|
5a5a9314f3 | ||
|
|
4fc36a9053 | ||
|
|
8279e7e01c | ||
|
|
f77fceb1b2 | ||
|
|
4ea2246333 | ||
|
|
832b8fc038 | ||
|
|
2d537b6909 | ||
|
|
ea33ab308e | ||
|
|
e0639602e6 | ||
|
|
296c23784f | ||
|
|
3132fa175a | ||
|
|
20637bcacc | ||
|
|
a01ee87749 | ||
|
|
4c86079654 | ||
|
|
291e645d77 | ||
|
|
8e467788a3 | ||
|
|
71e40a7299 | ||
|
|
d9847ed1f3 | ||
|
|
db95414cf1 | ||
|
|
df7de2ef71 | ||
|
|
731ba32e81 | ||
|
|
32197a8405 | ||
|
|
2570f7d75c | ||
|
|
f65eb546b7 | ||
|
|
aeb42b1059 | ||
|
|
0d3cd2d466 | ||
|
|
76217ffa8f | ||
|
|
b27a884bda | ||
|
|
85d1459372 | ||
|
|
e5a91d30bf | ||
|
|
3fc0cc3e92 | ||
|
|
44cc7a308a | ||
|
|
c1e80ac38a | ||
|
|
be090552f8 | ||
|
|
e54ccb1302 | ||
|
|
2036e9d9a8 | ||
|
|
1b850ff616 | ||
|
|
a5a83da045 | ||
|
|
751b6c28b5 | ||
|
|
4c660f2155 | ||
|
|
701f21186b | ||
|
|
1317e4254b | ||
|
|
589663d7d9 | ||
|
|
884d9db54b | ||
|
|
617440e1db | ||
|
|
5372467569 | ||
|
|
9089750e21 | ||
|
|
2f9a29f663 | ||
|
|
447a1c9dd7 | ||
|
|
530eb3972b | ||
|
|
5d098fe4b0 | ||
|
|
3a50c17110 | ||
|
|
85b40ee4f0 | ||
|
|
9e85fb3de3 | ||
|
|
181bec62ce | ||
|
|
9c7691c891 | ||
|
|
14036b7aeb | ||
|
|
02c3863e8c | ||
|
|
6683522491 | ||
|
|
ee679e39e5 | ||
|
|
db1eb75298 | ||
|
|
cb3801a5e8 | ||
|
|
73b6b95fbc | ||
|
|
18f055fa5e | ||
|
|
9e90350e44 | ||
|
|
65d9f88c63 | ||
|
|
eca8e706dd | ||
|
|
b41557b54b | ||
|
|
0ccf2dad22 | ||
|
|
2097d37f76 | ||
|
|
0ca4426dd0 | ||
|
|
bc3c857b35 | ||
|
|
b948f43dda | ||
|
|
f7214b7cfe | ||
|
|
75f887f5dc | ||
|
|
e10dd6a80f | ||
|
|
960433dd90 | ||
|
|
32e3da7857 | ||
|
|
2a4ba132ad | ||
|
|
6e7ca8c4b0 | ||
|
|
7dc6181d1e | ||
|
|
921c0ac71a | ||
|
|
ad656a9d41 | ||
|
|
56cc1f0aaf | ||
|
|
bf56a6723b | ||
|
|
179bac3fd0 | ||
|
|
08df09af96 | ||
|
|
3c1dc18656 | ||
|
|
12276b6033 | ||
|
|
a12a02cc14 | ||
|
|
740d411524 | ||
|
|
2e68c6ff75 | ||
|
|
102ffd141c | ||
|
|
a0271c7656 | ||
|
|
358af42c50 | ||
|
|
48e257e5af | ||
|
|
36f76f5e2c | ||
|
|
ab642344d4 | ||
|
|
e230787f21 | ||
|
|
b563040cf3 | ||
|
|
addcf2c6e2 | ||
|
|
3f563d8cbf | ||
|
|
88c0968cab | ||
|
|
e5407ab2bd | ||
|
|
13db981445 | ||
|
|
446c2a19a5 | ||
|
|
0e03712a85 | ||
|
|
b18001ce57 | ||
|
|
f46cab6862 | ||
|
|
20c9082b8d | ||
|
|
e20f26c500 | ||
|
|
048c90a695 | ||
|
|
dca9745e97 | ||
|
|
45fa74ae46 | ||
|
|
f92b0961ee | ||
|
|
57ed02a9aa | ||
|
|
3e09f1bf40 | ||
|
|
91ca746c27 | ||
|
|
a2f626046a | ||
|
|
32cdfa2969 | ||
|
|
c71315f8cd | ||
|
|
57a2559f11 | ||
|
|
850afd7402 | ||
|
|
ddf7f04c94 | ||
|
|
9bee91b6f6 | ||
|
|
b3ca172f3a | ||
|
|
9fa29457a4 | ||
|
|
459c6ab796 | ||
|
|
da9f9017a9 | ||
|
|
94d2ad9584 | ||
|
|
9229156cf6 | ||
|
|
02f9b72d3e | ||
|
|
c0ef0a893d | ||
|
|
a60cfd3cc3 | ||
|
|
d4a3e4d92c | ||
|
|
5afa4f1995 | ||
|
|
0c8226ff39 | ||
|
|
065bda37b4 | ||
|
|
a2edf317a9 | ||
|
|
f86f58dc56 | ||
|
|
f0debdd513 | ||
|
|
6ead597b43 | ||
|
|
9a47e574e3 | ||
|
|
0bd77937de | ||
|
|
6a43c3d90b | ||
|
|
9dd357a9ee | ||
|
|
1a756efe82 | ||
|
|
18e4b30634 | ||
|
|
6589f82e77 | ||
|
|
3f089f31a3 | ||
|
|
0fcfe63092 | ||
|
|
d55555c544 | ||
|
|
90004119af | ||
|
|
f8497d4e7a | ||
|
|
eb3cd689a1 | ||
|
|
3687472201 | ||
|
|
b372f08a59 | ||
|
|
5198a881b7 | ||
|
|
233736897d | ||
|
|
cd5243ac6d | ||
|
|
d1f5511566 | ||
|
|
6fce58f2ad | ||
|
|
26bbc0e877 | ||
|
|
98b7603ebd | ||
|
|
f9087475d4 | ||
|
|
dbb4a46d46 | ||
|
|
3012778def | ||
|
|
4c9853f10d | ||
|
|
5448de2d3f | ||
|
|
a92595012f | ||
|
|
c933771016 | ||
|
|
ed5fc20ee2 | ||
|
|
a0ff0e30fb | ||
|
|
3def9792be | ||
|
|
a7b8d77ed7 | ||
|
|
cb0a914099 | ||
|
|
21333490ef | ||
|
|
5f5818ba78 | ||
|
|
c4d9ef9210 | ||
|
|
52780079f3 | ||
|
|
6475a70514 | ||
|
|
296d22ad83 | ||
|
|
c79614786f | ||
|
|
c7ae5024d5 | ||
|
|
f403e61b66 | ||
|
|
86fb879a0e | ||
|
|
ab5632d5eb | ||
|
|
eee23aa642 | ||
|
|
bb25e85834 | ||
|
|
375e2e0d13 | ||
|
|
9450065850 | ||
|
|
98ce8a298a | ||
|
|
7286d13d19 | ||
|
|
530cc19f58 | ||
|
|
bfa26be7f0 | ||
|
|
ca4db8871e | ||
|
|
146da066b0 | ||
|
|
12dc2c418d | ||
|
|
1c5cb63aff | ||
|
|
794bd50ed1 | ||
|
|
26b3bc3f74 | ||
|
|
64e6570f00 | ||
|
|
783b7516a7 | ||
|
|
abd0748a77 | ||
|
|
fb51ef569e | ||
|
|
b54cf2edca | ||
|
|
55e50144f3 | ||
|
|
a2f4628590 | ||
|
|
ce14696165 | ||
|
|
29c3c0cf7f | ||
|
|
3e2a1c4eca | ||
|
|
17ce84dd0a | ||
|
|
5839e7cda8 | ||
|
|
ebf5e871e0 | ||
|
|
5370bb4515 | ||
|
|
be386e77f2 | ||
|
|
a026f339c3 | ||
|
|
552a1bfaa6 | ||
|
|
6089dcd09a | ||
|
|
64964f82cf | ||
|
|
3a38f6b147 | ||
|
|
1dca4313f7 | ||
|
|
f664b71565 | ||
|
|
b12690703f | ||
|
|
8a96e8a673 | ||
|
|
31b0791ab9 | ||
|
|
4486f4d3ab | ||
|
|
719b6e8c37 | ||
|
|
18bc7a6eaf | ||
|
|
9e2127b2a5 | ||
|
|
2793747d3c | ||
|
|
749ba4a25c | ||
|
|
e4823e9099 | ||
|
|
91c5ff4a90 | ||
|
|
25fcdab9db | ||
|
|
14a5d05b80 | ||
|
|
183c83f0d2 | ||
|
|
df31fe7dc4 | ||
|
|
1126ee77ec | ||
|
|
6c723a7e43 | ||
|
|
71a8c0f317 | ||
|
|
b76bb58378 | ||
|
|
5284a1c66b | ||
|
|
b5f9fffadd | ||
|
|
892fb83907 | ||
|
|
7648bd9646 | ||
|
|
c86a3d64fc | ||
|
|
c2ad97d0ab | ||
|
|
7573fac29f | ||
|
|
9b4317fb25 | ||
|
|
275d13d40f | ||
|
|
08c4deba5a | ||
|
|
3413a42af4 | ||
|
|
7b9504bdfb | ||
|
|
18cad32bd4 | ||
|
|
38b90f7b00 | ||
|
|
6addd207af | ||
|
|
98817a718f | ||
|
|
9898e114f1 | ||
|
|
67242862c4 | ||
|
|
2b7e3ce64e | ||
|
|
49b139bb75 | ||
|
|
b11a0d50e6 | ||
|
|
33e9b74388 | ||
|
|
cc282b3585 | ||
|
|
92f9ad48a8 | ||
|
|
1bb510cdd4 | ||
|
|
fa267805c9 | ||
|
|
556278dbc5 | ||
|
|
365ec0ba9f | ||
|
|
4587cf73c2 | ||
|
|
65aba21c14 | ||
|
|
0bf6e81faa | ||
|
|
f4d6290b50 | ||
|
|
ca8dc42d14 | ||
|
|
a4e746c5a4 | ||
|
|
1c796720be | ||
|
|
483eeeca39 | ||
|
|
f27527a614 | ||
|
|
609904cfb3 | ||
|
|
82e912ffad | ||
|
|
6c4049f29a | ||
|
|
9466278be2 | ||
|
|
e4029cca04 | ||
|
|
bcb2f833cd | ||
|
|
a0a15fa643 | ||
|
|
c28509ac28 | ||
|
|
542be2b2d4 | ||
|
|
9a77d4dc1a | ||
|
|
558d25fabc | ||
|
|
be7bb81a19 | ||
|
|
228d4bb321 | ||
|
|
656e239e55 | ||
|
|
300de05a20 | ||
|
|
3f817494f8 | ||
|
|
b097cec45e | ||
|
|
a707d818f5 | ||
|
|
1c70a43b91 | ||
|
|
c7c199210d | ||
|
|
3e7cdcdf90 | ||
|
|
1fc06b8d57 | ||
|
|
43f1953aa7 | ||
|
|
4616a74029 | ||
|
|
952197f130 | ||
|
|
68588fbb44 | ||
|
|
c1d04747a1 | ||
|
|
f8611416ec | ||
|
|
2e55b1f660 | ||
|
|
f3462e36a4 | ||
|
|
43d97b0e6f | ||
|
|
458036ad6b | ||
|
|
1ee9cddceb | ||
|
|
ed3c692b1f | ||
|
|
b0475566ca | ||
|
|
3489f94ca7 | ||
|
|
553be14000 | ||
|
|
a25e808e06 | ||
|
|
bf183bdcff | ||
|
|
95a5b1e459 | ||
|
|
9e69e13468 | ||
|
|
ae4924995a | ||
|
|
55b5080c77 | ||
|
|
593d86d3f2 | ||
|
|
8e132eab08 | ||
|
|
324e3e74be | ||
|
|
7dca844cbe | ||
|
|
8029d9e65e | ||
|
|
cea41cb4a9 | ||
|
|
5eb1c57320 | ||
|
|
5462aeab11 | ||
|
|
a850852847 | ||
|
|
291ee5366c | ||
|
|
a1b48d2c64 | ||
|
|
913e92a96e | ||
|
|
b82e6dbdb8 | ||
|
|
6ded547a0d | ||
|
|
a7d40e238e | ||
|
|
ed1bd74301 | ||
|
|
1bd0a0edf5 | ||
|
|
7fac72cac5 | ||
|
|
d0310b669e | ||
|
|
62e6848dc8 | ||
|
|
1bc1ef7f17 | ||
|
|
ffb829e80c | ||
|
|
796a8a013a | ||
|
|
535739c0c7 | ||
|
|
72f0e87367 | ||
|
|
f278490540 | ||
|
|
76b0e3e9f7 | ||
|
|
98e86a8160 | ||
|
|
9e5487d5ad | ||
|
|
8c2e965f6e | ||
|
|
f8f00b4ecf | ||
|
|
4da4a05611 | ||
|
|
9ae9ccff16 | ||
|
|
eaa90ee8eb | ||
|
|
31bbdd6a12 | ||
|
|
974d395a48 | ||
|
|
a67f6e4f9c | ||
|
|
ed0c4037ad | ||
|
|
b562ab7681 | ||
|
|
3e35dc95e5 | ||
|
|
ddf5b33219 | ||
|
|
1c9badec9c | ||
|
|
8f3bdf1cf3 | ||
|
|
3b9e8e47ec | ||
|
|
b85831fb5f | ||
|
|
fd0ed81f7f | ||
|
|
b5c299c5ad | ||
|
|
5a253f9053 | ||
|
|
11d5613866 | ||
|
|
3984544bdb | ||
|
|
e226b2fa75 | ||
|
|
e8b192be3e | ||
|
|
8368eed645 | ||
|
|
28b637c99c | ||
|
|
53a5410337 | ||
|
|
8222bf6420 | ||
|
|
0998d349ca | ||
|
|
f3bde7b5f1 | ||
|
|
8fcf527632 | ||
|
|
4eb17afe4e | ||
|
|
d2577e32e6 | ||
|
|
e582ffca38 | ||
|
|
59649ca42c | ||
|
|
e2ac6187dc | ||
|
|
df9aaf19c2 | ||
|
|
275c671576 | ||
|
|
86bbc3a9e8 | ||
|
|
b3d49c61a5 | ||
|
|
7f947f146c | ||
|
|
e6bd085c15 | ||
|
|
52d0241a17 | ||
|
|
b53de0c31d | ||
|
|
19491d79a5 | ||
|
|
dd6ae193ff | ||
|
|
fbbbc36221 | ||
|
|
7f3e8596e3 | ||
|
|
103b08c9c5 | ||
|
|
99a7ada58a | ||
|
|
6415294782 | ||
|
|
79e6480513 | ||
|
|
cc5a7ea334 | ||
|
|
4b56962c1b | ||
|
|
0668a52c6b | ||
|
|
89e2f09b84 | ||
|
|
0fd9ee06bd | ||
|
|
3f73516f8c | ||
|
|
e3b1ef0b80 | ||
|
|
ae18b9a0ac | ||
|
|
b0af385ea0 | ||
|
|
0122cf9aac | ||
|
|
085a4f4abf | ||
|
|
ad0bcba99e | ||
|
|
7a05edc42a | ||
|
|
d2f93d6fad | ||
|
|
1466e414ec | ||
|
|
8f61944386 | ||
|
|
63df19ee1c | ||
|
|
93adf6884f | ||
|
|
36574b25b6 | ||
|
|
26506a9727 | ||
|
|
caeea7940a | ||
|
|
5b688cf949 | ||
|
|
7dd313f5fc | ||
|
|
1f70385a4e | ||
|
|
8129df42da | ||
|
|
082b968bbc | ||
|
|
2907a79dd7 | ||
|
|
46af290b85 | ||
|
|
26a758a0d6 | ||
|
|
9d006d0ec5 | ||
|
|
7a0bfecfc5 | ||
|
|
604937cf66 | ||
|
|
4f74609ecf | ||
|
|
3672013ddc | ||
|
|
9ad7476a34 | ||
|
|
23a12efd29 | ||
|
|
518b13c779 | ||
|
|
d9c20de31f | ||
|
|
d6400bbcae | ||
|
|
68a5027d15 | ||
|
|
48ec4085d2 | ||
|
|
e494b1520d | ||
|
|
aac0da4cbc | ||
|
|
48737e6a02 | ||
|
|
1122e06f48 | ||
|
|
e3dfe03a2a | ||
|
|
6a406f466d | ||
|
|
aa679e06b2 | ||
|
|
d2621282dc | ||
|
|
5ce2773658 | ||
|
|
43e127de31 | ||
|
|
87d08de3a0 | ||
|
|
536593bf8a | ||
|
|
eb2c554601 | ||
|
|
318d712c4f | ||
|
|
32d904058a | ||
|
|
56cf64ad22 | ||
|
|
dd7eb54e90 | ||
|
|
89fa85d650 | ||
|
|
099fea15ae | ||
|
|
74fd5dfe96 | ||
|
|
287a6628ed | ||
|
|
510dd5c047 | ||
|
|
f715373218 | ||
|
|
5820b9521e | ||
|
|
6fc6ec1cda | ||
|
|
a0893fe43b | ||
|
|
46ba0310fa | ||
|
|
ed0dc62b69 | ||
|
|
fb0bc65ced | ||
|
|
f57558fdb2 | ||
|
|
f93cfe8c4c | ||
|
|
7a22cff28c | ||
|
|
043025d1eb | ||
|
|
4cf8c2f300 | ||
|
|
937877e841 | ||
|
|
dd27e08a98 | ||
|
|
1fbf298d30 | ||
|
|
505a3ac960 | ||
|
|
310450cfa7 | ||
|
|
5f619ae40a | ||
|
|
28a4359020 | ||
|
|
f177d54f21 | ||
|
|
851c15b2d6 | ||
|
|
c0e30c93e5 | ||
|
|
645517d22d | ||
|
|
3983e2c13c | ||
|
|
f29db1a9cd | ||
|
|
c723b4584c | ||
|
|
b75c09d7c0 | ||
|
|
225c3e8f7e | ||
|
|
7edcca9b07 | ||
|
|
9174db2024 | ||
|
|
69e2ec806b | ||
|
|
04ce8b2c71 | ||
|
|
2bfb7c20c8 | ||
|
|
fb2178e5d3 | ||
|
|
4e2c4b0498 | ||
|
|
13d2f9131d | ||
|
|
64cdd509b0 | ||
|
|
bd15d2d0f7 | ||
|
|
64f5253bd3 | ||
|
|
9d0f3ce90b | ||
|
|
703faf3b15 | ||
|
|
5d8c79da38 | ||
|
|
522ddad72b | ||
|
|
11c4877859 | ||
|
|
2469032f15 | ||
|
|
bd9dc97b4f | ||
|
|
d6893f9d8a | ||
|
|
4f34bc0f0e | ||
|
|
a91e4d8a7f | ||
|
|
161c9b0fc7 | ||
|
|
0013a3b047 | ||
|
|
1889c256e1 | ||
|
|
9113932066 | ||
|
|
d3eaac8609 | ||
|
|
e6edf40048 | ||
|
|
dd38fed6e0 | ||
|
|
5ac656c638 | ||
|
|
6855ac1d5e | ||
|
|
29175d7ec4 | ||
|
|
92858e40bf | ||
|
|
e8b81db977 | ||
|
|
7420673a0f | ||
|
|
357a9179b1 | ||
|
|
2cefa9afca | ||
|
|
e1168f8de0 | ||
|
|
290cf8271b | ||
|
|
916182f80f | ||
|
|
2db9242f5c | ||
|
|
3c08e618bd | ||
|
|
c58fda0a70 | ||
|
|
b4c25bdc0a | ||
|
|
36a2c073bd | ||
|
|
776bec0d82 | ||
|
|
ab2dc60097 | ||
|
|
aee6bac5ef | ||
|
|
58b4c45d0c | ||
|
|
a6ce78a8c0 | ||
|
|
2ebf203412 | ||
|
|
45a03dd663 | ||
|
|
fcf720a5d8 | ||
|
|
cb1cdd1b23 | ||
|
|
0d92059155 | ||
|
|
80ab596992 | ||
|
|
b5f0190799 | ||
|
|
3d5a2046c4 | ||
|
|
341c3aded6 | ||
|
|
dd4dc19add | ||
|
|
1ab257d512 | ||
|
|
2ec8051303 | ||
|
|
ec30e6ace7 | ||
|
|
ced296939f | ||
|
|
1802f8a3f8 | ||
|
|
8b10315e2a | ||
|
|
e0fa4a6cb2 | ||
|
|
1366dd1fcd | ||
|
|
0850db2a9b | ||
|
|
a881e4e3f8 | ||
|
|
192a446131 | ||
|
|
b30c590866 | ||
|
|
6dd3ca31be | ||
|
|
c2e875d54b | ||
|
|
979f806161 | ||
|
|
3102a8d24b | ||
|
|
21d57b1f10 | ||
|
|
c873218c32 | ||
|
|
4c05287677 | ||
|
|
6713bc068b | ||
|
|
46d26cd029 | ||
|
|
88db5ec4d5 | ||
|
|
102d6e7a9a | ||
|
|
7add777b21 | ||
|
|
2db518c9c6 | ||
|
|
b91f6f0f5c | ||
|
|
115657a465 | ||
|
|
8e28e0a32b | ||
|
|
830ac1cc91 | ||
|
|
5206dafb35 | ||
|
|
c7a16a4bd5 | ||
|
|
707ff450b5 | ||
|
|
6a63279396 | ||
|
|
d3b3d07f2e | ||
|
|
a1fd9ea3ce | ||
|
|
db9d684524 | ||
|
|
15c621b1d8 | ||
|
|
cdf1c7a2a6 | ||
|
|
d265ed9729 | ||
|
|
18b3cc2683 | ||
|
|
c064eb0795 | ||
|
|
c2268c82ee | ||
|
|
caebdcfa91 | ||
|
|
6012f49919 | ||
|
|
d2f4a62bf3 | ||
|
|
9d25973a77 | ||
|
|
34fbe756e8 | ||
|
|
daad16ea93 | ||
|
|
6620f9263d | ||
|
|
9e40995ab0 | ||
|
|
ecdd95d15a | ||
|
|
d6b22f1f4c | ||
|
|
7ce7808093 | ||
|
|
2395075b7c | ||
|
|
bc24e3643f | ||
|
|
6d3f13076f | ||
|
|
905be1d894 | ||
|
|
a278e8b1e6 | ||
|
|
f0490a54b7 | ||
|
|
5ed1e1e5b6 | ||
|
|
df05efd7d9 | ||
|
|
7c12ade161 | ||
|
|
cb268075c2 | ||
|
|
9f5e8962b5 | ||
|
|
6525f25a22 | ||
|
|
aa15d2a7e2 | ||
|
|
1ca9912987 | ||
|
|
d43518cb3c | ||
|
|
cf64e2c97c | ||
|
|
3e00fe2b0f | ||
|
|
2ae5c0ec4f | ||
|
|
697f4aec95 | ||
|
|
023a1f222f | ||
|
|
a21e6448ce | ||
|
|
eb1b17b636 | ||
|
|
38cd3327f3 | ||
|
|
8ab358ccec | ||
|
|
641f7bbe9d | ||
|
|
a23fad0ba8 | ||
|
|
18277543b6 | ||
|
|
bfa0b87791 | ||
|
|
8c20f0c0d2 | ||
|
|
ee1ea47e88 | ||
|
|
82c4a4a03e | ||
|
|
21efe6f902 | ||
|
|
5c60dcd501 | ||
|
|
85e89c869a | ||
|
|
1485ff338f | ||
|
|
ac4b5ab7fa | ||
|
|
eb971a0320 | ||
|
|
92d9c41da7 | ||
|
|
ba91e3fc1f | ||
|
|
726ecd79e6 | ||
|
|
d22e276586 | ||
|
|
3d0319dba7 | ||
|
|
4a0efc0e86 | ||
|
|
445abf1e31 | ||
|
|
7f58552f60 | ||
|
|
2549085872 | ||
|
|
9e67a0b0e7 | ||
|
|
a1a232a1f1 | ||
|
|
c932213abd | ||
|
|
a0c19252df | ||
|
|
67c978b7a4 | ||
|
|
f4750f0096 | ||
|
|
676fec8694 | ||
|
|
60a0b66414 | ||
|
|
1050c9857a | ||
|
|
b21b03495d | ||
|
|
4632a7faba | ||
|
|
ccb39bea1a | ||
|
|
bda62cb1f1 | ||
|
|
09b76b306c | ||
|
|
e10f1274dc | ||
|
|
9468c16233 | ||
|
|
65fb0f901c | ||
|
|
1347c89d61 | ||
|
|
b1cbcc7ef6 | ||
|
|
22c3a2649b | ||
|
|
2bb0b25688 | ||
|
|
2aefc6361e | ||
|
|
83cb01b8cd | ||
|
|
d42b712ee4 | ||
|
|
fec458dd6a | ||
|
|
9b8902dfb8 | ||
|
|
4a8037fc6a | ||
|
|
d927a517aa | ||
|
|
96939ba985 | ||
|
|
414b074bad | ||
|
|
7b1cac6914 | ||
|
|
4aaacfd5b0 | ||
|
|
52187306ce | ||
|
|
0e799b16b0 | ||
|
|
569d05df4e | ||
|
|
eac5fe5157 | ||
|
|
5337514c63 | ||
|
|
d1bdb178e2 | ||
|
|
9f445dc052 | ||
|
|
d58c33dec0 | ||
|
|
0f56c25893 | ||
|
|
762784d2b5 | ||
|
|
6d6cd19b37 | ||
|
|
c0451cd454 | ||
|
|
0620fafb6c | ||
|
|
a9a1a975a6 | ||
|
|
8a06a836f4 | ||
|
|
dba5761ad0 | ||
|
|
8ec1d4c9eb | ||
|
|
46e9924ebb | ||
|
|
12a7ce54d9 | ||
|
|
9d08776824 | ||
|
|
073d90c4a6 | ||
|
|
7d4ddc3910 | ||
|
|
1294c089a8 | ||
|
|
b64896f558 | ||
|
|
e73e2d2502 | ||
|
|
9338bdcb3a | ||
|
|
d68e6bd892 | ||
|
|
057a2b2312 | ||
|
|
46d186a49f | ||
|
|
7164c677de | ||
|
|
6ad46e1860 | ||
|
|
a662d866af | ||
|
|
a0940fd145 | ||
|
|
f61448eea2 | ||
|
|
943495de31 | ||
|
|
059f1e38cc | ||
|
|
370094274c | ||
|
|
04d6d4e2cc | ||
|
|
cf31d0187b | ||
|
|
f1963401d6 | ||
|
|
94bd1f1680 | ||
|
|
908e156113 | ||
|
|
5fe7813f9f | ||
|
|
d61b8eb1b3 | ||
|
|
0fc2afb829 | ||
|
|
cc2e3ece7a | ||
|
|
5656f756e6 | ||
|
|
9bdf900b25 | ||
|
|
0ec60a6f85 | ||
|
|
70e24ba059 | ||
|
|
ad80217593 | ||
|
|
7dd00a1494 | ||
|
|
109051e1d5 | ||
|
|
86afec860f | ||
|
|
393741fd9d | ||
|
|
e8a4b46ba1 | ||
|
|
97be3d8179 | ||
|
|
505956d1fa | ||
|
|
f7ef86dced | ||
|
|
3138f36e05 | ||
|
|
fe264aafa7 | ||
|
|
88aebb64f9 | ||
|
|
6d1f67f3be | ||
|
|
50a423b142 | ||
|
|
b716800474 | ||
|
|
b695329d2d | ||
|
|
fbee63085c | ||
|
|
99d1068f70 | ||
|
|
18748846ef | ||
|
|
b80784f5a1 | ||
|
|
76eb3e9b67 | ||
|
|
0f6abcc7fa | ||
|
|
ed106e3577 | ||
|
|
3c9aed4d6f | ||
|
|
9daa7c7a7c | ||
|
|
b7dad25d3e | ||
|
|
64a26b560b | ||
|
|
d5bfc726c0 | ||
|
|
0dcb448f2e | ||
|
|
ccafde604e | ||
|
|
ef58d277ca | ||
|
|
6642860d51 | ||
|
|
aec64aa582 | ||
|
|
6de1d3f7de | ||
|
|
90849fe29b | ||
|
|
17129b259b | ||
|
|
dfb74904ed | ||
|
|
2b5c90e379 | ||
|
|
2e29f3fd6d | ||
|
|
637c80c38b | ||
|
|
c76732e3e7 | ||
|
|
870bcbd932 | ||
|
|
b0464500ca | ||
|
|
5e91ed2bb1 | ||
|
|
6e5dbf7beb | ||
|
|
553eeb034d | ||
|
|
858294f36e | ||
|
|
4c616f32eb | ||
|
|
b29bc6868c | ||
|
|
07f72252d7 | ||
|
|
f289dfb762 | ||
|
|
8d4f3c07c7 | ||
|
|
7e30a99937 | ||
|
|
3d516101a4 | ||
|
|
b0b60da84a | ||
|
|
05abb9e430 | ||
|
|
dc4571a3c8 | ||
|
|
7361470b64 | ||
|
|
f282b26883 | ||
|
|
4692b21bcf | ||
|
|
36a3d4e53b | ||
|
|
8bdfa18efb | ||
|
|
52d031f2d0 | ||
|
|
d8ad0b8faf | ||
|
|
c6deb9393c | ||
|
|
d35433d0b8 | ||
|
|
0ce4f49e08 | ||
|
|
dc1e32a632 | ||
|
|
c0a2f1f24d | ||
|
|
0dd1cb3fc1 | ||
|
|
eec2cfd5dd | ||
|
|
d6cab7b421 | ||
|
|
8254e9f030 | ||
|
|
7493649893 | ||
|
|
738c421edf | ||
|
|
c41da41efe | ||
|
|
ed0a596286 | ||
|
|
31a929388b | ||
|
|
0424f7d962 | ||
|
|
8654d6cf43 | ||
|
|
25553b11ed | ||
|
|
74b3495542 | ||
|
|
ee29e64039 | ||
|
|
3a4641889c | ||
|
|
d9c84edf9a | ||
|
|
a930c6617b | ||
|
|
6c5883bce0 | ||
|
|
414e336852 | ||
|
|
d226ffbd1f | ||
|
|
65bc196eba | ||
|
|
12530cd973 | ||
|
|
a0fcb38e68 | ||
|
|
a05acb4f99 | ||
|
|
21cb1a0166 | ||
|
|
41521a9b98 | ||
|
|
781b766ac4 | ||
|
|
df11f28593 | ||
|
|
030741bba5 | ||
|
|
41be5479af | ||
|
|
9c93e93cb4 | ||
|
|
b427a87724 | ||
|
|
077589e08b | ||
|
|
4de6b93ba8 | ||
|
|
014ce31589 | ||
|
|
d9574f3caa | ||
|
|
6a9af07f7a | ||
|
|
e238ecf182 | ||
|
|
c8646f99c0 | ||
|
|
31f255b541 | ||
|
|
fecf3915c5 | ||
|
|
8a550b569f | ||
|
|
1a34f61b24 | ||
|
|
775e61c248 | ||
|
|
aa7ced4ef1 | ||
|
|
d9f6baac72 | ||
|
|
8fe687eb55 | ||
|
|
6c693d158e | ||
|
|
6b3e1f1e65 | ||
|
|
8fe344c268 | ||
|
|
c7afa30d0c | ||
|
|
14f21921bb | ||
|
|
29ae6dfbf6 | ||
|
|
a6c03a6b75 | ||
|
|
068b812245 | ||
|
|
a84a62def8 | ||
|
|
7f0847b95d | ||
|
|
073e310a5a | ||
|
|
d9e95d13e6 | ||
|
|
f4607885e1 | ||
|
|
03f4109ac4 | ||
|
|
bd0aaf7665 | ||
|
|
134c1802e7 | ||
|
|
33deacacee | ||
|
|
d6bc3ccc8b | ||
|
|
e1f990190e | ||
|
|
f77aa3284f | ||
|
|
8ceeb39268 | ||
|
|
4f71dae598 | ||
|
|
4da327088c | ||
|
|
e26a9a25d5 | ||
|
|
99e4c3350f | ||
|
|
99a72e529b | ||
|
|
824e3866d8 | ||
|
|
ce89ae3c1d | ||
|
|
4036f2a0f2 | ||
|
|
37f55ccc25 | ||
|
|
358c5d0a0f | ||
|
|
a09ada18ee | ||
|
|
88a1e03314 | ||
|
|
75b6341a84 | ||
|
|
e538a4f710 | ||
|
|
af00296ffe | ||
|
|
dd7d3c6e23 | ||
|
|
e576a886d0 | ||
|
|
f0d077fed8 | ||
|
|
37e39ca089 | ||
|
|
7c2b218076 | ||
|
|
002fdb33fc | ||
|
|
13b65c9a6a | ||
|
|
e6118a06e8 | ||
|
|
63ac71190b | ||
|
|
37542ae706 | ||
|
|
89d4d835ba | ||
|
|
9f0ea70945 | ||
|
|
86e4a88201 | ||
|
|
c002881f66 | ||
|
|
f17d4530a3 | ||
|
|
94a76cc9e0 | ||
|
|
4c0b229b14 | ||
|
|
17d0d5e0a2 | ||
|
|
f97d29243d | ||
|
|
94864104e4 | ||
|
|
6988ce96d7 | ||
|
|
98492e7718 | ||
|
|
becb453e7d | ||
|
|
35644fdd35 | ||
|
|
5ab056759b | ||
|
|
e1aeaba942 | ||
|
|
e256fc32d9 | ||
|
|
a7ba446703 | ||
|
|
26d0a3e5cb | ||
|
|
7f571fa7d8 | ||
|
|
cb600549c3 | ||
|
|
e1cb6d92c5 | ||
|
|
8812a7db69 | ||
|
|
96361656e4 | ||
|
|
83785da1bc | ||
|
|
4fe69e825e | ||
|
|
6105fc861d | ||
|
|
f156696339 | ||
|
|
b6c8707a4d | ||
|
|
3031c5055a | ||
|
|
44c0d76541 | ||
|
|
0b101d9efd | ||
|
|
b69995b34d | ||
|
|
ef6c9fbd6d | ||
|
|
e43f58d11f | ||
|
|
a684b48fb3 | ||
|
|
7cc30e3216 | ||
|
|
6586be5158 | ||
|
|
1bd14895c3 | ||
|
|
82155cd859 | ||
|
|
0ed3cd248b | ||
|
|
43451fd3f0 | ||
|
|
6340c70d7a | ||
|
|
8e40c8630d | ||
|
|
b9a036e5cb | ||
|
|
e330407d44 | ||
|
|
aa127fe0bd | ||
|
|
16f1e87bb7 | ||
|
|
4db0a6524d | ||
|
|
c9d04684ce | ||
|
|
5262405f06 | ||
|
|
6a90f7c2e1 | ||
|
|
6d766176c1 | ||
|
|
eaf4781f5f | ||
|
|
787c11efda | ||
|
|
fd07e0c868 | ||
|
|
9bad590e9e | ||
|
|
29c236c33d | ||
|
|
a44f17a2fc | ||
|
|
915b09255c | ||
|
|
1964e824c8 | ||
|
|
3e10e2c978 | ||
|
|
e9f16a29cf | ||
|
|
019932c323 | ||
|
|
2ae279a382 | ||
|
|
bf88ff1076 | ||
|
|
3db961cb0f | ||
|
|
02f90aca0b | ||
|
|
c9500a5122 | ||
|
|
26cdda090e | ||
|
|
520b03cb0a | ||
|
|
93e83dddae | ||
|
|
917d08c61e | ||
|
|
49c614160d | ||
|
|
b6173c9d7b | ||
|
|
b0a0a7c50a | ||
|
|
1f0728b7d1 | ||
|
|
59757dbf55 | ||
|
|
641701ca16 | ||
|
|
4f5c3987f1 | ||
|
|
d24a43b1cc | ||
|
|
64a8be3c4f | ||
|
|
0d77bc305e | ||
|
|
96b0d85189 | ||
|
|
3b1c8abd2f | ||
|
|
210bbfdbe1 | ||
|
|
0da23b837d | ||
|
|
989aa462f7 | ||
|
|
75a3e92098 | ||
|
|
02f9de5bdb | ||
|
|
c418a9c9ca | ||
|
|
f167d77b61 | ||
|
|
6594481992 | ||
|
|
4faf14b45f | ||
|
|
198063f046 | ||
|
|
f5d46bf9f1 | ||
|
|
fde8e4054a | ||
|
|
b4b54d6b94 | ||
|
|
23e218f1b5 | ||
|
|
33cb649f26 | ||
|
|
30b4b5b349 | ||
|
|
430e9ae994 | ||
|
|
af56b92af4 | ||
|
|
e2bfac9e42 | ||
|
|
4ab3bbeb82 | ||
|
|
8c3bba65e5 | ||
|
|
d59816054f | ||
|
|
9dccd20bb3 | ||
|
|
45f2e35a99 | ||
|
|
8b99a33e6e | ||
|
|
a54efeddfa | ||
|
|
ed279cac31 | ||
|
|
be4b8284c5 | ||
|
|
093d7af748 | ||
|
|
76d04205ef | ||
|
|
4080511d9d | ||
|
|
195e9663da | ||
|
|
82c2d50885 | ||
|
|
2979424db5 | ||
|
|
d4ee869281 | ||
|
|
df0f6690fd | ||
|
|
c0532f6d13 | ||
|
|
4d53d0eb01 | ||
|
|
c9de5f00c6 | ||
|
|
7668d9af08 | ||
|
|
66f5a40cd9 | ||
|
|
a887019337 | ||
|
|
b617a5d89d | ||
|
|
b0877f63b5 | ||
|
|
56af090e54 | ||
|
|
fa74a42b34 | ||
|
|
c0595e62ee | ||
|
|
f5afc51879 | ||
|
|
01c7636c75 | ||
|
|
964f746d76 | ||
|
|
febbd729ec | ||
|
|
737f8375fb | ||
|
|
fc5287bd9f | ||
|
|
8c4dff057f | ||
|
|
37f76142fb | ||
|
|
cc5c3776ca | ||
|
|
ea3eabc3c7 | ||
|
|
f495af7a76 | ||
|
|
4b9bfb2e4a | ||
|
|
15c518f0f1 | ||
|
|
a6841bb1e1 | ||
|
|
584a200bf0 | ||
|
|
60304e5a46 | ||
|
|
f1a18749f6 | ||
|
|
e29ea15554 | ||
|
|
ded71be73f | ||
|
|
1f5ccd1c3b | ||
|
|
8cb239abcb | ||
|
|
8e8f89aa8f | ||
|
|
53f418b9a2 | ||
|
|
9bda583d5b | ||
|
|
11bf5fc679 | ||
|
|
43d37e3b4c | ||
|
|
3247223595 | ||
|
|
4a87b1387a | ||
|
|
cb26ca0e46 | ||
|
|
f15db03ec3 | ||
|
|
619c4e1180 | ||
|
|
f44627c205 | ||
|
|
1b2cd8404a | ||
|
|
4a2e587123 | ||
|
|
6e2cf8ced2 | ||
|
|
1a9d365c42 | ||
|
|
f8e443bda7 | ||
|
|
1bdb7d33fc | ||
|
|
75ac259632 | ||
|
|
0bd26222d8 | ||
|
|
f8e1973bc2 | ||
|
|
6c7fe644e5 | ||
|
|
f901eeeb4a | ||
|
|
b9c7a9e887 | ||
|
|
5093e6db5e | ||
|
|
f7cc79fab1 | ||
|
|
9110703aaa | ||
|
|
0a67b2ecb9 | ||
|
|
d476343b99 | ||
|
|
ac2bd5e6ee | ||
|
|
246a475600 | ||
|
|
ae2aadeede | ||
|
|
d95e8db4ee | ||
|
|
cccc6e5676 | ||
|
|
c4facc04d3 | ||
|
|
d98e86d3df | ||
|
|
623ff4f91f | ||
|
|
4fa1bdba5a | ||
|
|
4ed2d74d9c | ||
|
|
700e01708b | ||
|
|
1a39dedc62 | ||
|
|
a03b8b4f76 | ||
|
|
ae462ed099 | ||
|
|
5316a28e6c | ||
|
|
bb845817d6 | ||
|
|
425cc2a966 | ||
|
|
dc47c8f898 | ||
|
|
de878b3198 | ||
|
|
00ce130286 | ||
|
|
3ff4dfd02d | ||
|
|
397a1b9616 | ||
|
|
6a5d98cf19 | ||
|
|
f22134dabd | ||
|
|
b7d7bda93a | ||
|
|
3d4d40fa02 | ||
|
|
42cd2a2276 | ||
|
|
7b568cfce2 | ||
|
|
00ebc58795 | ||
|
|
79e04d5e23 | ||
|
|
636ab29669 | ||
|
|
fb87920bbb | ||
|
|
8a03c42bd4 | ||
|
|
5b00ad0336 | ||
|
|
314990447c | ||
|
|
664d9a2144 | ||
|
|
c1c682402a | ||
|
|
7282e15ee2 | ||
|
|
b48121335c | ||
|
|
ea0c077180 | ||
|
|
c11bed3819 | ||
|
|
022cf3d93c | ||
|
|
2522c8c9e2 | ||
|
|
475a717cd6 | ||
|
|
4c192393b0 | ||
|
|
9961a6c101 | ||
|
|
c3c3e802ca | ||
|
|
1ebf7948c6 | ||
|
|
f98136cd99 | ||
|
|
8180403f97 | ||
|
|
62d55cabd9 | ||
|
|
091d2cd0d2 | ||
|
|
69fba93152 | ||
|
|
570ee58f53 | ||
|
|
e10b58e4ca | ||
|
|
080ccdda5b | ||
|
|
a7d8b9de8c | ||
|
|
30c7effa50 | ||
|
|
f85efb2797 | ||
|
|
f8e0b54836 | ||
|
|
131a944e24 | ||
|
|
ab5d954337 | ||
|
|
4bec7df33b | ||
|
|
fbc3e2d0e7 | ||
|
|
4f9d2de8cd | ||
|
|
18b7483cc4 | ||
|
|
c25034a86d | ||
|
|
7408b8c8d9 | ||
|
|
06022dfd7e | ||
|
|
30e9673375 | ||
|
|
2182dc3cc5 | ||
|
|
1f6a0a87f6 | ||
|
|
6d7ff9444a | ||
|
|
4125360dfb | ||
|
|
a804485a4c | ||
|
|
02642628b0 | ||
|
|
5b438e13cc | ||
|
|
687fe617cc | ||
|
|
03391a07e0 |
No files matched your search
@@ -0,0 +1,8 @@
|
||||
.git
|
||||
web/node_modules
|
||||
web/*.log
|
||||
web/regression
|
||||
web/**/tests/
|
||||
.DS_Store
|
||||
web/pgadmin/messages.pot
|
||||
web/pgadmin/translations/??/LC_MESSAGES/messages.po
|
||||
@@ -1,8 +1,6 @@
|
||||
*.autosave
|
||||
*.db
|
||||
*.diff
|
||||
*.o
|
||||
*.patch
|
||||
*.psp
|
||||
*.pyc
|
||||
*.pyo
|
||||
@@ -11,17 +9,22 @@
|
||||
.DS_Store
|
||||
.idea
|
||||
.vscode
|
||||
/*.diff
|
||||
/*.patch
|
||||
/dist
|
||||
/debian-build
|
||||
/docker-build
|
||||
/mac-build
|
||||
/pip-build
|
||||
/redhat-build
|
||||
/src-build
|
||||
/win-build
|
||||
/win-temp
|
||||
_build
|
||||
build-*
|
||||
/build-*
|
||||
pgadmin4.log
|
||||
pkg/win32/installer.iss
|
||||
pkg/mac/codesign.conf
|
||||
pkg/mac/codesign.confx
|
||||
pkg/mac/framework.conf
|
||||
runtime/.qmake.cache
|
||||
runtime/.qmake.stash
|
||||
@@ -36,8 +39,10 @@ runtime/pgAdmin4_resource.rc
|
||||
runtime/release/
|
||||
runtime/ui_BrowserWindow.h
|
||||
web/config_local.py
|
||||
web/pgadmin/misc/themes/pgadmin.themes.json
|
||||
web/geckodriver.log
|
||||
web/regression/test_config.json
|
||||
web/regression/.coveragerc
|
||||
node_modules/
|
||||
web/pgAdmin/static/js/generated
|
||||
web/pgadmin/static/js/generated
|
||||
@@ -45,3 +50,10 @@ web/yarn-error.log
|
||||
/web/cacert.pem
|
||||
auditjs.html
|
||||
auditpy.txt
|
||||
/venv/
|
||||
.scannerwork/
|
||||
web/coverage/
|
||||
web/.coverage
|
||||
web/regression/.coverage
|
||||
web/regression/covhtml/
|
||||
web/regression/htmlcov/
|
||||
@@ -0,0 +1,390 @@
|
||||
pgAdmin 4 Dependency Inventory
|
||||
==============================
|
||||
|
||||
pgAdmin 4 is built on Python, Javascript and NW.js (node-webkit), and is
|
||||
dependent on various third party libraries. These are automatically compiled
|
||||
from the system, requirements.txt and packages.json and listed below.
|
||||
|
||||
Runtime Dependencies
|
||||
====================
|
||||
|
||||
Name Version Licence URL
|
||||
---- ------- ------- ---
|
||||
Python 3.6+ PSF https://www.python.org/
|
||||
nw 0.50.2 MIT git://github.com/nwjs/npm-installer.git
|
||||
axios 0.21.0 MIT https://github.com/axios/axios.git
|
||||
bootstrap 4.5.3 MIT git+https://github.com/twbs/bootstrap.git
|
||||
follow-redirects 1.13.1 MIT git@github.com:follow-redirects/follow-redirects.git
|
||||
|
||||
5 dependencies listed.
|
||||
|
||||
Python Dependencies
|
||||
===================
|
||||
|
||||
Name Version Licence URL
|
||||
---- ------- ------- ---
|
||||
cheroot 8.5.2 UNKNOWN https://cheroot.cherrypy.org
|
||||
Flask 1.1.2 BSD-3-Clause https://palletsprojects.com/p/flask/
|
||||
Flask-Gravatar 0.5.0 BSD https://github.com/zzzsochi/Flask-Gravatar/
|
||||
Flask-Login 0.5.0 MIT https://github.com/maxcountryman/flask-login
|
||||
Flask-Mail 0.9.1 BSD https://github.com/rduplain/flask-mail
|
||||
Flask-Migrate 2.6.0 MIT http://github.com/miguelgrinberg/flask-migrate/
|
||||
Flask-SQLAlchemy 2.4.4 BSD-3-Clause https://github.com/pallets/flask-sqlalchemy
|
||||
Flask-WTF 0.14.3 BSD https://github.com/lepture/flask-wtf
|
||||
Flask-Compress 1.8.0 MIT https://github.com/colour-science/flask-compress
|
||||
passlib 1.7.4 BSD https://passlib.readthedocs.io
|
||||
pytz 2021.1 MIT http://pythonhosted.org/pytz
|
||||
simplejson 3.17.2 MIT License https://github.com/simplejson/simplejson
|
||||
six 1.15.0 MIT https://github.com/benjaminp/six
|
||||
speaklater3 1.4 UNKNOWN https://github.com/ThomasWaldmann/speaklater
|
||||
sqlparse 0.4.1 BSD-3-Clause https://github.com/andialbrecht/sqlparse
|
||||
WTForms 2.3.3 BSD-3-Clause https://wtforms.readthedocs.io/
|
||||
Flask-Paranoid 0.2.0 MIT http://github.com/miguelgrinberg/flask-paranoid/
|
||||
psutil 5.8.0 BSD https://github.com/giampaolo/psutil
|
||||
psycopg2 2.8.6 LGPL with exceptions https://psycopg.org/
|
||||
python-dateutil 2.8.1 Dual License https://dateutil.readthedocs.io
|
||||
SQLAlchemy 1.3.23 MIT http://www.sqlalchemy.org
|
||||
Flask-Security-Too 3.4.5 MIT https://github.com/Flask-Middleware/flask-security
|
||||
bcrypt 3.2.0 Apache License, Version 2.0 https://github.com/pyca/bcrypt/
|
||||
cryptography 3.3.1 BSD or Apache License, Version 2.0 https://github.com/pyca/cryptography
|
||||
sshtunnel 0.4.0 MIT https://github.com/pahaz/sshtunnel
|
||||
ldap3 2.9 LGPL v3 https://github.com/cannatag/ldap3
|
||||
Flask-BabelEx 0.9.4 BSD http://github.com/mrjoes/flask-babelex
|
||||
gssapi 1.6.12 LICENSE.txt https://github.com/pythongssapi/python-gssapi
|
||||
|
||||
28 dependencies listed.
|
||||
|
||||
Javascript Dependencies
|
||||
=======================
|
||||
|
||||
Name Version Licence URL
|
||||
---- ------- ------- ---
|
||||
@babel/code-frame 7.12.13 MIT https://github.com/babel/babel.git
|
||||
@babel/compat-data 7.14.0 MIT https://github.com/babel/babel.git
|
||||
@babel/core 7.14.2 MIT https://github.com/babel/babel.git
|
||||
@babel/generator 7.14.2 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-annotate-as-pure 7.12.13 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-compilation-targets 7.13.16 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-create-class-features-plugin 7.14.2 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-function-name 7.14.2 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-get-function-arity 7.12.13 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-member-expression-to-functions 7.13.12 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-module-imports 7.13.12 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-module-transforms 7.14.2 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-optimise-call-expression 7.12.13 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-plugin-utils 7.13.0 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-replace-supers 7.13.12 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-simple-access 7.13.12 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-split-export-declaration 7.12.13 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-validator-identifier 7.14.0 MIT https://github.com/babel/babel.git
|
||||
@babel/helper-validator-option 7.12.17 MIT https://github.com/babel/babel.git
|
||||
@babel/helpers 7.14.0 MIT https://github.com/babel/babel.git
|
||||
@babel/highlight 7.14.0 MIT https://github.com/babel/babel.git
|
||||
@babel/parser 7.14.2 MIT https://github.com/babel/babel.git
|
||||
@babel/plugin-proposal-class-properties 7.13.0 MIT https://github.com/babel/babel.git
|
||||
@babel/plugin-syntax-jsx 7.12.13 MIT https://github.com/babel/babel.git
|
||||
@babel/plugin-transform-react-display-name 7.14.2 MIT https://github.com/babel/babel.git
|
||||
@babel/plugin-transform-react-jsx 7.13.12 MIT https://github.com/babel/babel.git
|
||||
@babel/plugin-transform-react-jsx-development 7.12.17 MIT https://github.com/babel/babel.git
|
||||
@babel/plugin-transform-react-pure-annotations 7.12.1 MIT https://github.com/babel/babel.git
|
||||
@babel/preset-react 7.13.13 MIT https://github.com/babel/babel.git
|
||||
@babel/template 7.12.13 MIT https://github.com/babel/babel.git
|
||||
@babel/traverse 7.14.2 MIT https://github.com/babel/babel.git
|
||||
@babel/types 7.14.2 MIT https://github.com/babel/babel.git
|
||||
@istanbuljs/schema 0.1.3 MIT git+https://github.com/istanbuljs/schema.git
|
||||
@popperjs/core 2.9.2 MIT https://github.com/popperjs/popper-core.git
|
||||
@projectstorm/geometry 6.5.2 MIT https://github.com/projectstorm/react-diagrams.git
|
||||
@projectstorm/react-canvas-core 6.5.2 MIT https://github.com/projectstorm/react-diagrams.git
|
||||
@projectstorm/react-diagrams 6.5.2 MIT https://github.com/projectstorm/react-diagrams.git
|
||||
@projectstorm/react-diagrams-core 6.5.2 MIT https://github.com/projectstorm/react-diagrams.git
|
||||
@projectstorm/react-diagrams-defaults 6.5.2 MIT https://github.com/projectstorm/react-diagrams.git
|
||||
@projectstorm/react-diagrams-routing 6.5.2 MIT https://github.com/projectstorm/react-diagrams.git
|
||||
@simonwep/pickr 1.8.1 MIT https://github.com/Simonwep/pickr.git
|
||||
@tippyjs/react 4.2.5 MIT git+https://github.com/atomiks/tippyjs-react.git
|
||||
@types/json-schema 7.0.7 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
@types/node 15.0.3 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
@types/parse-json 4.0.0 MIT https://www.github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
acitree 4.5.0-rc.7 MIT https://github.com/imsurinder90/jquery-aciTree.git
|
||||
ajv 6.12.6 MIT https://github.com/ajv-validator/ajv.git
|
||||
ajv 5.5.2 MIT https://github.com/epoberezkin/ajv.git
|
||||
ajv-keywords 3.5.2 MIT git+https://github.com/epoberezkin/ajv-keywords.git
|
||||
alertifyjs 1.7.1 MIT git@github.com:MohammadYounes/AlertifyJS.git
|
||||
alphanum-sort 1.0.2 MIT https://github.com/TrySound/alphanum-sort.git
|
||||
ansi-regex 2.1.1 MIT https://github.com/chalk/ansi-regex.git
|
||||
ansi-styles 3.2.1 MIT https://github.com/chalk/ansi-styles.git
|
||||
ansi-styles 4.3.0 MIT https://github.com/chalk/ansi-styles.git
|
||||
ansi-styles 2.2.1 MIT https://github.com/chalk/ansi-styles.git
|
||||
axios 0.21.1 MIT https://github.com/axios/axios.git
|
||||
babel-code-frame 6.26.0 MIT https://github.com/babel/babel/tree/master/packages/babel-code-frame
|
||||
babel-generator 6.26.1 MIT https://github.com/babel/babel/tree/master/packages/babel-generator
|
||||
babel-messages 6.23.0 MIT https://github.com/babel/babel/tree/master/packages/babel-messages
|
||||
babel-runtime 6.26.0 MIT https://github.com/babel/babel/tree/master/packages/babel-runtime
|
||||
babel-template 6.26.0 MIT https://github.com/babel/babel/tree/master/packages/babel-template
|
||||
babel-traverse 6.26.0 MIT https://github.com/babel/babel/tree/master/packages/babel-traverse
|
||||
babel-types 6.26.0 MIT https://github.com/babel/babel/tree/master/packages/babel-types
|
||||
babelify 10.0.0 MIT https://github.com/babel/babelify.git
|
||||
babylon 6.18.0 MIT https://github.com/babel/babylon
|
||||
backbone 1.4.0 MIT https://github.com/jashkenas/backbone.git
|
||||
backbone 1.2.3 MIT https://github.com/jashkenas/backbone.git
|
||||
backbone 1.3.3 MIT https://github.com/jashkenas/backbone.git
|
||||
backform 0.2.0 MIT https://github.com/AmiliaApp/backform
|
||||
backgrid 0.3.8 MIT http://github.com/cloudflare/backgrid
|
||||
backgrid-filter 0.3.7 MIT git://github.com/wyuenho/backgrid-text-cell.git
|
||||
backgrid-select-all 0.3.5 MIT git://github.com/wyuenho/backgrid-select-all.git
|
||||
balanced-match 1.0.2 MIT git://github.com/juliangruber/balanced-match.git
|
||||
base64-arraybuffer 0.2.0 MIT https://github.com/niklasvh/base64-arraybuffer
|
||||
big.js 5.2.2 MIT https://github.com/MikeMcl/big.js.git
|
||||
bignumber.js 9.0.1 MIT https://github.com/MikeMcl/bignumber.js.git
|
||||
bignumber.js 7.2.1 MIT https://github.com/MikeMcl/bignumber.js.git
|
||||
bootstrap 4.6.0 MIT git+https://github.com/twbs/bootstrap.git
|
||||
bootstrap4-toggle 3.6.1 MIT https://github.com/gitbrent/bootstrap4-toggle.git
|
||||
brace-expansion 1.1.11 MIT git://github.com/juliangruber/brace-expansion.git
|
||||
browserslist 4.16.6 MIT https://github.com/browserslist/browserslist.git
|
||||
callsites 3.1.0 MIT https://github.com/sindresorhus/callsites.git
|
||||
camelcase 6.2.0 MIT https://github.com/sindresorhus/camelcase.git
|
||||
caniuse-api 3.0.0 MIT https://github.com/nyalab/caniuse-api.git
|
||||
chalk 2.4.2 MIT https://github.com/chalk/chalk.git
|
||||
chalk 4.1.1 MIT https://github.com/chalk/chalk.git
|
||||
chalk 1.1.3 MIT https://github.com/chalk/chalk.git
|
||||
chart.js 2.9.4 MIT https://github.com/chartjs/Chart.js.git
|
||||
chartjs-color 2.4.1 MIT https://github.com/chartjs/chartjs-color.git
|
||||
chartjs-color-string 0.6.0 MIT https://github.com/chartjs/chartjs-color-string.git
|
||||
closest 0.0.1 MIT https://github.com/ForbesLindesay/closest.git
|
||||
co 4.6.0 MIT https://github.com/tj/co.git
|
||||
codemirror 5.61.0 MIT https://github.com/codemirror/CodeMirror.git
|
||||
color 3.1.3 MIT https://github.com/Qix-/color.git
|
||||
color-convert 1.9.3 MIT https://github.com/Qix-/color-convert.git
|
||||
color-convert 2.0.1 MIT https://github.com/Qix-/color-convert.git
|
||||
color-name 1.1.3 MIT git@github.com:dfcreative/color-name.git
|
||||
color-name 1.1.4 MIT git@github.com:colorjs/color-name.git
|
||||
color-string 1.5.5 MIT https://github.com/Qix-/color-string.git
|
||||
colorette 1.2.2 MIT https://github.com/jorgebucaran/colorette.git
|
||||
commander 7.2.0 MIT https://github.com/tj/commander.js.git
|
||||
concat-map 0.0.1 MIT git://github.com/substack/node-concat-map.git
|
||||
convert-source-map 1.7.0 MIT git://github.com/thlorenz/convert-source-map.git
|
||||
core-js 3.12.1 MIT https://github.com/zloirock/core-js.git
|
||||
core-js 2.6.12 MIT https://github.com/zloirock/core-js.git
|
||||
cosmiconfig 7.0.0 MIT git+https://github.com/davidtheclark/cosmiconfig.git
|
||||
css-color-names 1.0.1 MIT git://github.com/bahamas10/css-color-names.git
|
||||
css-color-names 0.0.4 MIT git://github.com/bahamas10/css-color-names.git
|
||||
css-line-break 1.1.1 MIT git+ssh://git@github.com/niklasvh/css-line-break.git
|
||||
css-loader 5.2.4 MIT https://github.com/webpack-contrib/css-loader.git
|
||||
css-tree 1.1.3 MIT https://github.com/csstree/csstree.git
|
||||
cssesc 3.0.0 MIT https://github.com/mathiasbynens/cssesc.git
|
||||
cssnano 5.0.2 MIT https://github.com/cssnano/cssnano.git
|
||||
cssnano-preset-default 5.0.1 MIT https://github.com/cssnano/cssnano.git
|
||||
cssnano-utils 2.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
csso 4.2.0 MIT https://github.com/css/csso.git
|
||||
dagre 0.8.5 MIT https://github.com/dagrejs/dagre.git
|
||||
debug 4.3.1 MIT git://github.com/visionmedia/debug.git
|
||||
debug 2.6.9 MIT git://github.com/visionmedia/debug.git
|
||||
detect-indent 4.0.0 MIT https://github.com/sindresorhus/detect-indent.git
|
||||
dom-serializer 1.3.1 MIT git://github.com/cheeriojs/dom-renderer.git
|
||||
dot-prop 5.3.0 MIT https://github.com/sindresorhus/dot-prop.git
|
||||
dropzone 5.9.2 MIT https://github.com/dropzone/dropzone.git
|
||||
emojis-list 3.0.0 MIT git+https://github.com/kikobeats/emojis-list.git
|
||||
error-ex 1.3.2 MIT https://github.com/qix-/node-error-ex.git
|
||||
escalade 3.1.1 MIT https://github.com/lukeed/escalade.git
|
||||
escape-string-regexp 1.0.5 MIT https://github.com/sindresorhus/escape-string-regexp.git
|
||||
fast-deep-equal 3.1.3 MIT git+https://github.com/epoberezkin/fast-deep-equal.git
|
||||
fast-deep-equal 1.1.0 MIT git+https://github.com/epoberezkin/fast-deep-equal.git
|
||||
fast-json-stable-stringify 2.1.0 MIT git://github.com/epoberezkin/fast-json-stable-stringify.git
|
||||
follow-redirects 1.14.1 MIT git@github.com:follow-redirects/follow-redirects.git
|
||||
gensync 1.0.0-beta.2 MIT https://github.com/loganfsmyth/gensync.git
|
||||
globals 11.12.0 MIT https://github.com/sindresorhus/globals.git
|
||||
globals 9.18.0 MIT https://github.com/sindresorhus/globals.git
|
||||
graphlib 2.1.8 MIT https://github.com/dagrejs/graphlib.git
|
||||
has-ansi 2.0.0 MIT https://github.com/sindresorhus/has-ansi.git
|
||||
has-flag 3.0.0 MIT https://github.com/sindresorhus/has-flag.git
|
||||
has-flag 4.0.0 MIT https://github.com/sindresorhus/has-flag.git
|
||||
hex-color-regex 1.1.0 MIT https://github.com/regexps/hex-color-regex.git
|
||||
hsl-regex 1.0.0 MIT https://github.com/regexps/hsl-regex.git
|
||||
hsla-regex 1.0.0 MIT https://github.com/regexps/hsla-regex.git
|
||||
html-escaper 2.0.2 MIT https://github.com/WebReflection/html-escaper.git
|
||||
html2canvas 1.0.0-rc.7 MIT git@github.com:niklasvh/html2canvas.git
|
||||
immutability-helper 3.1.1 MIT git+https://github.com/kolodny/immutability-helper.git
|
||||
import-fresh 3.3.0 MIT https://github.com/sindresorhus/import-fresh.git
|
||||
imports-loader 2.0.0 MIT https://github.com/webpack-contrib/imports-loader.git
|
||||
indexes-of 1.0.1 MIT git://github.com/dominictarr/indexes-of.git
|
||||
invariant 2.2.4 MIT https://github.com/zertosh/invariant
|
||||
ip-address 7.1.0 MIT git://github.com/beaugunderson/ip-address.git
|
||||
is-absolute-url 3.0.3 MIT https://github.com/sindresorhus/is-absolute-url.git
|
||||
is-any-array 1.0.0 MIT https://github.com/cheminfo-js/is-any-array.git
|
||||
is-arrayish 0.2.1 MIT https://github.com/qix-/node-is-arrayish.git
|
||||
is-arrayish 0.3.2 MIT https://github.com/qix-/node-is-arrayish.git
|
||||
is-color-stop 1.1.0 MIT git+https://github.com/pigcan/is-color-stop.git
|
||||
is-finite 1.1.0 MIT https://github.com/sindresorhus/is-finite.git
|
||||
is-obj 2.0.0 MIT https://github.com/sindresorhus/is-obj.git
|
||||
istanbul-instrumenter-loader 3.0.1 MIT https://github.com/webpack-contrib/istanbul-instrumenter-loader.git
|
||||
jquery 3.6.0 MIT https://github.com/jquery/jquery.git
|
||||
jquery-contextmenu 2.9.2 MIT git://github.com/swisnl/jQuery-contextMenu.git
|
||||
jquery-ui 1.12.1 MIT git://github.com/jquery/jquery-ui.git
|
||||
js-tokens 4.0.0 MIT https://github.com/lydell/js-tokens.git
|
||||
js-tokens 3.0.2 MIT https://github.com/lydell/js-tokens.git
|
||||
jsbn 1.1.0 MIT https://github.com/andyperlitch/jsbn.git
|
||||
jsesc 2.5.2 MIT https://github.com/mathiasbynens/jsesc.git
|
||||
jsesc 1.3.0 MIT https://github.com/mathiasbynens/jsesc.git
|
||||
json-bignumber 1.0.2 MIT git@github.com:wbuss/JSONBigNumber.git
|
||||
json-parse-even-better-errors 2.3.1 MIT https://github.com/npm/json-parse-even-better-errors
|
||||
json-schema-traverse 0.4.1 MIT git+https://github.com/epoberezkin/json-schema-traverse.git
|
||||
json-schema-traverse 0.3.1 MIT git+https://github.com/epoberezkin/json-schema-traverse.git
|
||||
json5 2.2.0 MIT git+https://github.com/json5/json5.git
|
||||
json5 1.0.1 MIT git+https://github.com/json5/json5.git
|
||||
karma-coverage 2.0.3 MIT git://github.com/karma-runner/karma-coverage.git
|
||||
lines-and-columns 1.1.6 MIT https://github.com/eventualbuddha/lines-and-columns.git
|
||||
loader-utils 2.0.0 MIT https://github.com/webpack/loader-utils.git
|
||||
loader-utils 1.4.0 MIT https://github.com/webpack/loader-utils.git
|
||||
lodash 4.17.21 MIT https://github.com/lodash/lodash.git
|
||||
lodash.memoize 4.1.2 MIT https://github.com/lodash/lodash.git
|
||||
lodash.uniq 4.5.0 MIT https://github.com/lodash/lodash.git
|
||||
loose-envify 1.4.0 MIT git://github.com/zertosh/loose-envify.git
|
||||
lunr 0.7.2 MIT https://github.com/olivernn/lunr.js.git
|
||||
make-dir 3.1.0 MIT https://github.com/sindresorhus/make-dir.git
|
||||
matches-selector 0.0.1 MIT https://github.com/ForbesLindesay/matches-selector.git
|
||||
minimist 1.2.5 MIT git://github.com/substack/minimist.git
|
||||
ml-array-max 1.2.3 MIT git+https://github.com/mljs/array.git
|
||||
ml-array-min 1.2.2 MIT git+https://github.com/mljs/array.git
|
||||
ml-array-rescale 1.3.5 MIT git+https://github.com/mljs/array.git
|
||||
ml-matrix 6.8.0 MIT https://github.com/mljs/matrix.git
|
||||
moment 2.29.1 MIT https://github.com/moment/moment.git
|
||||
moment 2.24.0 MIT https://github.com/moment/moment.git
|
||||
moment-timezone 0.5.33 MIT https://github.com/moment/moment-timezone.git
|
||||
ms 2.1.2 MIT https://github.com/zeit/ms.git
|
||||
ms 2.0.0 MIT https://github.com/zeit/ms.git
|
||||
nanoid 3.1.23 MIT https://github.com/ai/nanoid.git
|
||||
nanopop 2.1.0 MIT https://github.com/Simonwep/nanopop.git
|
||||
node-releases 1.1.71 MIT git+https://github.com/chicoxyzzy/node-releases.git
|
||||
normalize-url 4.5.0 MIT https://github.com/sindresorhus/normalize-url.git
|
||||
object-assign 4.1.1 MIT https://github.com/sindresorhus/object-assign.git
|
||||
parent-module 1.0.1 MIT https://github.com/sindresorhus/parent-module.git
|
||||
parse-json 5.2.0 MIT https://github.com/sindresorhus/parse-json.git
|
||||
path-type 4.0.0 MIT https://github.com/sindresorhus/path-type.git
|
||||
pathfinding 0.4.18 MIT git://github.com/qiao/PathFinding.js.git
|
||||
performance-now 2.1.0 MIT git://github.com/braveg1rl/performance-now.git
|
||||
popper.js 1.16.1 MIT git+https://github.com/FezVrasta/popper.js.git
|
||||
postcss 8.2.15 MIT https://github.com/postcss/postcss.git
|
||||
postcss-calc 8.0.0 MIT https://github.com/postcss/postcss-calc.git
|
||||
postcss-colormin 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-convert-values 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-discard-comments 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-discard-duplicates 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-discard-empty 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-discard-overridden 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-merge-longhand 5.0.1 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-merge-rules 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-minify-font-values 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-minify-gradients 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-minify-params 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-minify-selectors 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-modules-local-by-default 4.0.0 MIT https://github.com/css-modules/postcss-modules-local-by-default.git
|
||||
postcss-normalize-charset 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-display-values 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-positions 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-repeat-style 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-string 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-timing-functions 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-unicode 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-url 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-normalize-whitespace 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-ordered-values 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-reduce-initial 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-reduce-transforms 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-selector-parser 6.0.6 MIT https://github.com/postcss/postcss-selector-parser.git
|
||||
postcss-selector-parser 3.1.2 MIT https://github.com/postcss/postcss-selector-parser.git
|
||||
postcss-svgo 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-unique-selectors 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
postcss-value-parser 4.1.0 MIT https://github.com/TrySound/postcss-value-parser.git
|
||||
punycode 2.1.1 MIT https://github.com/bestiejs/punycode.js.git
|
||||
raf 3.4.1 MIT git://github.com/chrisdickinson/raf.git
|
||||
react 17.0.2 MIT https://github.com/facebook/react.git
|
||||
react-dom 17.0.2 MIT https://github.com/facebook/react.git
|
||||
regenerator-runtime 0.11.1 MIT https://github.com/facebook/regenerator/tree/master/packages/regenerator-runtime
|
||||
repeating 2.0.1 MIT https://github.com/sindresorhus/repeating.git
|
||||
resolve-from 4.0.0 MIT https://github.com/sindresorhus/resolve-from.git
|
||||
rgb-regex 1.0.1 MIT https://github.com/regexps/rgb-regex.git
|
||||
rgba-regex 1.0.0 MIT https://github.com/johnotander/rgba-regex.git
|
||||
safe-buffer 5.1.2 MIT git://github.com/feross/safe-buffer.git
|
||||
scheduler 0.20.2 MIT https://github.com/facebook/react.git
|
||||
schema-utils 3.0.0 MIT https://github.com/webpack/schema-utils.git
|
||||
schema-utils 0.3.0 MIT git+https://github.com/webpack-contrib/schema-utils.git
|
||||
select2 4.0.13 MIT git://github.com/select2/select2.git
|
||||
shim-loader 1.0.1 MIT https://github.com/zinserjan/shim-loader
|
||||
simple-swizzle 0.2.2 MIT https://github.com/qix-/node-simple-swizzle.git
|
||||
slickgrid 2.3.16 MIT git+https://github.com/6pac/SlickGrid.git
|
||||
snapsvg-cjs 0.0.6 MIT git+https://github.com/geelen/Snap.svg-cjs.git
|
||||
source-list-map 1.1.2 MIT https://github.com/webpack/source-list-map.git
|
||||
split.js 1.6.4 MIT https://github.com/nathancahill/split
|
||||
stable 0.1.8 MIT https://github.com/Two-Screen/stable.git
|
||||
strip-ansi 3.0.1 MIT https://github.com/chalk/strip-ansi.git
|
||||
strip-comments 2.0.1 MIT https://github.com/jonschlinkert/strip-comments.git
|
||||
stylehacks 5.0.0 MIT https://github.com/cssnano/cssnano.git
|
||||
supports-color 5.5.0 MIT https://github.com/chalk/supports-color.git
|
||||
supports-color 7.2.0 MIT https://github.com/chalk/supports-color.git
|
||||
supports-color 2.0.0 MIT https://github.com/chalk/supports-color.git
|
||||
svgo 2.3.0 MIT git://github.com/svg/svgo.git
|
||||
tempusdominus-bootstrap-4 5.39.0 MIT https://github.com/tempusdominus/bootstrap-4.git
|
||||
tempusdominus-core 5.19.0 MIT https://github.com/tempusdominus/core.git
|
||||
timsort 0.3.0 MIT https://github.com/mziccard/node-timsort.git
|
||||
tippy.js 6.3.1 MIT git+https://github.com/atomiks/tippyjs.git
|
||||
to-fast-properties 2.0.0 MIT https://github.com/sindresorhus/to-fast-properties.git
|
||||
to-fast-properties 1.0.3 MIT https://github.com/sindresorhus/to-fast-properties.git
|
||||
trim-right 1.0.1 MIT https://github.com/sindresorhus/trim-right.git
|
||||
underscore 1.13.1 MIT git://github.com/jashkenas/underscore.git
|
||||
uniq 1.0.1 MIT git://github.com/mikolalysenko/uniq.git
|
||||
uniqs 2.0.0 MIT git://github.com/fgnass/uniqs.git
|
||||
util-deprecate 1.0.2 MIT git://github.com/TooTallNate/util-deprecate.git
|
||||
vendors 1.0.4 MIT https://github.com/wooorm/vendors.git
|
||||
webpack-sources 0.2.3 MIT git+https://github.com/webpack/webpack-sources.git
|
||||
wkx 0.5.0 MIT http://github.com/cschwarz/wkx.git
|
||||
@fortawesome/fontawesome-free 5.15.3 (CC-BY-4.0 AND OFL-1.1 AND MIT) https://github.com/FortAwesome/Font-Awesome
|
||||
@trysound/sax 0.1.1 ISC git://github.com/svg/sax.git
|
||||
boolbase 1.0.0 ISC https://github.com/fb55/boolbase
|
||||
css-declaration-sorter 6.0.0 ISC https://github.com/Siilwyn/css-declaration-sorter.git
|
||||
electron-to-chromium 1.3.727 ISC https://github.com/kilian/electron-to-chromium/
|
||||
icss-utils 5.1.0 ISC git+https://github.com/css-modules/icss-utils.git
|
||||
is-resolvable 1.1.0 ISC https://github.com/shinnn/is-resolvable.git
|
||||
lru-cache 6.0.0 ISC git://github.com/isaacs/node-lru-cache.git
|
||||
minimatch 3.0.4 ISC git://github.com/isaacs/minimatch.git
|
||||
postcss-modules-extract-imports 3.0.0 ISC https://github.com/css-modules/postcss-modules-extract-imports.git
|
||||
postcss-modules-scope 3.0.0 ISC https://github.com/css-modules/postcss-modules-scope.git
|
||||
postcss-modules-values 4.0.0 ISC git+https://github.com/css-modules/postcss-modules-values.git
|
||||
semver 7.3.5 ISC https://github.com/npm/node-semver
|
||||
semver 5.7.1 ISC https://github.com/npm/node-semver
|
||||
semver 6.3.0 ISC https://github.com/npm/node-semver
|
||||
yallist 4.0.0 ISC git+https://github.com/isaacs/yallist.git
|
||||
yaml 1.10.2 ISC https://github.com/eemeli/yaml.git
|
||||
bootstrap-datepicker 1.9.0 Apache-2.0 https://github.com/uxsolutions/bootstrap-datepicker.git
|
||||
eve 0.5.4 Apache-2.0 git@github.com:adobe-webplatform/eve.git
|
||||
paths-js 0.4.11 Apache-2.0 https://github.com/andreaferretti/paths-js.git
|
||||
snapsvg 0.5.1 Apache-2.0 git@github.com:adobe-webplatform/Snap.svg.git
|
||||
caniuse-lite 1.0.30001228 CC-BY-4.0 https://github.com/browserslist/caniuse-lite.git
|
||||
css-select 3.1.2 BSD-2-Clause git://github.com/fb55/css-select.git
|
||||
css-what 4.0.0 BSD-2-Clause https://github.com/fb55/css-what
|
||||
domelementtype 2.2.0 BSD-2-Clause git://github.com/fb55/domelementtype.git
|
||||
domhandler 4.2.0 BSD-2-Clause git://github.com/fb55/domhandler.git
|
||||
domutils 2.6.0 BSD-2-Clause git://github.com/fb55/domutils.git
|
||||
entities 2.2.0 BSD-2-Clause git://github.com/fb55/entities.git
|
||||
esutils 2.0.3 BSD-2-Clause http://github.com/estools/esutils.git
|
||||
leaflet 1.7.1 BSD-2-Clause git://github.com/Leaflet/Leaflet.git
|
||||
nth-check 2.0.0 BSD-2-Clause https://github.com/fb55/nth-check
|
||||
uri-js 4.4.1 BSD-2-Clause http://github.com/garycourt/uri-js
|
||||
FileSaver 0.10.0 UNKNOWN Unknown
|
||||
heap 0.2.5 UNKNOWN git://github.com/qiao/heap.js.git
|
||||
istanbul-lib-coverage 1.2.1 BSD-3-Clause git@github.com:istanbuljs/istanbuljs.git
|
||||
istanbul-lib-coverage 3.0.0 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
|
||||
istanbul-lib-instrument 1.10.2 BSD-3-Clause git@github.com:istanbuljs/istanbuljs.git
|
||||
istanbul-lib-instrument 4.0.3 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
|
||||
istanbul-lib-report 3.0.0 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
|
||||
istanbul-lib-source-maps 4.0.0 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
|
||||
istanbul-reports 3.0.2 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
|
||||
source-map 0.5.7 BSD-3-Clause http://github.com/mozilla/source-map.git
|
||||
source-map 0.6.1 BSD-3-Clause http://github.com/mozilla/source-map.git
|
||||
sprintf-js 1.1.2 BSD-3-Clause https://github.com/alexei/sprintf.js.git
|
||||
mdn-data 2.0.14 CC0-1.0 https://github.com/mdn/data.git
|
||||
mousetrap 1.6.5 Apache-2.0 WITH LLVM-exception git://github.com/ccampbell/mousetrap.git
|
||||
precond 0.2.3 MIT* https://github.com/MathieuTurcotte/node-precond.git
|
||||
webcabin-docker 2.2.4-dev MIT* Unknown
|
||||
tablesorter 2.31.3 (MIT OR GPL-2.0) git://github.com/Mottie/tablesorter.git
|
||||
|
||||
326 dependencies listed.
|
||||
|
||||
@@ -12,19 +12,22 @@
|
||||
# and clean up the web/ source code
|
||||
#########################################################################
|
||||
|
||||
FROM node:8-alpine AS app-builder
|
||||
FROM alpine:3.13 AS app-builder
|
||||
|
||||
RUN apk add --no-cache \
|
||||
autoconf \
|
||||
automake \
|
||||
bash \
|
||||
g++ \
|
||||
git \
|
||||
libc6-compat \
|
||||
libjpeg-turbo-dev \
|
||||
libpng-dev \
|
||||
libtool \
|
||||
make \
|
||||
nasm \
|
||||
git \
|
||||
nodejs \
|
||||
yarn \
|
||||
zlib-dev
|
||||
|
||||
# Create the /pgadmin4 directory and copy the source into it. Explicitly
|
||||
@@ -41,12 +44,8 @@ RUN rm -rf /pgadmin4/web/*.log \
|
||||
WORKDIR /pgadmin4/web
|
||||
|
||||
# Build the JS vendor code in the app-builder, and then remove the vendor source.
|
||||
RUN npm install && \
|
||||
npm audit fix && \
|
||||
rm -f yarn.lock && \
|
||||
yarn import && \
|
||||
yarn audit && \
|
||||
rm -f package-lock.json && \
|
||||
RUN export CPPFLAGS="-DPNG_ARM_NEON_OPT=0" && \
|
||||
yarn install && \
|
||||
yarn run bundle && \
|
||||
rm -rf node_modules \
|
||||
yarn.lock \
|
||||
@@ -57,28 +56,39 @@ RUN npm install && \
|
||||
karma.conf.js \
|
||||
./pgadmin/static/js/generated/.cache
|
||||
|
||||
#########################################################################
|
||||
# Next, create the base environment for Python
|
||||
#########################################################################
|
||||
|
||||
FROM alpine:3.13 as env-builder
|
||||
|
||||
# Install dependencies
|
||||
COPY requirements.txt /
|
||||
RUN apk add --no-cache \
|
||||
make \
|
||||
python3 \
|
||||
py3-pip && \
|
||||
apk add --no-cache --virtual build-deps \
|
||||
build-base \
|
||||
openssl-dev \
|
||||
libffi-dev \
|
||||
postgresql-dev \
|
||||
krb5-dev \
|
||||
rust \
|
||||
cargo \
|
||||
python3-dev && \
|
||||
python3 -m venv --system-site-packages --without-pip /venv && \
|
||||
/venv/bin/python3 -m pip install --no-cache-dir -r requirements.txt && \
|
||||
apk del --no-cache build-deps
|
||||
|
||||
#########################################################################
|
||||
# Now, create a documentation build container for the Sphinx docs
|
||||
#########################################################################
|
||||
|
||||
FROM python:3.7-alpine3.10 as docs-builder
|
||||
FROM env-builder as docs-builder
|
||||
|
||||
# Install only dependencies absolutely required for documentation building
|
||||
RUN apk add --no-cache \
|
||||
make \
|
||||
build-base \
|
||||
openssl-dev \
|
||||
libffi-dev && \
|
||||
pip install --no-cache-dir \
|
||||
sphinx \
|
||||
flask_security \
|
||||
flask_paranoid \
|
||||
python-dateutil \
|
||||
flask_sqlalchemy \
|
||||
flask_gravatar \
|
||||
flask_migrate \
|
||||
simplejson \
|
||||
cryptography
|
||||
# Install Sphinx
|
||||
RUN /venv/bin/python3 -m pip install --no-cache-dir sphinx
|
||||
|
||||
# Copy the docs from the local tree. Explicitly remove any existing builds that
|
||||
# may be present
|
||||
@@ -87,32 +97,26 @@ COPY web /pgadmin4/web
|
||||
RUN rm -rf /pgadmin4/docs/en_US/_build
|
||||
|
||||
# Build the docs
|
||||
RUN LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 make -C /pgadmin4/docs/en_US -f Makefile.sphinx html
|
||||
RUN LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 /venv/bin/sphinx-build /pgadmin4/docs/en_US /pgadmin4/docs/en_US/_build/html
|
||||
|
||||
# Cleanup unwanted files
|
||||
RUN rm -rf /pgadmin4/docs/en_US/_build/html/.doctrees
|
||||
RUN rm -rf /pgadmin4/docs/en_US/_build/html/_sources
|
||||
RUN rm -rf /pgadmin4/docs/en_US/_build/html/_static/*.png
|
||||
|
||||
#########################################################################
|
||||
# Create additional builders to get all of the PostgreSQL utilities
|
||||
#########################################################################
|
||||
|
||||
FROM postgres:9.4-alpine as pg94-builder
|
||||
FROM postgres:9.5-alpine as pg95-builder
|
||||
FROM postgres:9.6-alpine as pg96-builder
|
||||
FROM postgres:10-alpine as pg10-builder
|
||||
FROM postgres:11-alpine as pg11-builder
|
||||
FROM postgres:12-alpine as pg12-builder
|
||||
FROM postgres:13-alpine as pg13-builder
|
||||
|
||||
FROM alpine:3.10 as tool-builder
|
||||
FROM alpine:3.13 as tool-builder
|
||||
|
||||
# Copy the PG binaries
|
||||
COPY --from=pg94-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-9.4/
|
||||
COPY --from=pg94-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-9.4/
|
||||
COPY --from=pg94-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-9.4/
|
||||
COPY --from=pg94-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-9.4/
|
||||
|
||||
COPY --from=pg95-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-9.5/
|
||||
COPY --from=pg95-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-9.5/
|
||||
COPY --from=pg95-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-9.5/
|
||||
COPY --from=pg95-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-9.5/
|
||||
|
||||
COPY --from=pg96-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-9.6/
|
||||
COPY --from=pg96-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-9.6/
|
||||
COPY --from=pg96-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-9.6/
|
||||
@@ -133,12 +137,21 @@ COPY --from=pg12-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-12/
|
||||
COPY --from=pg12-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-12/
|
||||
COPY --from=pg12-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-12/
|
||||
|
||||
COPY --from=pg13-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-13/
|
||||
COPY --from=pg13-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-13/
|
||||
COPY --from=pg13-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-13/
|
||||
COPY --from=pg13-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-13/
|
||||
|
||||
#########################################################################
|
||||
# Assemble everything into the final container.
|
||||
#########################################################################
|
||||
|
||||
FROM python:3.7-alpine3.10
|
||||
FROM alpine:3.13
|
||||
|
||||
# Copy in the Python packages
|
||||
COPY --from=env-builder /venv /venv
|
||||
|
||||
# Copy in the tools
|
||||
COPY --from=tool-builder /usr/local/pgsql /usr/local/
|
||||
|
||||
WORKDIR /pgadmin4
|
||||
@@ -147,31 +160,37 @@ ENV PYTHONPATH=/pgadmin4
|
||||
# Copy in the code and docs
|
||||
COPY --from=app-builder /pgadmin4/web /pgadmin4
|
||||
COPY --from=docs-builder /pgadmin4/docs/en_US/_build/html/ /pgadmin4/docs
|
||||
COPY requirements.txt /pgadmin4/requirements.txt
|
||||
|
||||
# Install build-dependencies, build & install C extensions and purge deps in
|
||||
# one RUN step
|
||||
RUN apk add --no-cache --virtual \
|
||||
build-deps \
|
||||
build-base \
|
||||
postgresql-dev \
|
||||
libffi-dev \
|
||||
linux-headers && \
|
||||
apk add \
|
||||
postfix \
|
||||
postgresql-client \
|
||||
postgresql-libs && \
|
||||
pip install --upgrade pip && \
|
||||
pip install --no-cache-dir -r requirements.txt && \
|
||||
pip install --no-cache-dir gunicorn && \
|
||||
apk del --no-cache build-deps
|
||||
|
||||
# Copy the runner script
|
||||
COPY pkg/docker/run_pgadmin.py /pgadmin4
|
||||
COPY pkg/docker/gunicorn_config.py /pgadmin4
|
||||
COPY pkg/docker/entrypoint.sh /entrypoint.sh
|
||||
|
||||
# Precompile and optimize python code to save time and space on startup
|
||||
RUN python -O -m compileall -x node_modules /pgadmin4
|
||||
# License files
|
||||
COPY LICENSE /pgadmin4/LICENSE
|
||||
COPY DEPENDENCIES /pgadmin4/DEPENDENCIES
|
||||
|
||||
# Install runtime dependencies and configure everything in one RUN step
|
||||
RUN apk add \
|
||||
python3 \
|
||||
py3-pip \
|
||||
postfix \
|
||||
postgresql-libs \
|
||||
krb5-libs \
|
||||
shadow \
|
||||
sudo \
|
||||
libedit \
|
||||
libcap && \
|
||||
/venv/bin/python3 -m pip install --no-cache-dir gunicorn && \
|
||||
find / -type d -name '__pycache__' -exec rm -rf {} + && \
|
||||
groupadd -g 5050 pgadmin && \
|
||||
useradd -r -u 5050 -g pgadmin pgadmin && \
|
||||
mkdir -p /var/lib/pgadmin && \
|
||||
chown pgadmin:pgadmin /var/lib/pgadmin && \
|
||||
touch /pgadmin4/config_distro.py && \
|
||||
chown pgadmin:pgadmin /pgadmin4/config_distro.py && \
|
||||
setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/python3.8 && \
|
||||
echo "pgadmin ALL = NOPASSWD: /usr/sbin/postfix start" > /etc/sudoers.d/postfix
|
||||
|
||||
USER pgadmin
|
||||
|
||||
# Finish up
|
||||
VOLUME /var/lib/pgadmin
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
pgAdmin 4
|
||||
|
||||
Copyright (C) 2013 - 2019, The pgAdmin Development Team
|
||||
Copyright (C) 2013 - 2021, The pgAdmin Development Team
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose, without fee, and without a written agreement is
|
||||
|
||||
@@ -2,32 +2,30 @@
|
||||
SETLOCAL
|
||||
|
||||
SET WD=%CD%
|
||||
SET "PGBUILDPATH=%WD%\win-build"
|
||||
SET "BUILDROOT=%WD%\win-build"
|
||||
SET "TMPDIR=%WD%\win-temp"
|
||||
SET "DISTROOT=%WD%\dist"
|
||||
|
||||
SET CMDOPTION=""
|
||||
IF "%1" == "clean" SET CMDOPTION="VALID"
|
||||
IF "%1" == "x86" SET CMDOPTION="VALID"
|
||||
SET CMDOPTIONS=""
|
||||
IF "%1" == "clean" SET CMDOPTIONS="VALID"
|
||||
IF "%1" == "" SET CMDOPTIONS="VALID"
|
||||
|
||||
IF NOT %CMDOPTION%=="VALID" (
|
||||
IF NOT %CMDOPTIONS%=="VALID" (
|
||||
GOTO USAGE
|
||||
)
|
||||
|
||||
SET ARCHITECTURE=%1
|
||||
|
||||
IF "%ARCHITECTURE%"=="clean" (
|
||||
IF "%1" == "clean" (
|
||||
CALL :CLEAN
|
||||
EXIT /B %ERRORLEVEL%
|
||||
)
|
||||
|
||||
|
||||
REM Main build sequence
|
||||
CALL :SET_ENVIRONMENT
|
||||
CALL :VALIDATE_ENVIRONMENT || EXIT /B 1
|
||||
CALL :CLEAN || EXIT /B 1
|
||||
CALL :CREATE_VIRTUAL_ENV || EXIT /B 1
|
||||
CALL :CREATE_RUNTIME_ENV || EXIT /B 1
|
||||
CALL :CREATE_PYTHON_ENV || EXIT /B 1
|
||||
CALL :CLEANUP_ENV || EXIT /B 1
|
||||
CALL :CREATE_RUNTIME_ENV || EXIT /B 1
|
||||
CALL :CREATE_INSTALLER || EXIT /B 1
|
||||
CALL :SIGN_INSTALLER || EXIT /B 1
|
||||
|
||||
@@ -37,9 +35,12 @@ REM Main build sequence Ends
|
||||
|
||||
:CLEAN
|
||||
ECHO Removing build directory...
|
||||
IF EXIST "%PGBUILDPATH%" RD "%PGBUILDPATH%" /S /Q > nul || EXIT /B 1
|
||||
IF EXIST "%BUILDROOT%" RD "%BUILDROOT%" /S /Q > nul || EXIT /B 1
|
||||
|
||||
ECHO Removing temp build directory...
|
||||
ECHO Removing tmp directory...
|
||||
IF EXIST "%TMPDIR%" RD "%TMPDIR%" /S /Q > nul || EXIT /B 1
|
||||
|
||||
ECHO Removing installer build directory...
|
||||
IF EXIST "%WD%\pkg\win32\Output" rd "%WD%\pkg\win32\Output" /S /Q > nul || EXIT /B 1
|
||||
|
||||
ECHO Removing installer configuration script...
|
||||
@@ -50,73 +51,56 @@ REM Main build sequence Ends
|
||||
|
||||
:SET_ENVIRONMENT
|
||||
ECHO Configuring the environment...
|
||||
IF "%PYTHON_HOME%" == "" SET "PYTHON_HOME=C:\Python27"
|
||||
IF "%PYTHON_DLL%" == "" SET "PYTHON_DLL=C:\Windows\SysWOW64\python27.dll"
|
||||
IF "%QTDIR%" == "" SET "QTDIR=C:\Qt\5.9.1\mingw53_32"
|
||||
IF "%MAKE%" == "" SET "MAKE=mingw32-make.exe"
|
||||
IF "%PGDIR%" == "" SET "PGDIR=C:\Program Files (x86)\PostgreSQL\10"
|
||||
IF "%INNOTOOL%" == "" SET "INNOTOOL=C:\Program Files (x86)\Inno Setup 5"
|
||||
IF "%VCREDIST%" == "" SET "VCREDIST=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\1033\vcredist_x86.exe"
|
||||
IF "%SIGNTOOL%" == "" SET "SIGNTOOL=C:\Program Files\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe"
|
||||
IF "%PGADMIN_PYTHON_DIR%" == "" SET "PGADMIN_PYTHON_DIR=C:\Python38"
|
||||
IF "%PGADMIN_KRB5_DIR%" == "" SET "PGADMIN_KRB5_DIR=C:\Program Files\MIT\Kerberos"
|
||||
IF "%PGADMIN_POSTGRES_DIR%" == "" SET "PGADMIN_POSTGRES_DIR=C:\Program Files (x86)\PostgreSQL\12"
|
||||
IF "%PGADMIN_INNOTOOL_DIR%" == "" SET "PGADMIN_INNOTOOL_DIR=C:\Program Files (x86)\Inno Setup 6"
|
||||
IF "%PGADMIN_VCREDIST_DIR%" == "" SET "PGADMIN_VCREDIST_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Redist\MSVC\14.16.27012"
|
||||
IF "%PGADMIN_SIGNTOOL_DIR%" == "" SET "PGADMIN_SIGNTOOL_DIR=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64"
|
||||
|
||||
REM Set VCREDISTNAME (the filename)
|
||||
for /f "delims=" %%i in ("%VCREDIST%") do set "VCREDISTNAME=%%~nxi"
|
||||
REM Set REDIST_NAME (the filename)
|
||||
set "VCREDIST_FILE=vcredist_x64.exe"
|
||||
|
||||
REM Set additional variables we need
|
||||
SET "QMAKE=%QTDIR%\bin\qmake.exe"
|
||||
FOR /F "tokens=4,5 delims=. " %%a IN ('%QMAKE% -v ^| findstr /B /C:"Using Qt version "') DO SET QT_VERSION=%%a.%%b
|
||||
|
||||
SET "VIRTUALENV=venv"
|
||||
SET "TARGET_DIR=%WD%\dist"
|
||||
|
||||
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_RELEASE =" %WD%\web\config.py') DO SET APP_MAJOR=%%a
|
||||
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_REVISION =" %WD%\web\config.py') DO SET APP_MINOR=%%a
|
||||
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_SUFFIX =" %WD%\web\config.py') DO SET APP_VERSION_SUFFIX=%%a
|
||||
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_RELEASE =" %WD%\web\config.py') DO SET APP_MAJOR=%%a
|
||||
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_REVISION =" %WD%\web\config.py') DO SET APP_MINOR=%%a
|
||||
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_SUFFIX =" %WD%\web\config.py') DO SET APP_VERSION_SUFFIX=%%a
|
||||
REM remove single quote from the string
|
||||
SET APP_VERSION_SUFFIX=%APP_VERSION_SUFFIX:'=%
|
||||
SET APP_NAME=""
|
||||
FOR /F "tokens=2* DELims='" %%a IN ('findstr /C:"APP_NAME =" web\config.py') DO SET APP_NAME=%%a
|
||||
FOR /f "tokens=1 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "print('%APP_NAME%'.lower().replace(' ', ''))"') DO SET APP_SHORTNAME=%%G
|
||||
FOR /F "tokens=2* DELims='" %%a IN ('findstr /C:"APP_NAME =" web\config.py') DO SET APP_NAME=%%a
|
||||
FOR /f "tokens=1 DELims=." %%G IN ('%PGADMIN_PYTHON_DIR%/python.exe -c "print('%APP_NAME%'.lower().replace(' ', ''))"') DO SET APP_SHORTNAME=%%G
|
||||
SET APP_VERSION=%APP_MAJOR%.%APP_MINOR%
|
||||
SET INSTALLERNAME=%APP_SHORTNAME%-%APP_MAJOR%.%APP_MINOR%-%APP_VERSION_SUFFIX%-%ARCHITECTURE%.exe
|
||||
IF "%APP_VERSION_SUFFIX%" == "" SET INSTALLERNAME=%APP_SHORTNAME%-%APP_MAJOR%.%APP_MINOR%-%ARCHITECTURE%.exe
|
||||
SET INSTALLERNAME=%APP_SHORTNAME%-%APP_MAJOR%.%APP_MINOR%-%APP_VERSION_SUFFIX%-x64.exe
|
||||
IF "%APP_VERSION_SUFFIX%" == "" SET INSTALLERNAME=%APP_SHORTNAME%-%APP_MAJOR%.%APP_MINOR%-x64.exe
|
||||
|
||||
REM get Python version for the runtime build ex. 2.7.1 will be 27
|
||||
FOR /f "tokens=1 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "import sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_MAJOR=%%G
|
||||
FOR /f "tokens=2 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "import sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_MINOR=%%G
|
||||
SET "PYTHON_VERSION=%PYTHON_MAJOR%%PYTHON_MINOR%"
|
||||
REM get Python version for the runtime build ex. 3.9.2 will be 39
|
||||
FOR /f "tokens=1 DELims=." %%G IN ('%PGADMIN_PYTHON_DIR%/python.exe -c "import sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_MAJOR=%%G
|
||||
FOR /f "tokens=2 DELims=." %%G IN ('%PGADMIN_PYTHON_DIR%/python.exe -c "import sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_MINOR=%%G
|
||||
FOR /f "tokens=3 DELims=." %%G IN ('%PGADMIN_PYTHON_DIR%/python.exe -c "import sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_REVISION=%%G
|
||||
|
||||
EXIT /B 0
|
||||
|
||||
|
||||
:VALIDATE_ENVIRONMENT
|
||||
ECHO ****************************************************************
|
||||
ECHO S U M M A R Y
|
||||
ECHO * Build summary
|
||||
ECHO ****************************************************************
|
||||
ECHO Build path: %PGBUILDPATH%
|
||||
ECHO Output directory: %TARGET_DIR%
|
||||
ECHO Build path: %BUILDROOT%
|
||||
ECHO Output directory: %DISTROOT%
|
||||
ECHO Installer name: %INSTALLERNAME%
|
||||
ECHO.
|
||||
ECHO Python home: %PYTHON_HOME%
|
||||
ECHO Python DLL: %PYTHON_DLL%
|
||||
ECHO Python version: %PYTHON_VERSION%
|
||||
ECHO Python major version: %PYTHON_MAJOR%
|
||||
ECHO Python minor version: %PYTHON_MINOR%
|
||||
ECHO Python directory: %PGADMIN_PYTHON_DIR%
|
||||
ECHO Python version: %PYTHON_MAJOR%.%PYTHON_MINOR%.%PYTHON_REVISION%
|
||||
ECHO.
|
||||
ECHO Qt home: %QTDIR%
|
||||
ECHO qmake executable: %QMAKE%
|
||||
ECHO Qt version: %QT_VERSION%
|
||||
ECHO KRB5 directory: %PGADMIN_KRB5_DIR%
|
||||
ECHO PostgreSQL directory: %PGADMIN_POSTGRES_DIR%
|
||||
ECHO.
|
||||
ECHO PostgreSQL home: %PGDIR%
|
||||
ECHO VC++ redist directory: %PGADMIN_VCREDIST_DIR%
|
||||
ECHO VC++ redist file: %VCREDIST_FILE%
|
||||
ECHO InnoTool directory: %PGADMIN_INNOTOOL_DIR%
|
||||
ECHO signtool directory: %PGADMIN_SIGNTOOL_DIR%
|
||||
ECHO.
|
||||
ECHO VC++ redistributable: %VCREDIST%
|
||||
ECHO VC++ redistributable file: %VCREDISTNAME%
|
||||
ECHO.
|
||||
ECHO innotool executable: %INNOTOOL%
|
||||
ECHO signtool executable: %SIGNTOOL%
|
||||
ECHO.
|
||||
ECHO App major version: %APP_MAJOR%
|
||||
ECHO App minor version: %APP_MINOR%
|
||||
ECHO App version: %APP_VERSION%
|
||||
ECHO App version suffix: %APP_VERSION_SUFFIX%
|
||||
ECHO App short name: %APP_SHORTNAME%
|
||||
@@ -124,235 +108,236 @@ REM Main build sequence Ends
|
||||
ECHO ****************************************************************
|
||||
|
||||
ECHO Checking the environment...
|
||||
IF NOT EXIST "%INNOTOOL%" (
|
||||
ECHO !INNOTOOL! does not exist
|
||||
ECHO Please install Innotool and set the INNOTOOL environment variable.
|
||||
IF NOT EXIST "%PGADMIN_INNOTOOL_DIR%" (
|
||||
ECHO !PGADMIN_INNOTOOL_DIR! does not exist
|
||||
ECHO Please install InnoTool and set the PGADMIN_INNOTOOL_DIR environment variable.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%VCREDIST%" (
|
||||
ECHO !VCREDIST! does not exist
|
||||
ECHO Please install Microsoft Visual studio and set the VCREDIST environment variable.
|
||||
IF NOT EXIST "%PGADMIN_VCREDIST_DIR%" (
|
||||
ECHO !PGADMIN_VCREDIST_DIR! does not exist
|
||||
ECHO Please install Microsoft Visual studio and set the PGADMIN_VCREDIST_DIR environment variable.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%QTDIR%" (
|
||||
ECHO !QTDIR! does not exist.
|
||||
ECHO Please install Qt and set the QTDIR environment variable.
|
||||
IF NOT EXIST "%PGADMIN_KRB5_DIR%" (
|
||||
ECHO !PGADMIN_KRB5_DIR! does not exist.
|
||||
ECHO Please install MIT Kerberos for Windows and set the PGADMIN_KRB5_DIR environment variable.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%QMAKE%" (
|
||||
ECHO !QMAKE! does not exist.
|
||||
ECHO Please install Qt and set the QTDIR environment variable.
|
||||
IF NOT EXIST "%PGADMIN_PYTHON_DIR%" (
|
||||
ECHO !PGADMIN_PYTHON_DIR! does not exist.
|
||||
ECHO Please install Python and set the PGADMIN_PYTHON_DIR environment variable.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%PYTHON_HOME%" (
|
||||
ECHO !PYTHON_HOME! does not exist.
|
||||
ECHO Please install Python and set the PYTHON_HOME environment variable.
|
||||
IF NOT EXIST "%PGADMIN_POSTGRES_DIR%" (
|
||||
ECHO !PGADMIN_POSTGRES_DIR! does not exist.
|
||||
ECHO Please install PostgreSQL and set the PGADMIN_POSTGRES_DIR environment variable.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%PYTHON_DLL%" (
|
||||
ECHO !PYTHON_DLL! does not exist.
|
||||
ECHO Please install Python and set the PYTHON_DLL environment variable.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%PGDIR%" (
|
||||
ECHO !PGDIR! does not exist.
|
||||
ECHO Please install PostgreSQL and set the PGDIR environment variable.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%PYTHON_HOME%\Scripts\virtualenv.exe" (
|
||||
ECHO !PYTHON_HOME!\Scripts\virtualenv.exe does not exist.
|
||||
IF NOT EXIST "%PGADMIN_PYTHON_DIR%\Scripts\virtualenv.exe" (
|
||||
ECHO !PGADMIN_PYTHON_DIR!\Scripts\virtualenv.exe does not exist.
|
||||
ECHO Please install the virtualenv package in Python.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
SET "PATH=%PGDIR%\bin;%PATH%"
|
||||
SET "PATH=%PGADMIN_POSTGRES_DIR%\bin;%PATH%"
|
||||
|
||||
EXIT /B 0
|
||||
|
||||
|
||||
:CREATE_VIRTUAL_ENV
|
||||
ECHO Creating virtual environment...
|
||||
IF NOT EXIST "%PGBUILDPATH%" MKDIR "%PGBUILDPATH%"
|
||||
|
||||
CD "%PGBUILDPATH%"
|
||||
"%PYTHON_HOME%\Scripts\virtualenv.exe" "%VIRTUALENV%"
|
||||
IF NOT EXIST "%TMPDIR%" MKDIR "%TMPDIR%"
|
||||
|
||||
XCOPY /S /I /E /H /Y "%PYTHON_HOME%\DLLs" "%PGBUILDPATH%\%VIRTUALENV%\DLLs" > nul || EXIT /B 1
|
||||
XCOPY /S /I /E /H /Y "%PYTHON_HOME%\Lib" "%PGBUILDPATH%\%VIRTUALENV%\Lib" > nul || EXIT /B 1
|
||||
CD "%TMPDIR%"
|
||||
|
||||
ECHO Activating virtual environment - %PGBUILDPATH%\%VIRTUALENV%...
|
||||
CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\activate" || EXIT /B 1
|
||||
REM Note that we must use virtualenv.exe here, as the venv module doesn't allow python.exe to relocate.
|
||||
"%PGADMIN_PYTHON_DIR%\Scripts\virtualenv.exe" venv
|
||||
|
||||
XCOPY /S /I /E /H /Y "%PGADMIN_PYTHON_DIR%\DLLs" "%TMPDIR%\venv\DLLs" > nul || EXIT /B 1
|
||||
XCOPY /S /I /E /H /Y "%PGADMIN_PYTHON_DIR%\Lib" "%TMPDIR%\venv\Lib" > nul || EXIT /B 1
|
||||
|
||||
ECHO Activating virtual environment - %TMPDIR%\venv...
|
||||
CALL "%TMPDIR%\venv\Scripts\activate" || EXIT /B 1
|
||||
|
||||
ECHO Installing dependencies...
|
||||
CALL pip install -r "%WD%\requirements.txt" || EXIT /B 1
|
||||
CALL pip install sphinx || EXIT /B 1
|
||||
|
||||
REM If we're using VC++, and this is Python 3.6+, we need to remove the hack
|
||||
REM above or it will break qmake. Sigh.
|
||||
IF "%MAKE%" == "nmake" (
|
||||
IF %PYTHON_VERSION% GEQ 36 SET CL=
|
||||
)
|
||||
CALL python -m pip install --upgrade pip || EXIT /B 1
|
||||
CALL pip install --only-binary=cryptography -r "%WD%\requirements.txt" || EXIT /B 1
|
||||
|
||||
CD %WD%
|
||||
EXIT /B 0
|
||||
|
||||
|
||||
:CREATE_PYTHON_ENV
|
||||
ECHO Staging Python...
|
||||
MKDIR "%BUILDROOT%\python\Lib" || EXIT /B 1
|
||||
|
||||
ECHO Downloading embedded Python...
|
||||
REM Get the python embeddable and extract it to %BUILDROOT%\python
|
||||
CD "%TMPDIR%
|
||||
%PGADMIN_PYTHON_DIR%\python -c "import sys; from urllib.request import urlretrieve; urlretrieve('https://www.python.org/ftp/python/' + sys.version.split(' ')[0] + '/python-' + sys.version.split(' ')[0] + '-embed-amd64.zip', 'python-embedded.zip')" || EXIT /B 1
|
||||
%PGADMIN_PYTHON_DIR%\python -c "import zipfile; z = zipfile.ZipFile('python-embedded.zip', 'r'); z.extractall('../win-build/python/')" || EXIT /B 1
|
||||
|
||||
ECHO Copying site-packages...
|
||||
XCOPY /S /I /E /H /Y "%TMPDIR%\venv\Lib\site-packages" "%BUILDROOT%\python\Lib\site-packages" > nul || EXIT /B 1
|
||||
|
||||
REM NOTE: There is intentionally no space after "site" in the line below, to prevent Python barfing if there's one in the file
|
||||
ECHO import site>> "%BUILDROOT%\python\python%PYTHON_MAJOR%%PYTHON_MINOR%._pth"
|
||||
|
||||
ECHO Staging Kerberos components...
|
||||
COPY "%PGADMIN_KRB5_DIR%\bin\kinit.exe" "%BUILDROOT%\python" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_KRB5_DIR%\bin\krb5_64.dll" "%BUILDROOT%\python" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_KRB5_DIR%\bin\comerr64.dll" "%BUILDROOT%\python" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_KRB5_DIR%\bin\k5sprt64.dll" "%BUILDROOT%\python" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_KRB5_DIR%\bin\gssapi64.dll" "%BUILDROOT%\python" > nul || EXIT /B 1
|
||||
|
||||
ECHO Cleaning up unnecessary .pyc and .pyo files...
|
||||
FOR /R "%BUILDROOT%\python" %%f in (*.pyc *.pyo) do DEL /q "%%f" 1> nul 2>&1
|
||||
ECHO Removing tests...
|
||||
FOR /R "%BUILDROOT%\python\Lib" %%f in (test tests) do RD /Q /S "%%f" 1> nul 2>&1
|
||||
|
||||
EXIT /B 0
|
||||
|
||||
|
||||
:CREATE_RUNTIME_ENV
|
||||
MKDIR "%PGBUILDPATH%\runtime"
|
||||
|
||||
CD "%WD%\web"
|
||||
|
||||
ECHO Installing javascript dependencies...
|
||||
CALL yarn install || EXIT /B 1
|
||||
|
||||
ECHO Bundling javascript...
|
||||
CALL yarn run bundle || EXIT /B 1
|
||||
IF NOT EXIST "%BUILDROOT%" MKDIR "%BUILDROOT%"
|
||||
MKDIR "%BUILDROOT%\runtime"
|
||||
|
||||
ECHO Removing webpack caches...
|
||||
RD /Q /S "%WD%\web\pgadmin\static\js\generated\.cache" 1> nul 2>&1
|
||||
|
||||
ECHO Copying web directory...
|
||||
XCOPY /S /I /E /H /Y "%WD%\web" "%PGBUILDPATH%\web" > nul || EXIT /B 1
|
||||
XCOPY /S /I /E /H /Y "%WD%\web" "%BUILDROOT%\web" > nul || EXIT /B 1
|
||||
|
||||
ECHO Installing javascript dependencies...
|
||||
CD "%BUILDROOT%\web"
|
||||
CALL yarn install || EXIT /B 1
|
||||
|
||||
ECHO Bundling javascript...
|
||||
CALL yarn run bundle || EXIT /B 1
|
||||
|
||||
ECHO Cleaning up unnecessary .pyc and .pyo files...
|
||||
FOR /R "%PGBUILDPATH%\web" %%f in (*.pyc *.pyo) do DEL /q "%%f" 1> nul 2>&1
|
||||
FOR /R "%BUILDROOT%\web" %%f in (*.pyc *.pyo) do DEL /q "%%f" 1> nul 2>&1
|
||||
ECHO Removing tests, Python caches and node modules...
|
||||
FOR /R "%PGBUILDPATH%\web" %%f in (tests feature_tests __pycache__ node_modules) do RD /Q /S "%%f" 1> nul 2>&1
|
||||
FOR /R "%BUILDROOT%\web" %%f in (tests feature_tests __pycache__ node_modules) do RD /Q /S "%%f" 1> nul 2>&1
|
||||
ECHO Removing the test framework...
|
||||
RD /Q /S "%PGBUILDPATH%\web\regression" 1> nul 2>&1
|
||||
RD /Q /S "%BUILDROOT%\web\regression" 1> nul 2>&1
|
||||
ECHO Removing tools...
|
||||
RD /Q /S "%PGBUILDPATH%\web\tools" 1> nul 2>&1
|
||||
RD /Q /S "%BUILDROOT%\web\tools" 1> nul 2>&1
|
||||
ECHO Removing any existing configurations...
|
||||
DEL /q "%PGBUILDPATH%\web\pgadmin4.db" 1> nul 2>&1
|
||||
DEL /q "%PGBUILDPATH%\web\config_local.py" 1> nul 2>&1
|
||||
|
||||
DEL /q "%BUILDROOT%\web\pgadmin4.db" 1> nul 2>&1
|
||||
DEL /q "%BUILDROOT%\web\config_local.py" 1> nul 2>&1
|
||||
|
||||
ECHO Staging license files...
|
||||
COPY "%WD%\LICENSE" "%BUILDROOT%\" > nul || EXIT /B 1
|
||||
COPY "%WD%\DEPENDENCIES" "%BUILDROOT%\" > nul || EXIT /B 1
|
||||
|
||||
ECHO Creating config_distro.py
|
||||
ECHO SERVER_MODE = False > "%PGBUILDPATH%\web\config_distro.py"
|
||||
ECHO HELP_PATH = '../../../docs/en_US/html/' >> "%PGBUILDPATH%\web\config_distro.py"
|
||||
ECHO DEFAULT_BINARY_PATHS = { >> "%PGBUILDPATH%\web\config_distro.py"
|
||||
ECHO 'pg': '$DIR/../runtime', >> "%PGBUILDPATH%\web\config_distro.py"
|
||||
ECHO 'ppas': '' >> "%PGBUILDPATH%\web\config_distro.py"
|
||||
ECHO } >> "%PGBUILDPATH%\web\config_distro.py"
|
||||
ECHO SERVER_MODE = False > "%BUILDROOT%\web\config_distro.py"
|
||||
ECHO HELP_PATH = '../../../docs/en_US/html/' >> "%BUILDROOT%\web\config_distro.py"
|
||||
ECHO DEFAULT_BINARY_PATHS = { >> "%BUILDROOT%\web\config_distro.py"
|
||||
ECHO 'pg': '$DIR/../runtime', >> "%BUILDROOT%\web\config_distro.py"
|
||||
ECHO 'ppas': '' >> "%BUILDROOT%\web\config_distro.py"
|
||||
ECHO } >> "%BUILDROOT%\web\config_distro.py"
|
||||
|
||||
ECHO Building docs...
|
||||
MKDIR "%PGBUILDPATH%\docs\en_US\html"
|
||||
CALL pip install sphinx || EXIT /B 1
|
||||
MKDIR "%BUILDROOT%\docs\en_US\html"
|
||||
CD "%WD%\docs\en_US"
|
||||
CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\python.exe" build_code_snippet.py || EXIT /B 1
|
||||
CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\sphinx-build.exe" "%WD%\docs\en_US" "%PGBUILDPATH%\docs\en_US\html" || EXIT /B 1
|
||||
CALL "%TMPDIR%\venv\Scripts\python.exe" build_code_snippet.py || EXIT /B 1
|
||||
CALL "%TMPDIR%\venv\Scripts\sphinx-build.exe" "%WD%\docs\en_US" "%BUILDROOT%\docs\en_US\html" || EXIT /B 1
|
||||
|
||||
ECHO Removing Sphinx
|
||||
CALL pip uninstall -y sphinx Pygments alabaster colorama docutils imagesize requests snowballstemmer
|
||||
REM Remove unnecessary doc files
|
||||
DEL /q "%BUILDROOT%\docs\en_US\html\_static\*.png" 1> nul 2>&1
|
||||
RD /Q /S "%BUILDROOT%\docs\en_US\html\_sources" 1> nul 2>&1
|
||||
|
||||
ECHO Assembling runtime environment...
|
||||
CD "%WD%\runtime"
|
||||
ECHO Staging runtime components...
|
||||
XCOPY /S /I /E /H /Y "%WD%\runtime\assets" "%BUILDROOT%\runtime\assets" > nul || EXIT /B 1
|
||||
XCOPY /S /I /E /H /Y "%WD%\runtime\src" "%BUILDROOT%\runtime\src" > nul || EXIT /B 1
|
||||
|
||||
ECHO Running qmake...
|
||||
CALL "%QMAKE%" || EXIT /B 1
|
||||
COPY "%WD%\runtime\package.json" "%BUILDROOT%\runtime\" > nul || EXIT /B 1
|
||||
CD "%BUILDROOT%\runtime\"
|
||||
CALL yarn install --production=true || EXIT /B 1
|
||||
|
||||
ECHO Cleaning the build directory...
|
||||
CALL %MAKE% clean || EXIT /B 1
|
||||
ECHO Downloading NWjs to %TMPDIR%...
|
||||
REM Get a fresh copy of nwjs.
|
||||
REM NOTE: The nw download servers seem to be very unreliable, so at the moment we're using wget which retries
|
||||
|
||||
ECHO Running make...
|
||||
CALL %MAKE% || EXIT /B 1
|
||||
REM YARN
|
||||
REM CALL yarn --cwd "%TMPDIR%" add nw || EXIT /B
|
||||
REM YARN END
|
||||
|
||||
ECHO Staging pgAdmin4.exe...
|
||||
COPY "%WD%\runtime\release\pgAdmin4.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
REM WGET
|
||||
FOR /f "tokens=2 delims='" %%i IN ('yarn info nw ^| findstr "latest: "') DO SET "NW_VERSION=%%i"
|
||||
:GET_NW
|
||||
wget https://dl.nwjs.io/v%NW_VERSION%/nwjs-v%NW_VERSION%-win-x64.zip -O "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip"
|
||||
IF %ERRORLEVEL% NEQ 0 GOTO GET_NW
|
||||
|
||||
ECHO Staging Qt components...
|
||||
COPY "%QTDIR%\bin\Qt5Core.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%QTDIR%\bin\Qt5Gui.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%QTDIR%\bin\Qt5Widgets.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%QTDIR%\bin\Qt5Network.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%QTDIR%\bin\libgcc_s_dw2-1.dll" COPY "%QTDIR%\bin\libgcc_s_dw2-1.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%QTDIR%\bin\libstdc++-6.dll" COPY "%QTDIR%\bin\libstdc++-6.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%QTDIR%\bin\libwinpthread-1.dll" COPY "%QTDIR%\bin\libwinpthread-1.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
MKDIR "%PGBUILDPATH%\runtime\platforms" > nul || EXIT /B 1
|
||||
COPY "%QTDIR%\plugins\platforms\qwindows.dll" "%PGBUILDPATH%\runtime\platforms" > nul || EXIT /B 1
|
||||
ECHO [Paths] > "%PGBUILDPATH%\runtime\qt.conf"
|
||||
ECHO Plugins=plugins >> "%PGBUILDPATH%\runtime\qt.conf"
|
||||
tar -C "%TMPDIR%" -xvf "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip" || EXIT /B 1
|
||||
REM WGET END
|
||||
|
||||
REM YARN
|
||||
REM XCOPY /S /I /E /H /Y "%TMPDIR%\node_modules\nw\nwjs\*" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
REM YARN END
|
||||
|
||||
REM WGET
|
||||
XCOPY /S /I /E /H /Y "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64\*" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
REM WGET END
|
||||
|
||||
MOVE "%BUILDROOT%\runtime\nw.exe" "%BUILDROOT%\runtime\pgAdmin4.exe"
|
||||
|
||||
ECHO Replacing executable icon...
|
||||
CALL yarn --cwd "%TMPDIR%" add winresourcer || EXIT /B
|
||||
"%TMPDIR%\node_modules\winresourcer\bin\Resourcer.exe" -op:upd -src:"%BUILDROOT%\runtime\pgAdmin4.exe" -type:Icongroup -name:IDR_MAINFRAME -file:"%WD%\pkg\win32\Resources\pgAdmin4.ico"
|
||||
|
||||
ECHO Staging PostgreSQL components...
|
||||
COPY "%PGDIR%\bin\libpq.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%PGDIR%\bin\libcrypto-1_1.dll" (
|
||||
REM OpenSSL 1.1.1
|
||||
COPY "%PGDIR%\bin\libcrypto-1_1.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGDIR%\bin\libssl-1_1.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
) ELSE (
|
||||
REM OpenSSL 1.0.2
|
||||
COPY "%PGDIR%\bin\ssleay32.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGDIR%\bin\libeay32.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
)
|
||||
IF EXIST "%PGDIR%\bin\libintl-*.dll" COPY "%PGDIR%\bin\libintl-*.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%PGDIR%\bin\libiconv-*.dll" COPY "%PGDIR%\bin\libiconv-*.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%PGDIR%\bin\zlib.dll" COPY "%PGDIR%\bin\zlib.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%PGDIR%\bin\zlib1.dll" COPY "%PGDIR%\bin\zlib1.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGDIR%\bin\pg_dump.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGDIR%\bin\pg_dumpall.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1L%
|
||||
COPY "%PGDIR%\bin\pg_restore.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGDIR%\bin\psql.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\libpq.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\libcrypto-1_1-x64.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\libssl-1_1-x64.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%PGADMIN_POSTGRES_DIR%\bin\libintl-*.dll" COPY "%PGADMIN_POSTGRES_DIR%\bin\libintl-*.dll" "%BUILDROOT%\runtime" > nul
|
||||
IF EXIST "%PGADMIN_POSTGRES_DIR%\bin\libiconv-*.dll" COPY "%PGADMIN_POSTGRES_DIR%\bin\libiconv-*.dll" "%BUILDROOT%\runtime" > nul
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\zlib.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\pg_dump.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\pg_dumpall.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1L%
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\pg_restore.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\psql.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
|
||||
ECHO Staging VC++ runtime...
|
||||
MKDIR "%PGBUILDPATH%\installer" || EXIT /B 1
|
||||
COPY "%VCREDIST%" "%PGBUILDPATH%\installer" > nul || EXIT /B 1
|
||||
MKDIR "%BUILDROOT%\installer" || EXIT /B 1
|
||||
COPY "%PGADMIN_VCREDIST_DIR%\%VCREDIST_FILE%" "%BUILDROOT%\installer" > nul || EXIT /B 1
|
||||
|
||||
CD %WD%
|
||||
EXIT /B 0
|
||||
|
||||
|
||||
:CREATE_PYTHON_ENV
|
||||
ECHO Staging Python...
|
||||
COPY %PYTHON_DLL% "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY %PYTHON_HOME%\python.exe "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY %PYTHON_HOME%\pythonw.exe "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
|
||||
ECHO Cleaning up unnecessary .pyc and .pyo files...
|
||||
FOR /R "%PGBUILDPATH%\%VIRTUALENV%" %%f in (*.pyc *.pyo) do DEL /q "%%f" 1> nul 2>&1
|
||||
ECHO Removing tests...
|
||||
FOR /R "%PGBUILDPATH%\%VIRTUALENV%\Lib" %%f in (test tests) do RD /Q /S "%%f" 1> nul 2>&1
|
||||
ECHO Removing TCL...
|
||||
RD /Q /S "%PGBUILDPATH%\%VIRTUALENV%\tcl" 1> nul 2>&1
|
||||
|
||||
EXIT /B 0
|
||||
|
||||
|
||||
:CREATE_INSTALLER
|
||||
ECHO Preparing for creation of windows installer...
|
||||
IF NOT EXIST "%TARGET_DIR%" MKDIR "%TARGET_DIR%"
|
||||
IF NOT EXIST "%DISTROOT%" MKDIR "%DISTROOT%"
|
||||
|
||||
ECHO Copying icon file...
|
||||
COPY "%WD%\pkg\win32\Resources\pgAdmin4.ico" "%PGBUILDPATH%" > nul || EXIT /B 1
|
||||
COPY "%WD%\pkg\win32\Resources\pgAdmin4.ico" "%BUILDROOT%" > nul || EXIT /B 1
|
||||
|
||||
CD "%WD%\pkg\win32"
|
||||
|
||||
ECHO Processing installer configuration script...
|
||||
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in" "-o" "%WD%\pkg\win32\installer.iss.in_stage1" "-s" MYAPP_NAME -r """%APP_NAME%"""
|
||||
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage1" "-o" "%WD%\pkg\win32\installer.iss.in_stage2" "-s" MYAPP_FULLVERSION -r """%APP_VERSION%"""
|
||||
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage2" "-o" "%WD%\pkg\win32\installer.iss.in_stage3" "-s" MYAPP_VERSION -r """v%APP_MAJOR%"""
|
||||
|
||||
SET ARCMODE=
|
||||
IF "%ARCHITECTURE%"=="amd64" (
|
||||
set ARCMODE="x64"
|
||||
)
|
||||
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage3" "-o" "%WD%\pkg\win32\installer.iss.in_stage4" "-s" MYAPP_ARCHITECTURESMODE -r """%ARCMODE%"""
|
||||
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage4" "-o" "%WD%\pkg\win32\installer.iss" "-s" MYAPP_VCDIST -r """%VCREDISTNAME%"""
|
||||
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in" "-o" "%WD%\pkg\win32\installer.iss.in_stage1" "-s" MYAPP_FULLVERSION -r """%APP_VERSION%"""
|
||||
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage1" "-o" "%WD%\pkg\win32\installer.iss.in_stage2" "-s" MYAPP_VERSION -r """v%APP_MAJOR%"""
|
||||
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage2" "-o" "%WD%\pkg\win32\installer.iss" "-s" MYAPP_VCDIST -r """%PGADMIN_VCREDIST_DIRNAME%\%VCREDIST_FILE%"""
|
||||
|
||||
ECHO Cleaning up...
|
||||
DEL /s "%WD%\pkg\win32\installer.iss.in_stage*" > nul
|
||||
|
||||
ECHO Creating windows installer using INNO tool...
|
||||
CALL "%INNOTOOL%\ISCC.exe" /q "%WD%\pkg\win32\installer.iss" || EXIT /B 1
|
||||
CALL "%PGADMIN_INNOTOOL_DIR%\ISCC.exe" /q "%WD%\pkg\win32\installer.iss" || EXIT /B 1
|
||||
|
||||
ECHO Renaming installer...
|
||||
MOVE "%WD%\pkg\win32\Output\Setup.exe" "%TARGET_DIR%\%INSTALLERNAME%" > nul || EXIT /B 1
|
||||
MOVE "%WD%\pkg\win32\Output\pgadmin4-setup.exe" "%DISTROOT%\%INSTALLERNAME%" > nul || EXIT /B 1
|
||||
|
||||
ECHO Location - %TARGET_DIR%\%INSTALLERNAME%
|
||||
ECHO Location - %DISTROOT%\%INSTALLERNAME%
|
||||
ECHO Installer generated successfully.
|
||||
|
||||
CD %WD%
|
||||
@@ -361,7 +346,7 @@ REM Main build sequence Ends
|
||||
|
||||
:SIGN_INSTALLER
|
||||
ECHO Attempting to sign the installer...
|
||||
CALL "%SIGNTOOL%" sign /t http://timestamp.verisign.com/scripts/timstamp.dll "%TARGET_DIR%\%INSTALLERNAME%"
|
||||
CALL "%PGADMIN_SIGNTOOL_DIR%\signtool.exe" sign /t http://time.certum.pl "%DISTROOT%\%INSTALLERNAME%"
|
||||
IF %ERRORLEVEL% NEQ 0 (
|
||||
ECHO.
|
||||
ECHO ************************************************************
|
||||
@@ -373,17 +358,9 @@ REM Main build sequence Ends
|
||||
EXIT /B 0
|
||||
|
||||
|
||||
:CLEANUP_ENV
|
||||
ECHO Cleaning the build environment...
|
||||
RD "%PGBUILDPATH%\%VIRTUALENV%\Include" /S /Q 1> nul 2>&1
|
||||
DEL /s "%PGBUILDPATH%\%VIRTUALENV%\pip-selfcheck.json" 1> nul 2>&1
|
||||
|
||||
EXIT /B 0
|
||||
|
||||
|
||||
:USAGE
|
||||
ECHO Invalid command line options.
|
||||
ECHO Usage: "Make.bat <x86 | clean>"
|
||||
ECHO Usage: "Make.bat [clean]"
|
||||
ECHO.
|
||||
|
||||
EXIT /B 1
|
||||
|
||||
@@ -20,17 +20,11 @@ APP_REVISION := $(shell grep ^APP_REVISION web/config.py | awk -F"=" '{print $$N
|
||||
# Include only platform-independent builds in all
|
||||
all: docs pip src runtime
|
||||
|
||||
appbundle: docs
|
||||
appbundle:
|
||||
./pkg/mac/build.sh
|
||||
|
||||
install-node:
|
||||
cd web && npm install
|
||||
cd web && npm audit fix
|
||||
rm -f web/yarn.lock
|
||||
cd web && yarn import
|
||||
cd web && yarn audit
|
||||
rm -f package-lock.json
|
||||
rm -f web/package-lock.json
|
||||
cd web && yarn install
|
||||
|
||||
bundle:
|
||||
cd web && yarn run bundle
|
||||
@@ -48,7 +42,12 @@ check-audit:
|
||||
cd web && yarn run audit
|
||||
|
||||
check-auditjs:
|
||||
cd web && yarn run auditjs
|
||||
# Commented the below line to avoid vulnerability in decompress package and
|
||||
# audit only dependencies folder. Refer https://www.npmjs.com/advisories/1217.
|
||||
# Pull request is already been send https://github.com/kevva/decompress/pull/73,
|
||||
# once fixed we will uncomment it.
|
||||
# cd web && yarn run auditjs
|
||||
cd web && yarn run auditjs --groups dependencies
|
||||
|
||||
check-auditjs-html:
|
||||
cd web && yarn run auditjs-html
|
||||
@@ -74,6 +73,9 @@ check-feature: install-node bundle
|
||||
check-js: install-node linter
|
||||
cd web && yarn run karma start --single-run
|
||||
|
||||
check-js-coverage:
|
||||
cd web && yarn run test:karma-coverage
|
||||
|
||||
runtime-debug:
|
||||
cd runtime && qmake CONFIG+=debug && make
|
||||
|
||||
@@ -81,7 +83,7 @@ runtime:
|
||||
cd runtime && qmake CONFIG+=release && make
|
||||
|
||||
# Include all clean sub-targets in clean
|
||||
clean: clean-appbundle clean-dist clean-docs clean-node clean-pip clean-src clean-runtime
|
||||
clean: clean-appbundle clean-debian clean-dist clean-docs clean-node clean-pip clean-redhat clean-src clean-runtime
|
||||
rm -rf web/pgadmin/static/js/generated/*
|
||||
rm -rf web/pgadmin/static/js/generated/.cache
|
||||
rm -rf web/pgadmin/static/css/generated/*
|
||||
@@ -94,6 +96,9 @@ clean-runtime:
|
||||
clean-appbundle:
|
||||
rm -rf mac-build/
|
||||
|
||||
clean-debian:
|
||||
rm -rf debian-build/
|
||||
|
||||
clean-dist:
|
||||
rm -rf dist/
|
||||
|
||||
@@ -106,9 +111,15 @@ clean-node:
|
||||
clean-pip:
|
||||
rm -rf pip-build/
|
||||
|
||||
clean-redhat:
|
||||
rm -rf redhat-build/
|
||||
|
||||
clean-src:
|
||||
rm -rf src-build/
|
||||
|
||||
debian:
|
||||
./pkg/debian/build.sh
|
||||
|
||||
docker:
|
||||
echo $(APP_NAME)
|
||||
docker build -t ${APP_NAME} -t $(APP_NAME):latest -t $(APP_NAME):$(APP_RELEASE) -t $(APP_NAME):$(APP_RELEASE).$(APP_REVISION) .
|
||||
@@ -138,5 +149,8 @@ msg-update:
|
||||
pip: docs
|
||||
./pkg/pip/build.sh
|
||||
|
||||
redhat:
|
||||
./pkg/redhat/build.sh
|
||||
|
||||
src:
|
||||
./pkg/src/build.sh
|
||||
@@ -1,349 +0,0 @@
|
||||
pgAdmin 4
|
||||
=========
|
||||
|
||||
pgAdmin 4 is a rewrite of the popular pgAdmin3 management tool for the
|
||||
PostgreSQL (http://www.postgresql.org) database.
|
||||
|
||||
In the following documentation and examples, "$PGADMIN4_SRC/" is used to denote
|
||||
the top-level directory of a copy of the pgAdmin source tree, either from a
|
||||
tarball or a git checkout.
|
||||
|
||||
Architecture
|
||||
------------
|
||||
|
||||
pgAdmin 4 is written as a web application in Python, using jQuery and Bootstrap
|
||||
for the client side processing and UI. On the server side, Flask is being
|
||||
utilised.
|
||||
|
||||
Although developed using web technologies, pgAdmin 4 can be deployed either on
|
||||
a web server using a browser, or standalone on a workstation. The runtime/
|
||||
subdirectory contains a QT based runtime application intended to allow this -
|
||||
it is essentially a Python application server that runs in the system tray
|
||||
and allows the user to connect to the application using their web browser.
|
||||
|
||||
Building the Runtime
|
||||
--------------------
|
||||
|
||||
To build the runtime, the following packages must be installed:
|
||||
|
||||
- QT 4.6 or above (Use the VC++ build on Windows, not MinGW).
|
||||
- Python 2.7 or 3.4+
|
||||
|
||||
Assuming both qmake and python-config are in the path:
|
||||
|
||||
$ cd $PGADMIN4_SRC/runtime
|
||||
$ qmake
|
||||
Project MESSAGE: Building for QT5+...
|
||||
Project MESSAGE: Building for Linux/Mac...
|
||||
Project MESSAGE: Using /usr/bin/python-config
|
||||
Project MESSAGE: Python2 detected.
|
||||
$ make
|
||||
...
|
||||
|
||||
To build the runtime in debug mode, use the option below with qmake
|
||||
$ qmake CONFIG+=debug
|
||||
|
||||
To build the runtime in release mode, use the option below with qmake
|
||||
$ qmake CONFIG+=release
|
||||
|
||||
By default, the runtime application will be built in release mode.
|
||||
|
||||
On Linux, an executable called 'pgAdmin4' will be built, and on Mac OS X, an
|
||||
app bundle called pgAdmin4.app will be created.
|
||||
|
||||
To build the runtime on a Windows system, export PYTHON_HOME and PYTHON_VERSION
|
||||
variables in the System environment. Specify the PYTHON_VERSION with the major
|
||||
and minor number. Do not specify micro level version.
|
||||
|
||||
For example, given a Python version of A.B.C; A - Major number, B - Minor
|
||||
number, C - Micro level (Bug fix releases).
|
||||
|
||||
If Python version is 2.7.12 than specify PYTHON_VERSION=27
|
||||
|
||||
e.g. PYTHON_HOME=C:\Python27\
|
||||
PYTHON_VERSION=27
|
||||
|
||||
You can also use Qt Creator to build, develop and debug the runtime. Simply
|
||||
open the $PGADMIN4_SRC/runtime/pgAdmin4.pro project file in Qt Creator and
|
||||
configure the project with a supported version of Qt when prompted.
|
||||
|
||||
Create Database Migrations
|
||||
--------------------------
|
||||
|
||||
In order to make changes to the SQLite DB, navigate to the 'web' directory:
|
||||
|
||||
(pgadmin4) $ cd $PGADMIN4_SRC/web
|
||||
|
||||
Create a migration file with the following command:
|
||||
|
||||
(pgadmin4) $ FLASK_APP=pgAdmin4.py flask db revision
|
||||
|
||||
This will create a file in: $PGADMIN4_SRC/web/migrations/versions/ .
|
||||
Add any changes to the 'upgrade' function.
|
||||
Increment the SCHEMA_VERSION in $PGADMIN4_SRC/web/pgadmin/model/__init__.py file.
|
||||
|
||||
There is no need to increment the SETTINGS_SCHEMA_VERSION.
|
||||
|
||||
Configuring the Python Environment
|
||||
----------------------------------
|
||||
|
||||
In order to run the Python code, a suitable runtime environment is required.
|
||||
Python versions - Python 2.7 or 3.4+ are currently supported. It is
|
||||
recommended that a Python Virtual Environment is setup for this purpose,
|
||||
rather than using the system Python environment. On Linux and Mac systems, the
|
||||
process is fairly simple - adapt as required for your distribution:
|
||||
|
||||
1) Install the virtualenv packages into the system Python environment
|
||||
|
||||
$ sudo pip install virtualenv virtualenvwrapper
|
||||
|
||||
2) Source the virtualenv wrapper tools script. You may want to add this command
|
||||
to your ~/.bash_profile file for future convenience:
|
||||
|
||||
$ source /usr/local/bin/virtualenvwrapper.sh
|
||||
|
||||
3) Create a virtual environment:
|
||||
|
||||
$ mkvirtualenv pgadmin4
|
||||
|
||||
To make use of the virtual environment in the future, use the following
|
||||
command to re-activate it:
|
||||
|
||||
$ workon pgadmin4
|
||||
|
||||
4) Ensure that a PostgreSQL installation's bin/ directory is in the path (so
|
||||
pg_config can be found for building psycopg2), and install the required
|
||||
packages:
|
||||
|
||||
(pgadmin4) $ PATH=$PATH:/usr/local/pgsql/bin pip install -r $PGADMIN4_SRC/requirements.txt
|
||||
|
||||
If you are planning to run the regression tests, you also need to install
|
||||
additional requirements from web/regression/requirements.txt:
|
||||
|
||||
(pgadmin4) $ pip install -r $PGADMIN4_SRC/web/regression/requirements.txt
|
||||
|
||||
5) Create a local configuration file for pgAdmin. Edit
|
||||
$PGADMIN4_SRC/web/config_local.py and add any desired configuration options
|
||||
(use the config.py file as a reference - any settings duplicated in
|
||||
config_local.py will override those in config.py). A typical development
|
||||
configuration may look like:
|
||||
|
||||
from config import *
|
||||
|
||||
# Debug mode
|
||||
DEBUG = True
|
||||
|
||||
# App mode
|
||||
SERVER_MODE = True
|
||||
|
||||
# Enable the test module
|
||||
MODULE_BLACKLIST.remove('test')
|
||||
|
||||
# Log
|
||||
CONSOLE_LOG_LEVEL = DEBUG
|
||||
FILE_LOG_LEVEL = DEBUG
|
||||
|
||||
DEFAULT_SERVER = '127.0.0.1'
|
||||
|
||||
UPGRADE_CHECK_ENABLED = True
|
||||
|
||||
# Use a different config DB for each server mode.
|
||||
if SERVER_MODE == False:
|
||||
SQLITE_PATH = os.path.join(
|
||||
DATA_DIR,
|
||||
'pgadmin4-desktop.db'
|
||||
)
|
||||
else:
|
||||
SQLITE_PATH = os.path.join(
|
||||
DATA_DIR,
|
||||
'pgadmin4-server.db'
|
||||
)
|
||||
|
||||
This configuration allows easy switching between server and desktop modes
|
||||
for testing.
|
||||
|
||||
6) The initial setup of the configuration database is interactive in server
|
||||
mode, and non-interactive in desktop mode. You can run it either by
|
||||
running:
|
||||
|
||||
(pgadmin4) $ python $PGADMIN4_SRC/web/setup.py
|
||||
|
||||
or by starting pgAdmin 4:
|
||||
|
||||
(pgadmin4) $ python $PGADMIN4_SRC/web/pgAdmin4.py
|
||||
|
||||
Whilst it is possible to automatically run setup in desktop mode by running
|
||||
the runtime, that will not work in server mode as the runtime doesn't allow
|
||||
command line interaction with the setup program.
|
||||
|
||||
At this point you will be able to run pgAdmin 4 from the command line in either
|
||||
server or desktop mode, and access it from a web browser using the URL shown in
|
||||
the terminal once pgAdmin has started up.
|
||||
|
||||
Setup of an environment on Windows is somewhat more complicated unfortunately,
|
||||
largely due to the lack of a native compiler toolset. Thankfully, Microsoft
|
||||
supply a free compiler specifically for Python 2.7 users. Download and install
|
||||
it from:
|
||||
|
||||
https://www.microsoft.com/en-gb/download/details.aspx?id=44266
|
||||
|
||||
A blog detailing the setup of Virtual Environments on Windows can be found
|
||||
here:
|
||||
|
||||
http://www.tylerbutler.com/2012/05/how-to-install-python-pip-and-virtualenv-on-windows-with-powershell/
|
||||
|
||||
Once a virtual environment has been created and enabled, setup can continue
|
||||
from step 4 above.
|
||||
|
||||
Building the Web Assets
|
||||
-----------------------
|
||||
|
||||
pgAdmin is dependent on a number of third party Javascript libraries. These,
|
||||
along with it's own Javascript code, SCSS/CSS code and images must be
|
||||
compiled into a "bundle" which is transferred to the browser for execution
|
||||
and rendering. This is far more efficient than simply requesting each
|
||||
asset as it's needed by the client.
|
||||
|
||||
To create the bundle, you will need the 'yarn' package management tool to be
|
||||
installed. Then, you can run the following commands on a *nix system to
|
||||
download the required packages and build the bundle:
|
||||
|
||||
(pgadmin4) $ cd $PGADMIN4_SRC
|
||||
(pgadmin4) $ make install-node
|
||||
(pgadmin4) $ make bundle
|
||||
|
||||
On Windows systems (where "make" is not available, the following commands
|
||||
can be used:
|
||||
|
||||
C:\> cd $PGADMIN4_SRC\web
|
||||
C:\$PGADMIN4_SRC\web> yarn install
|
||||
C:\$PGADMIN4_SRC\web> yarn run bundle
|
||||
|
||||
Configuring the Runtime
|
||||
-----------------------
|
||||
|
||||
The pgAdmin 4 Runtime maintains it's own Python Path to avoid conflicts with
|
||||
packages or other issues in the system Python installation. It will also search
|
||||
a number of known locations for the pgAdmin4.py file needed to run pgAdmin
|
||||
(including relative locations in a source code tree), however you can specify
|
||||
an alternate path if needed.
|
||||
|
||||
If either a working environment or pgAdmin4.py cannot be found at startup, the
|
||||
runtime will prompt for the locations. Alternatively, you can click the try
|
||||
icon and select the Configuration option to open the configuration dialogue.
|
||||
|
||||
On a Linux/Mac system, the Python Path will typically consist of a single path
|
||||
to the virtual environment's site-packages directory, e.g.
|
||||
|
||||
/Users/<USERNAME>/.virtualenvs/pgadmin4/lib/python2.7/site-packages
|
||||
|
||||
On Windows, multiple paths are likely to be required, e.g.
|
||||
|
||||
C:\Users\dpage\.virtualenvs\pgadmin4\Lib\site-packages;C:\Users\dpage\.virtualenvs\pgadmin4\Lib;C:\Users\dpage\.virtualenvs\pgadmin4\Lib\lib-tk;C:\Users\dpage\.virtualenvs\pgadmin4\DLLs
|
||||
|
||||
If you wish to specify a specific copy of the Python code to run, you can set
|
||||
the Application Path to a directory containing pgAdmin4.py, e.g.
|
||||
|
||||
/Users/<USERNAME>/git/pgadmin4-test/web/
|
||||
|
||||
Building the documentation
|
||||
--------------------------
|
||||
|
||||
In order to build the docs, an additional Python package is required in the
|
||||
virtual environment. This can be installed with the pip package manager:
|
||||
|
||||
$ workon pgadmin4
|
||||
(pgadmin4) $ pip install Sphinx
|
||||
|
||||
The docs can then be built using the Makefile in $PGADMIN4_SRC, e.g.
|
||||
|
||||
(pgadmin4) $ make docs
|
||||
|
||||
The output can be found in $PGADMIN4_SRC/docs/en_US/_build/html/index.html
|
||||
|
||||
Building packages
|
||||
-----------------
|
||||
|
||||
Most packages can be built using the Makefile in $PGADMIN4_SRC, provided all
|
||||
the setup and configuration above has been completed.
|
||||
|
||||
To build a source tarball:
|
||||
|
||||
(pgadmin4) $ make src
|
||||
|
||||
To build a PIP Wheel, activate either a Python 2 or Python 3 virtual
|
||||
environment as desired, configured with all the required packages, and then
|
||||
run:
|
||||
|
||||
(pgadmin4) $ make pip
|
||||
|
||||
On a Mac, build an application bundle in a disk image (DMG file) with:
|
||||
|
||||
(pgadmin4) $ make appbundle
|
||||
|
||||
Configure the framework.conf to match the QT and Python versions the app is
|
||||
being built with:
|
||||
|
||||
$ cp $PGADMIN4_SRC/pkg/mac/framework.conf.in $PGADMIN4_SRC/pkg/mac/framework.conf
|
||||
$ vi $PGADMIN4_SRC/pkg/mac/framework.conf
|
||||
|
||||
If you have an Apple code signing certificate, both the app bundle and disk
|
||||
image can be automatically signed by configuring signing:
|
||||
|
||||
$ cp $PGADMIN4_SRC/pkg/mac/codesign.conf.in $PGADMIN4_SRC/pkg/mac/codesign.conf
|
||||
$ vi $PGADMIN4_SRC/pkg/mac/codesign.conf
|
||||
|
||||
Edit the file as appropriate, ensuring the various version numbers are correct
|
||||
and that the appropriate developer ID is specified.
|
||||
|
||||
On Windows, the InnoSetup tool is required to create an installer. Download the
|
||||
Unicode version from:
|
||||
|
||||
http://www.jrsoftware.org/isdl.php
|
||||
|
||||
A number of environment variables may need to be set to enable the build script
|
||||
to function. The defaults will usually work on a typical 64 bit system with
|
||||
Qt 5.5.1, Python 2.7 and Visual Studio 2013. The examples below are for a
|
||||
similar 32 bit system:
|
||||
|
||||
INNOTOOL=C:\Program Files\Inno Setup 5
|
||||
PGDIR=C:\Program Files\PostgreSQL\10
|
||||
PYTHON_DLL=C:\Windows\System32\Python27.dll
|
||||
PYTHON_HOME=C:\Python27
|
||||
PYTHON_VERSION=27
|
||||
QTDIR=C:\Qt\5.9\msvc2013
|
||||
VCDIR=C:\Program Files\Microsoft Visual Studio 12.0\VC
|
||||
|
||||
To build the installer:
|
||||
|
||||
C:\$PGADMIN4_SRC> make x86
|
||||
|
||||
If you have a code signing certificate, this will automatically be used if
|
||||
found in the Windows Certificate Store to sign the installer.
|
||||
|
||||
Support
|
||||
-------
|
||||
|
||||
See https://www.pgadmin.org/support/ for support options.
|
||||
|
||||
Project info
|
||||
------------
|
||||
|
||||
The source code repository can be found here:
|
||||
|
||||
http://git.postgresql.org/gitweb/?p=pgadmin4.git;a=summary
|
||||
|
||||
A Redmine project for pgAdmin 4 can be found at the address below. A PostgreSQL
|
||||
community account is required to access this site. Please note that at present
|
||||
only project developers can log bug and feature requests:
|
||||
|
||||
https://redmine.postgresql.org/projects/pgadmin4
|
||||
|
||||
If you wish to discuss pgAdmin 4, or contribute to the project, please use the
|
||||
pgAdmin Hackers mailing list:
|
||||
|
||||
pgadmin-hackers@postgresql.org
|
||||
|
||||
--
|
||||
Dave Page
|
||||
pgAdmin Project Lead
|
||||
@@ -0,0 +1,251 @@
|
||||
# pgAdmin 4
|
||||
|
||||
pgAdmin 4 is a rewrite of the popular pgAdmin3 management tool for the
|
||||
PostgreSQL (http://www.postgresql.org) database.
|
||||
|
||||
In the following documentation and examples, *$PGADMIN4_SRC/* is used to denote
|
||||
the top-level directory of a copy of the pgAdmin source tree, either from a
|
||||
tarball or a git checkout.
|
||||
|
||||
## Architecture
|
||||
|
||||
pgAdmin 4 is written as a web application in Python, using jQuery and Bootstrap
|
||||
for the client side processing and UI. On the server side, Flask is being
|
||||
utilised.
|
||||
|
||||
Although developed using web technologies, pgAdmin 4 can be deployed either on
|
||||
a web server using a browser, or standalone on a workstation. The runtime/
|
||||
subdirectory contains an NWjs based runtime application intended to allow this,
|
||||
which will execute the Python server and display the UI.
|
||||
|
||||
## Building the Runtime
|
||||
|
||||
To build the runtime, the following packages must be installed:
|
||||
|
||||
* NodeJS 12+
|
||||
* Yarn
|
||||
|
||||
Change into the runtime directory, and run *yarn install*. This will install the
|
||||
dependencies required.
|
||||
|
||||
In order to use the runtime in a development environment, you'll need to copy
|
||||
*dev_config.json.in* file to *dev_config.json*, and edit the paths to the Python
|
||||
executable and *pgAdmin.py* file, otherwise the runtime will use the default
|
||||
paths it would expect to find in the standard package for your platform.
|
||||
|
||||
You can then execute the runtime by running something like:
|
||||
|
||||
node_modules/nw/nwjs/nw .
|
||||
|
||||
or on macOS:
|
||||
|
||||
node_modules/nw/nwjs/nwjs.app/Contents/MacOS/nwjs .
|
||||
|
||||
# Create Database Migrations
|
||||
|
||||
In order to make changes to the SQLite DB, navigate to the 'web' directory:
|
||||
|
||||
(pgadmin4) $ cd $PGADMIN4_SRC/web
|
||||
|
||||
Create a migration file with the following command:
|
||||
|
||||
(pgadmin4) $ FLASK_APP=pgAdmin4.py flask db revision
|
||||
|
||||
This will create a file in: $PGADMIN4_SRC/web/migrations/versions/ .
|
||||
Add any changes to the 'upgrade' function.
|
||||
Increment the SCHEMA_VERSION in $PGADMIN4_SRC/web/pgadmin/model/__init__.py file.
|
||||
|
||||
There is no need to increment the SETTINGS_SCHEMA_VERSION.
|
||||
|
||||
# Configuring the Python Environment
|
||||
|
||||
In order to run the Python code, a suitable runtime environment is required.
|
||||
Python version 3.6 and later are currently supported. It is recommended that a
|
||||
Python Virtual Environment is setup for this purpose, rather than using the
|
||||
system Python environment. On Linux and Mac systems, the process is fairly
|
||||
simple - adapt as required for your distribution:
|
||||
|
||||
1. Install the virtualenv packages into the system Python environment
|
||||
|
||||
$ sudo pip install virtualenv virtualenvwrapper
|
||||
|
||||
2. Source the virtualenv wrapper tools script. You may want to add this command
|
||||
to your ~/.bash_profile file for future convenience:
|
||||
|
||||
$ source /usr/local/bin/virtualenvwrapper.sh
|
||||
|
||||
3. Create a virtual environment:
|
||||
|
||||
$ mkvirtualenv pgadmin4
|
||||
|
||||
To make use of the virtual environment in the future, use the following
|
||||
command to re-activate it:
|
||||
|
||||
$ workon pgadmin4
|
||||
|
||||
4. Ensure that a PostgreSQL installation's bin/ directory is in the path (so
|
||||
pg_config can be found for building psycopg2), and install the required
|
||||
packages:
|
||||
|
||||
(pgadmin4) $ PATH=$PATH:/usr/local/pgsql/bin pip install -r $PGADMIN4_SRC/requirements.txt
|
||||
|
||||
If you are planning to run the regression tests, you also need to install
|
||||
additional requirements from web/regression/requirements.txt:
|
||||
|
||||
(pgadmin4) $ pip install -r $PGADMIN4_SRC/web/regression/requirements.txt
|
||||
|
||||
5. Create a local configuration file for pgAdmin. Edit
|
||||
$PGADMIN4_SRC/web/config_local.py and add any desired configuration options
|
||||
(use the config.py file as a reference - any settings duplicated in
|
||||
config_local.py will override those in config.py). A typical development
|
||||
configuration may look like:
|
||||
```python
|
||||
from config import *
|
||||
|
||||
# Debug mode
|
||||
DEBUG = True
|
||||
|
||||
# App mode
|
||||
SERVER_MODE = True
|
||||
|
||||
# Enable the test module
|
||||
MODULE_BLACKLIST.remove('test')
|
||||
|
||||
# Log
|
||||
CONSOLE_LOG_LEVEL = DEBUG
|
||||
FILE_LOG_LEVEL = DEBUG
|
||||
|
||||
DEFAULT_SERVER = '127.0.0.1'
|
||||
|
||||
UPGRADE_CHECK_ENABLED = True
|
||||
|
||||
# Use a different config DB for each server mode.
|
||||
if SERVER_MODE == False:
|
||||
SQLITE_PATH = os.path.join(
|
||||
DATA_DIR,
|
||||
'pgadmin4-desktop.db'
|
||||
)
|
||||
else:
|
||||
SQLITE_PATH = os.path.join(
|
||||
DATA_DIR,
|
||||
'pgadmin4-server.db'
|
||||
)
|
||||
```
|
||||
This configuration allows easy switching between server and desktop modes
|
||||
for testing.
|
||||
|
||||
6. The initial setup of the configuration database is interactive in server
|
||||
mode, and non-interactive in desktop mode. You can run it either by
|
||||
running:
|
||||
|
||||
(pgadmin4) $ python $PGADMIN4_SRC/web/setup.py
|
||||
|
||||
or by starting pgAdmin 4:
|
||||
|
||||
(pgadmin4) $ python $PGADMIN4_SRC/web/pgAdmin4.py
|
||||
|
||||
Whilst it is possible to automatically run setup in desktop mode by running
|
||||
the runtime, that will not work in server mode as the runtime doesn't allow
|
||||
command line interaction with the setup program.
|
||||
|
||||
At this point you will be able to run pgAdmin 4 from the command line in either
|
||||
server or desktop mode, and access it from a web browser using the URL shown in
|
||||
the terminal once pgAdmin has started up.
|
||||
|
||||
Setup of an environment on Windows is somewhat more complicated unfortunately,
|
||||
please see *pkg/win32/README.txt* for complete details.
|
||||
|
||||
Once a virtual environment has been created and enabled, setup can continue
|
||||
from step 4 above.
|
||||
|
||||
## Building the Web Assets
|
||||
|
||||
pgAdmin is dependent on a number of third party Javascript libraries. These,
|
||||
along with it's own Javascript code, SCSS/CSS code and images must be
|
||||
compiled into a "bundle" which is transferred to the browser for execution
|
||||
and rendering. This is far more efficient than simply requesting each
|
||||
asset as it's needed by the client.
|
||||
|
||||
To create the bundle, you will need the 'yarn' package management tool to be
|
||||
installed. Then, you can run the following commands on a *nix system to
|
||||
download the required packages and build the bundle:
|
||||
|
||||
(pgadmin4) $ cd $PGADMIN4_SRC
|
||||
(pgadmin4) $ make install-node
|
||||
(pgadmin4) $ make bundle
|
||||
|
||||
On Windows systems (where "make" is not available), the following commands
|
||||
can be used:
|
||||
|
||||
C:\> cd $PGADMIN4_SRC\web
|
||||
C:\$PGADMIN4_SRC\web> yarn install
|
||||
C:\$PGADMIN4_SRC\web> yarn run bundle
|
||||
|
||||
## Creating pgAdmin themes
|
||||
|
||||
To create a pgAdmin theme, you need to create a directory under
|
||||
*web/pgadmin/static/scss/resources*.
|
||||
Copy the sample file *_theme.variables.scss.sample* to the new directory and
|
||||
rename it to *_theme.variables.scss*. Change the desired hexadecimal values of
|
||||
the colors and bundle pgAdmin. You can also add a preview image in the theme
|
||||
directory with the name as *\<dir name>_preview.png*. It is recommended that the
|
||||
preview image should not be larger in size as it may take time to load on slow
|
||||
networks. Run the *yarn run bundle* and you're good to go. No other changes are
|
||||
required, pgAdmin bundle will read the directory and create other required
|
||||
entries to make them available in preferences.
|
||||
|
||||
The name of the theme is derived from the directory name. Underscores (_) and
|
||||
hyphens (-) will be replaced with spaces and the result will be camel cased.
|
||||
|
||||
# Building the documentation
|
||||
|
||||
In order to build the docs, an additional Python package is required in the
|
||||
virtual environment. This can be installed with the pip package manager:
|
||||
|
||||
$ workon pgadmin4
|
||||
(pgadmin4) $ pip install Sphinx
|
||||
|
||||
The docs can then be built using the Makefile in *$PGADMIN4_SRC*, e.g.
|
||||
|
||||
(pgadmin4) $ make docs
|
||||
|
||||
The output can be found in *$PGADMIN4_SRC/docs/en_US/_build/html/index.html*
|
||||
|
||||
# Building packages
|
||||
|
||||
Most packages can be built using the Makefile in $PGADMIN4_SRC, provided all
|
||||
the setup and configuration above has been completed.
|
||||
|
||||
To build a source tarball:
|
||||
|
||||
(pgadmin4) $ make src
|
||||
|
||||
To build a PIP Wheel, activate either a Python 3 virtual environment, configured
|
||||
with all the required packages, and then run:
|
||||
|
||||
(pgadmin4) $ make pip
|
||||
|
||||
To build the macOS AppBundle, please see *pkg/mac/README*.
|
||||
|
||||
To build the Windows installer, please see *pkg/win32/README.txt*.
|
||||
|
||||
## Support
|
||||
|
||||
See https://www.pgadmin.org/support/ for support options.
|
||||
|
||||
## Project info
|
||||
|
||||
The source code repository can be found here:
|
||||
|
||||
http://git.postgresql.org/gitweb/?p=pgadmin4.git;a=summary
|
||||
|
||||
A Redmine project for pgAdmin 4 can be found at the address below. A PostgreSQL
|
||||
community account is required to access this site. Please note that at present
|
||||
only project developers can log bug and feature requests:
|
||||
|
||||
https://redmine.postgresql.org/projects/pgadmin4
|
||||
|
||||
If you wish to discuss pgAdmin 4, or contribute to the project, please use the
|
||||
pgAdmin Hackers mailing list:
|
||||
|
||||
pgadmin-hackers@postgresql.org
|
||||
@@ -4,7 +4,7 @@
|
||||
`Backup Dialog`:index:
|
||||
**********************
|
||||
|
||||
Using the *pg_dump* utility, *pgAdmin* provides an easy way to create a backup
|
||||
*pgAdmin* uses the *pg_dump* utility to provide an easy way to create a backup
|
||||
in a plain-text or archived format. You can then use a client application (like
|
||||
*psql* or the *Query Tool*) to restore a plain-text backup file, or use the
|
||||
Postgres *pg_restore* utility to restore an archived backup. The *pg_dump*
|
||||
@@ -205,14 +205,15 @@ command:
|
||||
|
||||
Use the **Stop Process** button to stop the Backup process.
|
||||
|
||||
If the backup is successful, a popup window will confirm success. Click *Click
|
||||
here for details* on the popup window to launch the *Process Watcher*. The
|
||||
*Process Watcher* logs all the activity associated with the backup and provides
|
||||
additional information for troubleshooting.
|
||||
If the backup is successful, a popup window will confirm success. Click *More details* on the popup window to launch the *Process Watcher*. The *Process Watcher* logs all the activity associated with the backup and provides additional information for troubleshooting.
|
||||
|
||||
.. image:: images/backup_process_watcher.png
|
||||
:alt: Backup process watcher
|
||||
:align: center
|
||||
|
||||
If the backup is unsuccessful, you can review the error messages returned by the
|
||||
backup command on the *Process Watcher*.
|
||||
backup command on the *Process Watcher*.
|
||||
|
||||
.. note:: If you are running *pgAdmin* in *Server Mode* you can click on the |sm_icon| icon in the process watcher window to open the file location in the Storage Manager. You can use the :ref:`Storage Manager <storage_manager>` to download the backup file on the client machine .
|
||||
|
||||
.. |sm_icon| image:: images/sm_icon.png
|
||||
@@ -50,4 +50,8 @@ additional information for troubleshooting.
|
||||
:align: center
|
||||
|
||||
If the backup is unsuccessful, review the error message returned by the
|
||||
*Process Watcher* to resolve any issue.
|
||||
*Process Watcher* to resolve any issue.
|
||||
|
||||
.. note:: If you are running *pgAdmin* in *Server Mode* you can click on the |sm_icon| icon in the process watcher window to open the file location in the Storage Manager. You can use the :ref:`Storage Manager <storage_manager>` to download the backup file on the client machine .
|
||||
|
||||
.. |sm_icon| image:: images/sm_icon.png
|
||||
@@ -135,4 +135,8 @@ additional information for troubleshooting.
|
||||
:align: center
|
||||
|
||||
If the backup is unsuccessful, review the error message returned by the
|
||||
*Process Watcher* to resolve any issue.
|
||||
*Process Watcher* to resolve any issue.
|
||||
|
||||
.. note:: If you are running *pgAdmin* in *Server Mode* you can click on the |sm_icon| icon in the process watcher window to open the file location in the Storage Manager. You can use the :ref:`Storage Manager <storage_manager>` to download the backup file on the client machine .
|
||||
|
||||
.. |sm_icon| image:: images/sm_icon.png
|
||||
@@ -1,11 +1,7 @@
|
||||
import os
|
||||
import sys
|
||||
import inspect
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
import builtins
|
||||
else:
|
||||
import __builtin__ as builtins
|
||||
import builtins
|
||||
|
||||
# Ensure the global server mode is set.
|
||||
builtins.SERVER_MODE = None
|
||||
@@ -63,7 +59,7 @@ def print_code(outstream, name, module, info=None):
|
||||
print_code(
|
||||
target, "PgAdminModule", PgAdminModule,
|
||||
"""
|
||||
PgAdminModule is inherted from Flask.Blueprint module.
|
||||
PgAdminModule is inherited from Flask.Blueprint module.
|
||||
This module defines a set of methods, properties and attributes,
|
||||
that every module should implement.
|
||||
""")
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
The bulk of pgAdmin is a Python web application written using the Flask framework
|
||||
on the backend, and HTML5 with CSS3, Bootstrap and jQuery on the front end. A
|
||||
desktop runtime is also included for users that prefer a desktop application to
|
||||
a web application, which is written in C++ using the QT framework.
|
||||
a web application, which is written using NWjs (Node Webkit).
|
||||
|
||||
Runtime
|
||||
*******
|
||||
|
||||
The runtime is essentially a Python webserver and browser in a box. Found in the
|
||||
**/runtime** directory in the source tree, it is a relatively simple QT
|
||||
application that is most easily modified using the **QT Creator** application.
|
||||
The runtime is based on NWjs which integrates a browser and the Python server
|
||||
creating a standalone application. The source code can be found in the
|
||||
**/runtime** directory in the source tree.
|
||||
|
||||
Web Application
|
||||
***************
|
||||
@@ -29,9 +29,10 @@ Configuration
|
||||
|
||||
The core application configuration is found in **config.py**. This file includes
|
||||
all configurable settings for the application, along with descriptions of their
|
||||
use. It is essential that various settings are configured prior to deployent on
|
||||
a web server; these can be overriden in **config_local.py** to avoid modifying
|
||||
the main configuration file.
|
||||
use. It is essential that various settings are configured prior to deployment on
|
||||
a web server; these can be overridden in **config_local.py** or
|
||||
**config_system.py** (see the :ref:`config.py <config_py>` documentation) to
|
||||
avoid modifying the main configuration file.
|
||||
|
||||
User Settings
|
||||
=============
|
||||
@@ -108,7 +109,7 @@ PgAdminModule class. This is responsible for providing hook points to integrate
|
||||
the module into the rest of the application - for example, a hook might tell
|
||||
the caller what CSS files need to be included on the rendered page, or what menu
|
||||
options to include and what they should do. Hook points need not exist if they
|
||||
are not required. It is the responsiblity of the caller to ensure they are
|
||||
are not required. It is the responsibility of the caller to ensure they are
|
||||
present before attempting to utilise them.
|
||||
|
||||
Hooks currently implemented are:
|
||||
@@ -210,6 +211,6 @@ bootstrap for UI look and feel, Backbone for data manipulation of a node,
|
||||
Backform for generating properties/create dialog for selected node. We have
|
||||
divided each module in small chunks as much as possible. Not all javascript
|
||||
modules are required to be loaded (i.e. loading a javascript module for
|
||||
database will make sense only when a server node is loaded competely.) Please
|
||||
database will make sense only when a server node is loaded completely.) Please
|
||||
look at the the javascript files node.js, browser.js, menu.js, panel.js, etc for
|
||||
better understanding of the code.
|
||||
better understanding of the code.
|
||||
@@ -16,46 +16,46 @@ review process for any patches submitted for inclusion in pgAdmin.
|
||||
bulk updates every year). The start date should always be 2013, and the end year
|
||||
the current year, e.g.
|
||||
|
||||
Copyright (C) 2013 - 2019, The pgAdmin Development Team
|
||||
|
||||
Copyright (C) 2013 - 2021, The pgAdmin Development Team
|
||||
|
||||
* Ensure there's a blank line immediately following any copyright headers.
|
||||
|
||||
* Include PyDoc comments for functions, classes and modules. Node modules should
|
||||
* Include PyDoc comments for functions, classes and modules. Node modules should
|
||||
be """Implements the XXXX node""".
|
||||
|
||||
* Ensure that any generated SQL does not have any leading or trailing blank lines
|
||||
and consistently uses 4 space indents for nice formatting.
|
||||
|
||||
* Don't special-case any Slony objects. pgAdmin 4 will have no direct knowledge
|
||||
* Don't special-case any Slony objects. pgAdmin 4 will have no direct knowledge
|
||||
of Slony, unlike pgAdmin 3.
|
||||
|
||||
* If you copy/paste modules, please ensure any comments are properly updated.
|
||||
* If you copy/paste modules, please ensure any comments are properly updated.
|
||||
|
||||
* Read all comments, and ensure they make sense and provide useful commentary on
|
||||
the code.
|
||||
|
||||
* Ensure that field labels both use PostgreSQL parlance, but also are descriptive.
|
||||
A good example is the "Init" field on an FTS Template - Init is the PG term, but
|
||||
* Ensure that field labels both use PostgreSQL parlance, but also are descriptive.
|
||||
A good example is the "Init" field on an FTS Template - Init is the PG term, but
|
||||
adding the word "Function" after it makes it much more descriptive.
|
||||
|
||||
* Re-use code whereever possible, but factor it out into a suitably central
|
||||
location - don't copy and paste it unless modifications are required!
|
||||
|
||||
* Format code nicely to make it readable. Break up logical chunks of code with
|
||||
blank lines, and comment well to describe what different sections of code are
|
||||
* Format code nicely to make it readable. Break up logical chunks of code with
|
||||
blank lines, and comment well to describe what different sections of code are
|
||||
for or pertain to.
|
||||
|
||||
* Ensure that form validation works correctly and is consistent with other
|
||||
* Ensure that form validation works correctly and is consistent with other
|
||||
dialogues in the way errors are displayed.
|
||||
|
||||
* On dialogues with Schema or Owner fields, pre-set the default values to the
|
||||
current schema/user as appropriate. In general, if there are common or sensible
|
||||
default values available, put them in the fields for the user.
|
||||
* On dialogues with Schema or Owner fields, pre-set the default values to the
|
||||
current schema/user as appropriate. In general, if there are common or sensible
|
||||
default values available, put them in the fields for the user.
|
||||
|
||||
* 1 patch == 1 feature. If you need to fix/update existing infrastructure in
|
||||
* 1 patch == 1 feature. If you need to fix/update existing infrastructure in
|
||||
your patch, it's usually easier if it's in a separate patch. Patches containing
|
||||
multiple new features or unrelated changes are likely to be rejected.
|
||||
|
||||
* Ensure the patch is fully functional, and works! If a patch is being sent as
|
||||
a work in progress, not intended for commit, clearly state that it's a WIP,
|
||||
and note what does or does not yet work.
|
||||
* Ensure the patch is fully functional, and works! If a patch is being sent as
|
||||
a work in progress, not intended for commit, clearly state that it's a WIP,
|
||||
and note what does or does not yet work.
|
||||
@@ -4,7 +4,7 @@
|
||||
`Coding Standards`:index:
|
||||
*************************
|
||||
|
||||
pgAdmin uses multiple technologies and multiple languages, each of which have
|
||||
pgAdmin uses multiple technologies and multiple languages, each of which have
|
||||
their own coding standards.
|
||||
|
||||
General
|
||||
@@ -16,24 +16,24 @@ lines wrapped where appropriate to ensure they can be read on smaller displays
|
||||
as it's quite wasteful on modern displays). Typically lines should not be longer
|
||||
than 120 characters.
|
||||
|
||||
Comments should be included in all code where required to explain its
|
||||
Comments should be included in all code where required to explain its
|
||||
purpose or how it works if not obvious from a quick review of the code itself.
|
||||
|
||||
CSS 3
|
||||
*****
|
||||
|
||||
CSS3 is used for styling and layout throughout the application. Extensive use is
|
||||
made of the Bootstrap Framework to aid in that process, however additional
|
||||
made of the Bootstrap Framework to aid in that process, however additional
|
||||
styles must still be created from time to time.
|
||||
|
||||
Most custom styling comes from individual modules which may advertise static
|
||||
stylesheets to be included in the module that is loading them via hooks.
|
||||
|
||||
Styling overrides (for example, to alter the Bootstrap look and feel) will
|
||||
Styling overrides (for example, to alter the Bootstrap look and feel) will
|
||||
typically be found in the **overrides.css** file in the main static file
|
||||
directory for the application.
|
||||
|
||||
Styling should never be applied inline in HTML, always through an external
|
||||
Styling should never be applied inline in HTML, always through an external
|
||||
stylesheet, which should contain comments as appropriate to explain the usage
|
||||
or purpose for the style.
|
||||
|
||||
@@ -48,16 +48,16 @@ Styles should be specified clearly, one per line. For example:
|
||||
|
||||
/* Ensure the codemirror editor displays full height gutters when resized */
|
||||
.CodeMirror, .CodeMirror-gutters {
|
||||
height: 100% !important;
|
||||
}
|
||||
height: 100% !important;
|
||||
}
|
||||
|
||||
All stylesheets must be CSS3 compliant.
|
||||
|
||||
HTML 5
|
||||
******
|
||||
|
||||
HTML 5 is used for page structure throughout the application, in most cases
|
||||
being rendered from templates by the Jinja2 template engine in Flask.
|
||||
HTML 5 is used for page structure throughout the application, in most cases
|
||||
being rendered from templates by the Jinja2 template engine in Flask.
|
||||
|
||||
All HTML must be HTML 5 compliant.
|
||||
|
||||
@@ -109,68 +109,20 @@ names.
|
||||
.. note:: From version 3.0 onwards, new or refactored code should be written using
|
||||
ES6 features and conventions.
|
||||
|
||||
C++
|
||||
***
|
||||
|
||||
C++ code is used in the desktop runtime for the application, primarily with the
|
||||
QT framework and an embedded Python interpreter. Note the use of hanging braces,
|
||||
which may be omitted if on a single statement is present:
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
// Ping the application server to see if it's alive
|
||||
bool PingServer(QUrl url)
|
||||
{
|
||||
QNetworkAccessManager manager;
|
||||
QEventLoop loop;
|
||||
QNetworkReply *reply;
|
||||
QVariant redirectUrl;
|
||||
|
||||
url.setPath("/utils/ping");
|
||||
|
||||
do
|
||||
{
|
||||
reply = manager.get(QNetworkRequest(url));
|
||||
|
||||
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
|
||||
loop.exec();
|
||||
|
||||
redirectUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
|
||||
url = redirectUrl.toUrl();
|
||||
|
||||
if (!redirectUrl.isNull())
|
||||
delete reply;
|
||||
|
||||
} while (!redirectUrl.isNull());
|
||||
|
||||
if (reply->error() != QNetworkReply::NoError)
|
||||
return false;
|
||||
|
||||
QString response = reply->readAll();
|
||||
|
||||
if (response != "PING")
|
||||
{
|
||||
qDebug() << "Failed to connect, server response: " << response;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Python
|
||||
******
|
||||
|
||||
Python is used for the backend web server. All code must be compatible with
|
||||
Python is used for the backend web server. All code must be compatible with
|
||||
Python 2.7 and should include PyDoc comments whilst following the official
|
||||
Python coding standards defined in
|
||||
`PEP 8 <https://www.python.org/dev/peps/pep-0008/>`_. An example function along
|
||||
Python coding standards defined in
|
||||
`PEP 8 <https://www.python.org/dev/peps/pep-0008/>`_. An example function along
|
||||
with the required file header is shown below::
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# pgAdmin 4 - PostgreSQL Tools
|
||||
#
|
||||
# Copyright (C) 2013 - 2019, The pgAdmin Development Team
|
||||
# Copyright (C) 2013 - 2021, The pgAdmin Development Team
|
||||
# This software is released under the PostgreSQL Licence
|
||||
#
|
||||
##########################################################################
|
||||
@@ -185,12 +137,12 @@ with the required file header is shown below::
|
||||
def get_nodes():
|
||||
"""Return a JSON document listing the server groups for the user"""
|
||||
groups = ServerGroup.query.filter_by(user_id=current_user.id)
|
||||
|
||||
|
||||
value = ''
|
||||
for group in groups:
|
||||
value += '{"id":%d,"label":"%s","icon":"icon-server-group","inode":true},' \
|
||||
% (group.id, group.name)
|
||||
|
||||
|
||||
value = value[:-1]
|
||||
|
||||
return value
|
||||
|
||||
return value
|
||||
@@ -34,7 +34,7 @@ are disabled if inapplicable.)
|
||||
column. For more information on the data types that are supported by
|
||||
PostgreSQL, refer to Chapter 8 of the Postgres core documentation. This field
|
||||
is required.
|
||||
* Use the *Length* and *Precision* fields to specify the maximum number of
|
||||
* Use the *Length/Precision* and *Scale* fields to specify the maximum number of
|
||||
significant digits in a numeric value, or the maximum number of characters in
|
||||
a text value.
|
||||
* Use the drop-down listbox next to *Collation* to apply a collation setting to
|
||||
@@ -109,7 +109,7 @@ Click the *Variables* tab to continue.
|
||||
:alt: Column dialog variables tab
|
||||
:align: center
|
||||
|
||||
Use the *Variables* tab to to specify the number of distinct values that may be
|
||||
Use the *Variables* tab to specify the number of distinct values that may be
|
||||
present in the column; this value overrides estimates made by the ANALYZE
|
||||
command. Click the *Add* icon (+) to add a *Name*/*Value* pair:
|
||||
|
||||
|
||||
@@ -24,6 +24,13 @@ Use the fields in the *General* tab to identify the compound trigger:
|
||||
The name will be displayed in the *pgAdmin* tree control.
|
||||
* Store notes about the compound trigger in the *Comment* field.
|
||||
|
||||
.. image:: images/compound_trigger_general_enabled.png
|
||||
:alt: Trigger enabled in dialog tab
|
||||
:align: center
|
||||
|
||||
* *Trigger enabled* field is available in compound trigger dialog once the trigger is created.
|
||||
You can select one of the four options available.
|
||||
|
||||
Click the *Events* tab to continue.
|
||||
|
||||
.. image:: images/compound_trigger_events.png
|
||||
|
||||
@@ -14,11 +14,7 @@
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
import builtins
|
||||
else:
|
||||
import __builtin__ as builtins
|
||||
import builtins
|
||||
|
||||
# Ensure the global server mode is set.
|
||||
builtins.SERVER_MODE = None
|
||||
@@ -212,8 +208,8 @@ htmlhelp_basename = 'pgadmin4'
|
||||
# (source start file, target name, title, author, documentclass
|
||||
# [howto/manual]).
|
||||
latex_documents = [
|
||||
('index', 'pgadmin4.tex', u'pgAdmin 4 Documentation',
|
||||
u'The pgAdmin Development Team', 'manual'),
|
||||
('index', 'pgadmin4.tex', 'pgAdmin 4 Documentation',
|
||||
'The pgAdmin Development Team', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
@@ -251,6 +247,6 @@ latex_elements = {
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
('index', 'pgadmin4', u'pgAdmin 4 Documentation',
|
||||
[u'The pgAdmin Development Team'], 1)
|
||||
('index', 'pgadmin4', 'pgAdmin 4 Documentation',
|
||||
['The pgAdmin Development Team'], 1)
|
||||
]
|
||||
@@ -5,7 +5,16 @@
|
||||
***************************
|
||||
|
||||
There are multiple configuration files that are read at startup by pgAdmin. These
|
||||
are as follows:
|
||||
files are used for configuration options that:
|
||||
|
||||
* may be required to be set prior to startup of pgAdmin as they control how
|
||||
the application will operate.
|
||||
* system administrators may wish to control across an organisation to enforce
|
||||
security policies.
|
||||
* are so rarely or unlikely to be changed that it doesn't
|
||||
make sense to allow them to be changed through the user interface.
|
||||
|
||||
The configuration files are as follows:
|
||||
|
||||
* ``config.py``: This is the main configuration file, and should not be modified.
|
||||
It can be used as a reference for configuration settings, that may be overridden
|
||||
@@ -23,10 +32,24 @@ are as follows:
|
||||
and may be created by users in the same directory as ``config.py`` if
|
||||
needed.
|
||||
|
||||
.. note:: If the SERVER_MODE setting is changed in ``config_distro.py`` or ``config_local.py``,
|
||||
you will most likely need to re-set the LOG_FILE, SQLITE_PATH, SESSION_DB_PATH
|
||||
and STORAGE_DIR values as well as they will have been set based on the default
|
||||
configuration or overridden by the runtime.
|
||||
* ``config_system.py``: This file is read after ``config_local.py`` and is
|
||||
intended for system administrators to include settings that are configured
|
||||
system-wide from a secure location that users cannot normally modify and that
|
||||
is outside of the pgAdmin installation. The location for this file varies
|
||||
based on the platform, and only needs to be created if desired.
|
||||
|
||||
.. csv-table::
|
||||
:header: "**Platform**", "**File Location**"
|
||||
|
||||
Linux,/etc/pgadmin/config_system.py
|
||||
macOS,/Library/Preferences/pgadmin/config_system.py
|
||||
Windows,%CommonProgramFiles%\pgadmin\config_system.py
|
||||
|
||||
.. note:: If the SERVER_MODE setting is changed in ``config_distro.py``,
|
||||
``config_local.py``, or ``config_system.py`` you will most likely need to
|
||||
re-set the LOG_FILE, SQLITE_PATH, SESSION_DB_PATH and STORAGE_DIR values
|
||||
as well as they will have been set based on the default configuration or
|
||||
overridden by the runtime.
|
||||
|
||||
The default ``config.py`` file is shown below for reference:
|
||||
|
||||
|
||||
@@ -17,12 +17,11 @@ maintenance functions to be executed. Multiple versions are included in the
|
||||
following directories to allow use with different versions of the database
|
||||
server:
|
||||
|
||||
* PostgreSQL 9.4: */usr/local/pgsql-9.4*
|
||||
* PostgreSQL 9.5: */usr/local/pgsql-9.5*
|
||||
* PostgreSQL 9.6: */usr/local/pgsql-9.6*
|
||||
* PostgreSQL 10: */usr/local/pgsql-10*
|
||||
* PostgreSQL 11: */usr/local/pgsql-11*
|
||||
* PostgreSQL 12: */usr/local/pgsql-12*
|
||||
* PostgreSQL 13: */usr/local/pgsql-13*
|
||||
|
||||
The most recent version of the utilities is used by default; this may be
|
||||
changed in the :ref:`preferences`.
|
||||
@@ -42,6 +41,20 @@ to login to pgAdmin. This variable is required and must be set at launch time.
|
||||
This is the password used when setting up the initial administrator account to
|
||||
login to pgAdmin. This variable is required and must be set at launch time.
|
||||
|
||||
**PGADMIN_DISABLE_POSTFIX**
|
||||
|
||||
*Default: <null>*
|
||||
|
||||
If left unset, a Postfix server will be started to deliver password reset
|
||||
emails.
|
||||
|
||||
If set to any value, the Postfix server will not be started, and pgAdmin will
|
||||
need to be configured to use an external mail server using the *PGADMIN_CONFIG_*
|
||||
options below.
|
||||
|
||||
This option is useful if you're running in an environment that prevents the use
|
||||
of sudo to start Postfix, or if you wish to use an external mail server.
|
||||
|
||||
**PGADMIN_ENABLE_TLS**
|
||||
|
||||
*Default: <null>*
|
||||
@@ -52,7 +65,7 @@ connections.
|
||||
|
||||
When TLS is enabled, a certificate and key must be provided. Typically these
|
||||
should be stored on the host file system and mounted from the container. The
|
||||
expected paths are /certs/server.crt and /certs/server.key
|
||||
expected paths are /certs/server.cert and /certs/server.key
|
||||
|
||||
**PGADMIN_LISTEN_ADDRESS**
|
||||
|
||||
@@ -60,7 +73,7 @@ expected paths are /certs/server.crt and /certs/server.key
|
||||
|
||||
Specify the local address that the servers listens on. The default should work
|
||||
for most users - in IPv4-only environments, this may need to be set to
|
||||
127.0.0.1.
|
||||
0.0.0.0.
|
||||
|
||||
**PGADMIN_LISTEN_PORT**
|
||||
|
||||
@@ -76,6 +89,13 @@ than using the default.
|
||||
Override the default file path for the server definition list. See the
|
||||
/pgadmin4/servers.json mapped file below for more information.
|
||||
|
||||
**GUNICORN_ACCESS_LOGFILE**
|
||||
|
||||
*Default: -* (stdout)
|
||||
|
||||
Specify an output file in which to store the Gunicorn access logs, instead of
|
||||
sending them to stdout.
|
||||
|
||||
**GUNICORN_THREADS**
|
||||
|
||||
*Default: 25*
|
||||
@@ -104,7 +124,27 @@ Mapped Files and Directories
|
||||
|
||||
The following files or directories can be mapped from the container onto the
|
||||
host machine to allow configuration to be customised and shared between
|
||||
instances:
|
||||
instances.
|
||||
|
||||
.. warning:: Warning: pgAdmin runs as the *pgadmin* user (UID: 5050) in the
|
||||
*pgadmin* group (GID: 5050) in the container. You must ensure that all files
|
||||
are readable, and where necessary (e.g. the working/session directory)
|
||||
writeable for this user on the host machine. For example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo chown -R 5050:5050 <host_directory>
|
||||
|
||||
On some filesystems that do not support extended attributes, it may not be
|
||||
possible to run pgAdmin without specifying a value for *PGADMIN_LISTEN_PORT*
|
||||
that is greater than 1024. In such cases, specify an alternate port when
|
||||
launching the container by adding the environment variable, for example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-e 'PGADMIN_LISTEN_PORT=5050'
|
||||
|
||||
Don't forget to adjust any host-container port mapping accordingly.
|
||||
|
||||
**/var/lib/pgadmin**
|
||||
|
||||
@@ -174,7 +214,7 @@ Run a TLS secured container using a shared config/storage directory in
|
||||
-v /private/var/lib/pgadmin:/var/lib/pgadmin \
|
||||
-v /path/to/certificate.cert:/certs/server.cert \
|
||||
-v /path/to/certificate.key:/certs/server.key \
|
||||
-v /tmp/servers.json:/servers.json \
|
||||
-v /tmp/servers.json:/pgadmin4/servers.json \
|
||||
-e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \
|
||||
-e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \
|
||||
-e 'PGADMIN_ENABLE_TLS=True' \
|
||||
@@ -292,7 +332,7 @@ adjusted as appropriate to the specific deployment:
|
||||
listen 443;
|
||||
server_name _;
|
||||
|
||||
ssl_certificate /etc/nginx/server.crt;
|
||||
ssl_certificate /etc/nginx/server.cert;
|
||||
ssl_certificate_key /etc/nginx/server.key;
|
||||
|
||||
ssl on;
|
||||
@@ -372,4 +412,4 @@ the container is launched like this:
|
||||
The *SCRIPT_NAME* environment variable has been set to tell the container it is
|
||||
being hosted under a subdirectory (in the same way as the *X-Script-Name* header
|
||||
is used with Nginx), and a label has been added to tell Traefik to route
|
||||
requests under the subdirectory to this container.
|
||||
requests under the subdirectory to this container.
|
||||
@@ -61,8 +61,7 @@ Use the *Privileges* panel to assign privileges to a role. Click the *Add* icon
|
||||
* Select the name of the role from the drop-down listbox in the *Grantee* field.
|
||||
* Click inside the *Privileges* field. Check the boxes to the left of one or
|
||||
more privileges to grant the selected privilege to the specified user.
|
||||
* Select the name of the role from the drop-down listbox in the *Grantor* field.
|
||||
The default grantor is the owner of the database.
|
||||
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
|
||||
|
||||
Click add to set additional privileges; to discard a privilege, click the trash
|
||||
icon to the left of the row and confirm deletion in the *Delete Row* popup.
|
||||
@@ -98,6 +97,19 @@ Follow these steps to add additional parameter value definitions; to discard a
|
||||
parameter, click the trash icon to the left of the row and confirm deletion in
|
||||
the *Delete Row* popup.
|
||||
|
||||
Click the *Advanced* tab to continue.
|
||||
|
||||
.. image:: images/database_advanced.png
|
||||
:alt: Database dialog advanced tab
|
||||
:align: center
|
||||
|
||||
Use the *Advanced* tab to set advanced parameters for the database.
|
||||
|
||||
* Use *Schema restriction* field to provide a SQL restriction that will be used
|
||||
against the pg_namespace table to limit the schemas that you see.
|
||||
For example, you might enter: *public* so that only *public* are shown in
|
||||
the pgAdmin browser.Separate entries with a comma or tab as you type.
|
||||
|
||||
Click the *SQL* tab to continue.
|
||||
|
||||
Your entries in the *Database* dialog generate a SQL command (see an example
|
||||
@@ -121,4 +133,3 @@ allows unlimited connections, and is available to all authenticated users.
|
||||
* Click the *Save* button to save work.
|
||||
* Click the *Cancel* button to exit without saving work.
|
||||
* Click the *Reset* button to restore configuration parameters.
|
||||
|
||||
@@ -16,9 +16,9 @@ superuser privileges to use the debugger.
|
||||
|
||||
Before using the debugger, you must modify the *postgresql.conf* file, adding
|
||||
the server-side debugger components to the the value of the
|
||||
*shared_preload_libraries* parameter:
|
||||
*shared_preload_libraries* parameter, for example:
|
||||
|
||||
shared_preload_libraries = '$libdir/*other_libraries*/plugin_debugger'
|
||||
shared_preload_libraries = '$libdir/plugin_debugger'
|
||||
|
||||
After modifying the *shared_preload_libraries* parameter, restart the server to
|
||||
apply the changes.
|
||||
@@ -81,6 +81,8 @@ Use the fields on the *Debugger* dialog to provide a value for each parameter:
|
||||
|
||||
Provide values required by the program, and click the *Debug* button to start
|
||||
stepping through the program.
|
||||
The values of the arguments provided here are saved. The values will be pre-filled
|
||||
next time the dialog opens. To clear the values, use the *Clear All* button.
|
||||
|
||||
.. image:: images/debug_step_in.png
|
||||
:alt: Debugger step-in demo
|
||||
|
||||
@@ -8,13 +8,8 @@ pgAdmin may be deployed as a desktop application by configuring the application
|
||||
to run in desktop mode and then utilising the desktop runtime to host the
|
||||
program on a supported Windows, Mac OS X or Linux installation.
|
||||
|
||||
The desktop runtime is a system-tray application that when launched, runs the
|
||||
pgAdmin server and launches a web browser to render the user interface. If
|
||||
additional instances of pgAdmin are launched, a new browser tab will be opened
|
||||
and be served by the existing instance of the server in order to minimise system
|
||||
resource utilisation. Clicking the icon in the system tray will present a menu
|
||||
offering options to open a new pgAdmin window, configure the runtime, view the
|
||||
server log and shut down the server.
|
||||
The desktop runtime is a standalone application that when launched, runs the
|
||||
pgAdmin server and opens a window to render the user interface.
|
||||
|
||||
.. note:: Pre-compiled and configured installation packages are available for
|
||||
a number of platforms. These packages should be used by end-users whereever
|
||||
@@ -24,7 +19,7 @@ server log and shut down the server.
|
||||
.. seealso:: For detailed instructions on building and configuring pgAdmin from
|
||||
scratch, please see the README file in the top level directory of the source code.
|
||||
For convenience, you can find the latest version of the file
|
||||
`here <https://git.postgresql.org/gitweb/?p=pgadmin4.git;a=blob_plain;f=README>`_,
|
||||
`here <https://git.postgresql.org/gitweb/?p=pgadmin4.git;a=blob;f=README.md>`_,
|
||||
but be aware that this may differ from the version included with the source code
|
||||
for a specific version of pgAdmin.
|
||||
|
||||
@@ -38,25 +33,53 @@ settings.
|
||||
|
||||
See :ref:`config_py` for more information on configuration settings.
|
||||
|
||||
Runtime
|
||||
*******
|
||||
Desktop Runtime Standalone Application
|
||||
======================================
|
||||
|
||||
When executed, the runtime will automatically try to execute the pgAdmin Python
|
||||
application. If execution fails, it will prompt you to adjust the Python Path
|
||||
to include the directories containing the pgAdmin code as well as any additional
|
||||
Python dependencies. You can enter a list of paths by separating them with a
|
||||
semi-colon character, for example:
|
||||
The Desktop Runtime is based on `NWjs <https://nwjs.io/>`_ which integrates a
|
||||
browser and the Python server creating a standalone application.
|
||||
|
||||
.. code-block:: bash
|
||||
.. image:: images/runtime_standalone.png
|
||||
:alt: Runtime Standalone
|
||||
:align: center
|
||||
|
||||
/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/;/Users/dpage/python-libs/
|
||||
Runtime Menu
|
||||
------------
|
||||
|
||||
The configuration settings are stored using the QSettings class in Qt, which
|
||||
will use an INI file on Unix systems (~/.config/pgadmin/pgadmin4.conf),
|
||||
a plist file on Mac OS X (~/Library/Preferences/org.pgadmin.pgadmin4.plist),
|
||||
and the registry on Windows (HKEY_CURRENT_USER\\Software\\pgadmin\\pgadmin4).
|
||||
.. image:: images/runtime_menu.png
|
||||
:alt: Runtime Menu
|
||||
:align: center
|
||||
|
||||
The configuration settings:
|
||||
Use the *File Menu* to access the *Runtime Menu*:
|
||||
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
| Option | Action |
|
||||
+=========================+=========================================================================================================+
|
||||
| *Configure...* | Click to open configuration dialog to configure fixed port, port number and connection timeout. |
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
| *View log...* | Click to open the view log dialog to view the pgAdmin 4 logs. |
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
| *Enter Full Screen* | Click to enter/exit the full screen mode. Keyboard Shortcuts: OSX (Cmd + Ctrl + F), Other OS (F10). |
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
| *Actual Size* | Click to change the window size to it original size. Keyboard Shortcuts: OSX (Cmd + 0), |
|
||||
| | Other OS (Ctrl + 0). |
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
| *Zoom In* | Click to increase the zoom level. Keyboard Shortcuts: OSX (Cmd + +), Other OS (Ctrl + +). |
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
| *Zoom Out* | Click to decrease the zoom level. Keyboard Shortcuts: OSX (Cmd + -), Other OS (Ctrl + -). |
|
||||
+-------------------------+---------------------------------------------------------------------------------------------------------+
|
||||
|
||||
Configuration Dialog
|
||||
--------------------
|
||||
|
||||
Use the *Runtime Menu* to access the *Configuration* dialog:
|
||||
|
||||
.. image:: images/runtime_configuration.png
|
||||
:alt: Runtime Configuration
|
||||
:align: center
|
||||
|
||||
Following are the details of the *Fixed port number?*, *Port Number*, and *Connection
|
||||
Timeout* configuration parameters:
|
||||
|
||||
.. table::
|
||||
:class: longtable
|
||||
@@ -65,12 +88,49 @@ The configuration settings:
|
||||
+--------------------------+--------------------+---------------------------------------------------------------+
|
||||
| Key | Type | Purpose |
|
||||
+==========================+====================+===============================================================+
|
||||
| ApplicationPath | String | The directory containing pgAdmin4.py |
|
||||
| FixedPort | Boolean | Use a fixed network port number rather than a random one. |
|
||||
+--------------------------+--------------------+---------------------------------------------------------------+
|
||||
| BrowserCommand | String | An alternate command to run instead of the default browser. |
|
||||
| PortNumber | Integer | The port number to use, if using a fixed port. |
|
||||
+--------------------------+--------------------+---------------------------------------------------------------+
|
||||
| ConnectionTimeout | Integer | The number of seconds to wait for application server startup. |
|
||||
+--------------------------+--------------------+---------------------------------------------------------------+
|
||||
| PythonPath | String | The Python module search path |
|
||||
+--------------------------+--------------------+---------------------------------------------------------------+
|
||||
|
||||
Log dialog
|
||||
----------
|
||||
|
||||
Use the *Runtime Menu* to access the *Log* dialog:
|
||||
|
||||
.. image:: images/runtime_view_log.png
|
||||
:alt: Runtime View Log
|
||||
:align: center
|
||||
|
||||
Click on the *Reload* button at the bottom to view the latest logs of pgAdmin 4
|
||||
Server.
|
||||
|
||||
When executed, the runtime will automatically try to execute the pgAdmin Python
|
||||
application. If execution fails, it will prompt you with error message
|
||||
displaying a *Configure* button at the bottom. You can configure a fixed port
|
||||
number to avoid clashes of the default random port number with other
|
||||
applications and a connection timeout if desired.
|
||||
|
||||
.. image:: images/runtime_error.png
|
||||
:alt: Runtime Error
|
||||
:align: center
|
||||
|
||||
If the error is related to Python Path or pgAdmin Python file then you need to
|
||||
create a file named 'dev_config.json' and specify the following entries:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"pythonPath": "/path/to/python.exe",
|
||||
"pgadminFile": "/path/to/pgAdmin4.py"
|
||||
}
|
||||
|
||||
Note that the *dev_config.py* file should only be required by developers who are
|
||||
working outside of a standard installation.
|
||||
|
||||
The configuration settings are stored in *runtime_config.json* file, which
|
||||
will be available on Unix systems (~/.local/share/pgadmin/),
|
||||
on Mac OS X (~/Library/Preferences/pgadmin),
|
||||
and on Windows (%APPDATA%/pgadmin).
|
||||
@@ -14,3 +14,5 @@ PL/SQL code.
|
||||
debugger
|
||||
query_tool
|
||||
editgrid
|
||||
schema_diff
|
||||
erd_tool
|
||||
@@ -0,0 +1,235 @@
|
||||
.. _erd_tool:
|
||||
|
||||
*****************
|
||||
`ERD Tool`:index:
|
||||
*****************
|
||||
|
||||
The Entity-Relationship Diagram (ERD) tool is a database design tool that provides a graphical representation of database tables, columns, and inter-relationships. ERD can give sufficient information for the database administrator to follow when developing and maintaining the database. The ERD Tool allows you to:
|
||||
|
||||
* Design and visualize the database tables and their relationships.
|
||||
* Add notes to the diagram.
|
||||
* Auto-align the tables and links for cleaner visualization.
|
||||
* Save the diagram and open it later to continue working on it.
|
||||
* Generate ready to run SQL from the database design.
|
||||
* Generate the database diagram for an existing database.
|
||||
|
||||
.. image:: images/erd_tool.png
|
||||
:alt: ERD tool window
|
||||
:align: center
|
||||
|
||||
You can open multiple copies of the ERD tool in individual tabs simultaneously. To close a copy of the ERD tool, click the *X* in the upper-right hand corner of the tab bar.
|
||||
|
||||
Toolbar
|
||||
*******
|
||||
|
||||
The *ERD Tool* toolbar uses context-sensitive icons that provide shortcuts to frequently performed tasks. The option is enabled for the highlighted icon and is disabled for the grayed-out icon.
|
||||
|
||||
.. image:: images/erd_tool_toolbar.png
|
||||
:alt: ERD tool toolbar
|
||||
:align: center
|
||||
|
||||
Hover over an icon on Toolbar to display a tooltip that describes the icon's functionality.
|
||||
|
||||
File Options
|
||||
************
|
||||
|
||||
.. table::
|
||||
:class: longtable
|
||||
:widths: 1 4 1
|
||||
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| Icon | Behavior | Shortcut |
|
||||
+======================+===================================================================================================+================+
|
||||
| *Open File* | Click the *Open File* icon to load a previously saved diagram. | Ctrl + O |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Save* | Click the *Save* icon to perform a quick-save of a previously saved diagram, or to save the | Ctrl + S |
|
||||
| | diagram to a file. | |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Save as* | Click the *Save As* to open a new browser dialog and specify a new location to save the diagram. | Ctrl + Shift + |
|
||||
| | | S |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
|
||||
Export Options
|
||||
**************
|
||||
|
||||
.. table::
|
||||
:class: longtable
|
||||
:widths: 1 4 1
|
||||
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| Icon | Behavior | Shortcut |
|
||||
+======================+===================================================================================================+================+
|
||||
| *Generate SQL* | Click the *Generate SQL* icon to generate the DDL SQL for the diagram and open a query tool | Option + Ctrl +|
|
||||
| | with the generated SQL ready for execution. | S |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Download image* | Click the *Download image* icon to save the ERD diagram in a image formate | Option + Ctrl +|
|
||||
| | | I |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
|
||||
Editing Options
|
||||
***************
|
||||
|
||||
.. table::
|
||||
:class: longtable
|
||||
:widths: 1 4 1
|
||||
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| Icon | Behavior | Shortcut |
|
||||
+======================+===================================================================================================+================+
|
||||
| *Add table* | Click this button to add a new table to the diagram. On clicking, this will open a table dialog | Option/Alt + |
|
||||
| | where you can put the table details. | Ctrl + A |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Edit table* | Click this button to edit a table on the diagram. On clicking, this will open a table dialog | Option/Alt + |
|
||||
| | where you can change table details. This will enable when a table is selected. | Ctrl + E |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Clone table* | Click this button to clone the complete table structure, name it with a auto generated name and | Option/Alt + |
|
||||
| | put it in the diagram. | Ctrl + C |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Drop table/link* | You can drop a table or link using this button. You need to select a table or link and click on | Option/Alt + |
|
||||
| | this button to drop it. | Ctrl + D |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
|
||||
Table Relationship Options
|
||||
**************************
|
||||
|
||||
.. table::
|
||||
:class: longtable
|
||||
:widths: 1 4 1
|
||||
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| Icon | Behavior | Shortcut |
|
||||
+======================+===================================================================================================+================+
|
||||
| *1M* | Click this button to open a one-to-many relationship dialog to add a relationship between the | Option/Alt + |
|
||||
| | two tables. The selected table becomes the referencing table and will have the *many* endpoint of | Ctrl + O |
|
||||
| | the link. | |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *MM* | Click this button to open a many-to-many relationship dialog to add a relationship between the | Option/Alt + |
|
||||
| | two tables. This option will create a new table based on the selected columns for the two relating| Ctrl + M |
|
||||
| | tables and link them. | |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
|
||||
Utility Options
|
||||
***************
|
||||
|
||||
.. table::
|
||||
:class: longtable
|
||||
:widths: 1 4 1
|
||||
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| Icon | Behavior | Shortcut |
|
||||
+======================+===================================================================================================+================+
|
||||
| *Add/Edit note* | Click this button to make notes on tables nodes while designing the database. | Option/Alt + |
|
||||
| | | Ctrl + N |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Auto align* | Click this button to auto align all tables and links to make it look more cleaner. | Option/Alt + |
|
||||
| | | Ctrl + L |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Show details* | Click this button to toggle the column details visibility. It allows you to show few or more | Option/Alt + |
|
||||
| | column details. | Shift + D |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
|
||||
Zoom Options
|
||||
************
|
||||
|
||||
.. table::
|
||||
:class: longtable
|
||||
:widths: 1 4 1
|
||||
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| Icon | Behavior | Shortcut |
|
||||
+======================+===================================================================================================+================+
|
||||
| *Zoom to fit* | Click this button to zoom in/out automatically and fit all the tables to the view. | Option/Alt + |
|
||||
| | | Shift + F |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Zoom in* | Click this button to zoom in the diagram. | Option/Alt + |
|
||||
| | | Shift + "+" |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
| *Zoom out* | Click this button to zoom out the diagram. | Option/Alt + |
|
||||
| | | Shift + "-" |
|
||||
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
|
||||
|
||||
Table Dialog
|
||||
************
|
||||
|
||||
.. image:: images/erd_table_dialog.png
|
||||
:alt: ERD tool table dialog
|
||||
:align: center
|
||||
|
||||
The table dialog allows you to:
|
||||
|
||||
* Change the table structure details.
|
||||
* It can be used edit an existing table or add a new one.
|
||||
* Refer :ref:`table dialog <table_dialog>` for information on different fields.
|
||||
|
||||
Table Node
|
||||
**********
|
||||
|
||||
.. image:: images/erd_table_node.png
|
||||
:alt: ERD tool table node
|
||||
:align: center
|
||||
|
||||
The table node shows table details in a graphical representation:
|
||||
|
||||
* The top bar has a *details toggle button* that is used to toggle column details visibility. There is also a *note button* that is visible only if there is some note added. you can click on this button to quickly change the note.
|
||||
* The first row shows the schema name of the table. Eg. *public* in above image.
|
||||
* The second row shows the table name. Eg. *users* in above image.
|
||||
* All other rows below the table name are the columns of the table along with data type. If the column is a primary key then it will have lock key icon eg. id is the primary key in above image. Otherwise, it will have column icon.
|
||||
* you can click on the node and drag to move on the canvas.
|
||||
* Upon double click on the table node or by clicking the edit button from the toolbar, the table dialog opens where you can change the table details. Refer :ref:`table dialog <table_dialog>` for information on different fields.
|
||||
|
||||
The One to Many Link Dialog
|
||||
***************************
|
||||
|
||||
.. image:: images/erd_1m_dialog.png
|
||||
:alt: ERD tool 1M dialog
|
||||
:align: center
|
||||
|
||||
The one to many link dialog allows you to:
|
||||
|
||||
* Add a foreign key relationship between two tables.
|
||||
* *Local Table* is the table that references a table and has the *many* end point.
|
||||
* *Local Column* the column that references.
|
||||
* *Referenced Table* is the table that is being referred and has the *one* end point.
|
||||
* *Referenced Column* the column that is being referred.
|
||||
|
||||
The Many to Many Link Dialog
|
||||
****************************
|
||||
|
||||
.. image:: images/erd_mm_dialog.png
|
||||
:alt: ERD tool MM dialog
|
||||
:align: center
|
||||
|
||||
The many to many link dialog allows you to:
|
||||
|
||||
* Add a many to many relationship between two tables.
|
||||
* It creates a relationship tables having columns derived from the two tables and link them to the tables.
|
||||
* *Left Table* is the first table that is to be linked. It will receive the *one* endpoint of the link with the new relation table.
|
||||
* *Left Column* the column of the first table, that will always be a primary key.
|
||||
* *Right Table* is the second table that is to be linked. It will receive the *one* endpoint of the link with the new relation table.
|
||||
* *Right Column* the column of the second table, that will always be a primary key.
|
||||
|
||||
The Table Link
|
||||
**************
|
||||
|
||||
.. image:: images/erd_table_link.png
|
||||
:alt: ERD tool table link
|
||||
:align: center
|
||||
|
||||
The table link shows relationship between tables:
|
||||
|
||||
* The single line endpoint of the link shows the column that is being referred.
|
||||
* The three line endpoint of the link shows the column that refers.
|
||||
* If one of the columns that is being referred or that refers is removed from the table then the link will get dropped.
|
||||
* you can click on the link and drag to move on the canvas.
|
||||
|
||||
|
||||
The Table Notes
|
||||
***************
|
||||
|
||||
.. image:: images/erd_table_note.png
|
||||
:alt: ERD tool table note
|
||||
:align: center
|
||||
|
||||
* You can use the notes popup to mark some notes while designing the database.
|
||||
* You open the pop-up using the toolbar note button.
|
||||
* If some note is added to a table then it will have notes button on the table node. You can click on the button to check/update notes.
|
||||
@@ -35,15 +35,15 @@ Click the *Definition* tab to continue.
|
||||
|
||||
Use the fields in the *Definition* tab to define the event trigger:
|
||||
|
||||
* Select a radio button in the *Enabled Status* field to specify a status for
|
||||
the trigger: *Enable* *Disable*, *Replica* *Always*.
|
||||
* Select a value from the drop down of *Trigger Enabled* field to specify a status
|
||||
for the trigger: *Enable* *Disable*, *Replica* *Always*.
|
||||
* Use the drop-down listbox next to *Trigger function* to specify an existing
|
||||
function. A trigger function takes an empty argument list, and returns a
|
||||
value of type event_trigger.
|
||||
* Select a radio button in the *Events* field to specify when the event trigger
|
||||
will fire: *DDL COMMAND START*, *DDL COMMAND END*, or *SQL DROP*.
|
||||
* Use the *When* field to write a condition for the event trigger that must be
|
||||
satisfied before the event trigger can execute.
|
||||
* Select a value from the drop down of *Events* field to specify when the event
|
||||
trigger will fire: *DDL COMMAND START*, *DDL COMMAND END*, or *SQL DROP*.
|
||||
* Use the *When TAG in* field to enter filter values for TAG for which the trigger
|
||||
will be executed. The values must be in single quotes separated by comma.
|
||||
|
||||
Click the *Security Labels* tab to continue.
|
||||
|
||||
|
||||
@@ -58,13 +58,15 @@ Click the *Columns* tab to continue.
|
||||
:alt: Exclusion constraint dialog columns tab
|
||||
:align: center
|
||||
|
||||
Use the fields in the *Columns* tab to to specify the column(s) to which the
|
||||
constraint applies. Use the drop-down listbox next to *Column* to select a
|
||||
column and click the *Add* icon (+) to provide details of the action on the
|
||||
column:
|
||||
Use the fields in the *Columns* tab to specify the column(s) or expression(s)
|
||||
to which the constraint applies. Use the *Is expression ?* switch to enable
|
||||
expression text input. Use the drop-down listbox next to *Column*
|
||||
to select a column. Once the *Column* is selected or the *Expression* is
|
||||
entered then click the *Add* icon (+) to provide details of the action on the
|
||||
column/expression:
|
||||
|
||||
* The *Column* field is populated with the selection made in the *Column*
|
||||
drop-down listbox.
|
||||
* The *Col/Exp* field is populated with the selection made in the *Column*
|
||||
drop-down listbox or the *Expression* entered.
|
||||
* If applicable, use the drop-down listbox in the *Operator class* to specify
|
||||
the operator class that will be used by the index for the column.
|
||||
* Move the *DESC* switch to *DESC* to specify a descending sort order. The
|
||||
|
||||
@@ -75,9 +75,7 @@ to assign a set of privileges.
|
||||
* Select the name of the role from the drop-down listbox in the *Grantee* field.
|
||||
* Click inside the *Privileges* field. Check the boxes to the left of one or
|
||||
more privileges to grant the selected privileges to the specified user.
|
||||
* Select the name of the role granting the privileges from the drop-down listbox
|
||||
in the *Grantor* field. The default grantor is the owner of the foreign data
|
||||
wrapper.
|
||||
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
|
||||
|
||||
Click add to assign additional privileges; to discard a privilege, click the
|
||||
trash icon to the left of the row and confirm deletion in the *Delete Row*
|
||||
@@ -108,5 +106,3 @@ pre-existing validator and handler functions, *dblink_fdw_validator* and
|
||||
* Click the *Save* button to save work.
|
||||
* Click the *Cancel* button to exit without saving work.
|
||||
* Click the *Reset* button to restore configuration parameters.
|
||||
|
||||
|
||||
@@ -65,9 +65,7 @@ Click *Add* before you assign a set of privileges.
|
||||
* Select the name of the role from the drop-down listbox in the *Grantee* field.
|
||||
* Click inside the *Privileges* field. Check the boxes to the left of one or
|
||||
more privileges to grant the selected privileges to the specified user.
|
||||
* Select the name of the role from the drop-down listbox in the *Grantor* field.
|
||||
The default grantor is the owner of the foreign server. This is a required
|
||||
field.
|
||||
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
|
||||
|
||||
Click *Add* to assign a new set of privileges; to discard a privilege, click the
|
||||
trash icon to the left of the row and confirm deletion in the *Delete Row*
|
||||
|
||||
@@ -49,7 +49,7 @@ Click the *Columns* tab to continue.
|
||||
:alt: Foreign table dialog columns tab
|
||||
:align: center
|
||||
|
||||
Use the fields in the *Columns* tab to to add columns and their attributes to
|
||||
Use the fields in the *Columns* tab to add columns and their attributes to
|
||||
the table. Click the *Add* icon (+) to define a column:
|
||||
|
||||
* Use the *Name* field to add a descriptive name for the column.
|
||||
@@ -120,9 +120,7 @@ Use the *Privileges* panel to assign privileges to a role. Click the *Add* icon
|
||||
drop-down listbox in the *Grantee* field.
|
||||
* Click inside the *Privileges* field. Check the boxes to the left of one or
|
||||
more privileges to grant the selected privilege to the specified user.
|
||||
* Select the name of the role that owns the foreign table from the drop-down
|
||||
listbox in the *Grantor* field. The default grantor is the owner of the
|
||||
database.
|
||||
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
|
||||
|
||||
Click the *Add* icon (+) to assign additional privileges; to discard a
|
||||
privilege, click the trash icon to the left of the row and confirm deletion in
|
||||
@@ -166,5 +164,3 @@ columns and two options.
|
||||
* Click the *Save* button to save work.
|
||||
* Click the *Cancel* button to exit without saving work.
|
||||
* Click the *Reset* button to restore configuration parameters.
|
||||
|
||||
|
||||
@@ -140,8 +140,7 @@ role.
|
||||
* Select the name of the role from the drop-down listbox in the *Grantee* field.
|
||||
* Click inside the *Privileges* field. Check the boxes to the left of one or
|
||||
more privileges to grant the selected privilege to the specified user.
|
||||
* Select the name of the role from the drop-down listbox in the *Grantor* field.
|
||||
The default grantor is the owner of the database.
|
||||
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
|
||||
|
||||
Click the *Add* icon (+) to assign additional privileges; to discard a
|
||||
privilege, click the trash icon to the left of the row and confirm deletion in
|
||||
@@ -184,6 +183,3 @@ function have three columns (p_ename, p_sal and p_comm).
|
||||
* Click the *Save* button to save work.
|
||||
* Click the *Cancel* button to exit without saving work.
|
||||
* Click the *Reset* button to restore configuration parameters.
|
||||
|
||||
|
||||
|
||||
@@ -35,6 +35,8 @@ Mode is pre-configured for security.
|
||||
login
|
||||
user_management
|
||||
change_user_password
|
||||
ldap
|
||||
kerberos
|
||||
|
||||
|
||||
.. note:: Pre-compiled and configured installation packages are available for
|
||||
@@ -64,6 +66,8 @@ display. To open the *Preferences* dialog, select *Preferences* from the *File*
|
||||
for the dialog. You can access additional Postgres help by navigating through
|
||||
the *Help* menu, and selecting the name of the resource that you wish to open.
|
||||
|
||||
You can search for objects in the database using the :ref:`Search objects <search_objects>`
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
@@ -74,6 +78,7 @@ the *Help* menu, and selecting the name of the resource that you wish to open.
|
||||
tree_control
|
||||
preferences
|
||||
keyboard_shortcuts
|
||||
search_objects
|
||||
|
||||
Before using pgAdmin to manage objects that reside on a server, you must define a
|
||||
connection to the server; for more information please see *Connecting to a Server*
|
||||
|
||||
@@ -55,8 +55,7 @@ the object.
|
||||
more privileges to grant the selected privileges to the specified user. If
|
||||
privileges have previously been granted on a database object, unchecking a
|
||||
privilege for a group or user will result in revoking that privilege.
|
||||
* If enabled, select the name of the role from the drop-down listbox in the
|
||||
*Grantor* field. The default grantor is the owner of the database.
|
||||
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
|
||||
* Click the *Add* icon (+) to assign a set of privileges to another role; to
|
||||
discard a privilege, click the trash icon to the left of the row and confirm
|
||||
deletion in the *Delete Row* dialog.
|
||||
@@ -89,4 +88,4 @@ privileges *WITH GRANT OPTION* on the *sales_meetings* and the
|
||||
* Click the *Back* button to select or deselect additional database objects,
|
||||
roles and privileges.
|
||||
* Click the *Cancel* button to exit without saving work.
|
||||
* Click the *Finish* button to save selections and exit the wizard.
|
||||
* Click the *Finish* button to save selections and exit the wizard.
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 299 KiB After Width: | Height: | Size: 299 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 166 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 184 KiB After Width: | Height: | Size: 184 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |