Sometimes a cached bundled could be missing in the
ir.attachment filestore (for example after copying
a database for test purposes without duplicating
the filestore as well).
When this happens ir.attachment will return an empty
file contents ; treat this as a cache miss.
This means empty bundles would not be cached, which
is not a big issue - there is little benefit in
caching them, and they should not be common nor
useful.
When deleting filesystem-backed attachements, the
deletion on the file-system is not transactional.
In the event of a transaction rollback, the file
deletion would not be rolled back, which is a
dangerous side-effect.
This can happen for example when several transactions
try to delete the same file(s) at the same time.
The duplicate deletions might be detected by the
database (being concurrent update errors), and rolled
back at the point of the DELETE query, to be retried.
If the files have already been deleted in the file
system it before the rollback, it leaves the system
in an inconsistent state, at least temporarily.
One case where we have seen it is when web bundles
are loaded by many web users at the same time, right
after being updated (and thus invalidated).
As they are currently cached as ir.attachment records,
this often causes a corruption of the cache.
The webclient rendering is done in two parts: the server renders the boilerplates
including the menus, and then the javascript launch the webclient using the
server-side boilerplates. In some case, we want to render the boilerplates but not
the menus (auth_calendar). Added groups around the t-call to the menu in the web
template. Fixes issue #2044.
stock_account module override the action_done method of stock.move but does not return the same value
This causes problems when calling this function from xmlrpc because the resulting value is now None and that is not allowed to be marshaled by default.
Automatic Cookie Domain Configuration simplifies cross domain tracking implementations by automatically writing cookies to the highest level domain possible when the auto parameter is used. When used on the domain www.example.co.uk, it will try to write cookies in the following order:
co.uk
example.co.uk
www.example.co.uk
Analytics.js will fail to write a cookie on co.uk but will succeed on example.co.uk. Since a cookie was succesfully written on a higher level domain, www.example.co.uk will be skipped.
To keep the pager and view changer after confirmation of a sale order, do not reload the view (quotation and sale order view are the same anyway)
Fixes#250
as recommended by nwi
use same style as logo but very slightly smaller font, otherwise the
difference is a bit jarring as numbers are much bigger than the app logo's
text
Add an attribute 'related_sudo' (True by default) for related fields.
A related field is computed as superuser if related_sudo is True.
Add explicit related fields 'name' and 'email' on 'res.users', as these should
be readable by the public user with module website_forum.
The test in test_ir_model creates a custom model. This causes a full reload of
the registry, which recursively installs the required modules while 'base' is
being tested. As a side effect, it commits stuff from the database, so that
the effects of test_ir_model are actually not rolled back.
The attachment menu (list and add) has no effect in tree view (not supporting multi-items upload and display), the menu should then only be displayed in these view (opw 612534)
This is related to rev. dd4d72d
Not opening a new window action allows to keep the current list of stock picking being threated, and to use the next an previous arrow of the forom view of the web client.
Otherwise, if done with the superuser:
- The multi-company rules won't work, the user will have the amount of all invoices, cross-companies
- The amount currency will always be the currency of the superuser
This fixes a bug which is usually triggered in module account_followup, but
does not occur deterministically. Some recomputations of computed fields are
apparently missing. Environment objects containing recomputations todos and
kept alive by a WeakSet, are removed by the Python garbage collector before
recomputation takes place. We fix the bug by moving the recomputation todos in
a non-weakref'ed object.