Commit Graph

576 Commits

Author SHA1 Message Date
Ashesh Vashi
d9c84edf9a A valid ip address can be IPv4/IPv6 2020-04-14 18:45:45 +05:30
Libor M
6a9af07f7a Fixed gettext usage:
- fixed gettext usage with .format() only for original text with %s
  - fixed typos
  - fixed translation yes/no buttons in the dialog.
  - improved translating sentences without "connecting" words (eg. see web/pgadmin/dashboard/static/js/dashboard.js,
     word 'cancel' needs to be translated in the Czech language as 'zrušit' but in another sentence as 'zrušení')
  - added gettext for text translations.
2020-04-10 14:52:41 +05:30
Ashesh Vashi
1a34f61b24 Moved the ip-address check functionality to a separate file to improve
the maintainability of the code.
2020-04-08 16:50:14 +05:30
Aditya Toshniwal
c9d04684ce Ensure that all the transactions should be canceled before closing the connections when a server is disconnected using pgAdmin. Fixes #5142 2020-02-28 14:12:44 +05:30
Aditya Toshniwal
915b09255c Added Python 3.8 support. Fixes #5179
1) Upgraded passlib==1.7.1 to passlib==1.7.2
2) Replace unmaintained Flask-Security with maintained Flask-Security-Too package, which is also compatible with python 3.8
3) Other compatibility code changes.
2020-02-18 12:10:38 +05:30
Akshay Joshi
2ae279a382 Remove the deprecated 'is_xhr' parameter of flask.request object. 2020-02-10 12:31:52 +05:30
Khushboo Vashi
45f2e35a99 Added Schema Diff tool to compare two schemas and generate the difference script.
Currently supported objects are Table, View, Materialized View, Function and Procedure.

Backend comparison of two schemas implemented by: Akshay Joshi

Fixes #3452.
2020-01-10 15:42:09 +05:30
Pradip Parkale
ed279cac31 Improve the test framework to run for multiple classes defined in a single file. Fixes #5071. 2020-01-10 11:48:36 +05:30
Dave Page
01c7636c75 Update copyright notices for 2020. 2020-01-02 14:43:50 +00:00
Aditya Toshniwal
4ed2d74d9c 1) Fix network disconnect issue while establishing the connection via SSH Tunnel and it impossible to expand the Servers node. Fixes #4724.
2) Fix server connection drops out issue in query tool. Fixes #4818
3) Fix VPN network disconnect issue where pgAdmin4 hangs on expanding the Servers node. Fixes #4926.
4) Ensure that the Servers collection node should expand independently of server connections. Fixes #4933.

Set the default connection timeout to 10 seconds instead of 0.
2019-11-26 09:04:41 +05:30
Akshay Joshi
de878b3198 Refactored code of table and it's child nodes.
1) Remove duplicate logic.
2) Child node specific logic should be inside the child node and table node gets the required information from the respective child node.

Note:- Refactoring of columns node still in progress.

Fixes #4807
2019-11-15 14:45:55 +05:30
Akshay Joshi
f22134dabd Ensure that the superuser should be able to create database and role, as the superuser
overrides all the access restrictions.
Fixes #4792 Fixes #4878
2019-11-14 18:14:53 +05:30
Yosry Muhammad
687204771c Add support in query history to show internal queries generated by pgAdmin during save data operations. Fixes #4612 2019-08-16 17:17:12 +05:30
Aditya Toshniwal
db7a2e3023 Add a --modules option to the RE-SQL test suite to allow testing of specific object types. Fixes #4560 2019-08-06 13:43:49 +01:00
Dave Page
3f4d5a687b Rename horribly named function. 2019-07-12 13:00:23 +01:00
Akshay Joshi
776884860e Ensure parameter values are quoted when needed when editing roles. Fixes #4393 2019-07-04 15:00:29 +01:00
Aditya Toshniwal
0d42f8026c Fix SSH tunnel password decryption. Fixes #4320 2019-06-25 07:06:04 -04:00
Aditya Toshniwal
6e8ebbd375 Allow editing of data where a primary key column includes a % sign in the value. Fixes #4036
Fix an XSS issue seen in View/Edit data mode if a column name includes HTML. Fixes #4367
2019-06-20 12:21:37 +01:00
Akshay Joshi
9e65c971a3 Add a framework for testing reversed engineered SQL and CRUD API endpoints. Fixes #4202 2019-06-18 14:28:25 +01:00
Dave Page
71919a4ce9 Prevent the "Please login to access this page" message displaying multiple times. Fixes #4306 2019-06-17 14:12:36 +01:00
Aditya Toshniwal
82bd94e696 Fix connection restoration issue when pgAdmin server is restarted and the page is refreshed. Fixes #4357 2019-06-14 11:50:01 +05:30
Dave Page
6d52f2b911 Initial support for PostgreSQL 12. Fixes #4283. Fixes #4288. Fixes #4290. 2019-06-10 14:24:45 +01:00
Aditya Toshniwal
f561c0cee6 Fix keyboard navigation in "inner" tabsets such as the Query Tool and Debugger. Fixes #4195 2019-06-10 11:10:49 +01:00
Aditya Toshniwal
a588c2994d 1) Fix issue where SSH tunnel connection using password is failing, it's regression of Master Password. Fixes #4320
2) Fix some more issues related to SSH Tunnel(By: Akshay Joshi)
2019-06-05 12:07:24 +05:30
Dave Page
2dd075161d Allow the UI layout to be fully locked or to prevent docking changes. Fixes #2653 2019-05-31 11:51:30 -04:00
Akshay Joshi
aa95ff9f57 Fix encoding issue for background process, it is regression of Master Password. Fixes #4303 2019-05-29 12:50:48 +05:30
Aditya Toshniwal
dfa892d2a2 1. Added Master Password to increase the security of saved passwords. Fixes #4184
2. In server(web) mode, update all the saved server credentials when user password is changed. Fixes #3377
2019-05-28 12:00:18 +05:30
Khushboo Vashi
6f0eafb223 Fixed CSRF security vulnerability issue. per Alvin Lindstam. Fixes #4217
Initial patch by: Khushboo Vashi
Modified by: Ashesh Vashi and Murtuza Zabuawala
2019-05-28 10:59:51 +05:30
Khushboo Vashi
c21ea3c342 Ensure that pgAdmin4 should work properly with psycopg2 v2.8. Fixes #4143 2019-04-08 17:49:50 +05:30
Aditya Toshniwal
7627e9c699 Display errors during CSV download from the Query Tool in the UI rather than putting them in the CSV file. Fixes #4085
Ensure the toolbar buttons are properly reset following a CSV download in the Query Tool. Fixes #4096
2019-03-29 14:31:33 +00:00
Dave Page
ae23f146d1 Use the user's full email address (not just the username part) as the basis for the storage directory name.. Fixes #3887 2019-03-22 09:36:13 +00:00
Usman Muzaffar
be26fc540c Many fixes to the stability of the feature tests, including:
tree toggle issue
Query tool inteliSence issue eg. when there is only one option and drop down is not shown
Backup and restore windows locator changes
Fixes required due to resolving rm # 4041
Dependent tab not showing data sometime, so refreshed the page and handled it
Due to change of logic for auto commit, did the required changes
Due to fix of RM 4062, did the required workaround which broke the test case.
2019-03-21 12:04:37 +00:00
Khushboo Vashi
e4417229aa Update all Python and JS dependencies. Fixes #4019 2019-03-14 15:11:16 +00:00
Khushboo Vashi
efeb9d6d20 Fix regression issue caused due to encoding fixes. 2019-03-04 16:11:20 +05:30
Dave Page
ecbba79c2a Fix PEP-8 issue. 2019-03-01 14:19:08 +00:00
Khushboo Vashi
849e34c2f7 Add full support and testsfor all PG server side encodings. Fixes #3992. Fixes #3982. Fixes #3911 2019-03-01 13:51:50 +00:00
Aditya Toshniwal
e6e7cf0f69 Fix support for bigint's in JSONB data. Fixes #3587 2019-02-27 13:39:47 +00:00
Aditya Toshniwal
59446bb4b5 Ensure JSON data isn't modified in-flight by psycopg2 when using View/Edit data. Fixes #3600 2019-02-25 10:34:36 +00:00
Khushboo Vashi
34045efb38 Modify the Download as CSV option to use the same connection as the Query Tool its running in so temporary tables etc. can be used. Fixes #3673 2019-02-20 11:49:45 +00:00
Aditya Toshniwal
292ac32db5 Fix editing of table data with a JSON primary key. Fixes #3912 2019-02-20 11:15:39 +00:00
Ashesh Vashi
eb3d3980e0 Use 'set_config(...)' function to update the 'bytea_output' settings
instead of 'UPDATE' statement, which is not allowed in the the read-only
instances.

