307f4e152e[gen] Bugfix: one could authentify with a ldap user even if ldap.enabled was False.
Gaetan Delannay
2015-01-21 14:30:42 +0100
30dbcb7dc7[gen] Stop caching methods used as default values for gen field: it can lead to headaches.
Gaetan Delannay
2015-01-20 14:02:57 +0100
d9a89f7ad5[gen] Allow Refs with render='menus' to appear in layout 'buttons'.
Gaetan Delannay
2015-01-20 01:03:23 +0100
34cafcdbc1[gen] Improvements in the rendering of buttons throughout the web UI. [gen] 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.
Gaetan Delannay
2015-01-19 15:44:09 +0100
a905aaa139[shared] Added utils::flipDict allowing to flip keys<->values of a dict. [gen] file.py: added missing i18n labels. [gen] Added css style for rendering nice tables within the message popup.
Gaetan Delannay
2015-01-16 20:22:29 +0100
ffb8bed189[pod] 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.
Gaetan Delannay
2015-01-14 11:46:25 +0100
1730ce3c19[pod] 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 bysubsequent '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.
Gaetan Delannay
2015-01-13 17:02:59 +0100
863952ac3d[gen] Table of indexed fields: for managers only; added local roles in it.
Gaetan Delannay
2015-01-09 12:05:49 +0100
bccc9c8320[gen] Ensure the tool can't be deleted. [gen] Wrapper.sort can now sort according to param field.insert if sortKey is None.
Gaetan Delannay
2015-01-08 13:18:14 +0100
90657e0faf[gen] Executng actions from list of tied objects (ref field): bugfix.
Gaetan Delannay
2015-01-07 18:20:48 +0100
746a6cd52d[gen] Display action fields with layout 'buttons' in query results and tied objects for refs, besides transitions. [gen] Show delete button when allowed on the view layout. [gen] Improved method AbstractWrapper::createFrom.
Gaetan Delannay
2015-01-06 21:13:30 +0100
225ea927a4[gen] Bugfixes in the search machinery.
Gaetan Delannay
2015-01-02 16:16:48 +0100
92d1276ffb[gen] Implemented live search.
Gaetan Delannay
2014-12-29 15:55:17 +0100
8591611aac[gen] 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.
Gaetan Delannay
2014-12-26 17:29:14 +0100
4461cbb9a8[gen] Authorize anyone to get static content (images, css, js...) from any Appy app.
Gaetan Delannay
2014-12-26 13:51:40 +0100
fd5e88928d[gen] Indexer: textual content of indexes now keep only words of more than 2 chars and other improvements.
Gaetan Delannay
2014-12-26 12:24:38 +0100
06c656d278[gen] Added the possibility to display the content of indexes for a given object on its view layout (param 'indexed' in the request).
Gaetan Delannay
2014-12-19 11:21:43 +0100
982ae08997[gen] 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.
Gaetan Delannay
2014-12-18 13:54:12 +0100
865e6bf08e[gen] Added the possiblity to synchronize external users from a LDAP.
Gaetan Delannay
2014-12-17 16:19:45 +0100
8511c22612[gen] Mixin.xml: if an error occurs, log it before xml-marshalling it to the caller app.
Gaetan Delannay
2014-12-12 14:47:39 +0100
897b183b01[shared] LinesCounter now counts lines of XML code.
Gaetan Delannay
2014-12-10 12:32:09 +0100
e01615476b[gen] Added attribute Field.view allowing to specify, for any field, an alternative pxView.
Gaetan Delannay
2014-12-09 15:19:28 +0100
186175250d[gen] Bugfix: the mime type received by Zope in FileUpload instances seems to be wrong under some unknown circumnstances.
Gaetan Delannay
2014-12-09 12:22:09 +0100
b39c5553ea[shared] Improvements to the XmlMarshaller and bugfix: Mixin.xml returns appy.Object instances correctly marshalled.
Gaetan Delannay
2014-12-09 11:40:30 +0100
12836a40dc[gen] Ref field: param 'shownInfo' can now be a method.
Gaetan Delannay
2014-12-09 09:27:40 +0100
c53654a1a1[gen] Added attribute 'xml' on every field allowing to customize the XML marshalling process. [gen] 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. [gen] Security fix in ToolMixin::getUser. [gen] Bugfix in Mixin::getUrl. [shared] dav.py: method 'get' can now accept parameters. [shared] xml_parser: changes to the XmlMarshaller (due to XML-related changes).
Gaetan Delannay
2014-12-08 14:52:04 +0100
f055ec1754[gen] Bugfix: For showing a field on layout buttons, the buttons layout must explicitly be returned by the show method. [gen] Action.py: added param 'icon' allowing to specify a specific icon.
Gaetan Delannay
2014-12-05 11:55:25 +0100
2ef3cdb006[shared] List of MIME types completed.
Gaetan Delannay
2014-12-02 00:19:01 +0100
c11002b7d5[gen] Class.listColumns can now be a static method (accepting the tool as single arg). [gen] 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).
Gaetan Delannay
2014-11-28 14:42:32 +0100
5c41f1b3d2[gen] Bugfix while creating default users. Bugfix: do not perform LDAP authhentication when ldapConfig.enabled is False.
Gaetan Delannay
2014-11-26 10:49:59 +0100
79ebc1cbf9[gen] Bugfix in model.py::class User.
Gaetan Delannay
2014-11-25 22:15:46 +0100
02a7be98ff[gen] One can define statis attribute 'showHistory', being a method or a boolean value. It indicates if the history is visible or not. Added on the User, passwords fields on the main page. This way, when creating a user, those fields are used. When the user wants to change it own password, passwords on the 'passwords' page are then used.
Gaetan Delannay
2014-11-25 14:56:38 +0100
1d721d61f4[gen] Wrapper.getLastEvent: parameter 'not before' can also hold a list of transitions.
Gaetan Delannay
2014-11-25 12:50:59 +0100
7821280d35[gen] appy.Hack: added method 'inject' taht injects from some class all static attributes and method to another one.
Gaetan Delannay
2014-11-22 13:14:52 +0100
477a533728[gen] appy.Object: allow to get object attributes like accessing dict keys, ie object[attr]; 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 sens (ie for frozen docs); Wrapper.getLastEvent can now work on some history given as parameter instead of object.history.
Gaetan Delannay
2014-11-20 09:47:37 +0100
e6adfe39d4[gen] string.py: bugfixes: show differences in multilingual fields.
Gaetan Delannay
2014-11-17 11:44:00 +0100
0465fae6dc[gen] appy.gen.mail.py: bugfix (management of recipients). When Config.userLink is False, still display the user name, but as non-clickable text.
Gaetan Delannay
2014-11-14 13:19:47 +0100
f3849d4f92[gen] Added boolean param Config.userLink allowing to show/hide (show by default) the link, in the user strip, to go to the user page.
Gaetan Delannay
2014-11-13 15:02:33 +0100
55c36a1123[gen] Added UserWrapper.isSpecial that returns True fr special users (admin, system, anon).
Gaetan Delannay
2014-11-12 08:49:11 +0100
4a393e76af[gen] Allow an ajax request to return a message, carried as a custom HTTP header and retrieved by appy.js to display a message.
Gaetan Delannay
2014-11-10 13:34:52 +0100
8d03f6ca9c[gen] Wrapper.sendMailIf can now send a mail to an individual user.
Gaetan Delannay
2014-11-10 10:01:20 +0100
d560738718[gen] Workflow.onTrigger method now accepts one more arg, fromState, the name of the state from which the triggered transition starts.
Gaetan Delannay
2014-11-05 19:57:31 +0100
717128047e[gen] Wrapper.sendMailIf: one may now send mail to everyone belonging to some group.
Gaetan Delannay
2014-11-04 12:50:36 +0100
50544aaecf[gen] Removed the obsolete mail notification system.
Gaetan Delannay
2014-10-28 17:48:54 +0100
412d9f939f[gen] A page can now be visible on edit but not on view (ie, the new User page containing only fields 'password' and 'retype password'. Default User class has now 2 pages: the 2 password fields are on a separate page. Zone containing user name in the user strip has evolved.
Gaetan Delannay
2014-10-24 15:55:45 +0200
c316ab896b[gen] SOme CSS changes.
Gaetan Delannay
2014-10-23 16:05:19 +0200
ccf7e44eef[gen] [gen] Action field: param confirm can be 'text': in this case, the confirm popup contains a textarea whose content is passed as param to the method speficied in param 'action'. Action fields can now be defined in a new layout 'buttons' (show='buttons') in order to appear, on the view layout, besides the extsting series of buttons (edit, next/previous pages...).
Gaetan Delannay
2014-10-22 22:17:26 +0200
960a4c6a46[gen] Added an utility method on any wrapper class for removing an event from an object's history.
Gaetan Delannay
2014-10-21 15:39:29 +0200
7484fbca93[gen] Added the possibility to navigate to tied object number X within a list of tied objects from a Ref that is numbered.
Gaetan Delannay
2014-10-21 09:25:37 +0200
4577855d60[gen] Added a new hook in the object creation algorithm: 'onEditEarly', called before an object being created is linked to its initiator object. Indeed, 'onEdit' is called after the link has been done, and sometimes, the linking may need some information that must be set before calling onEdit, thus via this new method onEditEarly.
Gaetan Delannay
2014-10-17 11:22:49 +0200
1ed4f0bf23[pod] Bugfix: repeated error in a for loop (https://bugs.launchpad.net/appy/+bug/394267). [gen] pod field: get the value of appy cookie 'showSubTitle' in any pod template.
Gaetan Delannay
2014-10-16 17:35:35 +0200
3dfb90b5b3[gen] Allow to have data change events that contain comments.
Gaetan Delannay
2014-10-15 15:39:11 +0200
e72f53c0d9[gen] Added field.getCatalogValue allowing, for indexed values, to get the value as indexed in the Zope catalog. [gen] field Computed: added param formatMethod allowing to define the way to format the computed value (ie: the formatted value can then be different from the 'raw' value: this can be interesting if the raw value must be indexed.
Gaetan Delannay
2014-10-15 09:39:01 +0200
ecb970e519[gen] workflow state: make it performant to write, in a gen-workflow: someState=State(otherState.permissions.copy()).
Gaetan Delannay
2014-10-13 18:55:49 +0200
a16871f4b5[gen] Ref field: added a confirmation popup when the user wants to sort the ref. Indeed, most users think it is like sorting query results: they are not conscious it is a permanent change in the database, with effect for all users.
Gaetan Delannay
2014-10-07 15:03:07 +0200
c2676c9cf8[gen] pod field: bugfix with attr 'formats' without method 'showTemplate'; [shared] bugfix: renamed module ldap to ldap_connector.
Gaetan Delannay
2014-10-07 13:14:16 +0200
5ac8e71a6f[gen] Bugfix: ref field: empty index value [''] could be stored within the db, as the real value. Added field.setSlave allowing to lazy-define master/slave relationships.
Gaetan Delannay
2014-10-06 12:51:40 +0200
d9d93a650b[gen] pod field: bugfix: download a generated or frozen pod result.
Gaetan Delannay
2014-10-03 20:27:54 +0200
441dc0b423[gen] Bugfix: display bilingual info in object history.
Gaetan Delannay
2014-10-03 12:44:26 +0200
a671094167[gen] When duplicating a file via appy.fields.file::FileInfo.replicateFile, the source file can be binary data in a str instead of an opened file handler.
Gaetan Delannay
2014-10-01 16:21:12 +0200
ae69509354[shared] xml_parser: added parser XthmlToText that produces the pure textual version of a XHTML content.
Gaetan Delannay
2014-09-29 16:03:26 +0200
abe56a5add[gen] Ref.linkObject and unlinkObject (and caller methods like wrapper.create) can now be called with attr 'executeMethods' being False: in this case, all methods defined in attrs like 'insert', 'beforelink', 'afterLink' will not be called. Can be useful while migrating data or duplicating objects.
Gaetan Delannay
2014-09-29 10:06:40 +0200
1d81dc768b[gen] Allow to bypass class.onEdit when creating an object.
Gaetan Delannay
2014-09-25 09:52:22 +0200
dcf90f2b94[gen] Created method mixin.getListTitle that is responsible for displaying an object's title in the various lists (queries, refs).
Gaetan Delannay
2014-09-23 18:38:55 +0200
ecc3f07a09[gen] SMTP and LDAP configuration updated. Module appy.gen.mail can now be used independently of a gen-application.
Gaetan Delannay
2014-09-18 11:08:29 +0200
4947e2956c[gen] Pod field: send pod results by emails.
Gaetan Delannay
2014-09-17 18:09:30 +0200
b565f38d97[gen] Pod field: more work on mailing lists.
Gaetan Delannay
2014-09-17 14:23:05 +0200
e6f2b5213e[gen] Pod field: more work on mailing lists.
Gaetan Delannay
2014-09-17 14:22:36 +0200
f4ea1a5570[gen] Bugfixes in the pod field.
Gaetan Delannay
2014-09-16 15:38:29 +0200
f64493764f[gen] bugfixes in the pod field.
Gaetan Delannay
2014-09-15 18:32:45 +0200
4d12293dc8[gen] Added wrapper.createFrom, similar to wrapper.create, but allows to create an object with data from another object (kind of 'duplicate' functionality).
Gaetan Delannay
2014-09-14 21:40:35 +0200
400158a0a1[gen] Users have now a workflow allowing them to deactivated. An inactive user can't log in anymore. This is useful if the User is tied to other objects and cannot be removed without braking the data model, but does not correspond anymore to an active user that is allowed to log in.
Gaetan Delannay
2014-09-11 16:41:08 +0200
4fc74b36e7[gen] Some changes in ckeditor config.
Gaetan Delannay
2014-09-11 11:24:53 +0200
326523cc3a[gen] Cached the user language on the request.
Gaetan Delannay
2014-09-10 18:21:14 +0200
194b455816[gen] pod field: one of the listed templates in field.template can simply be a pointer to another template from the list. For example, template=('Item.odt', 'Item.odt.variant'). The second file is an empty file and gen will use the first one for the second template. It allows to have similar files for templates that, in the UI, are different, ie, can have different names and appear under different conditions. Note that in the default context of every template, variable 'template' contains the name of the template file. It allows the template to know if he is 'called' under the name 'Item.odt' or 'Item.odt.variant'.
Gaetan Delannay
2014-09-10 16:26:19 +0200
71bc58a8b0[gen] While <obj>.<fieldName> allows to get the 'DB' value of some field, <obj>.getValue allows to get a variant of it, ie, the formatted version (via an internal call to field.getFormattedValue).
Gaetan Delannay
2014-09-08 15:13:18 +0200
f8a7103c7a[gen] Changes in parameters of some basic field methods to enable field.languages to be defined dymanically via a method.
Gaetan Delannay
2014-09-05 17:13:23 +0200
c8cf3911fa[gen] Historization of multilingual fields.
Gaetan Delannay
2014-09-03 18:18:27 +0200
7889277328[gen] Adapted all logged messages because thhe logged user is now automatically prepended to any message.
Gaetan Delannay
2014-09-01 14:14:32 +0200
ac1d710288[shared] utils.py::normalizeString bugfix: when a string was not utf-8-encoded but latin-1-encoded, the method raised an exception.
Gaetan Delannay
2014-08-27 09:53:45 +0200