Commit Graph
34 Commits
Author SHA1 Message Date
qmo-odoo fb53eb10cb [IMP] utm*: Rename is_website field
This commit renames the field is_website into is_auto_campaign
for clarity purpose.

The is_website field always meant that the campaigns were created automatically
in some instances. Could be created automatically via a link to the website
or even by simply creating a marketing campaign in marketing_automation.

is_auto_campaign is a better name as it does not wrongly imply that only
the website can generate campaigns automatically, while also pointing
out the automatic generation mechanism.

The utm campaigns behaviour rests unchanged.

LINKS:
TaskID: 2414694
PR: #65824
Enterprise PR: #16238

Related: odoo/upgrade#2146
Related: odoo/enterprise#16238
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2021-03-15 16:11:26 +00:00
Denis Ledoux f36d304473 [FIX] utm: utm.stage must be defined before being used in a default=
Otherwise, this can raise the below issue during an upgrade (`-u`):
```
  File "/home/odoo/src/odoo/13.0/odoo/modules/registry.py", line 369, in init_models
    model._auto_init()
  File "/home/odoo/src/odoo/13.0/odoo/models.py", line 2529, in _auto_init
    new = field.update_db(self, columns)
  File "/home/odoo/src/odoo/13.0/odoo/fields.py", line 2456, in update_db
    return super(Many2one, self).update_db(model, columns)
  File "/home/odoo/src/odoo/13.0/odoo/fields.py", line 857, in update_db
    self.update_db_notnull(model, column)
  File "/home/odoo/src/odoo/13.0/odoo/fields.py", line 897, in update_db_notnull
    model._init_column(self.name)
  File "/home/odoo/src/odoo/13.0/odoo/models.py", line 2455, in _init_column
    value = field.default(self)
  File "/home/odoo/src/odoo/13.0/addons/utm/models/utm.py", line 28, in <lambda>
    default=lambda self: self.env['utm.stage'].search([], limit=1),
  File "/home/odoo/src/odoo/13.0/odoo/models.py", line 1648, in search
    res = self._search(args, offset=offset, limit=limit, order=order, count=count)
  File "/home/odoo/src/odoo/13.0/odoo/models.py", line 4497, in _search
    self._cr.execute(query_str, where_clause_params)
  File "/home/odoo/src/odoo/13.0/odoo/sql_db.py", line 173, in wrapper
    return f(self, *args, **kwargs)
  File "/home/odoo/src/odoo/13.0/odoo/sql_db.py", line 250, in execute
    res = self._obj.execute(query, params)
psycopg2.errors.UndefinedColumn: column utm_stage.sequence does not exist
LINE 1: SELECT "utm_stage".id FROM "utm_stage" ORDER BY "utm_stage"
```

upg-5396

closes odoo/odoo#65135

X-original-commit: 9294c1dc4f24c23c1f81bec50d73cb594349b54b
Signed-off-by: Denis Ledoux (dle) <dle@odoo.com>
2021-01-27 13:19:12 +00:00
Thibault Delavallée 43e474e663 [FIX] utm: show campaign tags by default by giving them a color
Colorless tags are not displayed in kanban view of utm campaigns. When creating
tags on the fly currently they have no color and are therefore not displayed
once saving the campaign. This is not really intuitive for users.

We now set a default value to color field of tags. They are now displayed
by defauklt.

LINKS

Task ID-2300385
COM PR odoo/odoo#59872
ENT PR odoo/enterprise#14031

X-original-commit: 4f83be33d4cc53d50081050b3a9dee2892c562a4
2020-12-11 18:12:19 +00:00
Nicolas Martinelli 4b58342743 [FIX] utm: record creation
Make sure `is_website` is an existing field of the model at creation.

opw-2192139

closes odoo/odoo#44870

X-original-commit: 5daf25f2c693c17e75223f8e3502d5c4121cb3b5
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2020-02-07 14:03:09 +00:00
Sébastien Theys 16f2b3809d [FIX] utm: prevent crash on /web/session/destroy
A similar fix was originally done in [1], where the access to `env` was done
before the parent dispatch.

The issue was then reintroduced with [2], where the `env` was possibly accessed
again after the dispatch. This works most of the time, but in the rare case
where the session is destroyed during dispatch, which is the case on
`/web/session/destroy`, accessing the environment after that point will crash.