Reported by: Robert J. Rotter
Solution provided by: Tom Lane

Fixes #3973
2019-02-08 10:18:32 +05:30
Akshay Joshi
22d458b01e Close connections gracefully when the user logs out of pgAdmin. Fixes #3942 2019-02-06 13:17:52 +00:00
Cyril Jouve
b786c4c140 Replace the PyCrypto module with the cryptography module. Fixes #3272 2019-01-31 15:57:27 +01:00
Cyril Jouve
cbd8f8236a Remove Python 2.6 code that's now obsolete. Fixes #3935 2019-01-31 13:47:56 +01:00
Murtuza Zabuawala
d9fc9fdc4d Ensure object names in external process dialogues are properly escaped. Fixes #3872 2019-01-24 16:34:18 +00:00
Diego Augusto Molina
d92368f8e5 Use 'UPDATE pg_settings' for setting bytea_output as a
convenience hack for those running on old, unsupported versions of
PostgreSQL 'cos we're nice like that.
2019-01-22 15:56:29 +00:00
Dave Page
14f462e9dc Fix PEP-8 issues. 2019-01-11 22:13:17 +05:30
Aditya Toshniwal
d641b47adb Make the browser more robust in the face of multibyte characters in SQL_ASCII databases. Fixes #3877 2019-01-11 21:55:49 +05:30
Akshay Joshi
c455dda3ce Ensure auto complete should works for columns from a schema-qualified table. Fixes #3810 2019-01-03 18:59:57 +05:30
Akshay Joshi
3a130d68c5 Ensure auto complete should works when first identifier in the FROM clause needs quoting. Fixes #3809 2019-01-03 17:22:42 +05:30
Murtuza Zabuawala
e23d307c56 Update copyright notices for 2019 2019-01-02 15:54:12 +05:30
Akshay Joshi
41c028f944 Ensure that null values handled properly in CSV download. Fixes #3780 2019-01-01 15:15:36 +05:30
Khushboo Vashi
e666b0fab0 Fix an issue that could cause the Query Tool to fail to render. Fixes #3433 2018-12-13 11:15:55 +00:00
Dave Page
980d1e0292 Fix PEP8 issue. 2018-12-04 17:07:41 +00:00
Khushboo Vashi
7e3bd8b88a Fix an encoding issue in the query tool. Fixes #3711 2018-12-04 17:03:19 +00:00
Akshay Joshi
eae18f6f14 Ensure previous notices are not removed from the Messages tab in the Query Tool if an error occurs during query execution. Fixes #3016 2018-11-14 08:27:47 -05:00
Akshay Joshi
6bc6bc7f60 Ensure that Utilities(Backup/Restore/Maintenence/Import-Export) should not be started
if binary path is wrong and also added 'Stop Process' button to cancel the process.
2018-10-22 12:35:53 +05:30
Akshay Joshi
370df47042 Fixed issue where session files are not deleted first time when pgAdmin4 server started,
it always wait for CHECK_SESSION_FILES_INTERVAL which is 24 hours by default.
2018-10-18 18:02:45 +05:30
Harshal Dhumal
822d384746 Purge connections from the cache on logout. Fixes #3703 2018-10-17 12:42:41 +01:00
Harshal Dhumal
ce31726af5 Fix connection garbage collector. Fixes #3700 2018-10-17 12:35:45 +01:00
Akshay Joshi
ef0e53e8fc Fixed pep8 issue 2018-10-15 17:41:21 +05:30
Akshay Joshi
fd2c2c4ff7 Fixed minor issue in SQL autocomplete. 2018-10-15 17:36:11 +05:30
Akshay Joshi
7144db7f5a Cleanup session files periodically. Fixes #3674 2018-10-09 11:34:13 +01:00
Akshay Joshi
15fe26a710 Fix handling of backslashes in the edit grid. Fixes #3551 2018-09-25 10:34:33 -04:00
Aditya Toshniwal
38ddea038a Fix support for the CLOB datatype in EPAS. Fixes #3596 2018-09-13 13:45:06 +01:00
Akshay Joshi
4010dc80a9 Ensure auto-complete works for objects in schemas other than public and pg_catalog. Fixes #3630 2018-09-11 12:56:14 +01:00
Akshay Joshi
b665f8fac8 Fixed auto complete issue for EPAS database server. 2018-08-30 12:30:00 +05:30
Aditya Toshniwal
ea787b30eb Fixed auto complete issues for Python 2.6 2018-08-27 16:37:00 +05:30
Akshay Joshi
7a3f3046df Merge pgcli code with version 1.10.3, which is used for auto complete feature. 2018-08-27 15:00:56 +05:30
Harshal Dhumal
013ad7446f Make the session thread safe.
As sessions in pgAdmin4 are filesystem based session, they need locking
for avoiding the access from multiple threads, specially running as an
WSGI application.

Fixes #3547
2018-08-22 11:58:27 +05:30
Usman Muzaffar
70c95fcdd5 Stabilise feature tests for continuous running on CI systems. Fixes #3136. 2018-08-21 17:39:36 +05:30
Akshay Joshi
c8c5f83dfe Add support to save and clear SSH Tunnel password. Fixes #3511 2018-08-06 15:56:46 +05:30
Akshay Joshi
52fc0846cd pgAdmin4 should work with python 3.7, Fixes #3458 2018-08-06 15:35:03 +05:30
Akshay Joshi
213cb440d0 Add support for SCRAM password changes (requires psycopg2 >= 2.8). Fixes #2214 2018-07-23 15:03:44 +01:00
Akshay Joshi
051ce6afeb Ensure the SSH tunnel port number is honoured. Fixes #3471 2018-07-19 10:52:16 +01:00
Akshay Joshi
ce768c7f8a Support SSH tunneling with keys that don't have a passphrase. Fixes #3468 2018-07-18 14:15:05 +01:00
Akshay Joshi
1fc82d328c Fix backup in directory format on Windows. 2018-07-17 13:04:28 +01:00
Aditya Toshniwal
d1784137a5 Ensure text is visible in the SQL Filter dialogue. Fixes #3478 2018-07-09 14:08:41 +01:00
Aditya Toshniwal
82d77c4608 Don't create a session when the /misc/ping test endpoint is called. Fixes #3371 2018-07-05 11:12:03 +01:00
Dave Page
4ba0e1a6f3 Fix Python 2.6 support for SQL_ASCII data in the query tool. 2018-06-21 17:06:28 -04:00
Aditya Toshniwal
df85392bbf Fix handling of SQL_ASCII data in the query tool. Fixes #3289. Fixes #3250 2018-06-21 08:26:01 -04:00
Akshay Joshi
7a06acb678 Allow the connection timeout to be configured on a per-server basis. Fixes #3388 2018-06-19 19:58:46 -04:00
Akshay Joshi
b48145f01f Add an option to auto-complete keywords in upper case. Fixes #2686 2018-06-15 10:18:56 +01:00
Akshay Joshi
88a2309a26 Fix auto-complete. Fixes #3374 2018-06-13 15:53:21 +01:00
Khushboo Vashi
d1ecba56b8 Function and procedure support for PG11. Fixes #3362 2018-06-13 15:03:17 +01:00
Akshay Joshi
38ee39ae7a Add support for LISTEN/NOTIFY in the query tool. Fixes #3204 2018-05-30 21:58:28 -04:00
Akshay Joshi
17977d5d0e Fix dropping of databases over SSH tunneled connections. Fixes #3357 2018-05-28 17:37:24 -04:00
Akshay Joshi
b7fb01ab04 Add support for SSH tunneled connections. Fixes #1447 2018-05-04 11:27:27 +01:00
Anthony Emengo
56658a9f8e Fix the template loader to work reliably under Windows (fixing external tables under Greenplum). Fixes #3324 2018-05-03 15:54:15 +01:00
Joao Pedro De Almeida Pereira
201f6d359f Cleanup some old code that was failing CI. 2018-04-26 16:21:46 +01:00
Joao De Almeida Pereira
2ace6a60f3 Fixed display SQL of table with index for GreenPlum database. Fixes #3306 2018-04-25 12:36:41 +05:30
Murtuza Zabuawala
79edf40141 Fix password encryption/decryption on Python 3. 2018-04-11 13:45:59 +01:00
Dave Page
163cadc279 Revert "Fix non-ASCII password decryption/encryption under Python 3"
This reverts commit d0a640442c.

