Commit Graph

37 Commits

Author SHA1 Message Date
Dave Page
7192a2b675 Rewrite the runtime as a tray-based server which can launch a web browser. Fixes #3086 2018-02-05 15:32:14 +00:00
Dave Page
89821c0d19 Update copyright notices for 2018. 2018-01-05 10:42:50 +00:00
Dave Page
f195b18f2d Ship with pre-configured paths that can work in both Server and Desktop modes out of the box. Fixes #2662
Ship the web code using server mode with appropriate paths by default and enable the runtime to override the mode, and force into desktop changing the appropriate paths to user-specific ones.

Note that this change will likely cause more advanced users to have to tweak configs.

RPMs will also need changes to create /var/lib/pgadmin and /var/log/pgadmin, owned by the webserver account.
2017-08-25 10:54:28 +01:00
Dave Page
ef4b8e8c1c Another minor perf tweak for the runtime. 2017-06-11 14:34:49 +01:00
Dave Page
44ce8985e0 Fix typo in variable name. 2017-03-28 08:55:38 -04:00
Dave Page
688c810300 Add header that seems to be needed with Python 3. 2017-03-28 08:41:38 -04:00
Maxim Zakharov
72548a99e1 Fix usage of QString::toUtf8(). Fixes #2299
Desktop runtime has a couple bugs using already freed memory supplied to embedded python leading to occasional crashes and failures to start maintenance processes (VACUUM, ANALYZE, REINDEX, CLUSTER).

This is caused by incorrect usage of QString::toUtf8() which returns newly created QByteArray which is automatically destroyed once closing context; e.g.
Py_SetPythonHome(pythonHome.toUtf8().data());
2017-03-28 08:26:16 -04:00
Ashesh Vashi
7767c085c3 Resolved an issue finding the python interpreter on *nix systems, and
Windows 2008 R2 (32 bit), while running the pgAdmin 4 as runtime for
the PostgreSQL one click installers.

- Found a typo in runtime code, we were appending the path using ';' on
  *nix systems too. We should have used ':', and that did not allow the
  os.environ['PATH'] to identify the correct path of the python
  interpreter under the 'venv' directory.

- On Windows 2008, it was not honouring the environment variables, set
  under the Qt application (e.g. pgAdmin4.exe runtime), in the python
  application. (e.g. pgAdmin4.py). We will need to assume that - the
  python interpreter resides under the 'venv' directory outside the
  'bin' directory.

- Also, on windows 2008, it was setting PYTHONHOME environment variable
  to the full path of the pgAdmin4.exe, we need to reset it to 'venv'
  directory, if we find the python interpreter under it.

Thanks Murtuza Zabuawala for tips, and help.
2017-03-10 21:19:06 +05:30
Dave Page
6696b3c316 Authenticate the runtime to the server. Fixes #2228 2017-03-06 14:53:49 +00:00
Dave Page
f221194bcc Update copyright notices for 2017. 2017-01-04 13:33:32 +00:00
Dave Page
58910c4b62 Allow the ApplicationPath to be absolute. 2016-12-02 11:10:08 +09:00
Neel Patel
a3e8ba93ae Ensure that argc/argv are set for the runtime interpretor, and that
PYTHONHOME is properly configured.
2016-08-16 11:29:42 +01:00
Ashesh Vashi
fc34f85aa3 Set the sys path from the runtime as we were doing it earlier along with the
PYTHONPATH environment variable settings.
2016-06-21 18:24:07 +05:30
Ashesh Vashi
980ab4735e Revert "Adding proper virtual environment path on windows."
As per Dave, we are not using 'pgAdmin 4' from the community installer,
hence - we should not bother about it.

This reverts commit 3484998775.
2016-06-21 17:44:46 +05:30
Ashesh Vashi
3484998775 Adding proper virtual environment path on windows. 2016-06-21 16:54:34 +05:30
Ashesh Vashi
061a9d9322 Using the preprocessor macor Q_OS_WIN differently, it was failing to
compile the runtime on windows with C1017 error.
2016-06-21 15:45:26 +05:30
Ashesh Vashi
4a7607445f Setting the PYTHONPATH variable before initializing the python
environment using Py_Initialize() function.

Also, add virtual environment binary path to the PATH environment
variable.
2016-06-21 15:02:35 +05:30
Ashesh Vashi
8b8e6fe59b Passing the arguments to the function appending the path by reference. 2016-06-20 23:04:00 +05:30
Ashesh Vashi
691f01b623 [Runtime] Setting few of the environment variables (i.e. PATH and
PYTHONPATH) to run the runtime with the virtual environment properly.
And, also allow to use the python interpreter to be used with the
background process modules.

