Commit Graph
38 Commits
Author SHA1 Message Date
David Beguin 6bec0e4d29 [IMP] website : add website visitors activity tracking
This commit adds the website_visitor model that will be used
to track website visitor activity (page viewed, number of visits and
more general info about the visitor (country, lang, etc..)

This model will, in later commit, be used to send chat requests
and push notification from the operators (or backend users)
directly to the visitor.

- A website_visitor is created once the visitor is requesting
a website.page that is tracked.
- A website_visitor is considered as connected if his last tracked
website_page request is within the last 5 minutes.
- The number of visits for a website_visitor is incremented
if his last tracked website_page request was at least 8 hours ago.
- A website_visitor is only handled by the system. Users cannot
create, edit or delete a website_visitor.
- A unique website_visitor is created per website.
That means that the same real person can triggers multiple visitor
creation if visits multiple websites.
This is because, for livechat purpose on later commit, for example,
the chat request can be created on the correct livecaht channel
(linked to the correct website)
- The visitor is recognized via his cookie (visitor_id). So if the visitor
flush his cookies, a new visitor will be created the next time he will
request a tracked website_page.
- Link user's res.partner to website.visitor.
    If a website_visitor log in
    (a visitor that has visitor_id in his cookie),
    the website_visitor is linked to the res.partner.
    The website visitor name is than adapted to match the name of
    the first res.partner linked to the visitor.
    A visitor can have multiple partners as the same session
    can be used by multiple person (one PC for a team for example).

To keep a detailed history of the visitor page views,
we add a website.visitor.page model that makes the link
between visitor and website.page but that keeps the visit date.
So that we can see if a visitor went mulitple times
on the same page and when. It's usefull to see his last page views.

Task ID : 2028059
PR #34624
2019-08-19 06:33:37 +00:00
Pragya Ladda 8e2f9a4fe2 [IMP] website: cannot deactivate language if set in language_ids for website
closes odoo/odoo#31520

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-03-12 10:14:29 +00:00
qsm-odoo ff55736c4f [REF] website: simple move of a python file
Next commit will change that file to make it extend a web_editor model
instead of a web_editor controller. This commit only moves the file.

PR https://github.com/odoo/odoo/pull/29624
task-1904244
2019-02-08 14:38:41 +00:00
Jeremy Kersten 53faa6206f [REF] website: split class by file and keep history 2019-01-18 10:16:51 +01:00
Christophe Simonis 86ff929ad6 [MERGE] forward port branch saas-11.4 up to 1199451606 2018-09-10 17:06:18 +02:00
Yannick Tivisse 7978d4ba0f Revert "[IMP] *: Define groups on res.users models"
This reverts commit 99f497b390.
2018-09-10 14:23:42 +02:00
Jeremy KerstenandDerie Romain 066cfc9598 [IMP] website_[blog|event|forum|sale|slide]: make website specific
Set up env & tools for module website multiwebsite (blog, event, sale..)
website_id in modelConverter and ir_rule

add _compute_domain_keys to have a different cache per website
  or rules would not be correctly website_dependant
  eg: blog 1 on website 1, blog 2 on website 2
      access blog 1 from website 1 => can access -> normal
      access blog 1 from website 2 => can access -> should crash because (ir rule)

split mixing website.published.mixin and website.published.multi.mixin to have
website_id only on last one.
 multi mixing will:
     - override website_published compute to take current_website into account (not in backend)
     - force website when clicking on published in backend

- website blog, website_sale, website_event, website_forum, website_slides are now multi website

Co-authored-by: Derie Romain <rde@odoo.com>
Co-authored-by: Kersten Jérémy <jke@odoo.com>
2018-08-13 20:16:34 +02:00
Joren Van Onder 4f6ec1cd2a [IMP] website,*: support multiple websites
This implements support to administer multiple websites. Although the
core functionality already existed, managing multiple websites was
fairly technical.

In the interest of database updates and migration this attempts to
keep duplicated data to a minimum. To do this the usual generic
records are rendered unless some website-specific record exists that
replaces it. Copy-on-write (COW) is used to create these
website-specific records. Through this mechanism creating a
website-specific record is delayed until necessary. A COW mechanism
has been implemented on 4 models: ir.ui.view, website.page,
website.menu and ir.attachment. These COW mechanisms are activated
when editing data through the website (aka frontend). These frontend
edits (e.g. with web_editor) will be website-specific, possibly
creating a website-specific record when necessary. When editing data
in the backend nothing special will happen, even when editing a
generic record. Note that because of this mechanism also facilitates
the ability to create new, uncustomized websites because the generic
data is kept.

Support is provided for a website to have any theme. Themes are fairly
complex to handle. Standalone themes can depend on other standalone
themes (e.g. theme_beauty depends on theme_loftspace) and themes
usually modify some data of the themes they depend on. Because a theme
can be installed on multiple websites, using website_id m2o fields
does not work well. It would require duplicate data, making updates
and migration harder. Because of this, data for themes (ir.ui.view and
ir.attachment specifically) have a theme_id m2o. website has a
theme_ids m2m that identifies all theme modules currently installed on
it. Through these fields we figure out what to render. A theme is only
fully uninstalled when it's no longer active on any website. The
advantage of this approach is that upgrading or migrating theme data
is no different from the single-website case.

The website.published.mixin class was modified to handle multiple
websites. A wizard was added in the backend to easily manage this for
multiple website.

Although not used anywhere in this commit, a 'website_id' variable has
been added in the evaluation context of ir.rule. It allows to easily
make any model multi-website aware, all that's needed is a custom
website_id m2o field on a model and a custom record rule.
2018-08-13 19:51:10 +02:00
Christophe Matthieu 14176015f5 [IMP] qweb: add method who defines qweb widget options
Each qweb widget should now explicitily define a method
`get_available_options` which specifies all options used in the widget
rendering.

The options are a dictionary with the option as key and the option type as
value (e.g. string, integer, array, model, etc.).

This is used by the Studio report editor (to customize widget options) and parsed
in JS.
2018-08-13 17:09:28 +02:00
Adrian Torres 503b8ed692 [FIX] *: cleanup (un|re)installation hacks
Replace hacks introduced in V11 by the proper solution.
2018-06-11 09:47:34 +02:00
Yannick Tivisse 99f497b390 [IMP] *: Define groups on res.users models
The reified view on the res users will be dropped in the following commit.

The previous commit adds support to define each group as a computed field on the res users.

This commit defines:
- A boolean field for each 'isolated' res.group, i.e. a group in the hidden category.
- A selection field for each 'Application' res.group, i.e. a group in a application category.

Example:
- The group to manage pricelist in sales becomes a boolean field
- The groups project user/manager become a selection field
2018-04-26 15:13:38 +02:00
Christophe Simonis 228ecdbe28 [MERGE] forward port branch 11.0 up to ff0abd214c 2018-01-10 11:41:35 +01:00
Adrian Torres 9f583717e5 [FIX] website: unlink website_id (#21972)
In the module website, the relational field website_id is defined twice,
once for ir_ui_view and a second time for res_config_settings, for the
former we perform an ondelete='cascade', which means that when the
website model is unlinked, the field is unlinked as well.

This is not done for the website_id field in res_config_settings, which
instead defaults to setting the field to NULL, which violates a not-null
constraint and therefore causes issues when trying to modify/save
settings.

To solve this, a hard delete of the ir_model_field website_id is
performed during the uninstall process of the website module.

Fixes #21905
OPW 803018
2018-01-03 13:53:44 +00:00
Christophe Simonis 4708812b6c [MERGE] forward port branch 11.0 up to b37cc1f9b7 2017-12-12 18:50:59 +01:00
Adrian Torres b7ce07ad2a [FIX] website, mass_mailing: same field defined twice (#21503)
The ORM does not currently, an probably won't support two fields with
the same name in different modules that do not depend on each other.

This is obviously a nasty hack, but it's the best one can do for a
stable branch.

THIS IS WHY WE HAVE DEPENDENCY MODULES, PEOPLE.
2017-12-11 10:43:48 +00:00
Yannick Tivisse 7ed9a7fabe [REM] web_planner: Remove the module
Purpose
=======

User tests have been made by the Product Owners team. It showed that the planners are not used by new users on Odoo due to several reasons (They are too static, too heavy to use,...)

Specification
=============

Remove the module and its different applications. The onboarding on the business flow will be improvement in the weeks to come.
2017-10-26 16:14:21 +02:00
Yannick Tivisse 781a03b2bc [IMP] res_config: Update file names, xmlids, class names according to guidelines
Now that we only have one model (res.config.settings). Uniformize everything according to the guidelines.
2017-09-01 13:03:18 +02:00
Thibault Delavallée da8d418ff0 [ADD] portal: add module for customer portal and sharing features
This module adds required base code for a fully integrated customer
portal. It contains the base controller class and base templates.
Business addons will add their specific templates and controllers
to extend the customer portal.

This module contains most code coming from odoo v10 website_portal.
Purpose of this module is to allow the display of a customer portal
without having a dependency towards website edition and customization
capabilities.

Some CSS files used in frontend assets are already moved to have a
working portal skeleton. A is_public method on users is also added
as it will be used in various portal code soon.
2017-08-08 14:23:58 +02:00
Yannick Tivisse a38a3e93c2 [MOV] *: Reorganize configuration files according to guidelines 2017-06-19 17:37:38 +02:00
xmo-odoo b4429c2a91 [FIX] Various P3-related import changes
* LDAP import: python-ldap is not python3-compatible, pyldap is

  Warning: only supported from debian Stretch (current testing)?
  https://packages.debian.org/search?searchon=names&keywords=pyldap

* implicitly relative imports
* imports of moved or removed stdlib modules

issue #8530
2017-04-28 09:06:53 +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
Jérome Maes 73749499f0 [MOV] website: split files, reoganize file per models 2016-08-04 12:02:13 +02:00
Christophe Matthieu 8c559044a5 [IMP] web_editor: split website into web_editor (to use editor in backend for html field) and website 2015-07-10 17:00:11 +02:00
Thibault Delavallée c128ddf827 [FIX] website: remove unnecessary dependency from website
to mail. The only use was to update a method of publisher_warranty.contract
model that is defined in mail.

This code has been moved to the bridge module between website and mail
aka website_mail.

Dependency to share has also been removed.
2015-07-01 10:58:20 +02:00
Darshan Kalola 50a043d979 [IMP] website, website_sale, crm, web_planner : add planner for website modules
This commit impact crm, website, website_sale and web_planner modules because it
- add planner for website and website_sale
- improve planner notebook by setting texterea and input size to 100% and using col-md-* class
- split js code into common part (used in backend and frontend) and backend part (only for backend)
- adapt some tour, since every page will have the planner modal in its DOM, the tour selectors msut be more accurate
- introduce some style fixes and adaptations
- ...
2015-05-15 10:59:42 +02:00
Christophe Simonis a10cd334d0 [IMP] mail,website: improve update_notification 2014-09-15 18:53:22 +02:00
Thibault Delavallée 8df6b16784 [ADD] website: added support for invoking a server action through controller
website: added website/action/<id_or_xml_id> route, that runs the server action designed
by its id or xml_id. Only code server action returning a template give a result. The
template is displayed. Other or not existing server actions redirect to the homepage.

website: added an override of ir_actions_server: evaluation context gets request for
evaluation, to enable request.render(template_name); also returns template the same
way action is returned for code server action;

bzr revid: tde@openerp.com-20140205090447-2hppg7818nx1wfzh
2014-02-05 10:04:47 +01:00
Christophe Matthieu b1462a9d30 [IMP] website: res_config with wizard
bzr revid: chm@openerp.com-20140127173816-uldoee71h7ntpyhl
2014-01-27 18:38:16 +01:00
Christophe Matthieu 9fd7db5150 [WIP] website/ir_rule: remove session from access right evaluation, allow to read pricelist to evrybody and use superuser for saleorder in website_sale
bzr revid: chm@openerp.com-20140107085728-77mxlims6fa0li76
2014-01-07 09:57:28 +01:00
Xavier Morel e7117a5799 [FIX] altered trunk routing stuff, bring website converters back in website
bzr revid: xmo@openerp.com-20131115132626-60p0yk3jv1pk6mhb
2013-11-15 14:26:26 +01:00
Xavier Morel 5c75678f94 [FIX] broken merge hidden by leftover pyc file
bzr revid: xmo@openerp.com-20131014121319-ry0s5tnpz5f21aw0
2013-10-14 14:13:19 +02:00
Xavier Morel 2e352ce187 [MERGE] from trunk
bzr revid: xmo@openerp.com-20131014085459-dhbypq0hg3lzzf3j
2013-10-14 10:54:59 +02:00
Antony Lesuisse 25a260068b [IMP] renamse files to conform to the future openerp module guidelines
bzr revid: al@openerp.com-20131013030806-2236jpszm1morlg6
2013-10-13 05:08:06 +02:00
Christophe Matthieu 165a9e673b [IMP] website: ir.rule: add the http secure session in the eval context for access rules evaluation.
bzr revid: chm@openerp.com-20131010090229-8cz9ophrqlayw00x
2013-10-10 11:02:29 +02: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 510a4f51d2 [ADD] customizable qweb rendering, add translate flag on fields through this
bzr revid: xmo@openerp.com-20131008092233-9su66923zthl9jyg
2013-10-08 11:22:33 +02:00
Christophe Matthieu 1ad5e2f0f7 [IMP] website: remove website.config.settings
bzr revid: chm@openerp.com-20131003150048-elm5kiwabrh1j6gt
2013-10-03 17:00:48 +02:00
Xavier Morel ce30e7691e [IMP] move conversion out of view.save
Also, html.fromstring does weird stuff when encoding is not specified,
force to utf-8 just in case.

bzr revid: xmo@openerp.com-20130930145358-qh7xdicgg21prsk4
2013-09-30 16:53:58 +02:00