Seems to anger Python 2.7
2018-04-10 17:12:14 +01:00
Murtuza Zabuawala
d0a640442c Fix non-ASCII password decryption/encryption under Python 3 2018-04-10 16:50:43 +01:00
Murtuza Zabuawala
be055ce57d Update Python and JS modules. Fixes #3154 2018-04-04 10:47:01 +01:00
Akshay Joshi
1baddd5e9a Decode the severity field in database exception objects properly. Fixes #3090 2018-03-26 13:59:49 +01:00
Akshay Joshi
637f3b9d1a Fix a number of broken connection detection scenarios. 2018-03-21 08:38:18 +00:00
Khushboo Vashi
534f1f35fe Appropriately set the cookie path. Fixes #3197 2018-03-19 17:09:19 +00:00
Dave Page
93d44d5643 Revert "Ensure the cookie domain and path are properly set. Fixes #3197"
This reverts commit 9c4edb4a28.

Jenkins really doesn't like this.
2018-03-15 14:54:14 -04:00
Khushboo Vashi
9c4edb4a28 Ensure the cookie domain and path are properly set. Fixes #3197 2018-03-15 13:59:29 -04:00
Joao Pedro De Almeida Pereira
876ce1799a Skip tests where appropriate on GPDB. Fixes #3190
Victoria & Joao @ Pivotal.
2018-03-13 15:32:35 -04:00
Dave Page
156b308fd3 Fix template paths for Windows. Fixes #3139
Joint work from Joao and Murtuza.
2018-03-13 12:45:14 -04:00
Dave Page
9365ab62fe Revert "Fix template path generation for Windows. Fixes #3139"
This reverts commit 695d4e648c.

It's borked!
2018-03-13 08:49:34 -04:00
Murtuza Zabuawala
695d4e648c Fix template path generation for Windows. Fixes #3139 2018-03-13 07:55:37 -04:00
Murtuza Zabuawala
03b772bf64 Add support for connecting using pg_service.conf files. Fixes #3140 2018-03-12 16:45:56 -04:00
Khushboo Vashi
d3c303e455 Ensure all messages are retrieved from the server in the Query Tool. Fixes #3094 2018-03-07 13:38:27 +00:00
Khushboo Vashi
a4124c2496 PEP8 fixes. 2018-03-02 09:37:11 +00:00
Murtuza Zabuawala
a9de043fef Add keyboard shortcuts for the Query Tool. Fixes #2900 2018-02-27 14:32:03 +00:00
Dave Page
bcdb8eb275 Revert "Ensure we pick up the messages from the current query and not a previous one. Fixes #3094"
This reverts commit 08b3ccc01a.
It was found that this fix inadvertently re-introduces #1523
2018-02-26 16:32:53 +00:00
Khushboo Vashi
08b3ccc01a Ensure we pick up the messages from the current query and not a previous one. Fixes #3094 2018-02-26 14:19:43 +00:00
Murtuza Zabuawala
fa9aebadbd PEP8 fixes. 2018-02-26 13:54:58 +00:00
Harshal Dhumal
05e91044c7 Fix intermittent specified_version_number ValueError issue on restart. Fixes #2983
Now we try to restore server details like server version number at restart so template paths can be resolved.
2018-02-20 17:31:13 +00:00
Joao Pedro De Almeida Pereira
15862e903a Fix creation of tables and columns in GPDB. Fixes #3099 2018-02-19 10:40:10 +00:00
Joao Pedro De Almeida Pereira
e16a952753 Support EXPLAIN on Greenplum. Fixes #3097
- Extract SQLEditor.execute and SQLEditor._poll into their own files and add test around them
 - Extract SQLEditor backend functions that start executing query to their own files and add tests around it
 - Move the Explain SQL from the front-end and now pass the Explain plan parameters as a JSON object in the start query call.
 - Extract the compile_template_name into a function that can be used by the different places that try to select the version of the template and the server type
2018-02-09 11:54:42 +00:00
Murtuza Zabuawala
25647c16ba Ensure we capture notices raised by queries. Fixes #3027 2018-02-02 15:23:33 +01:00
Harshal Dhumal
2042f89ce0 Don't include sizes on primitive datatypes that shouldn't have them when modifying columns. Fixes #3052 2018-02-01 16:27:36 +01:00
Harshal Dhumal
e0da9c5a0c Significantly improve connection loss detection and handling in the query tool. Fixes #2815 2018-02-01 14:29:18 +01:00
Murtuza Zabuawala
c3ddb7df38 PEP8 fixes for the utils module. Fixes #3076 2018-01-31 13:58:55 +00:00
Harshal Dhumal
66341e6947 Add infrastructure for managing configurable keyboard shortcuts. 2018-01-25 12:49:06 +00:00
Joao Pedro De Almeida Pereira
678699c408 Display partitions in Greenplum. Fixes #3036 2018-01-23 10:41:36 +00:00
Dave Page
89821c0d19 Update copyright notices for 2018. 2018-01-05 10:42:50 +00:00
Murtuza Zabuawala
1dd1c10255 Do not decrypt the password when the password is 'None'. Fixes #2765
This should avoid the common but harmless exception "ValueError: IV must be 16 bytes long while decrypting the password."
2018-01-03 13:19:58 +00:00
Murtuza Zabuawala
4246a3b22f Ensure password changes are successful if authenticating using a pgpass file. Fixes #2720 2017-12-13 13:28:07 +00:00
Harshal Dhumal
55254a649f Re-hash the way that we handle rendering of special types such as arrays. Fixes #2782. Fixes #2822. 2017-12-13 11:53:27 +00:00
Murtuza Zabuawala
fe7cfa35df Attempt to decode database errors based on lc_messages. Fixes #2806. Fixes #2821 2017-11-27 11:53:25 +00:00
Khushboo Vashi
4568fe22f7 Decode the field separator and quote char if needed. 2017-11-20 16:28:13 +00:00
Khushboo Vashi
0c566f132e Allow configuration of CSV and clipboard formatting of query results. Fixes #2781 2017-11-20 13:50:47 +00:00
Murtuza Zabuawala
2579458091 Fix support for time without timezone. Fixes #2881 2017-11-20 13:36:50 +00:00
Alexander Lakhin
23d431fb54 Remove more exclamation marks from error messages. 2017-11-01 15:18:07 +00:00
Alexander Lakhin
9be1364d1a Various string improvements and fixes. 2017-11-01 12:58:19 +00:00
Alexander Lakhin
8860bc3c3e Saved user language was not being picked up in case of non-server mode.
Because - the get_locale(...) function was being executed before any
request, and user login after first request. Hence - the values for
the labels in the Preferences are not being translated properly.

