No issues for this version
Appy 0.9.5 includes some significant bugfixes and improvements in the appy.pod part (more work on the xhtml2odt conversion, compatibility with LibreOffice 5...) as well as in the appy.gen part (lots of small improvements in the most important fields, improved SSO and LDAP connectors, reorganization of the predefined layouts...). Appy 0.9.5 corresponds to revision 380. Details are hereafter.
- Among the pod context, the context itself (a dict) is present at key "_ctx_"
- xhtml2odt: more respect for column size ratios when a table width is specified in px.
- xhtml2odt: manage CSS attributes 'page-break-after' and 'page-break-before'.
- xhtml2odt: refactoring using CssStyles instances for every encountered XHTML tag.
- xhtml2odt: deep refactoring to allow fusion of inner styles.
- xhtml2odt: refactored (standardized styles management).
- xhtml2odt: optimized to avoid dumping empty tags.
- xhtml2odt: merging of inner styles: bugfix.
- xhtml2odt: bugfix for Word export.
- xhtml2odt: added a system to dump traces of the xhtml2odt algorithm.
- doc_importer::ImagesImporter: bugfix when dumping images from xhtml chunks with 'float' attributes. [pod] xhtml2odt: manage styles defined at a 'li' tag.
- Images importer via xhtml2odt: take into account 'width' and 'height' html attributes on 'img' tags.
- converter.py: include notes (comments) in PDF results.
- converter.py: allow to use the LibreOffice algorithm for optimizing table column widths, for all tables in a Writer document, or only for those matching some regular expression.
- Renderer: added a parameters for letting LibreOffice compute optimal column widths for tables.
- Allow to specify a specific style for inner paragraph in ListProperties instances.
- Any field: added attribute "cell", similar to Field.view: it allows to override the standard pxCell PX.
- String field: allow to define a placeholder containing the field label.
- String field: ckeditor: hide button 'Source' for non-Managers.
- String ad Ref fields: better management for 'width' attributes.
- String field: added an alernative CK toolbar (more simple) and attribute Stringtoolbar alowing to choose the desired toolbar.
- String field: added attribute 'noValueLabel', similar to Ref.noValueLabel (see below).
- Ref field: added the possibility, in 'shownInfo', to specify several sets of columns. The user can switch between sets from the ui.
- Ref field: param 'noForm' converted to param create='noForm'. create can also be a Search instance, allowing to add an object in a ref from a template.
- Ref field: add='anywhere' allows to insert an object at any place among existing tied objects.
- Ref field: show locks on lists of tied objects.
- Ref field: stop selecting all values for ajax-slave fields.
- Ref field: added attribute 'noValueLabel' for specifying an alternate i18n label for the element within the edit widget representing no value being currently selected.
- Ref field: added attribute 'addLabel' allowing to configure the label to use for the 'add' button.
- Ref field: added constructor parameter 'filterable' allowing do disable filtering.
- Pod field: freezing is not granted to admin by default anymore.
- Pod field: continue to restrict 'freeze' functionality by adding a new parameter showFrozenOnly(=True by default) preventing from accessing non-frozen formats when at least one format is frozen for a given pod template.
- Date field: added param 'minutesPrecision' allowing to encode any number from 0 to 59 for the 'minutes' part.
- Action field: allow to render buttons as icons.
- List field: allow to move rows up/down via JS.
- List field: added param 'deleteConfirm' allowing to confirm the deletion of rows to prevent erroneous data deletion.
- List field: added attribute 'totalRows' allowing to add, on view, additional rows at the bottom of the table, containing computed values like (sub-)totals.
- When raising an Unauthorized exception, a custom message may be communicated to the end user.
- Removed i18n labels 'add_ref' and 'query_create_object', fusioned into 'object_add'.
- Added parameters Class.createExclude. When Class.create is a Search (create an instance from a template object to be chosen among objects from this Search), 'createExclude' allows to specify a list of fields not-to-copy on the newly created object.
- Better default values for layouts.
- Added filters based on selection lists for String::isSelect=True and Ref::link=True.
- Completed authentication contexts with the possibility to switch context and do not declare a context at login.
- klass.searchAdvanced can now be a static method.
- klass.createExclude can now be a method.
- Better error management when searches are not found.
- Minor changes in default group layouts including the 'help' icon.
- Better default layout for List fields within "grid" groups.
- Prevent creation of an object with an ID already used by another object.
- UI: at various places, put actions before workflow transitions.
- UI: the portlet is now collapsible.
- UI: improvements and bugfixes in object navigation.
- Added method Search::run.
- Implemented combination of filters.
- Added Config.rootFolders allowing to define, for root classes, other root folders than 'data'.
- Layouts refactored, with not-backward-compatible impact on application's code, ie: layouts appy.gen.Pod.rmLayouts are now in appy.gen.pod.Layouts.Pod.rm
- ldap_connector.py: added the possibility to define several base DNs.
- ldap_connector.py: added param 'userFilter' allowing to define a custom filter, beyond user classes defined in 'userClasses'.
- ldap_connector.py: added documentation and (tested) example values for new attribute 'userFilter'.
- ldap_connector.py: added LdapConfig.customAttributes allowing to retrieve addtional LDAP attributes and store them on local Appy User instances.
- ldap_connector.py: added the possibility to connect to the LDAP with the full user DN.
- xml_parser.py::escapeXml: a carriage return is converted to an ODF tab+line-break (see explanation in code comments).
- sso.py: allow a specific decoding function to decode HTTP header values.
- sso.py: manage the fact that the SSO server could not provide roles and groups.
- sso.py: added the possibility to convert local users to SSO users.
- Added a class for converting text to HTML with some basic conventions (ie, rows of text beginning with a dash are converted to bulleted lists).
- 1st implementation of the iCal file format.
- dav.py: implemented HTTP Digest-based authentification.
- backup.py: added param -F allowing to specify a folder where to backup the db-controlled files.
- backup.py: set rsync in quiet mode and set a more contextual subject for emails.
- backup.py: changed the subject of backup mails (easier to create filters based on it).
- backup.py: bugfix in error handling when a SMTP-server error occurs.