Before this patch, when a domain leaf was a string (such as `&`, `|` or `!`), it was being treated as an array. This was leading to errors such as this one:
```
2017-10-19 11:22:01,578 1 ERROR devel odoo.http: Exception during JSON request handling.
Traceback (most recent call last):
File "/opt/odoo/custom/src/odoo/odoo/http.py", line 640, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/custom/src/odoo/odoo/http.py", line 677, in dispatch
result = self._call_function(**self.params)
File "/opt/odoo/custom/src/odoo/odoo/http.py", line 333, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/odoo/custom/src/odoo/odoo/service/model.py", line 101, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/odoo/custom/src/odoo/odoo/http.py", line 326, in checked_call
result = self.endpoint(*a, **kw)
File "/opt/odoo/custom/src/odoo/odoo/http.py", line 935, in __call__
return self.method(*args, **kw)
File "/opt/odoo/custom/src/odoo/odoo/http.py", line 506, in response_wrap
response = f(*args, **kw)
File "/opt/odoo/auto/addons/web/controllers/main.py", line 827, in search_read
return self.do_search_read(model, fields, offset, limit, domain, sort)
File "/opt/odoo/auto/addons/web/controllers/main.py", line 849, in do_search_read
offset=offset or 0, limit=limit or False, order=sort or False)
File "/opt/odoo/custom/src/odoo/odoo/models.py", line 4733, in search_read
records = self.search(domain or [], offset=offset, limit=limit, order=order)
File "/opt/odoo/custom/src/odoo/odoo/models.py", line 1559, in search
res = self._search(args, offset=offset, limit=limit, order=order, count=count)
File "/opt/odoo/custom/src/odoo/odoo/models.py", line 4275, in _search
query = self._where_calc(args)
File "/opt/odoo/custom/src/odoo/odoo/models.py", line 4074, in _where_calc
e = expression.expression(domain, self)
File "/opt/odoo/custom/src/odoo/odoo/osv/expression.py", line 640, in __init__
self.expression = distribute_not(normalize_domain(domain))
File "/opt/odoo/custom/src/odoo/odoo/osv/expression.py", line 289, in distribute_not
elif token in DOMAIN_OPERATORS_NEGATION:
TypeError: unhashable type: 'list'
```
Now they are treated specifically and the problem is fixed.
Previously, a Bootstrap dropdown was being used to choose the domain operator.
It was not working due to a problem that doesn't allow to have nested dropdowns in Odoo 10.0 search views, but possibly yes in the intermediate version where this addon was backported.
To get this working, the BS dropdown is replaced by a standard select element, so no more conflicts.
The default window display all the events (aka 'fit'), in case of events spread over the year, the events are invisibles (too small to be readable)
Signed-off-by: adrien.didenot <adrien.didenot@horanet.com>
In Odoo calendar view, the attribute date_delay is an alternative to date_stop, to provides the duration of the event instead of its end date.
This commit integrate this attribute to the Timeline view, but contrary to the base Calendar view the Timeline view could use both arguments (date_stop and date_delay) simultaneously.
Signed-off-by: adrien.didenot <adrien.didenot@horanet.com>
* Update the vis.js framework to latest stable version (v4.20.1) to add new functionality and save almost
400ko of source code in odoo assets (the vis dev team has isolate the code for timeline widget from the
rest of their widgets)
* Add the possibility to display events with no duration (instantaneous) as the same time has regular events
* Add the possibility to choose between two scroll mode :
- zoom in time resolution (default)
or
- vertical scroll (web browser default behaviour)
Signed-off-by: adrien.didenot <adrien.didenot@horanet.com>