Fetch the raw value of user_language from configuration in case of
runtime/non-server mode to fix the issue.
2017-10-30 18:20:41 +05:30
Harshal Dhumal
04beec1309 Fix various issues that could cause an exception on startup. Fixes #2713 2017-10-10 09:50:47 +01:00
Murtuza Zabuawala
2f5a2b2392 Only allow specification of a pgpass file if libpq >= 10. Fixes #2768 2017-10-10 09:31:27 +01:00
Murtuza Zabuawala
f855ed88ce Allow selection of SSL certificates and pgpass files in connection properties. Fixes #2649. Fixes #2650 2017-09-28 10:02:33 +01:00
Murtuza Zabuawala
2ddbddba33 Improve display of error messages in the query tool. Fixes #2700 2017-09-20 11:29:24 +01:00
Harshal Dhumal
f0ad26ba7a Fix for Exception when the server is restarted. Fixes #2713
This issue was caused because we recently added session_write_delay in session.
So session won't be written/updated to disk from memory until specified seconds are elapsed.

However we must forcefully write/update session to disk if user loges in or out irrespective of session_write_delay to keep sessions from memory and disk in sync as user logged in status is kept in session.
2017-09-18 14:39:43 +01:00
Harshal Dhumal
30e7016077 Changed array representation and formatting for the data types in Query Tool and View Data. Fixes #2671 2017-09-18 12:07:15 +05:30
Teng Zhang
46c5df4e7b Greenplum specific DDL and Dashboard display changes.
Initial patch by Sarah McAlear<smcalear@pivotal.io>.
2017-08-25 17:53:03 +05:30
Harshal Dhumal
d339d6b816 Do not dump the session data on the disk on every request.
Session object is updated, everytime a request is being served, and
that was forcing the session object dumped on the dist on every request.

On windows, it was causing issues on slower system on startup. Because -
windows file system locks the file, when it is opened by any
application. And, frequent requests on the pgAdmin main UI rendering
was causing issues, because of that.

In order to resolve the issue, we will not write the session data on
disk for every request, but - only after certain delay (in seconds),
from it was last written. It can be configured using the attribute
'PGADMIN_SESSION_DISK_WRITE_DELAY' in the configuration file,
default vaule for the delay is 10.
(i.e. 10 seconds)
2017-07-25 15:52:32 +05:30
Atul Sharma
70418144cf Add a field to the Server Dialogue allowing users to specify a subset of databases they'd like to see in the treeview. Fixes #1918 2017-07-21 12:44:57 +01:00
Harshal Dhumal
54882e061c Don't attempt to render binary data in the query tool result grid. Fixes #2080. Fixes #2074. 2017-07-20 13:09:47 +01:00
Akshay Joshi
c2fb0394bf Added support of Declarative Partitioning (Range, List) for PostgreSQL 10.
This allows the user to create partitioned table and it's partitions.

  - Edit partitions, Create/Listing of constraints, rules, triggers under partitions. (Implemented by Harshal)
  - Updating browser tree node when create/attach/detach partitions from table dialog.(Implemented by Ashesh)
2017-07-07 11:55:55 +05:30
Khushboo Vashi
501120701e Allow the dashboard panel to be closed. Fixes #2506 2017-06-30 10:11:34 +01:00
Khushboo Vashi
301798d87a Fix encoding issue when saving servers. Fixes #2518
Patch by Khushboo, based on a suggested fix from Ladislav Jech
2017-06-28 09:44:32 -04:00
Dave Page
96412b3219 Revert "Allow the user to close the dashboard panel. Fixes #2506"
This reverts commit a87ee6d059.
2017-06-27 10:35:43 -04:00
Khushboo Vashi
a87ee6d059 Allow the user to close the dashboard panel. Fixes #2506 2017-06-27 09:21:24 -04:00
Harshal Dhumal
c65158312d Use on-demand loading for results in the query tool. Fixes #2137
With a 27420 row query, pgAdmin III runs the query in 5.873s on my laptop. pgAdmin 4 now takes ~1s.
2017-06-27 09:03:04 -04:00
Atul Sharma
15cb9fc35b Add support for the hostaddr connection parameter. This helps us play nicely with Kerberos/SSPI and friends. Fixes #2191 2017-06-26 15:48:59 -04:00
Khushboo Vashi
33e75d24f8 Fix preferences handling for utilities. 2017-06-22 12:18:56 +01:00
Murtuza Zabuawala
d2ba57c1ab Properly handle bytea[], and 'infinity'::real/real[]. Fixes #2498. Fixes #2502. 2017-06-20 10:19:11 +01:00
Joao Pedro De Almeida Pereira
4b846ae4e0 Fix the JS Bundler test to work when there are multiple servers defined in a test run. 2017-06-14 09:37:20 +01:00
Dave Page
cb97722fc3 Temporarily disable the Javascript bundler test until it handle more than one run. 2017-06-13 14:21:41 +01:00
Shruti B Iyer
1208206bc0 Initial re-vamp of the History tab. 2017-06-13 09:50:41 +01:00
Shruti B Iyer
659eb1c1e8 Bring React into the tree, and add linting and bundling framework for the JS etc. 2017-06-12 16:51:54 +01:00
Atul Sharma
49cd578816 Fix error on the stats tab with PG10. Also, rename the 10.0_plus template directory to 10_plus to match the new versioning. Fixes #2450 2017-06-12 12:53:09 +01:00
Ashesh Vashi
fd3ddbeafb Implementation of the client side 'url_for(...)' function.
Created a url_for function module to be used by different javascript
modules to use the same functionality of flask at client side.

A python module can expose the list of endpoints, used by its
javascripts, by overriding the 'get_exposed_url_endpoints(self)'
function.

In this patch, we have modified all the browser modules to use this
function. It will allow us to move the majority of the javascript
modules of browser nodes from templates directory to the static
directory.

TODO::
- Move these javascripts modules to the static directory.
- Use this function in all the applicable javascript modules.
  e.g. tools, miscellaneous modules
2017-06-12 12:01:25 +05:30
Murtuza Zabuawala
3bcbc50525 Fix the handling of double precision[] type. Fixes #1928 2017-06-08 14:50:51 +01:00
Sarah McAlear
01bfa88309 Improvements to the Query Results grid:
- Improve the UI
- Allow copy/paste from sets of rows, columns or arbitrary blocks of cells

Patch by Matt, Shruti, Joao and Sarah @ Pivotal

Fixes #2476
2017-06-08 13:31:36 +01:00
Murtuza Zabuawala
678b891ff7 Fix an intermittent error seen during result polling. Fixes #2470 2017-06-08 12:34:14 +01:00
Murtuza Zabuawala
1cb2a62fa8 Ensure object names are properly escaped for external process management. Fixes #2405 2017-05-15 13:01:12 +01:00
Murtuza Zabuawala
05787fdba9 Properly handle non-ASCII column names in CSV. Fixes #2314 2017-05-12 10:38:23 +01:00
Murtuza Zabuawala
63d42745ef Fix various issues in CSV file download feature:
1) To handle non-ascii filenames which we set from table name. Fixes #2314

2) To handle non-ascii query data. Fixes #2253

