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
80 lines
2.5 KiB
Python
80 lines
2.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from random import randint
|
|
|
|
from odoo import fields, models, api, SUPERUSER_ID
|
|
|
|
|
|
class UtmMedium(models.Model):
|
|
# OLD crm.case.channel
|
|
_name = 'utm.medium'
|
|
_description = 'UTM Medium'
|
|
_order = 'name'
|
|
|
|
name = fields.Char(string='Medium Name', required=True)
|
|
active = fields.Boolean(default=True)
|
|
|
|
|
|
class UtmCampaign(models.Model):
|
|
# OLD crm.case.resource.type
|
|
_name = 'utm.campaign'
|
|
_description = 'UTM Campaign'
|
|
|
|
name = fields.Char(string='Campaign Name', required=True, translate=True)
|
|
|
|
user_id = fields.Many2one(
|
|
'res.users', string='Responsible',
|
|
required=True, default=lambda self: self.env.uid)
|
|
stage_id = fields.Many2one('utm.stage', string='Stage', ondelete='restrict', required=True,
|
|
default=lambda self: self.env['utm.stage'].search([], limit=1),
|
|
group_expand='_group_expand_stage_ids')
|
|
tag_ids = fields.Many2many(
|
|
'utm.tag', 'utm_tag_rel',
|
|
'tag_id', 'campaign_id', string='Tags')
|
|
|
|
is_website = fields.Boolean(default=False, help="Allows us to filter relevant Campaign")
|
|
color = fields.Integer(string='Color Index')
|
|
|
|
@api.model
|
|
def _group_expand_stage_ids(self, stages, domain, order):
|
|
""" Read group customization in order to display all the stages in the
|
|
kanban view, even if they are empty
|
|
"""
|
|
stage_ids = stages._search([], order=order, access_rights_uid=SUPERUSER_ID)
|
|
return stages.browse(stage_ids)
|
|
|
|
class UtmSource(models.Model):
|
|
_name = 'utm.source'
|
|
_description = 'UTM Source'
|
|
|
|
name = fields.Char(string='Source Name', required=True, translate=True)
|
|
|
|
class UtmStage(models.Model):
|
|
|
|
"""Stage for utm campaigns. """
|
|
_name = 'utm.stage'
|
|
_description = 'Campaign Stage'
|
|
_order = 'sequence'
|
|
|
|
name = fields.Char(required=True, translate=True)
|
|
sequence = fields.Integer()
|
|
|
|
class UtmTag(models.Model):
|
|
"""Model of categories of utm campaigns, i.e. marketing, newsletter, ... """
|
|
_name = 'utm.tag'
|
|
_description = 'UTM Tag'
|
|
_order = 'name'
|
|
|
|
def _default_color(self):
|
|
return randint(1, 11)
|
|
|
|
name = fields.Char(required=True, translate=True)
|
|
color = fields.Integer(
|
|
string='Color Index', default=lambda self: self._default_color(),
|
|
help='Tag color. No color means no display in kanban to distinguish internal tags from public categorization tags.')
|
|
|
|
_sql_constraints = [
|
|
('name_uniq', 'unique (name)', "Tag name already exists !"),
|
|
]
|