This issue didn't manifest before [3], because the `env` was always initialized
during `checked_call` when calling the `clear` method on it (since `env` is a
magic property). After that commit, the `clear` is not called if not necessary,
therefore it might happen that the `env` is never initialized. This leads to the
crash when trying to initialize it for the first time after the `db` attribute
has been cleared during the destroy, since a `db` is required to initialize it.

The current fix aims to prevent the crash. As opposed to [1] that actually kept
the tracking fields by fetching them before the dispatch, it is decided on this
commit to voluntarily lose the tracking fields when destroying the session,
because keeping them would require too much refactoring for a fix in stable, but
we also feel that it makes sense functionally: those tracking fields were maybe
used for a specific purpose in the original database, but they might mean
something completely different on another database.

[1] 6780597f2d
[2] c78de22a09
[3] f6d56afba0

closes #42260

closes odoo/odoo#42314

X-original-commit: 2ac11ce7a3f36a1572d886bc872facf339cb6516
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2019-12-23 16:06:07 +00:00
mreficent 355a5dfc36 [IMP] *: fix typos in comments
closes odoo/odoo#35404

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-08-07 10:28:33 +00:00
Christophe Simonis 886eca0131 [IMP] *: remove usage of oldname attribute
This attribute is misleading as it is insufficient to correctly upgrade
the database. It only renames the column in the database, but other
operations are needed, like updating the corresponding `ir.model.fields`
record (and its xmlid). The default values and the translations are also
lost during the upgrade.

Moreover, this feature was misused. It was:
 - left on fields during multiple versions.
 - used on reports (SQL views). This would be ok if the feature was
   complete, but, as is, it was useless.
 - kept unchanged after a second renaming of the field (which can happen
   versions later the first rename).
 - used, even when the meaning of the field changed. i.e. the field
   `archived` has been renamed to the classic `active`, but the value
   in the database should be switched.
2019-08-05 09:36:41 +00:00
qmo-odoo a661b00015 [REF] utm,mass_mailing: replace mass mailing campaign by utm campaign
PURPOSE

This commit removes the mass_mailing.campaign model. Instead of having a fully
fledged model, we will simply inherit utm.campaign. We will also add relevant
statistics on utm campaign model in order to use it in various applications.

SPECIFICATIONS

This commit removes the mass_mailing.campaign model. Instead of having a fully
fledged model, we will simply inherit utm.campaign. This change implies that
mass_mailing.tag and mass_mailing.stage have to move to the utm model along
their associated views/data.

These changes were made so that campaigns could be used in the future
by social, mass_mailing and mass_sms and available in the same view

This commit also removes the source_id and the medium_id
fields on the campaign.

This commit also moves the unique_ab_testing field from the mass_mailing_campaign
to the mass_mailing model

Task ID: 2002029
PR: #34015
2019-08-02 12:32:35 +00:00
RomainLibert 8514ef827e [IMP] various: Make some small tree views editable
Purpose
=======

Some formviews are useless since there are so few relevant fields https://nimb.ws/1EdMV7

For instance, to create a new lost reason the user is forced to:
1. Hit create
2. Type in the name of the record
3. Hit save
4. Go back to the treeview
While he could simply type them away in an editable treeview.

The goal of this task is to allow for creation/edition of records in such models
directly from the treeview.

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

Modify tree views from a given list of models for which the
treeview has to be made editable bottom.

If not specified otherwise, the content treeview should stay the same.

If a field is readonly/required/etc. in the formview, it should be in the
editable treeview as well.

Relabeling has to be done of the field itself, not in the view.

TaskID: 2026126

closes odoo/odoo#34577

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2019-07-15 12:47:03 +00:00
Raphael Collet 368e9530f4 [REF] *: record.env.user._is_XXX() -> record.env.is_XXX()
Superuser mode implies `record.env.is_XXX()`.
2019-07-04 11:32:22 +00:00
Adrian Torres 52f5528cfb [REF] *: replace deprecated pycompat helpers for builtins
This commit replaces calls to pycompat helpers that were intended for
python 2 <-> python 3 interoperability for python 3 builtins, as python
2 is no longer officially supported by Odoo.

This includes:
    * calls to imap/izip/ifilter replaced by map/zip/filter
    * uses of text_type replaced by str
    * uses of unichr replaced by chr
    * calls to implements_to_string, implements_iterator removed
    * string_types and integer_types replaced by str, int respectively
    * calls to to_native replaced by calls to to_text