3) To dump JSON type columns properly in csv. Fixes #2360
2017-05-08 13:36:11 +01:00
Harshal Dhumal
a80f760933 Only reconnect to databases that were previously connected. Fixes #2292 2017-05-08 12:36:51 +01:00
Navnath Gadakh
c32bf7780e Windows compatibility fixes for the test suite. 2017-05-08 09:25:05 +01:00
Murtuza Zabuawala
38c8a4fb60 Fix handling of bigint[] type. Fixes #2272 2017-04-25 12:24:02 +05:30
Akshay Joshi
59834fba31 Initial support for PG 10.0, per #2214 2017-04-24 13:55:29 +01:00
Navnath Gadakh
62716c4193 Include passed test results in the JSON output from the regression tests. 2017-04-12 13:11:53 +01:00
RAJASEKAR G
024b97479d Recover properly if a database is renamed externally. Fixes #2077 2017-04-10 11:09:01 +01:00
Jonas Thelemann
ea2b3f43bd Remove unnecessary quotes. 2017-04-05 13:58:47 +01:00
Jonas Thelemann
65f21a8cd7 Replace all occurrences of "can not" with "cannot". 2017-04-05 13:38:14 +01:00
Harshal Dhumal
9acf340400 Generic function qtLiteral was not adapting values properly when they contain non ascii characters. Fixes #2305 2017-03-31 21:11:25 -04:00
Dave Page
7450c2df0d Revert code cleanup that wasn't 2.6 compatible. 2017-03-27 21:27:17 -04:00
Akshay Joshi
757500c478 Ensure preferences are properly saved the first time they're set. 2017-03-27 12:19:28 -04:00
Dave Page
6152d73f13 Fix some code inspection complaints 2017-03-25 22:04:52 -04:00
Khushboo Vashi
0eda6033df Allow users to select UI language at login or from Preferences rather than unpredictable behaviour from browsers. Fixes #2190 2017-03-24 14:20:10 +00:00
Murtuza Zabuawala
d4e88217eb Added timeout in _wait_timeout function in our psycopg2 module.
Fixes debugger module, Added common function to covert 2d array data to dict for BackGrid.
2017-03-24 14:01:59 +05:30
Surinder Kumar
aee1492d0d Correct some EDB Postgres Advanced Server branding. 2017-03-21 10:12:26 +00:00
Murtuza Zabuawala
e9702752d9 Fix hadling of DATERANGE[] type. Fixes #2258 2017-03-17 12:40:08 +00:00
Harshal Dhumal
e4134695e5 Fix dropping of databases with Unicode names. Fixes #2243
1. Pickup correct encoding in qtLiteral to decode.
2. While releasing database connection only decode database name if it's not unicode.
2017-03-17 10:33:03 +00:00
Dave Page
b2a74ad26d Fix a bunch of file headers. 2017-03-16 14:27:55 +00:00
Ashesh Vashi
6cc1fbe739 Import config only when needed, it was causing cyclic dependency when
running the regression suite.
2017-03-07 16:07:10 +05:30
Jonas Thelemann
c34f5fd2d4 Use "could not" consistently, instead of "couldn't" which was used in some places. 2017-03-07 10:29:54 +00:00
Ashesh Vashi
f2fc1ceba8 Resolved quite a few file-system encoding/decoding related cases.
In order to resolve the non-ascii characters in path (in user directory,
storage path, etc) on windows, we have converted the path into the
short-path, so that - we don't need to deal with the encoding issues
(specially with Python 2).

We've resolved majority of the issues with this patch.
We still need couple issues to resolve after this in the same area.

TODO
* Add better support for non-ascii characters in the database name on
  windows with Python 3
* Improve the messages created after the background processes by
  different modules (such as Backup, Restore, Import/Export, etc.),
  which does not show short-paths, and xml representable characters for
  non-ascii characters, when found in the database objects, and the file
  PATH.

Fixes #2174, #1797, #2166, #1940

Initial patch by: Surinder Kumar
Reviewed by: Murtuza Zabuawala
2017-03-07 15:31:03 +05:30
Harshal Dhumal
ffa8d94e76 Better handling the non-ascii characters for different database objects.
Using 'psycopg2.extensions.UNICODE' (for Python < 3) in the psycopg2
driver for proper conversation of unicode characters. Also - adjusted
the string typecaster to take care of different character types (char,
character, text, name, character varying, and their array types).

Reviewed by: Dave Page, Murtuza Zabuawala & Akshay Joshi
2017-03-02 15:09:28 +05:30
Atira Odhner
e89c54c15d Make feature test app teardown more reliable, and tests faster
- don't spin up app and chromedriver between each test
    - catching signals also tears down the app
    - do layout reset between tests, but assume that tests will not leave a modal opened.

 Use selenium built-in waiting function and fix flakiness around clicking the alertify OK button

    - we think the OK button does not have its event bound when it is created.

If you see more flakiness around clicking the alertify OK button, let us know. The element is clickable but we have to arbitrarily wait for the event to be bound and that timing may vary system to system.

The feature tests are about 7 seconds faster now.

Tira & Joao
2017-03-01 13:20:06 +00:00
Murtuza Zabuawala
480e00fddf Query tool efficiency.Convert the data as a 2D array instead of dict. Fixes #2036
Incremental back off when polling. Fixes #2038

Initial Patch By: Dave Page
2017-03-01 16:58:51 +05:30
Surinder Kumar
88cae263b2 Fix display of long integers and decimals. Fixes #2039. Fixes #2119. Fixes #2154 2017-02-24 13:39:40 +00:00
Atira Odhner
fe1aec5de0 Add feature test framework, using selenium and chromedriver for UI testing.
Written by both George and Atira at Pivotal.
2017-02-22 12:41:28 +00:00
Murtuza Zabuawala
9ad1316990 Various encoding fixes. Fixes #2160 2017-02-16 11:00:40 +00:00
Atira Odhner
b6486f3d42 Test suite runner enhancements:
To chase down a set of tests that were failing together, we wanted to run
deeper trees of tests. We changed the behavior of the --pkg argument to
runtests.py so it runs tests under a package and its subpackages, instead
of for a single node.

It gave us more flexibility in what tests to run. This also includes the
--exclude option.

To run tests for a single node, ".tests" can be appended to the package path.

Tira & George.
2017-02-15 15:10:31 +00:00
Harshal Dhumal
4ef26a528b Allow direct navigation (i.e. typing of paths) in the file manager. Fixes #1911 2017-02-03 10:51:36 +01:00
Murtuza Zabuawala
2d442da9ff Properly handle setting comments and other options on databases with allowconn = False. Fixes #2024 2017-02-01 10:23:45 +00:00
George Gelashvili
6d05302ca1 Rename the 9.1_plus templates to "default" to more appropriately support Greenplum which is based on 8.3. 2017-02-01 09:57:49 +00:00
Murtuza Zabuawala
0da8d1fe4c Another Python 3 fix. 2017-01-31 12:12:22 +00:00
Murtuza Zabuawala
2e5771e164 Python 3 fix for the template loader test. 2017-01-31 10:02:20 +00:00
Atira Odhner
c6b67fc66a Bypass recovery checks with older servers. This is required for Greenplum which is based on PG 8.3 at present. 2017-01-30 17:02:55 +00:00
George Gelashvili
19be3529f8 Create a template loader for SQL templates.
This will automatically find the correct version of a template for the server version, and allows us to remove templates that were previously duplicated for different server versions.

Patch by George & Tira at Pivotal. Review by me and Murtuza from EDB.

