Commit Graph

6880 Commits

Author SHA1 Message Date
Fabien Meghazi faa09da325 Removed version="7.0" from form views 2014-06-12 09:09:59 +02:00
Fabien Meghazi 619ee620f7 [ADD] Pseudo `clone` mode for <templates> using primary="True"
When @primary="True" is present on <template> tag, we'll set
the t-name to the full canonical xmlid of current template (@id)
Providing a "kind of" clone mode for templates.
2014-06-11 17:03:02 +02:00
Géry Debongnie fe209f9e7a [MERGE] merge from master 2014-06-11 15:53:45 +02:00
antonylesuisse df78e58df2 Merge pull request #424 from odoo-dev/master-inithooks-chs
[ADD] module install/uninstall hooks.
2014-06-11 14:58:25 +02:00
Fabien Meghazi 1ac928af05 Set old form views as explicit @version="6.1" 2014-06-11 14:04:02 +02:00
Fabien Meghazi ba3ce4753b Set form views default @version="7.0" 2014-06-11 14:03:20 +02:00
sve-odoo 6ed133d86d [IMP] Add filters in ir.model.fields search view.
Add "Custom" and "Base" filters in ir.model.fields search view.
2014-06-11 11:16:17 +02:00
Christophe Simonis 7bee9447c4 [MERGE] forward port of branch saas-3 up to 3c7a54a 2014-06-11 11:06:04 +02:00
Christophe Simonis 3c7a54a76c [MERGE] forward port of branch 7.0 up to 100eba8 2014-06-11 10:58:43 +02:00
Jeremy Kersten 100eba8eaf [FIX] fields.py - avoid dict comprehension inside a dict comprehension 2014-06-11 10:30:00 +02:00
Géry Debongnie af58bc5914 Merge remote-tracking branch 'odoo/master' into master-inline-searchview-ged 2014-06-11 10:10:58 +02:00
Fabien Meghazi 6981af0221 Merge pull request #462 from odoo-dev/master-odoo-deploy-force-fme
Added --force to odoo deploy
2014-06-11 10:04:03 +02:00
Fabien Meghazi c1e6e70870 Added --force to odoo deploy
Will force --init mode even if module is already installed
2014-06-11 09:55:17 +02:00
Thibault Delavallée 222e26628a [FIX] crm, crm_partner_assign, res_partner, mail, project: removed deprecated fields, deprecated methods + references to it; also removed deprecated tags on things that are not deprecated anymore. Everything is under control. 2014-06-11 08:44:40 +02:00
Olivier Dony 6b85d80f23 [FIX] Wrap werkzeug.utils.escape() to accomodate signature change in 0.9
We always want to escape quotes (") as part of the process of
generating HTML output. This option (quote=True) turned into
an implicit flag with a DeprecationWarning in werkzeug 0.9.0
It is likely to disappear in a future release of werkzeug too.
A wrapper avoids this warning without loss of compatibility
2014-06-10 18:46:40 +02:00
Fabien Meghazi 1d0424a3cb Merge pull request #457 from odoo-dev/master-odoo-cmd-fixes-fme
[IMP] `odoo.py start`: Always create missing db
2014-06-10 16:52:32 +02:00
Christophe Simonis eedb831c0d [FIX] logging PostgreSQLHandler: mute sql_db logger to avoid logging loop if db connection or query failed 2014-06-10 16:11:11 +02:00
Fabien Meghazi b278d7ff5d Merge pull request #356 from xmo-odoo/scaffold-kwargs
[IMP] add kwargs to scaffolded controller
2014-06-10 15:44:30 +02:00
Fabien Meghazi 97a5c043b5 Always create missing db when using `odoo start` 2014-06-10 15:00:20 +02:00
Christophe Simonis ccdae747a0 [MERGE] forward port of branch saas-5 up to a7c2125 2014-06-10 13:19:55 +02:00
Christophe Simonis a7c2125735 [MERGE] forward port of branch saas-4 up to 6b8e972 2014-06-10 13:15:46 +02:00
Christophe Simonis 6b8e9727e5 [MERGE] forward port of branch saas-3 up to 4601d85 2014-06-10 12:29:47 +02:00
Christophe Simonis 4601d85944 [MERGE] forward port of branch 7.0 up to 6fdb783 2014-06-10 11:49:14 +02:00
Géry Debongnie 8202561511 Merge remote-tracking branch 'odoo/master' into master-inline-searchview-ged 2014-06-10 11:43:17 +02:00
Christophe Simonis 6eacf91671 [FIX] logging PostgreSQLHandler: do not insert {create,write}_uid
As logs can be stored in any database, we can't insert create_uid and write_uid as it
refer to the current database not the logging one, where FK may not match
2014-06-10 11:15:52 +02:00
Christophe Simonis 4105b5f028 [ADD] module install/uninstall hooks.
Since 4ec71c74d1, migration scripts
are not executed at module install anymore.
As this behavior was missused as "init" scripts (see [1]), this
commit re-add this possiblity via hooks.

There are 3 hooks that can be declared in the manifest file:
 - pre_init_hook: called before module installation
 - post_init_hook: called after module installation
 - uninstall_hook: called before module uninstallation

Like the "post_load" manifest option, the values for these hooks
must be a string containing the name of a method available at the
module root.
The signatures of these functions are:
 - (cr) for pre_init_hook
 - (cr, registry) for post_init_hook and uninstall_hook

[1] https://bugs.launchpad.net/openobject-server/+bug/1314680
2014-06-07 00:41:29 +02:00
xmo-odoo 24141a64b7 Merge pull request #338 from savoirfairelinux/scaffold-pep8
[FIX] pep8 errors generated by odoo.py scaffold
2014-06-06 11:52:41 +02:00
xmo-odoo e583fccf44 Merge pull request #353 from xmo-odoo/unrestrict-view-write
[IMP] views: don't prevent always -> disabled writes
2014-06-06 11:48:09 +02:00
Christophe Simonis 517162ce14 [FIX] orm: do not recompute m2o stored function field at read.
The get() method of m2o function fields is used for 2 different things:
 - call the function defining the m2o
 - get the name_get representation of the value

Until this pathc, only the first case was handled, resulting to a useless
recomputation of the field when reading it.
2014-06-06 10:53:42 +02:00
Sandy Carter 666ea5f98a [FIX] pep8 errors generated by odoo.py scaffold
Signed-off-by: Sandy Carter <sandy.carter@savoirfairelinux.com>
2014-06-06 09:03:10 +02:00
Oliver Laurent 306d5c89a0 [FIX] orm: do not resize unlimited char fields 2014-06-05 19:05:36 +02:00
Laurent Mignon 6788edcdd0 [FIX] ir_cron: use the same search criteria as when listing job to excecyte when acquiring the ock on the job before its execution to prevent running already executed job
Backport of fix made in trunk
2014-06-05 18:59:03 +02:00
Augustin Cisterne-Kaas 1dfa3946b5 [IMP] Db filter %h
Db filter %h skips www subdomain.
2014-06-05 16:09:04 +02:00
Xavier Morel e5560a2785 [REM] test for removed 'feature' of refusing always -> disabled writes on views 2014-06-05 16:08:42 +02:00
Martin Trigaux 426993e06d uninstall: avoid errors during uninstall
When uninstalling a module, remove the ir.model.constraint after removing the non-model records and before fields and model definition.
Without this fix, some constraint would be removed too early allowing to have broken relations and data left from removed module.
2014-06-05 12:52:11 +02:00
Xavier Morel 08b1107413 [IMP] add kwargs to scaffolded controller so ?debug does not blow up by default 2014-06-05 12:32:12 +02:00
Xavier Morel b973e27da5 [IMP] views: don't prevent always -> disabled writes in views, is confusing and not very useful 2014-06-05 12:22:37 +02:00
Xavier Morel 0de6710c3c [IMP] guard for None enum, remove 1 level of indent 2014-06-05 12:05:24 +02:00
Xavier Morel 7f0db3c257 [IMP] use Sized for iterable size and remove support for count 2014-06-05 12:03:16 +02:00
Xavier Morel 03b75477ec [IMP] use enumerate instead of explicit index thing 2014-06-05 12:01:44 +02:00
Xavier Morel 0b3abaf4ce [FIX] _even/_odd were reversed, also some reformatting thing 2014-06-05 12:01:04 +02:00
Xavier Morel 34097b4f88 [IMP] mandate a variable name in foreach 2014-06-05 11:46:56 +02:00
Olivier Dony d1b0d2586b [FIX] ir.qweb: rendering non-string attributes could cause unicode errors (Issue #282)
This occurs because werkzeug.utils.escape() auto-casts
non-basestring values to unicode, while we expect to be
working with bytestrings only.
So when evaluating attribute values, make sure we always
return bytestring values, never int, bool or unicode.
2014-06-05 10:11:23 +02:00
Fabien Meghazi 27af219b5e Change scaffolding's controller template 2014-06-04 01:27:59 +02:00
Fabien Meghazi a52a426de3 Do not check SSL certificate by default
(requested by al)
2014-06-04 00:58:32 +02:00
Fabien Meghazi 8a4511277c Fix error on url scheme for odoo deploy 2014-06-04 00:58:23 +02:00
Fabien Meghazi c5129fcfe5 Add __init__.py when createing module. Also add templates.xml in
manifest
2014-06-04 00:58:05 +02:00
Christophe Simonis a5908c5812 [MERGE] forward port of branch saas-5 up to b1c0bc0 2014-06-03 20:02:00 +02:00
Christophe Simonis b1c0bc0b46 [MERGE] forward port of branch saas-4 up to 65f68c1 2014-06-03 19:45:19 +02:00
Antony Lesuisse bfcb5595b8 [MERGE] odoo command: scaffold, start, deploy 2014-06-03 19:44:20 +02:00
Christophe Simonis 65f68c1f65 [MERGE] forward port of branch saas-3 up to 7dd6954 2014-06-03 19:14:22 +02:00
Christophe Simonis 7dd69540e8 [MERGE] forward port of branch 7.0 up to 0c4bc1c 2014-06-03 19:11:44 +02:00
Christophe Simonis 70041a5f1b [FIX] routing_map: correct subclasses detection.
Subclass detection didn't include the class itself if all it's subclasses
were invalid. As we create a new regrouping subclass, that was always the
case after a registry reloading, causing subclassed controllers to not be
taken in account.

[IMP] routing_map: clean code a little bit
2014-06-03 17:55:34 +02:00
Martin Trigaux 3cb551bf50 [FIX] read_group: do not change the return format of the read group in case of no groupby_fields and keep the same return format as with groupby fields (a list of dict) 2014-06-03 10:20:55 +02:00
Antony Lesuisse a96fab05b3 scaffold fix, add a sample page and snippet 2014-06-03 01:00:23 +02:00
Christophe Simonis 45d42d0134 [FIX] http: change the way the routing map is build
Instead of only taking direct subclasses of controllers, take the lowest controller in the hierarchy
Allowing subclassing controllers
2014-06-02 15:38:02 +02:00
Denis Ledoux e61fb4d80a [FIX] base: security, do not override basic ir_config_paramter ACL 2014-06-02 13:00:36 +02:00
Denis Ledoux a7a51cf55d [FIX] base: security, group settings is authorized to alter ir.config_parameter 2014-06-02 12:57:57 +02:00
Christophe Simonis bef99e2b16 [MERGE] forward port of branch saas-5 up to revid 587084f 2014-06-01 11:21:35 +02:00
Christophe Simonis 587084f682 [MERGE] forward port of branch saas-4 up to revid c319dc4 2014-06-01 11:19:03 +02:00
Christophe Simonis b8d7a1b332 [REL] saas-5 2014-05-30 23:05:34 +02:00
Fabien Meghazi d9def2c4a7 Simplify odoo start. Make it work everywhere 2014-05-30 21:54:54 +02:00
Fabien Meghazi fa4ed55d54 Merge remote-tracking branch 'odoo/master' into master-odoo-cmd-fme
Conflicts:
	openerpcommand/common.py
2014-05-30 21:38:15 +02:00
Fabien Meghazi 227709dd21 Basic support for scaffold --theme 2014-05-30 21:20:39 +02:00
Géry Debongnie 52a8c4cf9a [MERGE] merge from master 2014-05-30 20:21:03 +02:00
Fabien Meghazi faa60474ce Allow initialize_sys_path() to be called more than once 2014-05-30 18:25:05 +02:00
Christophe Simonis ee304fa65f [IMP] replace OpenERP by Odoo in backend + change company default logo. 2014-05-30 17:30:36 +02:00
Fabien Meghazi 83c402a93e Added odoo start command 2014-05-30 17:06:16 +02:00
Fabien Meghazi 10fb6525e9 Basic support for xml data files 2014-05-30 11:35:28 +02:00
Fabien Meghazi 7f984dd6ef Added ir.model.access in manifest 2014-05-30 10:45:57 +02:00
Géry Debongnie 6b4a227cd4 Merge remote-tracking branch 'odoo/master' into master-inline-searchview-ged 2014-05-30 09:22:12 +02:00
Fabien Meghazi 36485190ac Update manifest for dependencies 2014-05-29 20:02:30 +02:00
Fabien Meghazi 0e01164842 Moved get_module_root in openerp.modules.module 2014-05-29 18:23:48 +02:00
Fabien Meghazi 5f717cfdd2 Added basic scaffolding for webclient module 2014-05-29 18:01:43 +02:00
Fabien Meghazi 14f7d31a5f Refactor scaffolding engine so it can be used from outside 2014-05-29 16:25:30 +02:00
Antony Lesuisse 130c889348 [FIX] ir.attachment mess, restore list view 2014-05-29 15:02:27 +02:00
Fabien Meghazi fcc854a4e1 Merge remote-tracking branch 'odoo/master' into master-odoo-cmd-fme 2014-05-29 10:28:38 +02:00
Fabien Meghazi 4b8814fa9e Prevent scaffold --init to be executed in another module 2014-05-28 19:32:55 +02:00
Fabien Meghazi a9eba4dc40 Detect if controller name correspond to a model name 2014-05-28 19:16:50 +02:00
Fabien Meghazi 6b678f376e Use ast module against __init__.py's for import discovery 2014-05-28 18:49:16 +02:00
Olivier Dony e276ac33f6 [MERGE] Forward-port saas-4 up to bf135ad 2014-05-28 17:45:31 +02:00
Fabien Meghazi ce764477e6 [WIP] models and controllers for scaffolding 2014-05-28 17:10:56 +02:00
Géry Debongnie 24f0e80e2e Merge remote-tracking branch 'odoo/master' into master-inline-searchview-ged 2014-05-28 13:18:07 +02:00
Christophe Simonis b4283f0271 [FIX] logging PostgreSQLHandler: expand message + use contextmanagers to handle exceptions and cursor 2014-05-28 11:43:24 +02:00
Fabien Meghazi ba85b80f32 Basic scaffolding 2014-05-28 11:31:00 +02:00
Géry Debongnie 5cc8f9ca42 Merge remote-tracking branch 'odoo/master' into master-inline-searchview-ged 2014-05-28 10:37:16 +02:00
Fabien Meghazi 397784cef0 reuse cls.__doc__ for deploy command 2014-05-28 09:25:31 +02:00
Fabien Pinckaers b4adf79ea7 Merge pull request #238 from odoo-dev/saas-4-ir_qweb-contact-chm
[FIX] ir_qweb: contact field must add 'http://' if the website url value has not any protocol
2014-05-27 22:50:14 +02:00
Olivier Dony 04211015fc [MERGE] Forward-port of latest saas-4 fixes, up to 0452851 2014-05-27 20:49:49 +02:00
Christophe Simonis e16233217c [MERGE] Replace inherit_option_id by a selection field (PR #229) 2014-05-27 17:57:33 +02:00
Olivier Dony fd21abd847 [MERGE] Forward-port latest saas-3 bugfixes, up to 30f43da 2014-05-27 17:18:43 +02:00
Christophe Simonis 05fe3ca7e3 Merge pull request #228 from xmo-odoo/extended-view-inheritance
Extended view inheritance
2014-05-27 17:10:28 +02:00
Fabien Meghazi 3458eb3ef7 Add docstring to help command 2014-05-27 17:07:40 +02:00
Christophe Matthieu fe74741594 [FIX] ir_qweb: contact field must add 'http://' if the website url value has not any protocol 2014-05-27 15:13:44 +02:00
Martin Trigaux 3b32464ed2 Merge pull request #202 from lyinfo/master-fix-zero-qweb-field
[FIX]t-field wrong outputs when precision is 0
2014-05-27 14:46:31 +02:00
Fabien Meghazi dec8172866 [ADD] odoo deploy 2014-05-27 14:22:28 +02:00
Xavier Morel abc50d1041 [IMP] application field doc 2014-05-27 12:26:38 +02:00
Xavier Morel ab7dd57771 [IMP] make mode handling more regular
Before this commit, @mode=primary would be sorta-ignored[0] if the current
view and its parent had the same model: the current view would *still* get
applied (as an extension) when asking OpenERP for its parent. This commit
makes mode=primary views behave regularly, they are *never* applied when
asking for their parent, only when asking for them or their children.

This allows "forking" views, and using extended views in some contexts without
breaking or duplicating the original view

[0] there was actually a problem when asking for the current view directly,
    first its parent would be resolved by applying it, then it would be
    applied to resolve itself, the view would thus get applied twice (oops)
2014-05-27 12:23:02 +02:00
Xavier Morel 0f5424eac4 [IMP] replace check_mode python-level constraint by an SQL CHECK constraint 2014-05-27 12:21:52 +02:00
Xavier Morel 9555b32c7b [IMP] add some more explanations for the behavior of the mode attribute on views 2014-05-27 12:20:04 +02:00
Xavier Morel cdd89f4ae6 [FIX] forgot to add primary attribute support to <template> in schema 2014-05-27 12:19:13 +02:00
Xavier Morel 833f5894d2 [FIX] typos 2014-05-27 12:18:22 +02:00
Xavier Morel e06f5b414b [IMP] inherit_option_id -> application 2014-05-27 12:13:51 +02:00
Xavier Morel e2f41d09ba [IMP] prevent changing a view from application: always to application: disabled
not sure that's actually useful, and can still go always -> enabled -> disabled...
2014-05-27 11:57:07 +02:00
Xavier Morel d82ffb8728 [ADD] application field & check during inheriting views read 2014-05-27 11:57:07 +02:00
Xavier Morel 8b9f774a22 [ADD] support for primary mode in <template>
should probably validate that there's an inherit_id (?)
2014-05-27 11:57:02 +02:00
Xavier Morel da345aaa2d [ADD] use of explicit primary mode in read_combined 2014-05-27 11:57:02 +02:00
Xavier Morel 4e3dbb96b3 [FIX] default_view should be based on mode=primary, not on inherit_id=False 2014-05-27 11:57:01 +02:00
Xavier Morel 434be479f9 [ADD] mode attribute to views
Not used yet, only defined its relation to inherit_id:

not inherit_id + primary -> ok
not inherit_id + extension -> error
inherit_id + primary -> ok
inherit_id + extension -> ok
2014-05-27 11:57:01 +02:00
Xavier Morel d9ce012d29 [IMP] simplify handling of callable _constraint message 2014-05-27 11:57:00 +02:00
Xavier Morel d8377a931e [REM] idiotic _invalids attribute, as well as get_invalid_fields 2014-05-27 11:56:59 +02:00
Fabien Meghazi 81c6e4e272 Merge branch 'master' of https://github.com/odoo/odoo into master-odoo-cmd-fme 2014-05-27 09:35:37 +02:00
Fabien Meghazi 06b10a8ef2 Merge remote-tracking branch 'odoo/master' into master-import-module-wizard-tpa 2014-05-26 16:52:41 +02:00
kevin wang 9bfa02386c [FIX]t-field wrong outputs when precision is 0 2014-05-26 17:06:49 +08:00
Géry Debongnie 62900fe01b Merge remote-tracking branch 'odoo/master' into master-inline-searchview-ged
Conflicts:
	addons/crm/crm_case_section_view.xml
2014-05-26 10:06:31 +02:00
Simon Lejeune 2d7c890939 Merge remote-tracking branch 'odoo/saas-4' into saas-4-report-fixes-sle 2014-05-23 15:38:56 +02:00
Denis Ledoux 51c7b55da0 [FIX] request.handle_exception: cleanup override logic, fixed chain broken by commit a096ae0
handle_exception() is supposed to try handling an exception and if it cannot,
re-raise it. Overridden methods must therefore call super() within a try/except
block, and only attempt to handle the exception if super() raised.
2014-05-23 13:15:52 +02:00
Olivier Dony 2af03e1b6e [MERGE] Forward-port latest 7.0 bugfixes, up to f8671cb 2014-05-22 16:44:33 +02:00
Denis Ledoux f8671cb48a [REVERT] b6a7402fdb, pagereset seems to be useful in some cases. Need to check deeper 2014-05-22 16:17:04 +02:00
tpa-odoo 41147025b8 [ADD] add wizard to import zipped module 2014-05-22 15:51:51 +05:30
Géry Debongnie 555677f14d [IMP] replace all 'Group By...' by 'Group By'
in all searchview, the 'Group By...' looks weird, next to the Custom
Reports and Filters.  This change was requested by the upper management
2014-05-22 11:44:35 +02:00
Denis Ledoux c0e9a15960 [MERGE] Forward-port of latest saas-3 bugfixes, up to rev. a096ae0080 2014-05-22 09:35:26 +02:00
Martin Trigaux a096ae0080 [FIX] http: force rolleback for failed http request
1st issue:
When an exception was raised, it was badly handled by the website in case of
website_enabled key. The response page was generated without calling super.
The WebRequest object being responsible to rollback the transaction in case
of errors.

2sd issue:
The _failed attribute is required to rollback the transaction in an WebRequest
object. Previously it was only set in the JsonRequest object (which inherit
from WebRequest), replace by call to super. The attribute _failed is now set
in the WebRequest object.
2014-05-21 19:12:37 +02:00
Fabien Meghazi df35de22b8 Disable logging during commands discovery 2014-05-21 15:53:16 +02:00
Denis Ledoux 2cc28ce65b [MERGE] Forward-port of latest 7.0 bugfixes, up to rev. b6a7402fdb 2014-05-21 13:46:10 +02:00
Simon Lejeune b50421e551 [FIX] ir_actions: adapt render_report when called in a tests/qweb report context to generate the pdf only if a directory has been provided 2014-05-21 13:11:27 +02:00
Denis Ledoux b6a7402fdb [FIX] report: correct page numbering 2014-05-21 11:20:37 +02:00
Fabien Meghazi 05f376e310 If no addons-path provided, include the main addons 2014-05-20 22:33:49 +02:00
Christophe Simonis a756b82372 [MERGE] forward port of branch saas-4 up to revid bb26dea 2014-05-20 20:19:55 +02:00
Christophe Simonis bb26dea60b [MERGE] forward port of branch saas-3 up to revid 38abc8a 2014-05-20 19:00:50 +02:00
Christophe Simonis 38abc8a006 [MERGE] forward port of branch 7.0 up to revid b09b6a0 2014-05-20 18:57:04 +02:00
Christophe Simonis ab4c3534de [MERGE] merge bzr trunk server branch 2014-05-20 17:30:01 +02:00
Christophe Simonis 8f0066d728 [MERGE] merge bzr saas-4 server branch 2014-05-20 17:05:25 +02:00
Christophe Simonis 528d04d6dd [MERGE] merge bzr server branch 2014-05-20 16:28:48 +02:00
tpa-odoo f7fe753d07 [IMP] unlink ir.action.todo which are related to actions which will be deleted. 2014-05-20 17:00:15 +05:30
Fabien Meghazi 9cd8ec98bc Automatic @auth='user' redirection for unlogged users
opt out with query parameter ?noredirect=1
2014-05-20 12:02:46 +02:00
Thibault Delavallée f99785e29d [IMP] ir_qweb: contact widget: handle website info in the contact widget. 2014-05-19 18:15:32 +02:00
Thibault Delavallée 066fb14326 [FIX] orm: unlink: when unlinking a record, trigger the computing of
function fields for other records in the same model. Previously all function fields in the
current model were not computed for some reason not provided by the history.

We therefore compute effective store_ids on which the various trigerred
function fields will be computed again. Those ids are the ids given
in the store_get storage variable minus the deleted ones.
2014-05-19 18:12:41 +02:00
Richard Mathot (OpenERP) f5368a1bad [FIX] ir_qweb: Duration widget now displays something 2014-05-19 17:37:00 +02:00
Xavier Morel 8c86be0c60 [FIX] indentation and formatting of various rst snippets 2014-05-19 13:59:17 +02:00
xmo-odoo 201701f38c Merge pull request #38 from cysnake4713/master
[FIX] report set_html_image error
2014-05-19 11:40:53 +02:00
xmo-odoo 072485799c Merge pull request #27 from lyinfo/master-ck-match
Dereferencing of nones could lose error messages during import
2014-05-19 10:18:27 +02:00
Xavier Morel 9cefa76988 [ADD] hasclass() xpath function
Server-side, view extension is done via xpath. This includes "template" views
full of HTML.

HTML elements often have a bunch of classes, sometimes even semantic
(!). XPath is generally great, but specifically lousy at dealing with
space-separated values: in standard XPath 1.0 to know if an element has a
class 'foo' the predicate is:

    contains(concat(' ', normalize-space(@class), ' '), ' foo ')

and this has to be fully duplicated if there's a second class involved.

Things are slightly better with EXSLT/XPath 2.0 and tokenize, but still not
great:

    tokenize(@class, '\s+') = 'foo'

and the equality check is very weird when unaware of XPath's evaluation rules.

``hasclass`` makes this much simpler to deal with: to get any ``foo`` node
with the class ``bar`` is as simple as:

    //foo[hasclass('bar')

and it can take multiple class, as with e.g. jquery it will return elements
with all specified classes.

Beware though, the predicate function will be called once for each element to
check, since it's implemented in pure python and not profiled elements should
be filtered as much as possible before this point.
2014-05-19 08:32:23 +02:00
Xavier Morel cf833a2f53 [FIX] don't blockquote a list of stuff for no reason 2014-05-19 08:32:14 +02:00
Xavier Morel 66d8934802 [FIX] correctly handle get_inheriting_views_arch when uid=None 2014-05-19 08:32:10 +02:00
Xavier Morel f41fde480d [FIX] rST warnings & errors 2014-05-19 08:31:09 +02:00
Xavier Morel 8a73978063 [FIX] use format_date for date fields 2014-05-19 08:23:15 +02:00
Launchpad Translations on behalf of openerp d5ca324cd5 Launchpad automatic translations update. 2014-05-19 06:20:39 +00:00
Kiril Vangelovski c0882872be [ADD] Macedonian language 2014-05-18 22:57:07 +02:00
cysnake4713 bd36f36281 [FIX] report localcontext setHtmlImage Method error #24 #36 2014-05-18 18:20:51 +08:00