Prevent crash while trying to subscribe to a non existing channel from
a misconfigured snippet.
Also now let the user create the channel linked to the discussion group
directly on snippet drop if no channel is available to select
automatically.
task-2356955
closesodoo/odoo#63854
X-original-commit: 5bb8821c0a78df5c03458a2c902e1a9c7a12f2f9
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
Before this commit, controller did
1. search all channels with an alias
2. search on the messages on mail.channel
3. map the number of messages with the channels
The issue was that the list of messages in step 2 includes more
channels than the ones found in step 1.
The list of messages may be very big and some groups may be retrieved
while not used in the small list of channels with an alias.
This commit should improve performances while accessing the /groups
page.
closesodoo/odoo#52593
X-original-commit: 60e806f4ea8ce75390eb59620ec61a39b4d3ccd2
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
render, render_template, load, activity_schedule_with_view,
get_website_pages should all be private:
It should not be possible to render an aribtrary template only with
its name or id
Still need to render some qweb views from js so the method
render_template is kept public.
This explains why the website editor still need read access on
ir.ui.view as we want to allow any snippet to be rendered.
* website_blog, website_event_track, website_forum, website_mail_channel
7dd70438e1 was introduced in stable as a fix, which obviously had some stable
policy preventing some changes.
This commit improves that commit in master.
task-2119086
closesodoo/odoo#45622
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
Without this, it will crash since self.env does not exists in a controller.
Using request will still crash later since `check_followers` does not exists.
Introduced with 957c99abd5
Found while working on task-2152191
closesodoo/odoo#42509
X-original-commit: 70e4a716feda7acb7385a98ac51ab40dabc3f50e
Signed-off-by: Romain Derie (rde) <rde@odoo.com>
From now, you need to explicitely add sitemap=True if you want your controller
into the sitemap.
It's the default value, but if you forgot it, it will raise a Warning on runbot.
It will avoid wrong controller in sitemap and duplicate (empty) content.
From now, if your model contains a field website_id, the modelConverter for
sitemap will automatically add the domain:
"[('website_id', 'in', (False, current_website_id))]"
It avoid redundant declaration and ugly url in redirect/rewrite view.
Migration: need to remove it from url_from in website.rewrite
task-2065018
closesodoo/odoo#39427
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
Purpose: make some methods from mail.thread mixin private and update their
naming if necessary. Some methods prepare data for business flows and deal
with internal information. Public methods should either use of give some
access to those methods. Computation itself should be keps internal.
In this commit we put message_partner_info_from_emails as private. As it is
used in discuss JS we define a controller that controls access to this method.
It explicitly checks for related document access rule and rights before
calling the private method.
Some addons are updated accordingly to the method change.
Related to task ID 1911679
Linked to PR #29483
Fixes 27280fefa9:
* `partner_id` is an `int` not a recordset
* qweb Response is lazy (the template is only looked up and rendered
when we actually need to send the content over the wire) => the error
would occur outside of the try..except block. Force rendering
(`Response.flatten`) so we can handle the issue here
* Uses the HttpCase interface to contact the server over a new socket
(same as tours & al) because using `werkzeug.test.Client` would not
use the correct cursor (?) and so the test data would not be visible
Before this fix, if a (non-registered) user tried to unsubscribe an
address *not registered*, they'd get an unsub link, click on it, and
get a "Invalid or expired confirmation link." message, usually
wondering what the bloody hell happened.
Provide a clearer message in that case.
Don't add useless routes or route that will return 404.
Improve generate function from ModelConverter to have a better management of
query_string.
Now we have an helper sitemap_qs2dom that will analyse the current route and
check if query string is plausible and if yes, generate a domain, when the
query_string don't seems to match the route, we return a Falsy domain.
Before this commit, if qs was /product/ipad, enumerate_page check for each
modelconverter of the route a name ilike '/product/ipad'.
Now we check all routes that contains product and one converter that match ipad
or routes that contains ipad and one converter that match product.
This commit a new way to declare the sitemap for a route.
def sitemap_xx(env, rule, query_string):
yield {'loc': '/my_url'}
@http.route(..., sitemap=sitemap_xx)
In this case, only the loc returned by this function will be in the sitemap
for all rules.
You can pass sitempa=False, if you don't want that route are into the sitemap
Slug and unslug API is now available in http_routing. Indeed there is no
link to any website or any reason to not support slufigied URLs when
website is not installed. A new unslug_url method is added as a tool
coming from an embedded method from website. Doing it allows to have all
slug related methods defined at the same point.
Support of slug and unslug in qweb rendering is also moved directly in
http_routing version of ir_ui_view instead of website inheritance. This
is done in order to keep things coherent.
Some code from website about ModelConverter is also moved. Indeed both
versions of ir_http uses some kind of placeholder to store the uid
when converting urls to python. This commit unifies it by using the
website one directly in base to simplify the override.
This commit also updates all module importing slug. Enterprise modules
will have to be updated, see related commit.
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.
Allows public users to unsubscribe to a mailing list.
Before this patch, a user had to be connected with an account with subscribing.
For public users, a confirmation email is sent to subscribe and unsubscribe to
a list.
Use hmac signatures to prevent fake (un)subscriptions.
* ensure groupby domains are normalised, that's significantly more
convenient for subsequent manipulations and combinations (e.g. OR-ing
domains of multiple groups)
* split off "raw" groupby which provides ISO-8601 date and datetime
ranges[0] (half-open) as values for grouped date/datetime fields
for instance when grouping weekwise on a date field, the group
including May 11th, 1930 would have the following value for
the (grouped) date field: `("1930-05-05/1930-05-12", "W19 1930")`[1]
this means callers can access the programmatic date range value
* fix website_mail_channel and website_blog to *not* go and randomly dig
into the domains assuming a bunch of unspecified stuff about its
formatting (such as it not being normalized)
[0] https://en.wikipedia.org/wiki/ISO_8601#Time_intervals
[1] actual week number turns out to be locale-dependent...
- add or fix decorators on methods
- fix most compute methods (wrong dependencies)
- revert changes in `eval_context` of `ir.actions`
- various code simplifications and improvements
- migrate methods that were not
- ir_qweb: modify `QWebContext` to take an environment instead of `cr`, `uid`, `context`
- ir_qweb: convert `AssetsBundle` to use new API `env`
- ir_ui_view: use decorator `multi` on method `read_combined`
- ir_ui_view: ensure that method `render` is never called with an xml_id
- ir_ui_view: factor out part of the `ormcache` key of method `_read_template`
Since mail.channel user member instead of follower, the frontend widgets required some changes. This commit kind of duplicate follower controller from website_mail for channel member usage. These are now 2 separates widgets. Performance can be improve by removing rpc call when rendering widget, but since this commit is a fix, it does not touch this.
model has been renamed to mail.channel to prepare the slack modeling.
In future commits the mail.group model will be merged with the channel
model from im_chat. The first move is to rename mail.group into
mail.channel to have a model that will unite both features.
renamed to mail.channel.
At this point no model has been renamed; only files have been moved.
n mail, mail_group files have been renamed to mail_channel. The
website_mail_group addon has been renamed to website_mail_channel.
Some internal references have been updated (templates, linked files).