forked from Mapan/odoo17e
65 lines
2.6 KiB
Python
65 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import uuid
|
|
from werkzeug.urls import url_join
|
|
|
|
from odoo import api, fields, models, _
|
|
|
|
|
|
class HrReferralLinkToShare(models.TransientModel):
|
|
_name = 'hr.referral.link.to.share'
|
|
_description = 'Referral Link To Share'
|
|
|
|
job_id = fields.Many2one(
|
|
'hr.job',
|
|
default=lambda self: self.env.context.get('active_id', None),
|
|
)
|
|
channel = fields.Selection([
|
|
('direct', 'Link'),
|
|
('facebook', 'Facebook'),
|
|
('twitter', 'Twitter'),
|
|
('linkedin', 'Linkedin')], default='direct')
|
|
url = fields.Char(readonly=True, compute='_compute_url', compute_sudo=True)
|
|
|
|
@api.depends('channel')
|
|
def _compute_url(self):
|
|
self.ensure_one()
|
|
|
|
if not self.env.user.utm_source_id:
|
|
self.env.user.utm_source_id = self.env['utm.source'].create({
|
|
'name': self.env['utm.source']._generate_name(self, self.env.user.name),
|
|
}).id
|
|
|
|
if self.job_id and not self.job_id.utm_campaign_id:
|
|
self.job_id.utm_campaign_id = self.env['utm.campaign'].create({'name': self.job_id.name}).id
|
|
|
|
job_url = url_join(self.get_base_url(), (self.job_id.website_url or '/jobs'))
|
|
link_tracker_values = {
|
|
'title': _('Referral: %(job_url)s', job_url=job_url),
|
|
'url': job_url,
|
|
'campaign_id': self.job_id.utm_campaign_id.id,
|
|
'source_id': self.env.user.utm_source_id.id,
|
|
}
|
|
|
|
channel_to_medium = {
|
|
'direct': 'utm.utm_medium_direct',
|
|
'facebook': 'utm.utm_medium_facebook',
|
|
'twitter': 'utm.utm_medium_twitter',
|
|
'linkedin': 'utm.utm_medium_linkedin',
|
|
}
|
|
medium_reference = channel_to_medium.get(self.channel)
|
|
medium = self.env.ref(medium_reference, raise_if_not_found=False) if medium_reference else False
|
|
if medium:
|
|
link_tracker_values['medium_id'] = medium.id
|
|
|
|
link_tracker = self.env['link.tracker'].search_or_create(link_tracker_values)
|
|
if self.channel == 'direct':
|
|
self.url = link_tracker.short_url
|
|
elif self.channel == 'facebook':
|
|
self.url = 'https://www.facebook.com/sharer/sharer.php?u=%s' % link_tracker.short_url
|
|
elif self.channel == 'twitter':
|
|
self.url = 'https://twitter.com/intent/tweet?tw_p=tweetbutton&text=Amazing job offer for %s! Check it live: %s' % (self.job_id.name, link_tracker.short_url)
|
|
elif self.channel == 'linkedin':
|
|
self.url = 'https://www.linkedin.com/sharing/share-offsite?url=%s' % link_tracker.short_url
|