Discussion: https://www.postgresql.org/message-id/flat/CAHowoHaU9_pkCt%2B1g8dpY3hsXXZmsJZiJH-3-_Hd%2BC1MxiGhtA%40mail.gmail.com#CAHowoHaU9_pkCt+1g8dpY3hsXXZmsJZiJH-3-_Hd+C1MxiGhtA@mail.gmail.com
2017-01-30 11:25:03 +00:00
Dave Page
1504d05cdd Format JSON more efficiently. This can significantly reduce response sizes from the server. 2017-01-06 14:09:36 +00:00
Dave Page
f221194bcc Update copyright notices for 2017. 2017-01-04 13:33:32 +00:00
Akshay Joshi
e160909423 Quote identifiers correctly in auto-complete. Fixes #1992 2016-12-05 13:15:03 +09:00
Dave Page
961f946a76 Treat empty text settings as unset, to allow users to clear a string to get the default back. 2016-11-23 12:43:02 +00:00
Dave Page
ca333ea6a7 Don't strip \r\n from "Download as CSV" batches of rows, as it leads to malformed data. Fixes #1936 2016-11-07 14:47:50 +00:00
Navnath Gadakh
36c185e9dc Fix regression test import issue. 2016-10-13 06:49:33 -07:00
Navnath Gadakh
ae612f5403 Major update to the test suite:
1. Code changes (due to drop objects functionality).
2. Quoting for database names in drop databases.
3. Code changes for import errors for pickle_path and advanced_config variables.
2016-10-07 13:59:43 +01:00
Murtuza Zabuawala
bde3dd845b Fix SSL setup. Fixes #1817 2016-10-05 13:05:10 +01:00
Ashesh Vashi
09c2d605c9 Prevent bigints getting rounded. Fixes #1547 2016-09-26 15:51:01 +01:00
Murtuza Zabuawala
a0a6428e86 Ensure compatibility with newer sqlparse modules. Fixes #1725 2016-09-26 13:49:54 +01:00
Harshal Dhumal
f117685d77 Drop all connections from the connection manager when a server is dropped to avoid issues if sqlite reuses an ID. Fixes #1720 2016-09-22 12:57:52 +01:00
Dave Page
2077bd5fdc Prevent browsers caching responses. Fixes #1171 2016-09-21 16:18:22 +01:00
Surinder Kumar
28ce31a022 Save error details when executing to CSV, if no data is returned. This ensures the user gets some feedback rather than nothing at all. Fixes #1592 2016-09-20 11:57:51 +01:00
Murtuza Zabuawala
881d2a60a4 Fix an exception that could occur when the browser pings the server following a restart. Fixes #1707 2016-09-19 15:57:52 +01:00
Navnath Gadakh
d3d8836f61 Introduce a test config database for the regression tests, and track/remove objects that are created during testing. 2016-09-14 16:26:12 +01:00
Murtuza Zabuawala
42e19d2169 Fix error highlighting, broken in d6391c7e9b. Fixes #1676 2016-09-09 14:45:03 +01:00
Surinder Kumar
da21cabb1e Fix typo in connection handler. 2016-09-07 14:01:56 +01:00
Murtuza Zabuawala
679ad6fca8 Support range types in the query tool. Fixes #1658 2016-09-06 14:26:43 +01:00
Murtuza Zabuawala
1b75679ec4 Python 2.6 fixes. Fixes #1636. Fixes #1659 2016-09-06 14:07:30 +01:00
Ashesh Vashi
8ac65070bc Improve the logic for Bad handling of missing connection database server RM #1387 2016-09-06 15:35:20 +05:30
Ashesh Vashi
f12d981a9d Handling the bad/lost connection of a database server.
Made backend changes for:
* Taking care of the connection status in the psycopg2 driver. And, when
  the connection is lost, it throws a exception with 503 http status
  message, and connection lost information in it.
* Allowing the flask application to propagate the exceptions even in the
  release mode.
* Utilising the existing password (while reconnection, if not
  disconnected explicitly).
* Introduced a new ajax response message 'service_unavailable' (http
  status code: 503), which suggests temporary service unavailable.

Client (front-end) changes:
* To handle the connection lost of a database server for different
  operations by generating proper events, and handle them properly.

Removed the connection status check code from different nodes, so that
- it generates the proper exception, when accessing the non-alive
  connection.

Fixes #1387
2016-08-29 12:01:35 +05:30
Akshay Joshi
86858b18f6 Fix validation of numeric preference min/max values. Fixes #1567 2016-08-19 11:00:05 +01:00
Murtuza Zabuawala
d6391c7e9b Properly display messages from the server in the query tool. Fixes #1523 2016-08-18 17:08:40 +01:00
Navnath Gadakh
81e2bc1e80 Test suite enhancements:
1. The user will specify the tablespace path in test_config.json.in
2.  If tablespace path not found, skip the test cases for that server(Only tablespace test cases)
3.  Add the skipped test summary in the test result. (Now it's showing on console + in log file, but need to update in a final enhanced test summary report. Which is research point we will work on that after finishing all nodes API test cases)
4.  Removed the test_ prefix from the values in the config files.
5. Add tablespace and roles tests
2016-08-09 16:05:40 +01:00
Harshal Dhumal
f78024808e Prevent the user attempting to run external commands if the bin path is not configured. Fixes #1177 2016-08-08 11:59:37 +01:00
Murtuza Zabuawala
01252a13cf Further misc quoting/encoding related fixes. 2016-08-01 15:23:06 +01:00
Navnath Gadakh
5c3c543d2e Test suite improvements:
- Test framework support API testing with multiple server for this we need to modify test_config.json(for user it’s test_config.json.in) and test_advanced_config.json(for user it’s test_advanced_config.json.in). Server details of PG and  PPAS are included in both .in files.

- Removed the logic of logging in  the test client on each test scenario(As per Khushboo's comment in previous email).  We need this logic in test cases under ‘browser/tests/’ as for test scenarios like change password and  invalid login test cases as test client should be logged out first. So, as per this the code is slightly modified in ‘browser/tests/’.
2016-07-27 15:33:36 +01:00
Murtuza Zabuawala
06e881570a Fix numerous encoding issues. Fixes #1307. Fixes #1479 2016-07-26 15:05:14 +01:00
Dave Page
60659975ed Stop using deprecated imports. 2016-07-22 16:25:23 +01:00
Ashesh Vashi
8b35a60c08 Generate the proper unique name for the duplicate column name.
Thanks Murtuza for reporting the issue.
2016-07-19 11:27:03 +05:30
Harshal Dhumal
83a1535f89 Fix saving of query output as CSV data. Fixes #1405 2016-07-18 15:29:09 +01:00
Dave Page
f17c2e3b84 Enhancements to the regression test suite.
Navnath Gadakh and Priyanka Shendge
2016-07-18 14:50:21 +01:00
Murtuza Zabuawala
5560d5b334 Properly support the interval type. Fixes #1437 2016-07-18 09:40:45 +01:00
Ashesh Vashi
9ba6bafb2b Using own version of cursor class to allow us to take care of the
duplicate name in column description.
2016-07-16 10:42:51 +05:30
Ashesh Vashi
2b809523eb [Python 3 Compability] Made changes to make the new server-side session
implementation works with Python 3.
2016-07-11 16:29:06 +05:30
Ashesh Vashi
61698b7b4d Do not use the sqlite for session handling, as the old implementation is
optimized to work from multiple threads. It has too many frequent
transaction from multiple threads, and that tends to result into the
'database is locked' error of sqlite.

With the new implemenation, we're using the caching mechanism, which
keep the data in the memory all the time, and saves it on request
completion, and loads it only for the first time. Also, it will storage
the data using pickle, which will be faster than accessing sqlite.

Fixes #1329
2016-07-08 16:57:46 +05:30
Dave Page
7d0fe669ca Code tidy. 2016-06-21 14:21:06 +01:00
Dave Page
3026b470e9 Optimise Python imports. 2016-06-21 14:12:14 +01:00
Dave Page
2c62d1a4b7 Revert "Make the file manager work a little more sanely with regard to paths."
This breaks things even more on Windows :-(

This reverts commit 35243b9869.
2016-06-17 18:19:51 +01:00
Dave Page
35243b9869 Make the file manager work a little more sanely with regard to paths. 2016-06-17 17:12:04 +01:00
Murtuza Zabuawala
c702ef9c48 Fix password encryption with non-alpha passwords. Fixes #1371 2016-06-16 20:32:57 +01:00
Ashesh Vashi
fc295f94a3 Remove recusive call of _wait_timeout() due to which python server is crashing 2016-06-16 17:49:02 +05:30
Murtuza Zabuawala
a800b19c87 Fix display of NaN and Bytea data. Fixes #1350. Fixes #1309 2016-06-16 11:20:00 +01:00
Akshay Joshi
f9393aee44 Allow a value of 0 rows per page to mean "no paging". Allow rows to be added on any page.
Fixes #1356
2016-06-16 09:57:44 +01:00
Surinder Kumar
5dbbd8e638 Resolve problem displaying intervals and timestamps. Fixes #1352
1) No handling for INTERVAL type datetime.
For example: executing query
SELECT INTERVAL '15 minutes';
throws json serialization error, because it returns time in timedelta format which is not handled.

Added support to handle timedelta datetime format in DataTypeJSONEncoder class

2) When we try to get BC dates from database raises ValueError: year is out of range
For eg:
SELECT TIMESTAMP '0044-03-15 10:00:00 BC',
It is because pyscopg2 doesn't handle BC datetime format.

So we have defined our method which type cast the datetime value to string in pyscopg2 overriding default behaviour.

Reference:
http://initd.org/psycopg/docs/advanced.html#type-casting-from-sql-to-python
ccf3693be6/pgcli/pgexecute.py
2016-06-14 17:09:47 +01:00
Surinder Kumar
9e8e3fc787 Fix file selection on Windows. Fixes #1319
1) Unable to select sql file through query tool on windows OS. In file_manager.js, we are stripping initial slash '/' from the path obtained, but we should not strip if it is full path like 'c:/path/to/dir/filename.ext'

