mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-20 08:32:03 +02:00
19.0 vanilla
This commit is contained in:
parent
d1963a3c3a
commit
2d3ee4855a
7430 changed files with 2687981 additions and 2965473 deletions
|
|
@ -5,6 +5,8 @@
|
|||
from odoo import _, api, fields, models
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
import re
|
||||
|
||||
|
||||
class UtmMedium(models.Model):
|
||||
_name = 'utm.medium'
|
||||
|
|
@ -14,9 +16,10 @@ class UtmMedium(models.Model):
|
|||
name = fields.Char(string='Medium Name', required=True, translate=False)
|
||||
active = fields.Boolean(default=True)
|
||||
|
||||
_sql_constraints = [
|
||||
('unique_name', 'UNIQUE(name)', 'The name must be unique'),
|
||||
]
|
||||
_unique_name = models.Constraint(
|
||||
'UNIQUE(name)',
|
||||
'The name must be unique',
|
||||
)
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
|
|
@ -25,12 +28,40 @@ class UtmMedium(models.Model):
|
|||
vals['name'] = new_name
|
||||
return super().create(vals_list)
|
||||
|
||||
@property
|
||||
def SELF_REQUIRED_UTM_MEDIUMS_REF(self):
|
||||
return {
|
||||
'utm.utm_medium_email': 'Email',
|
||||
'utm.utm_medium_direct': 'Direct',
|
||||
'utm.utm_medium_website': 'Website',
|
||||
'utm.utm_medium_twitter': 'X',
|
||||
'utm.utm_medium_facebook': 'Facebook',
|
||||
'utm.utm_medium_linkedin': 'LinkedIn'
|
||||
}
|
||||
|
||||
@api.ondelete(at_uninstall=False)
|
||||
def _unlink_except_utm_medium_email(self):
|
||||
utm_medium_email = self.env.ref('utm.utm_medium_email', raise_if_not_found=False)
|
||||
if utm_medium_email and utm_medium_email in self:
|
||||
raise UserError(_(
|
||||
"The UTM medium '%s' cannot be deleted as it is used in some main "
|
||||
"functional flows, such as the recruitment and the mass mailing.",
|
||||
utm_medium_email.name
|
||||
))
|
||||
def _unlink_except_utm_medium_record(self):
|
||||
for medium in self.SELF_REQUIRED_UTM_MEDIUMS_REF:
|
||||
utm_medium = self.env.ref(medium, raise_if_not_found=False)
|
||||
if utm_medium and utm_medium in self:
|
||||
raise UserError(_(
|
||||
"Oops, you can't delete the Medium '%s'.\n"
|
||||
"Doing so would be like tearing down a load-bearing wall \u2014 not the best idea.",
|
||||
utm_medium.name
|
||||
))
|
||||
|
||||
def _fetch_or_create_utm_medium(self, name, module='utm'):
|
||||
name_normalized = re.sub(r"[\s|.]", "_", name.lower())
|
||||
try:
|
||||
return self.env.ref(f'{module}.utm_medium_{name_normalized}')
|
||||
except ValueError:
|
||||
utm_medium = self.sudo().env['utm.medium'].create({
|
||||
'name': self.SELF_REQUIRED_UTM_MEDIUMS_REF.get(f'{module}.utm_medium_{name_normalized}', name)
|
||||
})
|
||||
self.sudo().env['ir.model.data'].create({
|
||||
'name': f'utm_medium_{name_normalized}',
|
||||
'module': module,
|
||||
'res_id': utm_medium.id,
|
||||
'model': 'utm.medium',
|
||||
})
|
||||
return utm_medium
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue