Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
__init__.py150 linesDownload Raw Back to about
1##########################################################################2#3# pgAdmin 4 - PostgreSQL Tools4#5# Copyright (C) 2013 - 2024, The pgAdmin Development Team6# This software is released under the PostgreSQL Licence7#8##########################################################################9 10"""A blueprint module implementing the about box."""11 12from flask import Response, render_template, request13from flask_babel import gettext14from flask_security import current_user15from pgadmin.user_login_check import pga_login_required16from pgadmin.utils import PgAdminModule17from pgadmin.utils.menu import MenuItem18from pgadmin.utils.constants import MIMETYPE_APP_JS19from pgadmin.utils.ajax import make_json_response20import config21import httpagentparser22from pgadmin.model import User23from user_agents import parse24import platform25 26MODULE_NAME = 'about'27 28 29class AboutModule(PgAdminModule):30    def get_own_menuitems(self):31        appname = config.APP_NAME32 33        return {34            'help_items': [35                MenuItem(36                    name='mnu_about',37                    priority=999,38                    module="pgAdmin.About",39                    callback='about_show',40                    icon='fa fa-info-circle',41                    label=gettext('About %(appname)s', appname=appname)42                )43            ]44        }45 46    def get_exposed_url_endpoints(self):47        return ['about.index']48 49 50blueprint = AboutModule(MODULE_NAME, __name__, static_url_path='')51 52 53##########################################################################54# A test page55##########################################################################56@blueprint.route("/", endpoint='index')57@pga_login_required58def index():59    """Render the about box."""60    info = {}61    # Get OS , NW.js, Browser details62    browser, os_details, nwjs_version = detect_browser(request)63    admin = is_admin(current_user.email)64 65    if nwjs_version:66        info['nwjs'] = nwjs_version67 68    if config.SERVER_MODE:69        info['app_mode'] = gettext('Server')70    else:71        info['app_mode'] = gettext('Desktop')72 73    info['browser_details'] = browser74    info['version'] = config.APP_VERSION75    info['admin'] = admin76    info['current_user'] = current_user.email77 78    if admin:79        settings = ""80        info['os_details'] = os_details81        info['log_file'] = config.LOG_FILE82 83        # If external datbase is used do not display SQLITE_PATH84        if not config.CONFIG_DATABASE_URI:85            info['config_db'] = config.SQLITE_PATH86 87        for setting in dir(config):88            if not setting.startswith('_') and setting.isupper() and \89                setting not in ['CSRF_SESSION_KEY',90                                'SECRET_KEY',91                                'SECURITY_PASSWORD_SALT',92                                'SECURITY_PASSWORD_HASH',93                                'ALLOWED_HOSTS',94                                'MAIL_PASSWORD',95                                'LDAP_BIND_PASSWORD',96                                'SECURITY_PASSWORD_HASH']:97                if isinstance(getattr(config, setting), str):98                    settings = \99                        settings + '{} = "{}"\n'.format(100                            setting, getattr(config, setting))101                else:102                    settings = \103                        settings + '{} = {}\n'.format(104                            setting, getattr(config, setting))105 106        info['settings'] = settings107 108    return make_json_response(109        data=info,110        status=200111    )112 113 114def is_admin(load_user):115    user = User.query.filter_by(email=load_user).first()116    return user.has_role("Administrator")117 118 119def detect_browser(request):120    """This function returns the browser and os details"""121    nwjs_version = None122    agent = request.environ.get('HTTP_USER_AGENT')123    os_details = parse(platform.platform()).ua_string124 125    if 'Nwjs' in agent:126        agent = agent.split('-')127        nwjs_version = agent[0].split(':')[1]128        browser = 'Chromium' + ' ' + agent[2]129 130    else:131        browser = httpagentparser.detect(agent)132        if not browser:133            browser = agent.split('/')[0]134        else:135            browser = browser['browser']['name'] + ' ' + browser['browser'][136                'version']137 138    return browser, os_details, nwjs_version139 140 141@blueprint.route("/about.js")142@pga_login_required143def script():144    """render the required javascript"""145    return Response(146        response=render_template("about/about.js", _=gettext),147        status=200,148        mimetype=MIMETYPE_APP_JS149    )150 
codekingpro/portable-devtools · Team Ai