Changelog from 5.0.1 (r1239) to 5.0.2 (r1362):
Koo Fixes:
- [FIX] In ManyToOne.py, ensure on_change trigger is sent after user opened the related record, in case she changed something. Fixes bug https://bugs.launchpad.net/openobject-client-kde/+bug/524464.
- [FIX] In Group.py, ensure group data is up to date before returning the list of unloadedIds(). We need it here for the same reason we need it in count(). In this case it was detected because it was causing views with aggregates to load ALL records to calculate them. Fixes bug https://bugs.launchpad.net/openobject-client-kde/+bug/514166.
- [FIX] In Field.py, ensure that in ToMany fields if 'modified' parameter is True, the field is marked as modified. This was necessary because if an onchange event updated a many2many field, that was not marked and modified and thus not sent to the server on save, which of course, made the field not to be stored.
- [FIX] Improved scripts for managing translation files.
- [FIX] In FormView.py, properly set Group and other widgets readonly by using setEnabled as setReadOnly does not exist for those widgets. Fixes bug https://bugs.launchpad.net/openobject-client-kde/+bug/509531.
- [FIX] Added current record field values to context on 'relate' actions. At the same time, added the context to other actions (print, plugins and actions). Fixes bug https://bugs.launchpad.net/openobject-client-kde/+bug/407786.
- [FIX] Ensure buttons with no 'name' attribute are given a different name each. Otherwise they will not be properly handled because they're added in a dictionary.
- [FIX] koo: In koo.py, ensure cursor is closed when only count was required on search() function.
- [FIX] koo: Ensure cursor is closed in the search() function overriden by koo module.
- [FIX] Free shortcuts when new queries are executed so that the new shortcuts can be used.
- [FIX] full_text_search: Ensure cursor is closed before quitting indexedModels() function.
- [FIX] full_text_search: Ensure cursor is always closed.
- [FIX] In ChartGrahpicsView.py, added Rpc import because it's needed when creating some charts.
- [FIX] In setup.py, fixed a typo reported by Luigi Grilli.
- [FIX] In DatabaseCreationDialog.py, supply the url with the correct type on dialog initialization. It required pushing the change server button in order to create a new database.
- [FIX] Now that all settings can be stored in .koorc, ensure that integer ones are converted to int type. Also ensure 'id' is not stored in the config file.
- [FIX] In FullTextSearchDialog.py, make click work as well as shortcuts do.
- [FIX] Add 'koo.' prefix to all Settings.value() that need it. Also ensure that FTS searches are not executed twice.
- [FIX] In LoginDialog.py, do not reset URL (or even refresh database list) if ServerConfigurationDialog was cancelled. This is important because dialo.url will contain the username if the dialog has been cancelled.
- [FIX] In Selection.py, allow selection to be None.
- Fixed typo in catalan translation.
- [FIX] In koo.py, make --pos-mode work again.
- [FIX] smart_attach: Ensure all file descriptors are closed even if an exception occurs.
- [FIX] In FormWidget.py, connect to RecordGroup 'modified' signal instead of 'modified()' which doesn't work with PyQt 4.7.
- [REF] In Group.py, change the way 'modified' signals are sent to workarround a bug/make it compatible with PyQt 4.7 which doesn't like signals with empty parenthesis and works perfectly without them. Should fix bug https://bugs.launchpad.net/openobject-client-kde/+bug/509516.
- [FIX] In RichTextFieldWidget.py, disable all buttons and combo boxes when the field is read-only.
- [FIX] In TreeView.py do not try to check if current index changed on currentChanged signal because in some rare cases the C++ instance of QModelIndex contained in self.currentIndex may have been freed. If we happen to find that we really need such a check we should use self.currentRecord instead.
- [FIX] full_text_search: Fixed offset calculation in searches. Also removed some unused code.
- [FIX] Fixed regression introduced in MassiveUpdateDialog.py: The 'value' variable is needed to update all records.
- [FIX] Try to fix german translations. It still doesn't work, but let's see if after updating from launchpad works better.
- [FIX] In TreeView.py, make selectAll() work again as expected by making sure self.currentRecord is properly set. This bug made that when the SearchDialog was opened from a many2many widget only the first record was selected, instead of selecting all of them.
- [FIX] Now that KooModel.indexFromRecord() is used in TreeView, we need that RecordGroup.indexOfRecord() doesn't raise an exception if the record is not in the group, but return -1, instead. This is also more consistent with the behaviour of RecordGroup.indexOfId().
- [IMP] In Calendar.py, improve performance of Calendar Views by loading only records from current and previous month. It's not ideal because it doesn't take into account whether we're in daily, weekly or monthly views, but it's already much better that it was until now. Patch by Borja López Soilán (Pexego) with minor editorialization by me. Fixes bug https://bugs.launchpad.net/openobject-client-kde/+bug/515401.
- [FIX] In TreeView.py, use indexFromRecord() function instead of indexFromId() because all new records will have the same id (id=None). Also fixed the setSelection() function from AbstractView to use a Record instance instead of an id for the same reason. Updated Screen setSelection() call and TreeView accordingly.
- [FIX] In setup.py, do not search for kootips.txt file which is no longer used. Fixes bug https://bugs.launchpad.net/openobject-client-kde/+bug/516655.
- [FIX] In TreeView.py, avoid the call to selectionModel().setCurrentIndex() when current record has not changed. This allows non-consecutive row selection (using control key) work again.
- [FIX] Long standing issues in TipOfTheDayDialog fixed. Dialog has been moved to the Dialogs module and tips are translatable.
- [FIX] In Screen.py, call setCurrentRecord( None ) before updating record group in search() function. This avoids some exceptions (not critical) due to the fact that FormWidget tried to obtain the currentRecord() when it had not already been set. Fixes bug https://bugs.launchpad.net/openobject-client-kde/+bug/412108.
- [FIX] Adapt SearchDialog to new SearchForm interface (pass domain as argument).
- [IMP] Disable search widgets that are in the current domain. Fixes bug https://bugs.launchpad.net/openobject-client-kde/+bug/438716.
- [FIX] Check if NanScan is available.
- [FIX] smart_attach: Ensure strigiText variable is always initialized before being used.
- [FIX] In TreeView.py: improved detection of when a record changed. The error leaded to change view not opening the current selected record of the list.
- [FIX] In Record.py do not emit recordModified() signal in setValidate() function if record had to be loaded. Obviously we want to signal that the recordChanged() so widgets are updated, but the record was not modified, it was only loaded.
- [FIX] In Calendar.py do not use 'Expanding' policy for time and float_time widgets but 'Preferred', so those widgets respect layout's restrictions.
- [FIX] Remove the 'default' config from the list of possible configurations to be used to update full text search indexes. Fixes bug https://bugs.launchpad.net/openobject-client-kde/+bug/515769.
- [FIX] In Screen.py emit recordMessage() signal when appropiate. In some cases it would not be emitted, specially when setRecordGroup() had been called.
- [FIX] Fix regression introduced with latest performance improvements. Fixes bug https://bugs.launchpad.net/openobject-client-kde/+bug/514270.
- [FIX] Fixed ReferenceSearchWidget: It wasn't possible not to filter by a reference field if it was included as a select field.
- [FIX] Solved regression introduced in latest commits.
- [FIX] Yet another regression: Do not setCurrentRecord or emit currentChanged if current record has not changed: This prevented editable lists to be usable because pressing Tab would always open the editor for the first field and editing required double clicking a field.
- [FIX] In Record.evaluateExpression() we may get a NameError exception because a given field may not have been created yet. In this case we ensure the model is loaded and try evaluating the expression again.
- [FIX] Fixed the first unknown regressin introduced by recent changes. 'attrs' must be 'self.attrs'
- [IMP] Second set of performance improvements: Before this patch, we 'ensuredRecordLoaded()' whenever somebody wanted to retrieve a record from a Group object. Now we delay it until Record.value() is called for a field not loaded yet in the given record. This fixes a performance issue that switching from list to form and going back to list would load all fields of the form for all records in the list. Now switching back to the list is immediate. There are no known regressions.
- [FIX] Ensure when there's no record in a one2many field, the label shows (_/0). This should finish the first group of performance changes and there're no known regressions.
- [IMP] Important performance improvements. Avoided lots of 'search' calls to the server by dropping 'setAllowLoading()' function in RecordGroup and replacing it by 'setDomainForEmptyGroup()'. Also added showEvent() function to Screen and removing explicit calls to setCurrentRecord() from other places (mainly one2many and many2many widgets) which results in delayied data loading, which means only data for those fields will be loaded if the tab in which they are is clicked/shown. There are still some known regressions, the most obvious for partner addresses in partner form, but fixes for those will be commited later.
- [FIX] Small fixes to koo man page.
- [FIX] smart-attach: Import pooler.
- [FIX] Consider cases when focusWidget() function returns None in SerialBarcodeScanner plugin because barcode reader may stop working. This could happen if scanner is used when the application isn't active.
- [FIX] SerialBarcodeScanner do not try to send the key if it doesn't exist.
- Fixed encoding of French translations.
Koo Improvements:
- Updated debian/changelog to 5.0.2.
- [REF] Upgraded version numbert to 5.0.2.
- [REF] Removed old remove-duplicates.pl script.
- Updated translations.
- Updated translations.
- Updated translations.
- Updated translations.
- Updated translations now using a new script to remove duplicates from .ts files that merges comments instead of dropping them.
- Updated translations from launchpad.
- [IMP] In FullTextSearchDialog.py, improve the way relations are shown, by adding left and top padding.
- [IMP] Properly interpret 1040 value in Windows registry as Italian language.
- [IMP] Added Italian translation to windows installer. Patch by Luigi Grilli.
- [IMP] On Windows, add version number to installer .exe file.
- [REF] Updated Koo URL.
- [REF] Changed the way WebKit is loaded in FullTextSearchDialog so it properly works on Windows. Patch by Luigi Grilli.
- [REF] Use 'Close' button instead of 'Accept' per Ferdinad's request in bug https://bugs.launchpad.net/openobject-client-kde/+bug/520655. Moved some code out of KooMainWindow to FullTextSearchDialog for a cleaner interface.
- [REF] Removed print statement.
- [IMP] Added shortcuts to FullTextSearchDialog.
- [REF] Do not show plugins in the toolbar.
- [REF] In FullTextSearchDialog.py, removed uiErrorMessage widgets because we can show error messages in WebKit.
- Updated translation templates.
- [IMP] Added the full_text_search.ui file that I missed in previous commit.
- [IMP] Refactor FullTextSearchDialog.py to use WebKit instead of our own widget to show search results. This means improved performance in both dialog loading and rendering results. Now users can also view relations for the given record, allowing avoiding one step. The new interface is also a good base for future enhancements. On the server side, full_text_search module has also been improved to use name_get() to return as title and it's processed by PostgreSQL headline, making the content of the title bold if any of the searched words is on the name_get() result.
- [REF] Removed print statement.
- [REF] Made all settings configurable from .koorc file. Also ensure all files are closed even if an exception occurs.
- [IMP] Imported latest translations.
- [REF] Show tip of the day by default on startup.
- [IMP] Added Next and Previous buttons to one2many dialog. No longer using the same .ui for Screen/ScreenDialog.py and Fields/OneToMany dialog.
- Updated translation templates with latest tips.
- [IMP] Added a new tip of the day and improved formatting of existing ones.
- [REF] Removed debugging print statement.
- Updated translation templates.
- [REF] Store login parameters in 'login.url' setting and no longer use the 'login.protocol', 'login.username'... family. Store login settings whenever the server changes instead of waiting a successful login.
- Updated translations but removing duplicates on qt-koo.pot.
- Updated translation templates.
- [IMP] In BinaryFieldWidget.py, preliminar support for adding images from scanner devices using NanScan.
- [REF] In OneToMany.py: It is no longer needed to call setCurrentRecord() because Screen already ensures it's called when record group is set.
- [IMP] In ManyToMany.py search when user finishes editing the textbox instead of forcing him to press F2 or the add button.
- [IMP] Show modified fields in the Save/Discard/Cancel message box in forms. Also added a modifiedFields() function in Record class and use it in MassiveUpdateDialog.py.
- [REF] Refactored smart_attach module to use lxml instead of libxml2.
- [IMP] Added a new plugin called SearchModelData, that searches current selected records in 'ir.model.data' model. It is very useful for developers as they can easily see what's the name of a view or any other resource in source XML files.
- Set Koo as 'Production/Stable' in setup.py
- [IMP] More performance improvements. Now a new initGui() function has been added to AbstractFieldWidget and is already used by one2many and many2many widgets. It allows first time initialization of a Field widget to be delayed until the widget is shown for the first time. If the widget is never shown, it will be never initialized and it's important in one2many and many2many widgets. Several regressions introduced in previous commits have been solved, and only one smaller issue is still pending for one2many widgets.
- [IMP] Implement delayed loading in AbstractFieldWidget so all widgets can benefit from it, not only ImageWidget and 2many widgets. Also postponed loading of completion data if available in many2one widgets. Code is pretty clean with this patch, but there still some minor known regressions, mainly with many2many widgets that have no data show 1/200 (if 200 is the total number of records in the table).
- [IMP] Implemented delayied loading of image fields by loading them only when the widget has to be shown. This means that are not in the first tab will not be loaded until their tab is selected.
- [IMP] Added F2 shortcut in calendar SearchWidgets to open the calendar popup.
- [IMP] Do not allow focus in SearchDateWidget buttons.
- [IMP] Improved textToDate function to recognize more date formats. Including 'dd' for the given day in current month and 'ddMM' for the given day and month in current year.
- [IMP] Speedup the time it takes to load FullTextSearch dialog by caching 'indexedModels' function in '/fulltextsearch' object at RPC level.
- [IMP] Remove a couple of unnecessary print statements.
- Added support for several special characters (such as Minus, Plus or Asterisk) to SerialBarcodeScanner Plugin.
- Properly process barcodes with alphabetic characters in SerialBarcodeScanner plugin by converting all chars to upper case.
- Set horizontal size policy to expanding in combo box of FTS Dialog because some model names didn't fit otherwise.
- [IMP] full_text_search: Show FTS priority and current priority in ir_model_fields view. Also allow setting FTS priority from there, easying configuration specially if Massive Updates are used.
- Remove release directory before building anything.
- debian/changelog changes should be prepended not appended.
- Added 5.0.1 version to debian/changelog.
- Improved release.sh: Create .tar.bz2 package.
Jasper Reports Improvements:
- [REF] jasper_reports: Use lxml library instead of libxml2 for compatibility with new distributions.
- Replace '.' with '_' because Jasper Reports doesn't like dots in field names.