Commit Graph
24 Commits
Author SHA1 Message Date
Olivier Dony 695716efb0 [FIX] P3: remove pycompat.{keys,items,values} helpers
Now that we're closer to switching to P3 for good, these helpers have
outlived their usefulness, and mostly add noise.

All remaining dict.iter*() or dict.view*() must be converted to the
normal keys(), values() or items() calls.

Whenever the result is likely to be used for more than the scope of a
loop, or when the dict needs to be modified during iteration, the calls
must be wrapped in a ``list()``, to protect the new P3 semantics.
Those cases are very exceptional.

Also removed some dead code or improved the API to remove unnecessary
conversions.
2017-08-20 23:25:54 +02:00
Xavier Morel a5e21f69e7 [FIX] P3: view arch should be text-'encoded' XML 2017-08-20 23:25:54 +02:00
Xavier Morel b8f0ed664c [FIX] P3: arch should be unicode 2017-08-20 23:25:54 +02:00
Xavier Morel 5617d4614b [FIX] P3: itertools.iziplongest renamed 2017-05-15 12:26:31 +02:00
xmo-odoo fffaf735f5 [FIX] P3: list -> iterable builtins (#16811)
In Python 3:

* various builtins and dict methods were changed to return
  view/iterable objects rather than lists
* and the separate Python 2 view/iterable builtins and methods were
  removed altogether

This is problematic when using these items as list (which the happens
repeatedly in Odoo), but more viciously when iterating *multiple times*
over them (which also happens, which I've messed up multiple times while
writing this, and which is a pain to debug even when you've just created
the issue).

Convert all code using these to semantics-matching cross-version
helper functions to get the LCD behaviour between P2 and P3, and
forbid the builtins via lint.

issue #8530
2017-05-10 09:39:55 +02:00
Christophe Simonis b33f919e3d [MERGE] forward port branch 10.0 up to aec8e25 2016-12-06 17:38:40 +01:00
Simon Lejeune 12e36a66f2 [FIX] qweb: render a child view with its xmlid
QWeb's get_template:
  * remove the fallback that returned the entire result of IRQweb's
    `load` if no match was made between the t-name of the first children
    of this result and the template to render
  * When get_template receives an etree, directly return it and don't
    try to find a matching t-name in it. The loader was not called but
    a matching was trying to be made, now that we removed the fallback
    a lot of tests that were relying on passing etree didn't work
    anymore.

IRQweb's load now return consistently the full result of IrUiView's
`read_templace` when asked to load an id or an xmlid. We make a special
case to patch the result if asked with an id or with a child view so
that the "t-name" of one of the first children of what we return is
always what QWeb is looking for.
2016-12-02 12:24:51 +01:00
Raphael Collet bb786944de [REF] base: make view.model_data_id a non-stored computed field (#13918)
This fixes the problem of recomputing that field in a much better way.  The
field was stored for the sake of searching; instead we implemented a search
method for it.
2016-10-24 12:26:22 +02:00
Christophe Simonis 42481f9849 [FIX] website: convert new test to new-api 2016-10-19 18:26:34 +02:00
Christophe Simonis 6466aa499f [MERGE] forward port branch saas-12 up to 00f4547 2016-10-19 18:09:53 +02:00
Raphael Collet 3ec5a23007 [FIX] base: recompute view.model_data_id (#13885)
The field was a stored computed field without dependencies, and therefore it
was never (re)computed. Add a simple dependency on the model `ir.model.data`
to make the recomputation everytime a view is modified. Moreover, when views
are created from modules, delay the recomputation of view fields until their
`ir.model.data` record is created.
2016-10-19 15:20:14 +02:00
Jérome Maes 8a399930f3 [REF] website_*: remove render method on website
Since saas-3, website controllers use `request.website.render`
to render the template of a web page. This was kept for retro
compatibility. It's time to stop using deprecated stuff.
Same for `_render` method on website.

'json' route don't use `request.render` since
`JsonRequest` has no `render` method.
2016-08-04 12:02:14 +02:00
Ravi Gadhia fd09ddb6f3 [MIG] website: migration to new api
Migration of website module to new API.
The tricky phase is ir_http.py : we need to use `request.env`
only when the authenfication phase is done. Normally by
calling `super` of `_dispatch` method, but website module
required it to be done before. This is important since
`env`is a lazy property of `request` object.

Some hack were kept since this commit is a migration ('RequestUID'
in ir.http, ...)

Some docstrings were added.
2016-08-04 12:02:14 +02:00
fwi-odoo a32c1d3c8d [MIG] web_editor: migrate to new api 2016-08-03 13:42:25 +02:00
Leonardo Rochael Almeida 06b3026bcd [IMP] unittest2 > unittest
The `unittest2` package is simply a backport of `unittest` from the
Standard Library of Python 2.7 to previous versions.

There is no reason to use it any longer.

Closes #6941
2015-09-28 10:37:27 +02:00
Nicolas Lempereur 8c77c711ee [FIX] website: escaping saved html content
Escape text nodes changed via the web editor before sending the content
it to the server controller.

It is done since the content is unescaped one time when being displayed,
and it is not done for inline style and script tags (which may be
injected by dropping a snippet) since that would break them.

replacing the solution in cdb900044.
2015-08-27 17:27:39 +02:00
Nicolas Lempereur cdb9000449 [FIX] website, base: escaping and unescaping html
When saving a template in version 8.0, html would be saved as it should
be displayed once on the site. In particular, if some text should be
escaped once send to the browser, it will be saved as such.

But when rendering, a text node content is unescaped two times:

* for translation which seems wrong since we already use .text of a node
  which already escaped it, doing it one more time is bad,

* when rendering the template, since the html template is stored in xml,

This commit remove superfluous unescaping for translation, and add an
escaping when saving the changed template content.

closes #7967
opw-646889
2015-08-13 15:15:24 +02:00
Xavier Morel 6b857b6eeb [FIX] whitespace/indent lost by RTE
Didn't manage to find RTE settings to avoid losing leading whitespace of
lines, so reindeint arch after doing all integration, right before saving back
to view's field.

* html.fromstring(parser=HTMLParser(remove_blank_text=True) does not seem to
  work, so serialize to XML, and parse back with
  remove_blank_text. remove_blank_text necessary for lxml's pretty_print to
  work correctly.

* pretty_print only & always uses 2 spaces/indent level. Our files (and the
  HTML editor's Format button) uses 4 spaces -> need a second pass to double
  indents.

bzr revid: xmo@openerp.com-20140227125934-q8j3z440px2ic6kx
2014-02-27 13:59:34 +01:00
Xavier Morel 4469b36f77 [FIX] change view section saving: only save view section *content*
Before, would save view section itself (including root element). But
branding distribution (and thus editability) are set on the last
programmatic root, thus the root element may well be generated
e.g. <span t-att-foo> will define the span itself as editable.

Saving this would remove the programmatic content on the node, and
thus break the view section altogether.

Fix the issue by only saving the root's content in the previous root.

bzr revid: xmo@openerp.com-20131217112034-nbxbg919cffv4w51
2013-12-17 12:20:34 +01:00
Xavier Morel eaef36c910 [FIX] move conversion code from ir.fields.converter into website.qweb structures
bzr revid: xmo@openerp.com-20131009133112-05dglhptiw019838
2013-10-09 15:31:12 +02:00
Xavier Morel 5de155ad98 [FIX] avoid losing non-meta attributes when converting t-fields back
bzr revid: xmo@openerp.com-20130919092546-c7yr8e4kixh4ngta
2013-09-19 11:25:46 +02:00
Xavier Morel 757a2dbc4e [IMP] single whole-page editor, reinstate ability to save only an embedded field (not part of a view)
bzr revid: xmo@openerp.com-20130917085753-aa32xxezhtrfaffj
2013-09-17 10:57:53 +02:00
Xavier Morel 29707bb8bf [FIX] don't lose text following a node being transformed back into a t-field
bzr revid: xmo@openerp.com-20130910143406-nuzu8vz5rzmshnzc
2013-09-10 16:34:06 +02:00
Xavier Morel 7e6f1a104e [ADD] move view.save tests from server
bzr revid: xmo@openerp.com-20130910133055-75q72gd75sty317m
2013-09-10 15:30:55 +02:00