Download project files

How do I verify a download?

110 of 29 releases

0.9.4 release from the 0.9 series released 2016-07-28

Release information
Release notes:

Appy 0.9.4 includes some significant changes, bugfixes and improvements, in the appy.pod part (more work on the xhtml2odt conversion, images import, compatibility with latest LibreOffice...) as well as in the appy.gen part (JSON support, Google API integration...).
Appy 0.9.4 corresponds to revision 247 on


- PdfImporter: create temp images with Ghostscript in the OS temp folder.
- Bugfix (calling imagemagick to perform a transformation on an included image).
- doc_importers::ImageImporter: bugfixes. bugfix.
- xhtml2odt: removed default style AppyStandard (derived from Standard): use Standard style as direct parent for other Appy-specific styles.
- xhtml2odt: many small bugfixes.
- xhtml2odt: retrieve styles defined on 'p' tags within 'td' tags, that are removed from the result.
- xhtml2odt: support css attributes 'text-decoration', 'font-weight' and 'font-style'.
- Bugfix: custom styles generated by the styles_manager::StylesGenerator for 'p' and 'div' tags are now defined as children of the default Standard style.
- Bugfix with LibreOffice 5 that adds text:sender-initials tags within annotations.
- allow to export a multi-sheet excel file as multiple CSV files (using outputType='csv*').

