Appy 0.9.14

This release contains bugfixes, functional as well as performance improvements, on all framework parts.

Detailed changelog

Appy 0.9.14 corresponds to revision 819. Details are hereafter.

pod

  • Added function 'image', to be used to insert an image as a char in a pod expression. The pod expression must be of the form ':image(...)'. It must be prefixed with a colon to avoid the expression content to be escaped. Indeed, if no escaping occurs, the ODF code for the image would appear in the result, instead of the image itself.
  • PodImporter: use new method Renderer::clone to copy attributes from the main renderer to the sub-renderer.
  • converter.py: parameter 'stream' may now accept 2 more values: 'in' and 'out'.
  • converter.py: allow to specify the full path to the result, instead of the extension (but specifying the extention still works).
  • Renderer: attribute 'stream': bugfix.
  • styles_manager: classes BulletedProperties and NumberedProperties have a new parameter named 'firstDelta' allowing to define a delta for the 1st level that is different from the deltas for any other level, defined by attribute 'delta'.
  • ods: better management of dates.
  • ods: manage dates with 'time' parts.
  • New renderer parameter, name 'protection'. If enabled (it is disabled by defaut), you can use boolean variables named 'cellProtected' and 'sectionProtected' to produce, in pod results, write-protected cells or sections.
  • Use of the same sub-renderer several times: do not load page styles more than once (bugfix).
  • xhtml2odt: support of CSS attribute 'line-height' for paragraphs.
  • xhtml2odt: better management of several paragraphs within a td.
  • xhtml2odt: style of paragraphs within cells: bugfix.
  • xhtml2odt: allow to produce 'unbreakable' tables in ODT.
  • xhtml2odt: support for table's unbreakable rows.
  • xhtml2odt: ignore rows without cells.
  • xhtml2odt: CSS attribute line-height is now converted to style:line-spacing: it is closer to HTML/CSS behaviour.
  • xhtml2odt: added a new mechanism to ignore the conversion of some attributes from CSS to ODF, ie, negative margins or indents within table cells.
  • xhtml2odt: allow to use function 'xhtml' within POD expressions of the form: ':xhtml(xhtmlString, unwrap=True)'.
  • xhtml2odt: ignore img tags without attribute 'src' or whose 'src' attribute, after stripping, is empty.
  • xhtml2odt: support html tag 'address'.
  • New XHTML parser (keep with next): bugfix.
  • Meta-if statements: bugfix (reify them in the right order).
  • Removed obsolete code concerning list styles.
  • Added new param forceLoad (to the Renderer) corresponding to option '-f' to the converter, allowing to force LibreOffice to load a large document in its entirety before doing anything else like updating its table of contents.
  • converter.py (odt): ensure the TOC is refreshed after any other action to ensure page numbers are correct.
  • More possibilities within styles mappings.
  • Added parameter pageStart to the renderer and the converter, to produce documents whose first page start with this number.
  • xhtml2odt styles mapping: added the possibility to define keys like div[class=MyClass].

gen

  • Pod field: add parameter 'pdfOptions' similar to Renderer's homonym parameter. Can be a string or method.
  • Ref field: moved some Ref layouts from class Ref to class Layouts.Ref.
  • Ref field rendered as menus: bugfix.
  • Ref field: if beforeLink returns False, object insertion is aborted.
  • Ref field, breadcrumb: do not produce links to objects if the user can't view them.
  • Ref field: when unlinking an object, go back to the same page (including the right pagination).
  • Integer field: added method inRange for validating an integer or floa value that must be included in a range.
  • Calendar field: added attribute Calendar.beforeDelete allowing to define a method to run before deleting an event from a calendar, with the possibility to abort the deletion.
  • Action field: added new attribute to allow to define fake buttons, like for workflow transitions.
  • Action field: result=redirect with no URL falls back to result=computation. More documentation on attributes 'action' and 'result'.
  • Search field: calendar mode: display specific icons for recurrent events (with yet another icon for the last event of a series).
  • Boolean field: fields rendered as radio buttons can now be used as masters in master/slave relationships.
  • List field: added default layouts.
  • String field (CKEditor): custom styles can now be added.
  • String, Float and Integer fields: added attribute 'readonly' similar to the HTML equivalent.
  • Optimization: ToolMixin::getObject first searches object in REQUEST.wrappers before performing a query in the catalog based on the object UID.
  • AbstractWrapper.compute: added param 'maxResults'.
  • search.py - Calendar mode: several bugfixes.
  • Allow to show main locked pages on search results and the icon for unlocking it.
  • Config: added attribute 'unlockers' allowing to define other roles than Manager for unlocking pages. These additional roles can be local or global.
  • Debug PX for viewing indexes related to an object: bugfix.
  • Performance fix: rewritten method UserWrapper::getRolesFor.
  • Layout fixes.
  • Lock from a ref: bugfix.
  • monitoring.py: added the possibility to get version and status information in html.
  • Added a new method AbstractWrapper::getActors allowing to get logins of all people having (lastly) triggered some transitions on an object.
  • More robust ZCatalog reindexing.
  • Bugfix: 'en' may not be among an app's languages.
  • Added new attribute Field::defaultOnEdit allowing to define a default value (or method) that applies to 'edit' layouts only.
  • Use attribute 'historized' from field Action to add corresponding events in an object's history.
  • Added method obj::getLockers to retrieve the list of people having a lock on at least one page of a given object.
  • Disable cache when using fake requests.
  • Backported optimization from Appy 1.0 on method UserWrapper.hasPermission (avoid creating a list every time the method is called).
  • Master/fields with groups as slaves: bugfix.
  • Security model: bugfix.
  • Cache-Control request header: bugfix.
  • i18n: absence of language 'en': bugfix.
  • UserWrapper::getTitle: bugfix.
  • UserWrapper::getTitle: more params for transforming name and firstName.
  • User conversion: bugfix.
  • AbstractWrapper::search: bugfix.
  • Bugfix: navigation is kept after triggering transitions from the popup.
  • Added attribute Config.editHistoryComments allowing to enable edition of workflow comments.
  • Added 'roles' among search fields for querying users. For a user title, set the title, by default, to <name> <firstName> instead of <firstName> <name>. That way, sorting based on the user title, in user search results, sorts on the name rather than on the first name.
  • Object deletion: bugfix.
  • Field::getAttribute: added parameter 'cache'.
  • Added method Field::getSortValue and String::getSortValue allowing to define an alternate value for the purpose of sorting.
  • ckeditor: reactivated insertion of images.
  • indexer: bugfix.
  • Instead of deleting a folder corresponding to a database object, move it to /tmp: it could be useful to retrieve it from a transaction following another, failed one.
  • Hack::inject: inject base classes as well.
  • Added transmission of the encrypted password for a user in its xml layout (for an admin only).
  • Searches with custom modes: bugfix.
  • Use ckeditor v4.11.2.
  • layouts: new layout Boolean.h.
  • Added attribute Field.pxEdit, similar to pxView or pxCell, allowing to define an alternate PX for edit layouts.
  • When changing a user's login, beyond updating local roles on every impacted object in the database, also update object's creators and histories.
  • Better IE compatibility.
  • Allow, via method User::convertTo, to convert a local user to an external user (ldap or sso); also allow conversions: ldap user <> sso user.

shared

  • functions normalizeString and normalizeText: added a param allowing to keep dashes.
  • xml_parser::XmlMarshaller: allow to specify a list of fields to marshall for the root object.
  • utils::executeCommand: added parameter 'stdin'.
Add picture from clipboard (Maximum size: 31.3 MB)