[Patch] PGAdmin 4 JSON Handling - Mailing list pgadmin-hackers

From Ronan Dunklau
Subject [Patch] PGAdmin 4 JSON Handling
Date
Msg-id 7012119.FH2AZplQed@ronan.dunklau.fr
Whole thread Raw
Responses Re: [Patch] PGAdmin 4 JSON Handling  (Ashesh Vashi <ashesh.vashi@enterprisedb.com>)
List pgadmin-hackers
Hello.

I'm trying to dive into the PGAdmin 4 codebase, and one low hanging fruit that
I saw was the handling of JSON data.

The first patch is really trivial, and allows PgAdmin4 to run on system with
case sensitive filesystems.

JSON data should be returned to the client using an application/json MIME-
TYPE. Flask already provides an easy way to generate JSON response, with its
jsonify function.

This patch does not change anything architecturally, it just ensure that the
get_nodes method of each hook returns JSONizable objects, instead of building
them manually.

Moreover, there was a function already in place to return JSON document
according to a certain layout (everything under "data", with metadata attached
along the way), which was not used by the ACi tree. This patch also changes
this format to ensure the json responses returned by the application are
consistent.


On a side note, I have a few questions about the architecture of the
application.

- the "hooks" function should really implement a common class, instead of
relying on testing the presence of attributes to find a function. Essentially,
hooks modules are classes in disguise right now. I think it may be cleaner to
define our own Blueprint subclass to add those methods.
- regarding the jsonification, I feel like the NODE_TYPE should be a part of
the model itself, via a class attribute. A common method should be implemented
for all nodes, such as to eliminate duplicated code like the one which can be
found in the servers/hooks et server_groups/hooks get_nodes implementation

What are your thought on this ?

Sorry for the noise in the patch, but my vim configuration automatically
removes extraneous white spaces. If you'd prefer a separate patch for that, I
can try to generate one.

As for the Javascript, did you consider using a rich application  framework ?
For such a massive application as PgAdmin, I feel like developing each
component from a jquery plugin and some glue might not scale well with the
size of the app, and could lead to unmaintainable code.  By Rich Application
Framework, I'm thinking about something like Dojo or ExtJS.

--
Ronan Dunklau
http://dalibo.com - http://dalibo.org

Attachment

pgadmin-hackers by date:

Previous
From: Sanket Mehta
Date:
Subject: Re: PgAgent Patch
Next
From: Ashesh Vashi
Date:
Subject: Re: [Patch] PGAdmin 4 JSON Handling