- Created class appy.gen.Ui and an instance of it in Config.ui for customizing the user interface: banner, fonts, etc. Consequently, appy.css now contains Appy variables (syntax: |variableName|) that are resolved at web server startup from Ui fields.
- bugfix.
- added method FileInfo::getExtension
- User interface:: the Appy message (yellow rectangle) has now a fixed position and always appears, even if the top of the page is not shown.
- pxTemplate: added hook 'pxLinksAfter' for defining additional links after the pages.
- jscalendar integration: bugfix.
- List field: bugfixes.
- Ref field: take Ref.sselect into account.
- Ref field: cell layout for Refs; bugfix when rendering ref fields within other ref fields.
- Pod field: added a new predefined layout (left-aligned).
- Pod field: added param raiseOnError (similar to pod's Renderer homonym parameter)
- Pod field: added parameter « action » allowing to define an action that executes when after a pod result is produced.
- All fields : added some predefined layouts of 'vd' type (view-description: for fields that need to display their description on view layouts.
- Computed field: method can now be a (statically or a method producing a) Search instance.
- LDAP: allow to test LDAP servers at Appy startup.
- Groups with 'grid' layout: bugfix (rendering of sub-groups within a 'grid' group).
- For every HTML page produced by Appy, get a content for tag html->header->title based on the currently shown object and page.
- More flashy IE8 warning and bugfixes for IE11.
- Added param Field.indexValue allowing to specify a method producing a value to index that may be different than the stored value.
- object.onEditEarly takes now a param.
- Allow to show/hide the login form.
- Added method Class.getLoginsHaving allowing to know what logins have a given local role on some object.
- Added the concept of 'authentication context'.
- added a method for modifying roles mentioned in workflow transitions.
- Removed unused persistent Tool fields (those fields became RAM-config fields).

- better error reporting.
- the JSON decoder now converts JSON dicts into Python objects.
- Bugfix in the XML unmarshaller. Thanks Marc Dubrowski.
- first steps for calling the Web Services Google API, allowing to geocode addresses and compute distances between it.

File Description Downloads
download icon (md5) Appy 0.9.4 317
last downloaded 3 weeks ago
Total downloads: 317

0.9.3 release from the 0.9 series released 2016-03-21

Release information
Release notes:

Appy 0.9.3 includes some significant changes, bugfixes and improvements, in the appy.pod (mainly in xhtml2odt convertion) as well as in the appy.gen parts.
Appy 0.9.3 corresponds to revision 188 on


- Added a styles generator that is able to generate on-the-fly ODF styles based on CSS attributes. Currently works for CSS attributes 'margin-x' on paragraphs.
- xhtml2odt: take into account text alignment (left, center, right) within table cells.
- xhtml2odt: support 'text-align' CSS properties on 'p' and 'div' tags.
- xhtml2odt: support CSS attribute 'background-color' for table cells.
- xhtml2odt: ensure support for non-breaking hyphens (dashes).
- xhtml2odt: manage rowspans in table cells.
- xhtml2odt: added the 'keeWithNext' functionality.
- xhtml2odt: CSS properties: parse float as well as int values. For determining table column widths, only units '%' and 'px' are supported. Units 'pt' and 'cm' are ignored: for columns whose widths are specified with those units, we simply deduce the column width from the cell content.
- xhtml2odt: render p tags inside li tags.
- xhtml2odt: managed 'div' and 'p' tags into 'li' tags.
- xhtml2odt: test 'xhtmlPIntoLis': more complete test with inner lists.
- xhtml2odt: within XHTML tables, compute the longest word within every column. We plan to integrate this information for computing the relative width of every column (to do).
- xhtml2odt: computing table widths and table column widths: improvements.
- xhtml2odt: determine base styles for cells: bugfix.
- xhtml2odt: Compute cell styles: bugfix.
- xhtml2odt: ignore paragraphs defined into tds.
- xhtml2odt: support table widths defined in cm.
- xhtml2odt: parse colors expressed as rgb expressions to convert them in hexadecimal (rgb expressions not being supported by LibreOffice / ODF).
- xhtml2odt: convert CSS attr 'vertical-align' to ODF equivalent.
- xhtml2odt: convert CSS 'text-align' attributes into ODF.
- xhtml2odt: support css attribute font-variant:small-caps.
- xhtml2odt: added attribute TableProperties.minColumnWidth allowing to customize the minimum default column width for table colummns.
- xhtml2odt: bugfix: when 2 inner tags surrounded exactly the same portion of text, one of the tags was ignored.
- xhtml2odt: support css property 'color' and support (background-)color values expressed as HTML color names.
- xhtml2odt: included 6 default heading styles in any pod template.
- xhtml2odt: support CSS attribute 'font-size'.
- xhtml2odt: allow to generate text paragraphs (span).
- xhtml2odt: parse negatie values for CSS properties.
- xhtml2odt: support table attr 'cellspacing' and CSS equivalent 'border-spacing' (1 value only).
- xhtml2odt: support table attribute 'border'.
- Added variables PIPE and SEMICOLON for using those pod-reserved chars within pod expressions.
- do ... from document(): new parameter 'convertOptions' allowing to perform some transformation with imagemagick (convert) before inserting an image into a pod result.
- do ... from document(): if the image type cannot be deduced from the file name, set format='image' and pod will guess the image type for you.
- Bugfix following problematic changes in content.xmlt and styles.xmlt.
- styles.xmlt: all paragraph Appy styles inherit from style AppyStandard.
- added options to run a single test (-t [testName]) or a single test suite (-s [testSuite]).
- Renderer: before calling the xhtml2odt converter, remove special chars '\v' and '\f' that produce SAX parser errors.
- Stop using popen3, os.system... Every call to another process is now done via function appy.shared.utils::executeCommand that calls subprocess.Popen.
- Added function 'columnBreak' available in the pod context for dumping a paragraph that forces a column break.
- Function 'xhtml': manage unicode strings.
- Added param 'space' to BulletedProperties / NumberedProperties instances, to determine the space between the bullet / number and the text.
- Importing images: allow to keep image ratio.
- PdfImporter: prepared to configure Ghostscript to raster a PDF into images using various devices: jpeg, jpeggray, png16m, pnggray. Currently, png16m is activated.

- Ref field: bugfix: checking the presence of the request value when editing a ref with link=True.
- Ref field: added the possibility to show a confirm popup when unlinking an object (param unlinkConfirm, True by default).
- Ref field: bugfix: function 'goto tied object' within a popup.
- Ref field: added param 'links' allowing to enable/disable links to tied objects.
- Ref field: added parameter Ref.menuCss allowing,when render is 'menus', to specify a CSS class to apply to menu titles.
- Ref field: added param Ref.renderMinimalSep allowing to customize the separator used when rendering tied objects with the 'minimal' render mode.
- Ref field: allow to define forward Refs having no back Ref.
- Ref field: added param 'emptyIndexValue' allowing to perform queries matching patterns like 'someValue OR empty' (not possible to represent 'empty' with the standard index).
- List field: allow to have (forward-only) Ref field as sub-fields.
- Dict field: added a parameter allowing to overwrite the existing value instead of updating it (which is the default behaviour).
- Pod field: added param 'forceOoCall' (similar to the same parameter in appy.pod.Renderer's constructor.
- Pod field: added param 'downloadDisposition'.
- Pod field: added parameter 'confirm' allowing to get a confirmation popup before generating a pod result.
- Action field: do not unindex object if the action deleted it (obj.delete does it). By the way this code did not work.
- File field: added parameter File.downloadAction, allowing to specify a custom method that will be executed every time a file is downloaded.
- File objects: disable byte serving (at least for now);.
- File field: added method FileInfo::getBase64 to produce de base64 version of a file (in one chunk, which is different from what the XML marshaller does: it separates it into several XML sub-tags.
- Calendar field: allow to configure how the legend is rendered.
- Calendar field: added the possibility to send emails when validation of events is triggered.
- Calendar field: allow to navigate easier from one month to another.
- Calendar field: prevent browsing to months being outside [startDate, endDate].
- Calendar field: calendar::createEvent: added a param allowing to delete any existing event before creating the new event.
- Calendar: added a parameter 'selectableMonths' to the Calendar. This param determines, in a calendar monthly view, the number of months in the past or in the future, relative to the currently shown one, that will be accessible by simply selecting them in a list.
- Computed field: added the possibility to freeze/unfreeze those fields.
- Computed field: now that Computed fields can be frozen, added attribute 'unfreezable' allowing to prevent freezing those fields. This is useful if a Computed field is used to implement a custom widget with storage.
- Date field: allow to specify custom date and hour formats; added parameter 'showDay' allowing to hide the 'day' selection list.
- Static attribute Class.listCss allows to change the CSS class applied to tables of Class instances. Defaults to 'list compact'. If a lot of information is shown (in getSubTitle), value 'list' is more appropriate.
- More translations in german.
- New param Config.forcedLanguage allowing to force the UI to be in a given language.
- If you want to raise an exception that leads to a nice error page with a translated message, in your code, raise an instance of appy.gen.MessageException.
- CSS and graphical improvements
- ToolMixin::getObject is able to find a temp object.
- Removed the anti-double-click system on list links (Refs, queries): when opening the link in a new tab the source tab is left with the animation.
- Added param 'test' allowing to show a warning on every page if we are on a test system.
- Allow to enter a comment for the initial transition when creating an object.
- bugfix when sending mail to several recipients.
- bugfix (date sometimes not correctly set when sending emails).
- If an 'advancedSearch' exists, use its parameters to search 'allSearch'.
- Exceptions raised by are inow instances of a new class WorkflowException.
- Class::sendMailIf: added an 'exclude expression' allowing to remove some user from the list of recipients based on any Python expression.
- Added the possibility to add custom entries in dicts of history events. While those additional keys will not be shown in the user interface, they will be marshalled in the object's XML version.
- Allow to create instances from templates (klass.create = Search).
- Icon for accessing the tool is given to anyone having 'write' permission on the tool. This can represent more people than Managers.
- Prepared to define non-Managers to manipulate the tool and its sub-objects.
- Allow to define Appy-not-detectable roles in Config.additionalRoles.
- Class.create can now be a statis method receiving the tool as single arg.
- unoEnabledPython and libreOfficePort are now in the RAM Config and not stored on the tool (DB) anymore. Note that param openOfficePort has been renamed to libreOfficePort.
- Improved manipulation of local roles. Added methods AbstractWrapper.addLocalRole and AbstractWrapper.deleteLocalRole.
- Bugfix: redirect after authentication (click on a URL from a link from an email).
- Code analyser: added analysis of CSS and JS files.
- Bugfix in master/slave relationships.
- Take into account User.getSupTitle.
- Better condition for showing/hiding field
- Added index 'Container' allowing to query all objects contained within another one via a Ref field with composite=True. This implements UML-like object composition and will be the way to replace Zope folders once Zope will be dismissed.
- Icon for 'back' transitions, which are found in many workflows.
- added parameter 'redirect' allowing (when value is 'page') to force to refresh the whole page after a transition has been triggered, even if the action is triggered from within a list of objects. By default, in the case, Appy normally only ajax-refreshes the table row corresponding to the object.
- Added a new type of group, with style='grid', allowing to display in a standardized way a series of fields in a tabular way. Also: added the possibility to make a field belong to a different group on different layouts: field=String(group={'edit': someGroup, 'view': anotherGroup}).
- Bugfix: take favicon.ico into account.
- Ensure special users 'anon' and 'system' do not have an email.
- Added a button allowing Managers to reset any internal user's password.
- Table of connected users: bugfix in the display of the last access date.
- Completed historization on Ref fields: added the possibility to historize object creation (via Refs with add=True) and object deletions from a Ref field.
- Added a third authentication mechanism, for authenticating users from HTTP headers sent by a single-sign-on (SSO) reverse proxy.
- SSO plug-in: allow to force encoding.
- Lists of users: icon 'external user' has now a tooltip containing the user source (LDAP or SSO) and the last time the local User instance has been synchronized with the source.
- Allow to easily modify master/slave relationships on fields via method Field.setMaster.
- When changing workflow definitions, produce a warning when some object is in a state that does not exist anymore instead of crashing.
- Added static attribute klass.uniqueLinks allowing to always generate different URLs for instances of this class when shown on lists (queries or refs).
- Standardized the use of Mixin.getListTitle even with Ref.menuUrlMethod.
- One may now define a method Class.onView that will be called every time an object is accessed via its 'view' layout type.
- Group.users has now link='popup'.
- Groups with style='grid' can now have a label, description and/or help icon.
- User and Group's main groups are now with style='grid'.
- Method AnyClass.sort: parameter 'sortKey' can now be a method.
- Group: allow groups with style='grid' to have several couples of columns (label, field).
- Correct default layouts for fields in grid groups.
- Added more standard layouts for strings and boolean fields.
- Performance improvement: on all Ref PXs, remove a superfluous call to Ref.getValue that constructed the whole list of tied objects.
- Performance improvement: cache, on the request object, results of 'show' attributes from Page instances.
- i18n labels for base classes (Tool, Group, User, ... defined in appy/gen/ are now defined in Appy.pot.
- CSS class 'grid' for tables render nicely even when incorporated into the message dialog.
- pxHistory: allow to disable 'collapsibility' and to customise batch size.
- Method sendMailIf: several roles or permissions may be specified.
- Added a method for getting the page referer, taking into account reverse proxy specificities.
- Implemented a monitoring URL at <app>/config/check (for a status code) and <app>/config/check?all for more verbose information.
- Bugfix: prevent filtering on less than 3 chars.
- Allow to ajax-edit integers within table cells.
- Less HTML tables in the main Appy PX template.
- Workflow actions and button 'delete' now appear only on an object's main page.

- ldap_connector: allow to specify protocol (ldap or ldaps).
- ldap_connector: ignore invalid entries retrieved via LDAP queries.
- xml_parser::XhtmlCleaner cleans less styles because pod::xhtml2odt supports more styles.
- XML unmarshaller: unmarshall datetime.datetime instances. support https resources. follow redirect responses (302).
- xml_parser::XhtmlCleaner: Allow to configure the list of tags to ignore, with or wihout its content.
- Added appy.shared.utils::getStringList for producing a string version of a list (that I use for producing Javascript arrays for example), similar to getStringDict (usable for dumping Javascript associative arrys as well).

- remove management of rtf files.

File Description Downloads
download icon (md5) Appy 0.9.3 108
last downloaded 15 weeks ago
Total downloads: 108

0.9.2 release from the 0.9 series released 2015-04-30

Release information
Release notes:

Appy 0.9.2 includes some significant changes, bugfixes and improvements, in the appy.pod as well as in the appy.gen parts.
Appy 0.9.2 corresponds to revision 32 on


[pod, px]
- In an ods template, you can now define a variable 'columnsRepeated' that specifies, for every column of the table representing a spreadsheet, how much times it will be repeated by subsequent 'for... cell' statements. For example, if you have a spreadsheet with 2 columns, and you will need to repeat the second one 100 times, define a statement 'do table with columnsRepeated=(1,100)'. If you don't do that, pod will be unable to guess what column must be repeated and how, will consider your table has having 2 columns and will produce a resulting table spreading the cells within a 2-columns wide table.
- If you define a variable named 'tableName' inside a table, it will be used to name the table. For information, with Calc, every spreadsheet is represented as a table; the table name is the name that appears in the corresponding tab, in the bottom of the screen.
- Bugfix: complete tracebacks when errors within Python expressions and within 'for' actions.
- added param '-t' allowing to specify a LibreOffice file whose styles will be imported in the pod result (works only for odt files). Thanks to IMIO.
- Pod expressions can now be defined in fields of type 'text-input' (in addition to existing fields 'conditional-text' and track-changed text). Thanks to IMIO.
- Added parameter 'stylesTemplate' to the Renderer, allowing to specify a LibreOffice file whose styles will be imported in the pod result. Thanks to IMIO.
- Take into account tag 's'. Thanks to IMIO.
- xhtml2odt: removal of unnecessary spaces.
- xhtml2odt: better handling for column sizes.
- xhtml2odt: take into account widths of td and th tags, from 'width' attributes or from the corresponding CSS property within 'style' attributes.
- xhtml2odt: take into account width of tables (style='width:' or width='', in px or %) and table alignment (left, rigt, center) if the table does not span the whole document width.
- xhtml2odt: take into account table widths (percentages or pixels) and added, via style mappings, the possibility to change the default behaviour. For tables that do not span the whole page width, take alignment into account.
- xhtml2odt: implemented styled 'span' tags.
- xhtml2odt: manage 'ol' tags with attribute 'start'.
- When an EvaluationError is raised, the original error is kept in evalError.originalError.
- 'from' clause: one can now write 'from+', which means that the root tag of the target element will be kept: the content of the 'from expression' will be dumped into it instead of completely replacing it.
- Refactoring: generate list styles in content.xml from new Python classes styles_manager::BulletedProperties and styles_manager::NumberedProperties.
- Added the possibility to define custom list styles; support of ol->type attribute and of CSS list-style-type attribute for ol and ul tags.
- Removed RTF support. Reimplemented the pod test system with an ODT test plan. appy/shared/ has been replaced with appy/shared/, the tables parser now based on ODT.

- Added boolean param Config.userLink allowing to show/hide (show by default) the link, in the user strip, to go to the user page. When Config.userLink is False, still display the user name, but as non-clickable text.
- bugfix (management of recipients).
- String field: bugfixes: show differences in multilingual fields.
- String field: bugfix when ajax-editing an empty multilingual field.
- appy.Object: allow to get object attributes like accessing dict keys, ie object[attr]
- appy.object: added method 'clone'.
- Wrapper.getLastEvent can now work on some history given as parameter instead of object.history. Moreover, parameter 'not before' can also hold a list of transitions.
- appy.Hack: added method 'inject' that injects from some class all static attributes and method to another one.
- appy.Hack: bugfix (patch of static methods).
- On a gen class, one can define static attribute 'showHistory', being a method or a boolean value. It indicates if the history is visible or not.
- On the User class, added passwords fields on the main page. This way, when creating a user, those fields are used. But when the user wants to change it own password, passwords on the 'passwords' page are then used.
- Bugfix while creating default users.
- Bugfix: do not perform LDAP authentication when ldapConfig.enabled is False.
- Class.listColumns can now be a static method (accepting the tool as single arg).
- Indexed Ref fields are now sortable. For every such field, 2 indexes are created: a list index for searching, and a standard index for sorting (by their title).
- Boolean field: bugfix (default layouts).
- Bugfix: for showing a field on layout buttons, the buttons layout must explicitly be returned by the show method.
- added param 'icon' allowing to specify a specific icon.
- Added attribute 'xml' on every field allowing to customize the XML marshalling process.
- Added new layout 'xml', now different from the 'view' layout, allowing to define which fields are to be dumped in the XML version of some object.
- Security fix in ToolMixin::getUser.
- Bugfix in Mixin::getUrl.
- Ref field: param 'shownInfo' can now be a method.
- Ref field: Removed pxViewPickList, replaced by a recursive call pxView->pxView.
- Ref field: bugfix: add a tied object with noForm=True
- Ref field: added param link='popupRef'.
- Bugfix: the mime type received by Zope in FileUpload instances seems to be wrong under some unknown circumstances.
- Added attribute Field.view allowing to specify, for any field, an alternative pxView.
- Mixin.xml: if an error occurs, log it before xml-marshalling it to the caller app.
- Added the possiblity to synchronize external users from a LDAP.
- Added method UserWrapper.addRole (add a role programmatically).
- Added to the LDAP config, a user map allowing to automatically assign roles and groups to ldap-imported users.
- Added the possibility to display the content of indexes for a given object on its view layout (param 'indexed' in the request).
- Indexer: textual content of indexes now keep only words of more than 2 chars and other improvements.
- Authorize anyone to get static content (images, css, js...) from any Appy app.
- Added param Field.mustIndex, that, for indexed fields, defines (via a method) when indexation must occur or not. Indeed, in some cases, an index is required on some field but we don't want all objects to have an index value for this field at any time.
- Implemented live search on any root gen-class.
- Highlight keywords in query results.
- Display action fields with layout 'buttons' in query results and tied objects for refs, besides transitions.
- Show delete button when allowed on the view layout.
- Improved method AbstractWrapper::createFrom.
- Executng actions from list of tied objects (ref field): bugfix.
- Ensure the tool can't be deleted.
- Wrapper.sort can now sort according to param field.insert if sortKey is None.
- Table of indexed fields: for managers only; added local roles in it.
- appy/fields/ added missing i18n labels.
- Added css style for rendering nice tables within the message popup.
- Improvements in the rendering of buttons throughout the web UI.
- Ref field and Search: added param 'showActions' allowing to show or not the range of icons and buttons below or besides every tied or queried object.
- Allow Refs with render='menus' to appear in layout 'buttons'.
- Stop caching methods used as default values for gen field: it can lead to headaches.
- ToolMixin::getHomePage: removed unneeded calls to m_goto.
- Table of indexes: indexed date values are now correctly displayed as DateTime instances.
- More translations in German.
- Bug and performance fixes in the authentication mechanism.
- Added parameter Ref.collapsible allowing to show/hide (via a cookie in the UI, similar to object history) available or tied items.
- Bugfix: remove carriage returns when normalizing strings intended to be used as filenames.
- String.inlineEdit can now be a method.
- more log info when something is wrong.
- Pod field: bugfix (download name of pod template being links to other pod templates + UI bug)
- Pod field: Manager does not have all output formats anymore, because in some situations, generating a doc in some formats does make sense (ie for frozen docs)
- Pod field: added param 'downloadName' allowing to speficy a method producing a custom name for the pod result file that will be downloaded by the browser.
- Pod field: bugfix (send by email).
- Pod field: added param 'useTemplateName'.
- Changes in the way binary files are downloaded.
- Modified Ajax system to be able to ajax-refresh a single row within query results or ref tied object.
- appy.js: closing the confirm popup via button 'no' cleans field 'comment'.
- Implemented an anti-double-click system.
- List field: bugfix with empty-like values (integer 0 for example).
- Calendar field: added param 'delete' allowing to define who can delete what event type in the calendar.
- Calendar field: added a 'timeline' calendar view.
- Calendar field: allow to have several events at the same day via the concept of timeslots.
- Calendar field: added a validation mechanism that converts 'request' event types to 'final' event types.
- Calendar field: the timeline can now accept multiple events in a single cell.
- Calendar field: allow automatic check/uncheck of validation checkboxes within calendars (month and timeline views).
- Calendar field: added the possibility, in a timeline, to define total rows and columns.
- Calendar field: one may now specify a method in param validator for validating the creation of an event.
- Calendar field: added params 'topPx' and 'bottomPx' allowing to define custom content before and after rendering the calendar view.
- Calendar field: added the notion of layer.
- Calendar field: added the possibility to define the part of the legend that is specific to every layer.
- Calendar field: Validation.removeDiscarded can now be a method.
- Calendar field: added the possibility to define custom actions on calendars via class Calendar.Action.
- Appy is now integrated to ckeditor 4.4.7 via CDN (check
- Bugfix: automatic search screens contained SearchableText twice.
- Bugfix: getFormattedValue must produce a different value for strings with format=TEXT depending on the layout type.
- Nice rendering of popups within popups.
- Search: bugfix in filtered unnamed searches.
- Bugfix: name clash when a transition is named 'comment'.
- Added AbstractWrapper::getHistoryComments allowing to collect comments of all history events of some type.
- Added field dict, similar to List but that stores dicts in the database, with a set of keys given in method field.keys.
- Bugfix: ckeditor with ie8.
- Static param SomeClass.resultModes replaces 'resultMode' and allows to define the way instances of this class are shown on query results: as a 'list' (the default), a 'grid' or using a custom px that must be defined on SomeClass.
- CSS class 'noStyle' renamed to 'no'.
- Dict field: when storing new values, not-impacted existing values are kept.
- Added pages px404, px403, px500 to manage all kinds of errors. When an anonymous user tries to get a URL that requires to be authenticated, he is redirected to the login screen, and, on successfull login, is then redirected to the given URL.
- Added a i18n label for the footer text

[shared, bin]
- List of MIME types completed.
- method 'get' can now accept parameters.
- changes to the XmlMarshaller (due to XML-related changes).
- improvements to the XmlMarshaller and bugfix: Mixin.xml returns appy.Object instances correctly marshalled.
- LinesCounter now counts lines of XML code.
- Added utils::flipDict allowing to flip keys<->values of a dict.
- Added script appy/bin/ allowing to modify or consult the content of odf files in a folder hierarchy (the script manages the unzip and re-zip of odf files and let a caller script access the unzipped content).

File Description Downloads
download icon (md5) Appy 0.9.2 296
last downloaded 15 weeks ago
Total downloads: 296

0.9.1 release from the 0.9 series released 2014-11-12

Release information
Release notes:

Release 0.9.1 has little impact on appy.pod (2 bugfixes and 1 new feature) but continues to heavily improve the web framework part (gen). Here is the detailed changelog.

- When inserting an image via statement do... from document(...), parameter 'sizeUnit' can now be 'pc' (percentage): in this case, percentages are expressed as a tuple (widthPercentage, heightPercentage) in parameter 'size' and must be integers from 1 to 100.
- Bugfix for
- Bugfix: repeated error in a for loop (

- Added for Ref field, param 'insert' that defines at what position a newly tied object is inserted among referred objects.
- Ref field: added params 'beforeLink' and 'afterUnlink' allowing to hold methods tha...


This release corresponds to trunk, revision 627.

File Description Downloads
download icon (md5) Appy 0.9.1 202
last downloaded 15 weeks ago
Total downloads: 202

0.9.0 release from the 0.9 series released 2014-06-23

Release information
Release notes:

Release 0.9.0 brings more independence from Zope for appy.gen and ensures, for appy.pod, compatibility with the latest LibreOffice and Python versions.

Here is the detailed changelog.

- now works from Python2.4 to Python3. Thanks to Lennart Regebro who wrote the 'e=sys.exc_info()[1]' trick for catching exceptions in both Python2.4 and Python3 and Luc Saffre for discovering it.
- Added param Renderer.raiseOnError (False by default), that, if True, will force the Renderer to raise an error instead of dumping it into a note in the pod result.
- Take into account tabs and carriage returns in POD expressions. 'do ... from text' is now obsolete: pod expressions now handle correctly tabs and carriage returns.
- Force raiseOnError=True when working from an ODS template.
- B...


This release corresponds to trunk, revision 552.

File Description Downloads
download icon (md5) Appy 0.9.0 182
last downloaded 15 weeks ago
Total downloads: 182

0.8.5 release from the 0.8 series released 2013-08-12

Release information
Release notes:

This is the last release of series 0.8. It is a bugfix release, also including minor improvements, mainly at the gen and px levels. This is the last 'gen' version where ZPTs (Zope Page Templates) will work. They will be replaced with PXs (appy.px=PythonXml) in the next Appy version.

[pod,px] 'loop' variable, available in the pox/px context, allows to know if we are managing an even or odd elem via loop.<elem>.odd and loop.<elem>.even.

- Added the posssibility to create a custom widget that displays an icon for generating a doc from a pod field, but with an additional param allowing to customize the pod context.
- Some actions were triggered via icons. That was not explicit enough for basic users. So now, every action is triggerd by a button that displays an icon+a text.
- In the...


This release corresponds to trunk, revision 442.

File Description Downloads
download icon (md5) Appy 0.8.5 548
last downloaded 15 weeks ago
Total downloads: 548

0.8.4 release from the 0.8 series released 2013-06-13

Release information
Release notes:

- Added the possibility to define several variables, in 'with' statements, separated by ';'.
- Added the possibility, for function 'document', to import, into an ODT result, external documents of various formats: doc, xls, ppt, etc. This new 'ConvertImporter' uses LibreOffice to first convert the doc into PDF, and then uses the PdfImporter to split the PDF into images (one image per page) and include in in the pod result.
- Allowed to call a pod template within another pod template via new POD function 'pod'.
- Improved error handling.
- Bugfix: error when a pod template does not have a 'mimetype' file inside (
- Bugfix: error when parsing some ods pod templates: some cells do not have attribute 'office:value-type' (see bug https://bugs.launch...


This version corresponds to trunk, revision 418.

File Description Downloads
download icon (md5) Appy 0.8.4 119
last downloaded 15 weeks ago
Total downloads: 119

0.8.3 release from the 0.8 series released 2013-02-22

Release information
Release notes:

- Added the possibility to use POD with ODS (Calc) templates. Integration with gen (Pod field).
- Bugfix for (thanks Gauthier): management of HTML entities with the standard Python SAX parser expatreader.
- Bugfix while generating filenames for files included into pod results.
- Changed the way pod results are re-zipped, in order to be compliant with section 17.4 of the OpenDocument format specification (bug
- Use, when available, Python's uuid module to generate images and file names to be included in pod results.
- Performance improvement: stop computing tag names, create a dict of precomputed tags before starting parsing.
- Bugfix: import several times an image from the same URL.

- Bu...


This version corresponds to trunk, revision 365.

File Description Downloads
download icon (md5) Appy 0.8.3 173
last downloaded 16 weeks ago
Total downloads: 173

0.8.2 release from the 0.8 series released 2012-12-07

Release information
Release notes:

- Added some layouts for Ref fields in Ref.wLayouts and Ref.wdLayouts.
- Added a new, simpler way of defining auto-references (=Ref fields that refer to the class containing the field), via method appy.gen.autoref.
- Stop catching exceptions raised by Actions (so a partial action can't be committed anymore).
- Cleaner and more robust approach when using Zope database indexes.
- ckeditor now works with IE.
- Now it is possible to index and search Ref fields.
- Added a i18n label used for the title of web pages and added a default favicon and the possibility to override it.
- Bugfix in the standard banner for RTL languages.
- Added some default page and field layouts.
- Added the possiblity to extract in a clean way text from XHTML field values.
- Fine-tuned indexing machinery wi...


This version corresponds to trunk, revision 326.

File Description Downloads
download icon (md5) Appy 0.8.2 129
last downloaded 16 weeks ago
Total downloads: 129

0.8.1 release from the 0.8 series released 2012-08-16

Release information
Release notes:

- xhtml2odt: ability to include images from img tags (anonymously). Non-anonymous solution for a Appy/Zope server only.
- xhtml2odt: bugfix in management of styles applied to inner p tags added within li tags.
- xhtml2odt: generate ODT tables from XHTML tables, taking into account variable column sizes.
- xhtml2odt: bugfix: apply styles mapping to 'p' tags that are added automatically by xhtml2odt (was only implemented for p tags inside li tags).
- Function 'document': allow to specify size of images in cm or px, or via a 'style' tag.
- Improved styles mapping system: one may now express things like: 'p[text-align=center]':'StandardCentered' (ie, map an HTML tag having some CSS attributes to a specific ODT style). See verbose docstrings in
- Allow to import S...


This version corresponds to trunk, revision 279.

File Description Downloads
download icon (md5) Appy 0.8.1 339
last downloaded 15 weeks ago
Total downloads: 339

110 of 29 releases