Appy 0.8.1 has been released

Written for Appy by Gaƫtan Delannay on 2012-08-16

appy.pod
- 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 styles_manager.py.
- Allow to import SVG files (requires installing imagemagick).
- Bugfix while including a PDF file into a document
- Ease the inclusion of Plone images from a Plone/Zope DB through 'do text from document' statements.
- Variable named 'loop' is now available in the POD context of any section within a 'for' statement, with attributes like loop.[iterVariableName].length (=total number of looped elements) and loop.[iterVariableName].nb (=index of currently looped element)
- Added some default appy-related table styles for producing cells with text in bold/normal, aligned right/left, etc.
- Bugfix while dumping large size images into pod templates from appy.gen FileWrapper instances.
- Added a default POD style 'podPageBreak' allowing to include page breaks via do... from... statements.

appy.gen
- Replaced tiny_mce with ckeditor (in-line editor), version 3.6.3.
- Allow to upload images in ckeditor fields.
- Improved error management.
- Added params String.allowImageUpload and String.styles for tuning the in-line editor corresponding to a String instance with format=XHTML
- Manage borders of images uploaded in such a field
- First draft of a migration script that allows to migrate data from Plone-dependent Appy apps (<= 0.7.1) to Ploneless Appy >= 0.8.0.
- Added method wrapper.search1 that returns a single result (which is the only difference with wrapper.search).
- Bugfix while getting objects from the catalog (bypass security when called from code).
- Added new format 'captcha' for a String, allowing to generate a captcha-like widget.
- Allow to define a method Tool.getHomePage that returns the URL of the home page for any user (authenticated, anonymous, manager, or any other code-based distinction)
- Allow an app to define a 'ui' folder for storing new UI-related elements (pages, images, etc) or overriding standard Appy UI elements
- logo.jpg is replaced with banner.jpg (size 900 x 75px)
- Improvements in user management.
- Added obj.mayAct method that allows to display conditionnally the column 'Actions' when an object is shown in a list (query or ref)
- Improved navigation from sub-objects to parent objects
- Improved layout.
- bugfixes in the List field.
- Allow to define several layoutTypes (ie: ('edit', 'result')) as a tuple/list in 'show' attributes of fields.
- Removed fields Tool.showWorkflowCommentFieldForxx (workflow comment may not be entered into the confirm popup).
- Security-related bugfixes.
- Added the possibility to create and manage web pages into an app.
- Every class can now define a method showPortlet. If the class does not define it or if it returns False, the portlet won't be shown when showing/editing instances of this class.
- Added Ref.navigable: if True, referenced objects can appear within the portlet.
- Bugfix while using Zope behind Apache and using the VHM.
- Ref.view macro is not called via Ajax anymore for single-valued Refs (when displaying lists containing single-valued Ref fields, it produces too many ajax requests, leading to ConflictErrors in the ZODB).
- Bugfix while searching the catalog based on object state.
- Added XHTML cleanup code.
- Added String.generatePassword.
- Bugfix: mising HTTP header while sending some responses back to Apache (caused a bug in ckeditor image upload).
- Bugfix while importing images via an image resolver (Zope behind a reverse proxy).
- Improved mail notification mechanism.
- Optimized performance (methods defined in 'show' attrs were called twice on edit.pt and view.pt).
- Added String.richText allowing to have ckeditor with more text-formatting icons.
- Added ckeditor 'show source' button by default (impossible to live without that).
- Solved security-related problems.
- .mail: allow to send mail as authenticated user.
- Bugfixes in pages when rendered by IE.
- Improved cleaning and formatting of XHTML content.
- XhtmlCleaner now only keeps useful CSS attributes within XHTML style attributes.
- Added the possibility to define a sortOrder of a Search class.
- Bugfix while managing languages, ui improvements.
- CSS improvements.
- Bugfix: parsing now works even if encoding is declared at the beginning of the Python file.
- A default layout for Boolean fields, including a description, is now available in Boolean.dLayouts.
- Added obj.mayEdit, an additional condition for editing an object (similar to mayDelete).
- Bugfix: specifying a workflow for a User class crashed because, in installer.py, Appy took into account the standard workflow on this Class instead of the custom one.
- Security: added missing checks at the code level, ensuring that a user can create instances of a given class (root classes, or instances created via an initiator field)
- Bugfixes in the test system, which works again (was broken after deplonization).
- Possibility to define, programmatically, for a given class, the default view and edit pages, by defining, respectively, methods getDefaultViewPage and getDefaultEditPage.
- Bugfix in attribute Field.focus.
- Bugfix in UserWrapper password management.
- Finalized pending i18n (added some missing labels).
- Added boolean Tool.loadTranslationsAtStartup that, if False, prevents to overwrite, on a production site, translations edited through-the-web by users. If True, at every Zope startup, Translation objects are overwritten by the content of their corresponding po files on disk.
- Added method Wrapper.isEmpty(name) that checks if the content of some field is empty or not on a given object.
- Simpler result.pt.
- When raising Unauthorized, gen gives more explanations.
- Added support for right-to-left (RTL) languages.
- Implemented a mechanism 'forgot password?'.
- Allow Managers to change the login of a user.
- Bugfix in the 'change user id' function. Now, the method browses every object in the database and updates local roles where the old ID was potentially mentioned.
- Added UserWrapper.checkPassword allowing to check if a password is the right one for a user.
- Field.indexed, instead of being a Boolean, can be a str, to represent the name of a Zope Index. This way, it is possible to bypass the standard Appy choice for index types, ie for Computed fields whose content may produce any type of value.
- Added missing translation labels in the macro displaying object's history.
- Added default fields Tool.dateFormat and Tool.hourFormat that give application-wide default formats for dates with/without hour.
- Added a table in Config->Users that shows the connected users and the date/time of their last access to the app.
- Added the missing search macro for a Computed field.
- Method Wrapper.do: added param 'noSecurity' allowing to bypass check of roles mentioned as conditions for triggering worfklow actions.
- First version of a Ogone Appy plug-in.
- Add param Config.activateForgotPassword to allow to disable this functionality for sites where the email of users may be unknown.
- More accurate error reporting for Action fields.
- Do not generate base label for a workflow transition if transition.show is False.
- Added an alternative predefined layout for pages (including summary, which is absent by default).

