Fixed the letter case of the javascript file names.

Also, JSON data should be returned to the client using an
application/json MIME-TYPE using flask's jsonify function.
This commit is contained in:
Ronan Dunklau 2015-06-29 12:12:27 +05:30 committed by Ashesh Vashi
parent 751f8383fa
commit 9e0b011ec8
8 changed files with 144 additions and 161 deletions

View File

@ -26,14 +26,16 @@ def register_submodules(app):
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 = ''
# TODO: Move this JSON generation to a Server method
# this code is duplicated somewhere else
for group in groups:
value += '{"id":"%s/%d","label":"%s","icon":"icon-%s","inode":true,"_type":"%s"},' % (NODE_TYPE, group.id, group.name, NODE_TYPE, NODE_TYPE)
value = value[:-1]
return value
yield {
"id": "%s/%d" % (NODE_TYPE, group.id),
"label": group.name,
"icon": "icon-%s" % NODE_TYPE,
"inode": True,
"_type": NODE_TYPE
}
def get_standard_menu_items():
"""Return a (set) of dicts of standard menu items (create/drop/rename), with

View File

@ -20,12 +20,15 @@ def get_nodes(server_group):
"""Return a JSON document listing the server groups for the user"""
servers = Server.query.filter_by(user_id=current_user.id, servergroup_id=server_group)
value = ''
# TODO: Move this JSON generation to a Server method
for server in servers:
value += '{"id":"%s/%d","label":"%s","icon":"icon-%s","inode":true,"_type":"%s"},' % (NODE_TYPE, server.id, server.name, NODE_TYPE, NODE_TYPE)
value = value[:-1]
return value
yield {
"id": "%s/%d" % (NODE_TYPE, server.id),
"label": server.name,
"icon": "icon-%s" % NODE_TYPE,
"inode": True,
"_type": NODE_TYPE
}
def get_standard_menu_items():

View File

@ -9,17 +9,22 @@
"""Defines views for management of servers"""
from flask import Blueprint, Response, current_app, request
from flask import Blueprint, request
from flask.ext.babel import gettext
from flask.ext.security import current_user, login_required
from . import NODE_TYPE, NODE_PATH
from pgadmin.utils.ajax import make_json_response
from pgadmin.settings.settings_model import db, ServerGroup
import config
from pgadmin.settings.settings_model import db, Server
import traceback
# Initialise the module
blueprint = Blueprint("NODE-" + NODE_TYPE, __name__, static_folder='static', static_url_path='', template_folder='templates', url_prefix=NODE_PATH)
blueprint = Blueprint("NODE-" + NODE_TYPE, __name__,
static_folder='static',
static_url_path='',
template_folder='templates',
url_prefix=NODE_PATH)
@blueprint.route('/add/', methods=['POST'])
@login_required
@ -27,23 +32,22 @@ def add():
"""Add a server node to the settings database"""
success = 1
errormsg = ''
data = { }
data = {}
success = False
errormsg = ''
if request.form['name'] != '':
server = Server(user_id=current_user.id, name=request.form['name'])
try:
db.session.add(server)
db.session.commit()
success = True
except Exception as e:
success = 0
errormsg = e.message
else:
success = 0
errormsg = gettext('No server name was specified')
if success == 1:
if success:
data['id'] = server.id
data['name'] = server.name

View File

@ -26,22 +26,11 @@ blueprint = Blueprint("NODE-" + NODE_TYPE, __name__, static_folder='static', st
@login_required
def get_nodes(server_group):
"""Build a list of treeview nodes from the child nodes."""
value = '['
nodes = []
for node in sub_nodes:
if 'hooks' in dir(node) and 'get_nodes' in dir(node.hooks):
value += node.hooks.get_nodes(server_group) + ','
if value[-1:] == ',':
value = value[:-1]
value += ']'
resp = Response(response=value,
status=200,
mimetype="text/json")
return resp
if hasattr(node, 'hooks') and hasattr(node.hooks, 'get_nodes'):
nodes.extend(node.hooks.get_nodes(server_group))
return make_json_response(data=nodes)
@blueprint.route('/add/', methods=['POST'])

View File

@ -292,7 +292,12 @@ ALTER TABLE tickets_detail \n\
// Initialise the treeview
$('#tree').aciTree({
ajax: {
url: '{{ url_for('browser.get_nodes') }}'
url: '{{ url_for('browser.get_nodes') }}',
converters: {
'text json': function(payload) {
return $.parseJSON(payload).data;
}
}
},
});
tree = $('#tree').aciTree('api');

View File

@ -20,6 +20,7 @@ from . import sub_nodes
from pgadmin.browser import all_nodes
from pgadmin import modules
from pgadmin.settings import get_setting
from pgadmin.utils.ajax import make_json_response
import config
@ -60,7 +61,7 @@ def index():
stylesheets.append(url_for('static', filename='css/wcDocker/wcDockerSkeleton.min.css'))
stylesheets.append(url_for('static', filename='css/wcDocker/theme.css'))
stylesheets.append(url_for('static', filename='css/jQuery-contextMenu/jQuery.contextMenu.css'))
stylesheets.append(url_for('static', filename='css/jQuery-contextMenu/jquery.contextMenu.css'))
stylesheets.append(url_for('browser.static', filename='css/browser.css'))
stylesheets.append(url_for('browser.static', filename='css/aciTree/css/aciTree.css'))
stylesheets.append(url_for('browser.browser_css'))
@ -75,7 +76,7 @@ def index():
scripts.append(url_for('static', filename='js/wcDocker/wcDocker.min.js'))
scripts.append(url_for('static', filename='js/jQuery-contextMenu/jquery.ui.position.js'))
scripts.append(url_for('static', filename='js/jQuery-contextMenu/jQuery.contextMenu.js'))
scripts.append(url_for('static', filename='js/jQuery-contextMenu/jquery.contextMenu.js'))
scripts.append(url_for('browser.static', filename='js/aciTree/jquery.aciPlugin.min.js'))
scripts.append(url_for('browser.static', filename='js/aciTree/jquery.aciTree.dom.js'))
scripts.append(url_for('browser.static', filename='js/aciTree/jquery.aciTree.min.js'))
@ -206,21 +207,8 @@ def browser_css():
def get_nodes():
"""Build a list of treeview nodes from the child nodes."""
value = '['
nodes = []
for node in sub_nodes:
if 'hooks' in dir(node) and 'get_nodes' in dir(node.hooks):
value += node.hooks.get_nodes() + ','
if value[-1:] == ',':
value = value[:-1]
value += ']'
resp = Response(response=value,
status=200,
mimetype="text/json")
return resp
if hasattr(node, 'hooks') and hasattr(node.hooks, 'get_nodes'):
nodes.extend(node.hooks.get_nodes())
return make_json_response(data=nodes)

View File

@ -28,6 +28,7 @@ roles_users = db.Table('roles_users',
db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))
class Version(db.Model):
"""Version numbers for reference/upgrade purposes"""
__tablename__ = 'version'
@ -80,5 +81,3 @@ class Server(db.Model):
maintenance_db = db.Column(db.String(64), nullable=False)
username = db.Column(db.String(64), nullable=False)
ssl_mode = db.Column(db.String(16), nullable=False)

View File

@ -9,20 +9,13 @@
"""Utility functions for dealing with AJAX."""
from flask import Response
from flask import jsonify
import json
def make_json_response(success=1, errormsg='', info='', result={}, data={}):
def make_json_response(success=True, **kwargs):
"""Create a HTML response document describing the results of a request and
containing the data."""
doc = { }
doc['success'] = success
doc['errormsg'] = errormsg
doc['info'] = info
doc['result'] = result
doc['data'] = data
response = Response(response=json.dumps(doc),
status=200,
mimetype="text/json")
return response
response = kwargs.copy()
response.setdefault('result', {})
response.setdefault('data', {})
return jsonify(response)