1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/hr_referral/wizard/hr_referral_link_to_share.py
2024-12-10 09:04:09 +07:00

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