appy.bin
- publish.py is now able to generate a Debian package for Appy, working with Python 2.6 and Python 2.7; new.py contains optimized code for generating a non-buildout Zope 2.13/Plone4 instance.
- generate.py: one less arg: outputFolder has been removed (the script now generates the Zope product in <appFolder>/zope)
- generate.py: new option '-d', for generating a Debian package from the Python (Appy) app.
- new.py is now able to create a pure Zope instance on its own (without mkzopeinstance) from a Zope install made with Debian zope2.12 package.
- Adapted job.py for Appy >0.8.
- backup.py: added field 'To' to mails sent by the backup procedure (so it not less directly considered as junk mail)

appy.shared
- Bugfix for https://bugs.launchpad.net/appy/+bug/913171 (appy.shared.dav)
- Improved Debianizer (launches Zope and OO automatically)
- Improved deployment of a Appy app (creation of a Zope instance is no more required; corresponding folders are created in standard unix locations: /etc for the config file, /var/log for logs, /var/lib for the database, /usr/bin for scripts that start and stop the instance).
- Improvements in Debianizing an Appy app: the Debian install creates now scripts for starting the Zope/Appy/app instance and OpenOffice in server mode at boot time.
- Allow to marshall Plone/Zope LazyMap instances.
- Added the possibility to generate a Cortex/Comodit (see www.guardis.com) application definition for an Appy application.
- .packaging: added the possibility to sign the generated Debian packages.
- .diff: bugfix: work internally on unicode representations of strings to diff: this way, we are sure every char is one char length.
- .diff: bugfix (avoid infinite loop between m_getHtmlDiff and m_getReplacement) and better recovery when the Merger fails to manage overlaps (the whole line is then considered as having been deleted and replaced by something completely different, which is not really the case but at least is shows a simplified diff instead of crashing.
- Bugfix in the XhtmlCleaner that now returns result as a str and not a unicode.
- XmlUnmarshaller can now be ran in 'non utf-8' mode: if enabled, any marshalled string will no be Python unicode, but simple str.

Read all announcements