Gramex Old Release Notes

v1.29.0 (2018-02-15)

SAMLAuth is now a part of Gramex. Most enterprise Single-Sign-On (SSO) implementations are now SAML-enabled, including Microsoft ActiveDirectory. Gramex can integrate with all of these apps now. (@vinay.ranjan)

ProxyHandler is a new handler that lets you:

  1. Access data from server-side APIs directly from the browser (e.g. Gmail API, Google Translate, SalesForce API, etc)
  2. Expose non-Gramex applications within a Gramex app – using Gramex Auth.

FormHandler has several enhancements:

Alerts command line usage gives you access to Smart alerts give you access to alert emails from command line. You can use this as a local mail merge app.

FunctionHandler supports the method: kwarg. You can decide which HTTP methods to support - including PUT, DELETE, etc.

A few common queries are documented:

Stats:

v1.28.0 (2018-01-31)

FormHandler has two major upgrades. FormHandler charts use the Seaborn library to generate static charts on the server as SVG or PNG (PDF too.) Setting ?meta=y returns metadata as HTTP headers.

The UI component library now uses Bootstrap 4 stable version. New components are:

Smart alerts can now:

PPTXHandler exposes URL query parameters in the configuration. This lets you generate presentations whose content can be updated by the URL. For example, you can create a certificate template, and set ?name= to update the recipient’s name. (@ranjan.balappa).

FunctionHandler can now return NumPy objects as well – not just Python objects. (@tejesh.papineni)

Thanks to the recent Docuthon, documentation has improved. Key changes:

Note: the condition() transform is deprecated. No known repository uses it.

Stats:

v1.27.0 (2018-01-20)

g1 is upgraded to v0.3 which features a $().formhandler() component. This renders FormHandlers as Excel-like tables (sortable, filterable).

FormHandler supports a ?meta=y query parameter that returns metadata about the query. This includes the number of rows, offset, limit, sort options, columns excluded, etc.

The UI component library now uses Bootstrap 4 Beta 3. New components are:

The UI component library page itself is more usable:

CaptureHandler supports repeated ?dpi= arguments for PPTX that allow creating multiple slides with differently sized images (@pragnya.reddy). ?title_size= sets the title font size for pptx.

Using auth handlers for AJAX login is now well documented.

A new session data store type called type: sqlite is available. This is a bit slower, but allows multiple Gramex instances to share session data.

Smart Alerts templates can now access the Gramex config. This lets you re-use templates across different alerts, changing static content in the YAML configuration (@mukul.taneja).

Gramex supports a docker install option. The documentation also features common Windows administration options used when deploying Gramex.

Stats:

v1.26.0 (2017-12-31)

This release features an upgrade to the UI component library:

CaptureHandler for Chrome supports a window.renderComplete option. Set ?delay=renderComplete. This waits until window.renderComplete is true and then captures the page.

DBAuth can use a CSV file as its database.

PPTXHandler handles edge cases better:

This release also adds better debugging features:

Gramex now uses bandit to test for internal vulnerabilities like SQL injection.

Stats:

v1.25.0 (2017-12-15)

This release features Smart Alerts - a rule-based email alert service. This can be used to:

The UI component library has been extended with several custom components:

Also, D3 4.0 is now part of the UI components library.

A basic Log viewer app is part of Gramex. It shows the history of all pages accessed on Gramex.

Gramex console logs are more informative. Each request prints the name of the handler used to process it. This tells you whether the correct handler processed the URL or not. Also, when starting up, the list of all handler classes and priorities and shown.

To enable debug mode from the command prompt, run gramex --settings.debug.

Credits:

Stats:

v1.24.0 (2017-11-30)

Note: Before installing this release, you install node 8.x or above, and also run npm install -g yarn. Also run pip install with a --verbose option. Gramex installs several UI libraries and the installation is slow. Yarn speeds up the installation. --verbose lets you see progress.

This release adds a UI component library that includes a series of standard front-end libraries and a Gramex-customized version of Bootstrap 4. By @bhanu.kamapantula

All auth handlers support a inactive expiry feature that closes a session if no requests were made for a certain period.

DBAuth supports a Sign up feature that lets users create their own accounts. By @nikhil.kabbin

DBAuth used to ignore the redirect: key when directly POSTing via AJAX. So the response would always redirect to /. If / is not a valid URL, it would return an error. This is now fixed – DBAuth always uses redirect:.

PPTXHandler pptgen supports text styles, heatgrid order, pie/donut colors, and a number of other features. By @sanjay.yadav

FormHandler and gramex.data.filter accept a queryfile: parameter that lets you specify queries in a separate SQL file. This makes indentation and syntax highlighting easier, making it easier to debug queries.

gramex init and all Gramex installations use Yarn in offline mode if possible - prefering Yarn over npm. This is to optimize installations.

A few developer enhancements and bugfixes:

Stats:

v1.23.1 (2017-11-13)

This is an interim release with minor features and major bugfixes.

