########################################################################## # # pgAdmin 4 - PostgreSQL Tools # # Copyright (C) 2013 - 2017, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## """A blueprint module providing utility functions for the application.""" import pgadmin.utils.driver as driver from flask import url_for, render_template, Response from flask_babel import gettext as _ from pgadmin.utils import PgAdminModule from pgadmin.utils.preferences import Preferences import config MODULE_NAME = 'misc' class MiscModule(PgAdminModule): def get_own_javascripts(self): return [{ 'name': 'pgadmin.misc.explain', 'path': url_for('misc.index') + 'explain/explain', 'preloaded': False }, { 'name': 'snap.svg', 'path': url_for( 'misc.static', filename='explain/vendor/snap.svg/' + ( 'snap.svg' if config.DEBUG else 'snap.svg-min' )), 'preloaded': False }] def get_own_stylesheets(self): stylesheets = [] stylesheets.append( url_for('misc.static', filename='explain/css/explain.css') ) return stylesheets def register_preferences(self): """ Register preferences for this module. """ self.misc_preference = Preferences('miscellaneous', _('Miscellaneous')) lang_options = [] for lang in config.LANGUAGES: lang_options.append({'label': config.LANGUAGES[lang], 'value': lang}) # Register options for the User language settings language = self.misc_preference.register( 'miscellaneous', 'user_language', _("User language"), 'options', 'en', category_label=_('User language'), options=lang_options ) # Initialise the module blueprint = MiscModule(MODULE_NAME, __name__) ########################################################################## # A special URL used to "ping" the server ########################################################################## @blueprint.route("/") def index(): return '' ########################################################################## # A special URL used to "ping" the server ########################################################################## @blueprint.route("/ping", methods=('get', 'post')) def ping(): """Generate a "PING" response to indicate that the server is alive.""" driver.ping() return "PING" @blueprint.route("/explain/explain.js") def explain_js(): """ explain_js() Returns: javascript for the explain module """ return Response( response=render_template( "explain/js/explain.js", _=_ ), status=200, mimetype="application/javascript" )