Rich Data Model
Using SQLAlchemy as ORM let us model application logic in OOP style without losing rich analytical capabilities of RDBMS. Our Model objects supports all dictionary-like operations
Data Access Object
Data access objects (DAO) make CRUD operations extremely simple. Saving and updating nested object hierarchies involving any type of relationship are performed in a single step, including data validation and sanitizing. The query methods can generate complex queries with little code
Service Layer
Service Layer provides a higher level of abstraction for communication among different components. Common tasks like building query from user input, pagination are made extremely simple. The coding conventions followed in the service layer helps keep controller code simple and maintainable
Generic Relation API
Our generic relation API enables developers to create relationships among objects without modifying existing tables. The related object can evolve without ever needing to modify existing code. Many application-wide common functionalities could be implemented using the Generic Relation API
Fine Grained ACL
Our ACL is extremely flexible, with support for Permission Group, Role and Resource objects. If permission for a resource is revoked, all means of accessing that resource in the application removed immediately without needing to log-out the user
Dependency Management
Built-in resource dependency management ensures user access to inter-dependent resources, reducing risk of false access denied errors
Seamless Integration
Our framework makes it possible to use any Python objects as data source for BIRT reports. The complexity of interfacing with the external report server is abstracted away from application developers
Declarative Data Export API
Python objects are used as BIRT data source through XML serialization. Our declarative data export API makes writing serializers for complex objects extremely simple
Dynamic Column Control
Columns in reports can be dynamically controlled, so the same report design file can be used to produce different reports for different data sets
Extended template blocks
Our extended block tags let you chain block contents across multiple templates when necessary. The template inheritance behavior of django remains untouched. So you can use both template inheritance models simultaneously
HTML Form Library
The HTML form tag library eliminates boilerplate code from templates. HTML code for complex forms can be generated in few lines of template tags
Useful collection of filters
Our template filter library contains many useful filters for common web development tasks and more humane representation of data
Dependency Management
Our static content manager ensures that related CSS/JS files are always loaded in proper order which reduces the dependency at any time.
CSS/JS Optimization
CSS and JS files are combined and minified with YUI compressor to reduce page loading time and bandwidth usage. Parallel build support results in greatly reduced build time in multi-core machines
CSS/JS versioning
File modification time based CSS/JS versioning ensures proper browser cache refresh after application update is applied in production servers