This is done in preparation to the removal of these deprecated helpers
in the following commit.
2018-11-29 09:28:17 +00:00
Thibault Delavallée 65f9840fd2 [MOV] utm: organize module structure according to guidelines
This module holds old code and is still not updated according to guidelines.
Let us update a bit the naming in this module to have readable code.

This commit is linked to task ID 1896681 and PR #27975. No functional change
should occur with this commit as it contains only renaming / move.
2018-10-26 12:42:49 +00:00
Nimesh Jethva 2c1549cc59 [IMP]tools, technial modules: Improvement in model description
Purpose of this commit is to give description more "business oriented"
because those descriptions appears in Odoo Studio which is supposed to be used by end users, not only by developers.

Related Task ID : 37311
2018-09-21 11:45:15 +02:00
Jeremy Kersten c78de22a09 [FIX] utm: set utm for website page
Before this commit, UTM was no more set for website.page.

Website.page mechanism uses the _handle_exception to check if an url match a
record in database, instead of use the method _dispatch that uses controllers.

Consequently, module UTM never set the utm into the cookies for website.page.
Now we override method '_handle_exception' that will anyway ignore to set utm
if it is a real exception and not a fallback (redirect, page, attachment, ...)
2018-03-28 17:59:30 +02:00
Martin Trigaux 801fb2967a [FIX] utm: fix the fix typo
Look at the commit message of c4ba5adc, not the content
2017-10-26 10:47:46 +02:00
Martin Trigaux c4ba5adc04 [FIX] utm: use proper Englsih abreviation
ex is French
e.g. should be used
2017-10-25 10:57:59 +02:00
Xavier Morel 7dd062f835 [FIX] P3: text model types
* remove references to basestring & unicode (use relevant pycompat
  helpers)
* remove some str calls (either entirely or replaced by relevant
  helper, either text or native)
* use better API to avoid unnecessary conversions
* remove some XML declarations in views
2017-08-20 23:25:54 +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
Dhawal Limbuwala e611a546d2 [IMP] sale_crm: Pass utm values from a quote to a sales order
Purpose
=======

Create an opportunity
Fill in the campaign, medium and source
Create a quotation from this opportunity
The fields campaign, medium and source on the quotation are empty.

-> they should be populated from the opport.

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

Campaign, meduim, source data should be passed to quoation when create quotation from oppor
2017-03-27 11:07:09 +02:00
Simon Lejeune 6780597f2d [FIX] utm: correct ir_http's _dispatch override
When overriding dispatch, we have to make sure that we do the
database operations before calling super, because we are not sure
to have a valid database/env after (for example, in the case of a
drop of a database).
2016-09-21 14:40:05 +02:00
Raphael Collet 70dec2d896 [REF] registry: now mapping model name to model class 2016-08-31 17:21:59 +02:00
Raphael Collet 5c3a60eb50 [FIX] utm: in _dispatch, propagate errors
This avoids a miserable crash when switching between databases.
2016-08-19 16:35:25 +02:00
Yannick Tivisse 40561b0fb6 [MIG] utm: remaining self.pool in ir_http.py 2016-08-09 10:29:46 +02:00
Yannick Tivisse 9e57185449 [IMP] base,sales_team: Move res_groups and menuitems to sales_team
Purpose:
Having the res_group defined in base and sales_team auto installed
with mail doens't make sense.