The bugfixes are:

Stats:

v1.23.0 (2017-10-31)

This release adds Gramex as a Windows service, making it easier for Windows administrators to auto-start and manage Gramex. Run gramex service install from the app directory to create a service.

FormHandler has improved – you won’t need FunctionHandler even to edit data.

CaptureHandler supports Chrome as a backend engine. This allows screenshots that are far more accurate than PhantomJS.

Running gramex setup <directory> lets you set up apps by running npm, bower, pip install and any other relevant installations in the target directory. This can also set up pre-installed apps like formhandler or capture.

Logging is standardized. All logs are logged to $GRAMEXDATA/logs. There are 3 types of logs, out-of-box:

  1. Gramex logging saves all Gramex log messages on the console to logs/gramex.log
  2. Request logging saves all HTTP requests to logs/requests.csv
  3. User logging saves all login and logout actions to logs/user.csv

All logs are auto-rotated weekly by default, and the location and fields can be configured. All logging is now through the standard Python logging mechanism.

Auth handlers can now implement a “Remember me” option when users log in, and set up different session expiry values based on the user’s choice.

LDAPAuth fetches LDAP attributes with direct LDAP login. (Earlier, this was possible only through bind LDAP login.)

DBAuth has an email_as key that sends forgot password emails from a specific email ID.

Gramex configurations support conditions. Sections will be included only in specific environments.

YAML imports allow overriding the \$YAMLURL value. This lets you mount applications from any place into any URL. Imports also support lists.

There are several API improvements. The most important are:

For security purposes, Gramex deletes all old session keys without an expiry value. (These originate from Gramex versions prior to Gramex 1.20.)

There are several bug fixes, documentation enhancements and test cases added.

v1.22.0 (2017-09-28)

This release adds Windows IntegratedAuth. This allows Windows domain users to log into Gramex automatically without entering and ID or password.

FormHandler has improved - you won’t need FunctionHandler to process data.

CaptureHandler supports a ?debug=1 URL query parameter that logs HTTP responses and PhantomJS messages to the console. ?debug=2 also logs HTTP requests made. The Guide also features a live example. CaptureHandler’s selector parameter is improved and captures portions of a page better.

The default error pages shown for HTTP 500 (Internal Server Error), 404 (Not Found) and 403 (Forbidden) are a little more informattive and better designed.

All auth handlers support a custom session expiry duration. You can increase / decrease the cookie’s expiry duration.

This release also features an undocumented PPTXHandler that generates PowerPoint presentations. But the API will change. This handler not meant for general use yet. A future release will define and document the specs.

There are some enhancements to the API:

There are some changes to Gramex behaviour that may impact your application:

Stats:

v1.21.0 (2017-08-29)

This is a major release with new functionality. There are two new handlers.

UploadHandler is also improved. Specifically:

All requests are now logged under $GRAMEXDATA/logs/requests.csv, independent of the console display. This will be used in the next release to show app usage.

When writing code, there are a few new features:

Documentation is also improved to cover:

There are a number of bugfixes on this release. The most important are:

There is one deprecation this release. handler.kwargs is now handler.conf.kwargs. (This is a largely unused feature of Gramex.) UPDATE: this was re-introduced in 1.22.

v1.20.0 (2017-07-31)

This is a major release with some critical enhancements and fixes.

(NOTE: This release supports Python 2, not Python 3 due to a temporary bug.)

Firstly, caching is improved.

Gramex supports inline images in HTML email. This is useful when sending visualizations as images in emails.

There is better support for programmatic authentication.

There are a few security enhancements.

The performance of sessions has been improved as well.

Command line usage of Gramex is improved.

There are a couple of obscure fixes to DataHandler.

Finally, there are a few documentation updates.

v1.19.0 (2017-07-09)

This is a minor enhancement release with

v1.18.0 (2017-06-29)

This is a minor enhancement release with several critical bugfixes.

v1.17.1 (2017-04-23)

This is a maintenance release with a few minor enhancements:

A series of important bugfixes are addressed:

v1.17 (2017-01-29)

This version has a breaking change. The default login URL is /login/ instead of /login. This makes it easier to create custom login pages using FileHandler (e.g. /login/index.html). If your application breaks, in your gramex.yaml app: section, add login_url: /login to revert the change.

v1.16 (2016-10-16)

v1.15 (2016-08-21)

v1.14 (2016-08-11)

v1.13 (2016-08-01)

v1.12 (2016-07-21)

v1.11 (2016-07-15)

v1.10 (2016-07-01)

v1.0.9 (2016-06-15)

v1.0.8 (2016-06-01)

There are two changes that may disrupt your code:

v1.0.7 (2016-05-15)

v1.0.6 (2016-05-01)

v1.0.5 (2016-04-15)

v1.0.4 (2016-03-30)

v1.0.3 (2016-01-18)

v1.0.2 (2015-10-11)

v1.0.1 (2015-09-09)

v1.0.0 (2015-09-08)