2) Handle directory path if STORAGE_DIR is None. Proper checks are added.
2016-06-10 17:06:22 +01:00
Ashesh Vashi
7d08e42bbe During encryption password is converted to buffer (instead of
bytearray), and that is causing the issue in Python 2.

This was regress of commit-id: 37e2e1d24b
2016-06-07 13:26:43 +05:30
Ashesh Vashi
37e2e1d24b Fixing the decryption issue during restoring the connection on restart.
As we convert the binary password to string during storing the
connection information, we also need to convert it back to byte-arrays
during restoring the connections.

Hence - decode the passowrd using 'utf-8' encoding during storing the
connection information, and encode it during restoring the connections.
2016-06-06 22:48:53 +05:30
Murtuza Zabuawala
6501f4cf36 Fixes #1280 - Resolved issue in json encoding while dealing with the
date format.
2016-06-03 15:54:04 +05:30
Akshay Joshi
0a354055a9 Adding support for autocomplete in the SQL Editor.
In Query editor, we can use the autocomplete feature by using keyword
combination - 'Ctrl + Space'.
2016-05-21 16:04:29 +05:30
Ashesh Vashi
8bd17cb433 [Python 3 compatibility] Introduced a separate HTML safe string function
in 'utils' module, earlier the function -'escape(...)' was converting
the strings to bytes, and that's reason, it was not working on Python 3.
2016-05-16 11:58:42 +05:30
Ashesh Vashi
ca62825c90 Set PGPASSWORD environment variable from the process executor before running
the external utility.
2016-05-15 22:29:17 +05:30
Murtuza Zabuawala
8ca760ee2b Addd support for taking backup for the server.
Tweaked by Ashesh Vashi to integrate the backgroud process, and also
with some improvements as stated below:
* Resolved an issue loading existing preference.
* Improved the background process observer/executor for supporting
  detalied view.
* Added the utility path preferences in the ServerType class.
2016-05-15 16:04:39 +05:30
Harshal Dhumal
14839bf5de Always make sure - we convert the psasword to string in the as_dict
function.
2016-05-14 01:14:26 +05:30
Ashesh Vashi
b22d73ec46 Improvise the pgsql driver to keep the utility names used for different
operation like backup, restore, etc within it.

Also:
* improvised the color combination of the background process logger.
* Removed an unnecessary print statement from the
  get_storage_directory(..) function, also return None if STORAGE_DIR
  is set to None.
2016-05-14 00:48:20 +05:30
Harshal Dhumal
4816f5ed12 Change server password feature 2016-05-13 13:21:20 +05:30
Ashesh Vashi
9cdd1f8098 Added support for the server side file manager, which will be useful in
selection, creation, upload/download files/directories resides on the
server side.

This will be useful for file selection/creation for different server
side utilites like pg_dump, pg_dumpall, pg_restore.
2016-05-13 00:04:32 +05:30
Ashesh Vashi
7f790a7f49 Use the same cursor object of a connection object only from the same
server.

Current implementation keeps the cursor object in the 'g' (current
request context) object identified by the connection-id.
But - it fails to identify a different connection object request, when
we have same database name in different database server, it does not
able to identify it as separate request, Hence - now we will use
server-id qualified identifier for the same object.

Thanks Neel Patel for pointing out the issue.
2016-05-12 13:08:38 +05:30
Ashesh Vashi
9cae686c65 Allow the modules to define the i18n messages, and other messages
required by its javascript module.

This will allow us to load the javascript modules as a static file, and
not as a Jinja2 template. This will increase the load time, as it will
decrease number of templates to be processed during loading those
javascripts.
2016-05-10 16:07:48 +05:30
Ashesh Vashi
e8b4bb909b Do not honour the session-id, longer than 40 characters, instead create
new session-id in that case.
2016-05-09 00:04:37 +05:30
Karen Blatchley
949e536bae First round of string review and cleanup. 2016-05-06 13:53:48 +01:00
Dave Page
0628ee0425 Dashboards v1 2016-05-05 16:42:16 +01:00
Khushboo Vashi
970e0c3540 [Python 3] Fixed an issue iterate the keys from the session loaded from
the sqlite.
2016-04-26 16:16:29 +05:30
Ashesh Vashi
26e9ceaf48 Do not reset the driver registry when the 'load_driver' method of
DriverRegistry is executed second time.

Also, initialize the driver before registering different blueprints,
which uses those driver inside them.

Thanks Khushboo for reporting the issue.
2016-04-25 15:33:54 +05:30
Priyanka Shendge
98d473a7ec Initial version of a regression test framework 2016-04-17 10:39:08 -04:00
Akshay Joshi
03d6fce53c Add support for an affected row count property to the DB interface. 2016-04-12 17:02:54 +01:00
Dave Page
62fcfd928d Add context-sensitive SQL help. 2016-04-12 13:36:06 +01:00
Ashesh Vashi
c304d3e90e Save the database OID of the maintenance database. 2016-04-11 17:15:55 +05:30
Neel Patel
e585ddbdaf Improvise the PostgreSQL driver to fetch the status message.
At the moment, we will only allow to fetch status messages from the
asynchronous connection only, later - we may implement to fetch the
status message from the normal connection too.
2016-04-05 13:29:20 +05:30
Akshay Joshi
5331075ab0 Improvise the psycopg2 wrapped driver for PostgreSQL to show formatted
message on demand.

Also - resolved an issue identifying the aborted transaction while using
the asychronous connection.
2016-04-04 12:29:43 +05:30
Ashesh Vashi
067c269fc8 Convert the value in proper format, as we may only get string values
for integer and numeric type.
2016-03-24 14:29:49 +05:30
Ashesh Vashi
7bce6dd903 The changed value of a multiline/text control was not saved in the
configuration database due to unable to identify the change properly.
Thanks Dave for reporting.