- Move the empty res_config class and the related view from
  base_setup to sales_team (base_setup only contains the 'General Settings'
  model and views
- Move the 'sale' related content from product to sale module (Access rights,
  menuitems,...)
- Set sales_team at autoinstall False. The module is installed when needed by
  crm or sale for example
- Set sales_team as a dependency of voip. (Access rights defined for configuration
  purpose)
- Set sales_team ad a dependency of subscription (Access rights issue too)

[FIX] account: move some ir.model.access to sale module
[FIX] payment: Move some ir.rule to website_sale
[FIX] stock: move some ir.model.access rule to sale_stock
[FIX] project: Move some ir.model.access rules to crm_project_issue
[FIX] mrp: Move some ir.model.access rules to sale_mrp
[FIX] calendar: move some ir.model.access rules to crm

Rename xmlids accordingly. Example: 'base.group_sale_manager' becomes
sales_team.group_sale_manager.

[ADD] sales_team: See own documents => See only his sales team
Moved the "User: Own Leads Only", "User: All Leads" and "Manager" groups from sale and crm
into sales_team module. Add the record rules so that user can see only his Own Sales Team
if "See Own Leads" is sales right and can see all sales teams if he is having sales rights
of "See All Leads" or manager.
2016-06-09 16:05:25 +02:00
Yannick Tivisse ccdb5cbfc0 Revert "[IMP] base,sales_team: Move res_groups and menuitems to sales_team"
This branch need more testing instead of doing 10 fixes. A lot of issues are occuring
when installing modules in different orders.

This reverts commit fa6e415cdb.
2016-06-06 17:26:30 +02:00
Yannick Tivisse fa6e415cdb [IMP] base,sales_team: Move res_groups and menuitems to sales_team
Purpose:
Having the res_group defined in base and sales_team auto installed
with mail doens't make sense.

- Move the empty res_config class and the related view from
  base_setup to sales_team (base_setup only contains the 'General Settings'
  model and views
- Move the 'sale' related content from product to sale module (Access rights,
  menuitems,...)
- Set sales_team at autoinstall False. The module is installed when needed by
  crm or sale for example
- Set sales_team as a dependency of voip. (Access rights defined for configuration
  purpose)
- Set sales_team ad a dependency of subscription (Access rights issue too)

Rename xmlids accordingly. Example: 'base.group_sale_manager' becomes
sales_team.group_sale_manager.
2016-06-06 15:46:52 +02:00
Jeremy Kersten d24b5038a0 [FIX] utm: ignore utm for saleman.
When a saleman create a lead or a sale after clicking on a link to test their own campaign, they don't want to be linked to this campaign
2016-04-06 15:16:58 +02:00
Christophe Simonis e765569d04 [MERGE] forward port of branch 9.0 up to f0a63e5 2016-02-02 14:44:39 +01:00
Jeremy Kersten 22c80fff6e [FIX] utm: use tracking_fields from utm.mixin and not from the current model
This function cannot be overridden in a model which inherit utm.mixin
Limitation by the heritage on AbstractModel

record_crm_lead.tracking_fields() will call tracking_fields() from module
utm.mixin (if not overridden on crm.lead) instead of the overridden method
from utm.mixin.

To force the call of overridden method, we use
self.pool['utm.mixin'].tracking_fields() which respects overridden
methods of utm.mixin, but will ignore overridden method on crm.lead

Eg:

 class utm_mixin(osv.AbstractModel):
    _name = 'utm.mixin'

    def tracking_fields(self):
        return "A"

 class utm_mixin_overridden(osv.AbstractModel):
    _inherit = 'utm.mixin'

    def tracking_fields(self):
        return "B"

 class crm_lead(osv.osv):
    _name = "crm.lead"
    _inherit = ['utm.mixin']

    def func_1(self):
        print self.tracking_fields()
        # print "A"

    def func_2(self):
        print self.pool['utm.mixin'].tracking_fields()
        # print "B"

It's the dispatch method of ir_http which save GET parameters in cookies,
ignoring the overridden tracking_fields method in inherited model.
2016-02-01 12:16:43 +01:00
Srushti Patel 8913853377 [MIG] utm:Migrated into new api. 2015-10-26 14:40:02 +01:00
Olivier Dony 0bd4545348 [LEGAL] Use global LICENSE/COPYRIGHT files, remove boilerplate text
- Preserved explicit 3rd-party copyright notices
- Explicit boilerplate should not be necessary - copyright law applies
  automatically in all countries thanks to Berne Convention + WTO rules,
  and a reference to the applicable license is clear enough.
2015-06-02 03:16:04 +02:00
Jeremy Kersten 018450752d [FIX] utm* - Allow to customize the cookies name 2015-04-02 22:50:41 +02:00
Jeremy Kersten c17bc5090d [FIX] hr_recruitment: use utm_mixin to allow to track the job applicant.
Remove old source_id
            Use hr.recruitment.source to generate link with utm and create
            alias with default value for utm
[FIX] crm/utm: Fix bug with utm (ddac26cdbb)
            Move demo into data
            Move ir_http to save the utm in the dispatch
2014-12-27 16:37:21 +01:00
Julien De Coster ddac26cdbb [ADD] Add the website_links module.
This module tracks clicks in mass mailing mails and allow the generation of trackable links in a website interface.

Modules modifications
---------------------
Refractoring of the crm_tracking_* classes in a new module.

* Extract the crm_tracking_* from the crm module into a new module "utm"
* Remove the crm_mass_mailing bridge module
* New dependencies of mass_mailing and website_links to utm.
2014-12-17 17:14:33 +01:00