- Add binary directory of the virtual environment to PATH environment
  variable.
- Add lib, dynamic libraries (python specific), and site-package
  directories of the virtual environment in the PYTHONPATH environment
  variable.
2016-06-20 21:31:19 +05:30
Asser Schrøder Femø
fc955537a8 Fix runtime compatibility with newer Python versions
Initial patch by Asser. Change restricted to Python 3.3 and above by me as PyUnicode_DecodeFSDefault was added in 3.3.
2016-06-20 10:51:46 +01:00
Dave Page
73988bcece Do a more sensible venv search on Windows, and don't update the
registry upon installation.
2016-06-16 16:22:45 +01:00
Dave Page
cef0dc7c88 Hunt for the runtime on Windows in the same way we do on Mac. 2016-06-16 13:07:35 +01:00
Dave Page
fa917a0828 Prevent the runtime from compiling bytecode to avoid permissions issues. 2016-06-16 11:30:23 +01:00
Dave Page
4380c6714e Fix venv search path on Mac. 2016-06-07 12:12:39 +01:00
Sandeep Thakkar
3074af101b Add Mac Appbundle generation support. 2016-06-02 13:56:56 +01:00
Dave Page
a5bb65c468 Search path for the runtime when running in a Mac dev env. 2016-05-10 16:39:02 +01:00
Sandeep Thakkar
c8406a5994 Fix the runtime search path when running in a Mac App Bundle 2016-05-06 15:53:00 +01:00
Neel Patel
efc8815ecb Update the runtime to properly support Windows. 2016-02-02 13:16:01 +00:00
Dave Page
7c9347873f Use a custom configuration dialogue and allow the user to specify
the application path as well as the Python path.
2016-01-19 10:26:36 +00:00
Neel Patel
8f146ebb4c Support tabs in the runtime browser.
Added functionality to open different website link and load the
website data to different tab. To achieve this, new customized
QTabWidget and QWebView are added to render the data to WebView
widget. All the widgets (New Tab, WebViewWinodw, and QToolButton)
are added dynamically. QToolButton is used to traverse back and
forward to web document opened in WebViewWindow.

Introduced the New class called WebViewWindow which is derived
from QWebView. Each tab of the QTabWidget contains the instance
of WebViewWindow class. WebViewWindow class is useful to display
the web document.

Introduced New class called TabWindow which is derived from
QTabWidget. This class is useful to achieve following functionality:
  - Customize the close button of tabbar so that it can only be
    visible other then main pgAdmin 4 window.
  - Enable/Disable the toolbutton added left side of tabbar
    depending on the web history traversed by the user in WebViewWindow.
  - Set the tooltip text of the tabbar depending on the title change
    event of WebViewWindow class.

Modified the Qt project file to support the both the version
of python 2 and python 3.

Qt5 is recommended to test pgAdmin4 in dektop mode.
2016-01-18 14:33:28 +00:00
Dave Page
2354c3e07d Allow multiple Python Path elements to be given in a semi-colon delimited list. 2016-01-12 13:50:49 +00:00
Dave Page
cd9d005c49 Remove CherryPy from the source tree, and change references to Flask
instead. Add support to the runtime to allow the user to specify the
Python path. This needs to be more automated for release, but will be
useful for debugging and development.
2014-12-16 12:53:09 +00:00
Dave Page
b022e5d347 Have the runtime check in a loop to see if the app server is up before
opening the browser window.
2013-10-04 21:49:12 +01:00
Dave Page
457a842cec Find a random port number to use for the application server to avoid conflicts
with any other apps that may have already bound to the default port used by CP.
2013-10-04 21:48:01 +01:00
Dave Page
9080a782d5 Handle slow startup of the web server.
If the web server is slow to start, we may need to retry the initial
page load. Implement a retry system that will retry the initial load
4 times, after 1, 2, 3 and 4 seconds, before giving up and leaving
the user with an error message and a link to retry manually.
2013-06-22 00:49:40 +01:00
Dave Page
7fd90ac10f QT4 compatibility. 2013-06-21 23:32:32 +01:00
Dave Page
28f45ea9f9 Initial PoC of a CherryPy app integrate with the runtime.
Upon startup, the runtime will attempt to locate pgAdmin4.py in a
number of different relative locations. Once found, it will execute
it in a new thread. The main window is then created and the brower's
initial page is set to the root of the CherryPy server. At present,
that's http://127.0.0.1:8080.
2013-06-21 23:21:11 +01:00