This also includes a support to use a 'text' type of preference, and
show help string next to the control.
2016-03-24 13:00:15 +05:30
Murtuza Zabuawala
12a0cb1ba1 [Python 3] Fixed the issue loading the value for the session key from the sqlite. 2016-03-23 12:40:11 +05:30
Ashesh Vashi
b3c625f135 Graceful server reconnections. 2016-03-22 15:35:11 +00:00
Ashesh Vashi
3c366fafe7 Server side session management support. 2016-03-22 15:05:43 +00:00
Neel Patel
ff424850f8 Fix a bug in the database drive poll() function where we could try to reference a non-existant variable. 2016-03-15 13:01:28 +00:00
Akshay Joshi
f08aa6a313 Always fetch column info from the server, even if there are no rows. 2016-03-08 15:59:53 +00:00
Dave Page
5ea822f33e Preferences dialogue. Patch by Ashesh and Khushboo Vashi. 2016-03-07 11:48:53 +00:00
Neel Patel
31ab9ebacc Using the correct member variable while fetching the notices/messages
from the psycopg2 connection.
2016-03-06 18:56:42 +05:30
Ashesh Vashi
0b43443151 Allow the connection driver to return notices/messages from the server. 2016-03-04 10:35:50 +00:00
Akshay Joshi
e138ec53b6 Add support for asynchronous connections to the database server. 2016-03-02 13:29:15 +00:00
Ashesh Vashi
c3b0e1dec4 Returns an error when the driver couldn't decrypt the password, and
let the user know the issue.
2016-02-22 14:03:07 +05:30
Ashesh Vashi
d5da26876b Resolved few issues (with some improvements) with existing nodes.
This commit takes care of the following issues/improvements.
* Adding missing imports for unauthorised in database module
* Node under Servers Nodes (i.e. Databases, tablespaces, roles nodes)
  need to be inherited from PGChildNodeView (and, not from NodeView) for
  adding server version check for their children.
* Adding statistics for database, and tablespaces in its node (not, yet
  in UI)
* Renaming the camel case methods with proper name.
  (i.e. getSQL -> get_sql, getNewSQL -> get_new_sql, etc.)
* Fixed the functions going beyond the text limit (column: 80) in
  Databases, Roles & Tablespaces modules.
* Fixed the node method of Database module, which was not tested ever.
* We do not need separate SQL template for fetching the name (i.e.
  get_name.sql), using the 'nodes.sql' for the same.
* Optimise the query for fetching ACLs for the database node, we didn't
  require to join certain tables, while fetching only the ACLs.
* Introduced the list of the ACLs (regular and default ACLs for
  different type) supported by each version [Databases Module].
* Renamed the templates 'get_nodes.sql' to' nodes.sql' to make it
  consistent with other modules.
* Removed the checks for the authentication table use, as we don't need
  to expose the password to the users (even the encrypted MD5). Using
  the pg_roles view always for fetching roles/users information now.
* Resolved some typos in unreachable (specially the exceptions
  catchment area.)
* Logging the exception in the application.
* Using qtLiteral, qtIdent properly in the templates (do not assume
  about the types of data.)
* Using tsid as identifier instead of did for the tablespaces.
* Using nodes method of tablespace view for fetching individual node
  information.
* Removing the hardcoded node information from the 'parse_priv_to_db'
  function, and pass on allowed ACLs by the caller nodes.
* Using 'nodes.sql' to fetch name of the template instead of writing
  that in the delete.sql template, which is definitely wrong place to
  fetch the name of the object. [Tablespace Module]
2016-02-22 11:44:24 +05:30
Ashesh Vashi
639a3ed0ac Fixes the qtIdent function in the psycopg2 driver about not taking care
of double quote within it.

The 'replace' function of immutable type string do create a new
instance of type string, which needed to be reassgined to the variable
'value'.

Reported By: Murtuza Zabuawala
2016-02-10 15:00:52 +05:30
Akshay Joshi
86115cff6c Adding support to serialize the datetime to the JSON object properly. 2016-02-05 14:18:35 +05:30
Ashesh Vashi
3ca29b18b5 Resolved an issue related to quoting the wrong keywords for the types.
It was due to wrong index used for the COL_NAME_KEYWORD, used by the
'needsQuoting' function.

Also, replaced a tab with a space in the generate_keyword.py file.

Reported by: Sanket Mehta, Khushboo Vashi
2016-02-05 10:15:23 +05:30
Harshal Dhumal
b77c5a6c54 Python 2.6 support fixes. 2016-01-27 15:59:54 +01:00
Sanket Mehta
0eadd92a7f Fetch the last system oid for the database connection too. 2016-01-22 10:38:02 +05:30
Ashesh Vashi
0a21beca17 Resolved a typo in the psycopg2 driver, qtTypeIdent checking the wrong
list, because - in specific type match comma (,) was missing.
2016-01-21 16:54:40 +05:30
Dave Page
694506453b Copyright updates for 2016. 2016-01-18 14:48:14 +00:00
Ashesh Vashi
f8fd93c207 Update the user and datbaase information everytime, we connect the
server. And, delete them as soon as all connections are released.
2016-01-12 01:06:56 +05:30
Ashesh Vashi
932ed358e8 Adding the current user information in the server information (when
connected).
2016-01-11 22:11:10 +05:30
Ashesh Vashi
d2897a334f Using simplejson for jsonify the data of type Decimal, which will used
for numeric type of PostgreSQL, in python using psycopg2.
2016-01-09 18:05:18 +05:30
Murtuza Zabuawala
b1dbcd0932 [Python 3 compatibility] 'qtLiteral' functions needs to return data in
unicode.
2016-01-07 19:33:51 +05:30
Ashesh Vashi
5e67ca959d JSONinfy all data in new mode for the Backbone.Model.
Also, takes care about not quoting the identifier, when found any digit
in the name (except it starts with a digit).
2016-01-07 09:40:45 +05:30
Ashesh Vashi
a086820288 Allow to pass array as an input to the qtIdent. 2016-01-07 08:38:55 +05:30
Ashesh Vashi
fc9f94c1d0 Return the tuple (status, message) from the psycopg2 driver instead of
returning the response itself.
2016-01-04 21:59:24 +05:30
Murtuza Zabuawala
b309b1ffb8 [Python 3 compability] decode function used in 'needsQuoting' function
is not available on Python 3.
2016-01-04 17:09:15 +05:30
Ashesh Vashi
7358549524 Allow to specify the number of arguments in the qtTypeIdent to make it work
with schema specified object name.

You can use the qtTypeIdent template filter as:
conn|qtTypeIdent(name)
or,
conn|qtTypeIdent(schema_name, name)
2016-01-04 13:41:57 +05:30
Ashesh Vashi
1ba5d79978 Allow to specify the number of arguments in the qtIdent to make it work
with schema specified object name. This will also works with
EntepriseDB's package too.

Also, added dependency on the current connection object, it will allow
us to use the keywords list specific to the database server in futuer.

You can use the qtIdent template filter as:
conn|qtIdent(name)
or,
conn|qtIdent(schema_name, name)
2016-01-04 13:13:46 +05:30
Ashesh Vashi
49373df02d Resolved issues regarding the rows, and column description not return by
the given query in the execute_dict and execute_2darray function in the
psycopg2 driver.
2016-01-04 12:11:52 +05:30
Murtuza Zabuawala
574105ce5e Resolved an issue related to logging the error message.
Also, fetch the datlastsysoid when making the connection.
2016-01-04 11:18:04 +05:30
Ashesh Vashi
ef3f54378c Introduced an ajax response 'not_implemented' with HTTP status code 501. 2016-01-02 14:55:13 +05:30