Browse Source

[ADD] Initial Commit

pull/78/head
Sreejith P 7 years ago
parent
commit
ddf53fd771
  1. 41
      hr_linkedin_recruitment/README.rst
  2. 24
      hr_linkedin_recruitment/__init__.py
  3. 48
      hr_linkedin_recruitment/__manifest__.py
  4. 14
      hr_linkedin_recruitment/data/auth_linkedin_data.xml
  5. 5
      hr_linkedin_recruitment/doc/requirment.txt
  6. 26
      hr_linkedin_recruitment/models/__init__.py
  7. 33
      hr_linkedin_recruitment/models/auth_outh.py
  8. 126
      hr_linkedin_recruitment/models/hr_job.py
  9. 70
      hr_linkedin_recruitment/models/mechanize_op.py
  10. 53
      hr_linkedin_recruitment/models/recruitment_config.py
  11. BIN
      hr_linkedin_recruitment/static/description/banner.jpg
  12. BIN
      hr_linkedin_recruitment/static/description/config.png
  13. BIN
      hr_linkedin_recruitment/static/description/cybro_logo.png
  14. BIN
      hr_linkedin_recruitment/static/description/icon.png
  15. 125
      hr_linkedin_recruitment/static/description/index.html
  16. BIN
      hr_linkedin_recruitment/static/description/job_form_b.png
  17. BIN
      hr_linkedin_recruitment/static/description/linedin_form.png
  18. BIN
      hr_linkedin_recruitment/static/description/linkedin_app.png
  19. BIN
      hr_linkedin_recruitment/static/description/linkedin_banner.jpg
  20. BIN
      hr_linkedin_recruitment/static/description/provider.png
  21. 19
      hr_linkedin_recruitment/views/hr_job_linkedin.xml
  22. 13
      hr_linkedin_recruitment/views/oauth_view.xml
  23. 22
      hr_linkedin_recruitment/views/recruitment_config_settings.xml

41
hr_linkedin_recruitment/README.rst

@ -0,0 +1,41 @@
==========================================
Basic HR-LinkedIn Connector v10
==========================================
The module integrates LinkedIn with Odoo HR Recruitment.
* Share Job Opening Posts With LinkedIn Page.
* Automate Odoo HRMS with LinkedIn.
==========================================
Advanced HR-LinkedIn Connector v10
==========================================
The module integrates LinkedIn with Odoo HR Recruitment.
* Share Job Opening Posts With LinkedIn Page.
* Retrieve Post Comments and Likes.
* Retrieve Candidates Profile Data From LinkedIn.
* Profile URL of Candidates.
* Automate Odoo HRMS with LinkedIn.
Contributor
-----------
* `Nilmar Shereef <https://twitter.com/nilmarshereef>`__
Company
-------
* `Cybrosys Technologies <https://cybrosys.com/>`__
Contact
-------
* Mail Contact : odoo@cybrosys.com
* Mail Contact : shereef@cybrosys.in
* Mail Contact : info@cybrosys.com
Further information
===================
HTML Description: `<static/description/index.html>`__
Technical instructions: `<doc.requirement.txt>`__
Tested on Odoo 10.0 ffba5c688ff74a0630f9f70be1d7760a43a7deba

24
hr_linkedin_recruitment/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Author: Nilmar Shereef (<shereef@cybrosys.in>)
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import models

48
hr_linkedin_recruitment/__manifest__.py

@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Author: Nilmar Shereef (<shereef@cybrosys.in>)
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
{
'name': 'HR-LinkedIn Integration',
'summary': "Integrates LinkedIn with HR Recruitment",
'description': "Basic module for LnkedIn-HR Recruitment connector",
'category': 'Generic Modules/Human Resources',
'version': "10.0.1.0.0",
'depends': ['hr_recruitment', 'auth_oauth'],
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'data': [
'data/auth_linkedin_data.xml',
'views/recruitment_config_settings.xml',
'views/hr_job_linkedin.xml',
'views/oauth_view.xml',
],
'external_dependencies':
{
'python': ['mechanize', 'linkedin'],
},
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

14
hr_linkedin_recruitment/data/auth_linkedin_data.xml

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="provider_linkedin" model="auth.oauth.provider">
<field name="name">LinkedIn</field>
<field name="auth_endpoint">https://www.linkedin.com/oauth/v2/authorization</field>
<field name="scope">r_basicprofile r_emailaddress w_share</field>
<field name="validation_endpoint">https://api.linkedin.com/v1/people/~</field>
<field name="data_endpoint">https://api.linkedin.com/v1/people/~</field>
<field name="css_class">fa fa-linkedin-square</field>
<field name="body">Share post with LinkedIn</field>
</record>
</data>
</odoo>

5
hr_linkedin_recruitment/doc/requirment.txt

@ -0,0 +1,5 @@
Odoo integration module "hr_linkedin_recruitment" depends on the several external python package.
Please ensure that listed packaged has installed in your system:
* linkedin
* mechanize

26
hr_linkedin_recruitment/models/__init__.py

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Author: Nilmar Shereef (<shereef@cybrosys.in>)
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import mechanize_op
from . import recruitment_config
from . import hr_job
from . import auth_outh

33
hr_linkedin_recruitment/models/auth_outh.py

@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Author: Nilmar Shereef (<shereef@cybrosys.in>)
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from odoo import models, fields, api
class OAuthProviderLinkedin(models.Model):
_inherit = 'auth.oauth.provider'
""" Adding client_secret field because some apps likes twitter,
linkedIn are using this value for its API operations """
client_secret = fields.Char(string='Client Secret', help="Only need LinkedIn, Twitter etc..")

126
hr_linkedin_recruitment/models/hr_job.py

@ -0,0 +1,126 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Author: Nilmar Shereef (<shereef@cybrosys.in>)
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
try:
import mechanize
from linkedin import linkedin
except ImportError:
_logger.error('Odoo module hr_linkedin_recruitment depends on the several external python package'
'Please read the doc/requirement.txt file inside the module.')
import requests
import json
import urlparse
from odoo import models, fields, api, _
from odoo.exceptions import ValidationError
from mechanize_op import MechanizeRedirectHandler
class HrJobShare(models.Model):
_inherit = 'hr.job'
update_key = fields.Char(string='Update Key', readonly=True)
@api.multi
def share_linkedin(self):
""" Button function for sharing post """
credential_dict = self.get_authorize()
access_token = credential_dict['access_token']
li_credential = credential_dict['li_credential']
share_data = {
"visibility": {"code": "anyone"},
"comment": self.description
}
# URLS
has_access_url = 'https://api.linkedin.com/v1/companies/%s/relation-to-viewer/is-company-share-enabled?format=json'%(li_credential['page_id'])
page_share_url = 'https://api.linkedin.com/v1/companies/%s/shares?format=json'%(li_credential['page_id'])
response = self.has_acces_request('GET', has_access_url, access_token)
access_response_text = response.json()
if access_response_text:
response = self.share_request('POST', page_share_url, access_token, data=json.dumps(share_data))
share_response_text = response.json()
share_response_code = response.status_code
if share_response_code == 201:
self.update_key = share_response_text['updateKey']
def share_request(self, method, page_share_url, access_token, data):
""" Function will return UPDATED KEY , [201] if sharing is OK """
headers = {'x-li-format': 'json', 'Content-Type': 'application/json'}
params = {}
params.update({'oauth2_access_token': access_token})
kw = dict(data=data, params=params, headers=headers, timeout=60)
req_response = requests.request(method.upper(), page_share_url, **kw)
return req_response
def get_authorize(self):
""" Supporting function for authenticating operations """
li_credential = {}
linkedin_auth_provider = self.env.ref('hr_linkedin_recruitment.provider_linkedin')
if linkedin_auth_provider.client_id and linkedin_auth_provider.client_secret:
li_credential['api_key'] = linkedin_auth_provider.client_id
li_credential['secret_key'] = linkedin_auth_provider.client_secret
else:
raise ValidationError(_('LinkedIn Access Credentials are empty.!\n'
'Please fill up in Auth Provider form.'))
if self.env['ir.values'].get_default('hr.recruitment.config.settings', 'company_page_id'):
li_credential['page_id'] = self.env['ir.values'].get_default('hr.recruitment.config.settings',
'company_page_id')
else:
raise exceptions.Warning(_('Please fill up company page ID in LinkedIn Credential settings.'))
if self.env['ir.values'].get_default('hr.recruitment.config.settings', 'li_username'):
li_credential['un'] = self.env['ir.values'].get_default('hr.recruitment.config.settings', 'li_username')
else:
raise exceptions.Warning(_('Please fill up username in LinkedIn Credential settings.'))
if self.env['ir.values'].get_default('hr.recruitment.config.settings', 'li_password'):
li_credential['pw'] = self.env['ir.values'].get_default('hr.recruitment.config.settings', 'li_password')
else:
raise exceptions.Warning(_('Please fill up password in LinkedIn Credential settings.'))
# Browser Data Posting And Signing
br = mechanize.Browser()
br.set_cookiejar(mechanize.CookieJar())
br.handler_classes['_redirect'] = MechanizeRedirectHandler
br.set_handle_redirect(True)
br.set_handle_robots(False)
return_uri = 'http://0.0.0.0:8010'
li_permissions = ['r_basicprofile', 'r_emailaddress', 'w_share', 'rw_company_admin']
auth = linkedin.LinkedInAuthentication(li_credential['api_key'],
li_credential['secret_key'],
return_uri,
li_permissions)
br.open(auth.authorization_url)
br.select_form(nr=0)
br.form['session_key'] = li_credential['un']
br.form['session_password'] = li_credential['pw']
r = br.submit()
auth.authorization_code = urlparse.parse_qs(urlparse.urlsplit(r.geturl()).query)['code']
li_suit_credent = {}
li_suit_credent['access_token'] = str(auth.get_access_token().access_token)
li_suit_credent['li_credential'] = li_credential
return li_suit_credent

70
hr_linkedin_recruitment/models/mechanize_op.py

@ -0,0 +1,70 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Author: Nilmar Shereef (<shereef@cybrosys.in>)
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
try:
import mechanize
except ImportError:
_logger.error('Odoo module hr_linkedin_recruitment depends on the several external python package'
'Please read the doc/requirement.txt file inside the module.')
import re
from mechanize import _response
from mechanize import _rfc3986
class MechanizeRedirectHandler(mechanize.HTTPRedirectHandler):
def http_error_302(self, req, fp, code, msg, headers):
# Code from mechanize._urllib2_fork.HTTPRedirectHandler:
if 'location' in headers:
newurl = headers.getheaders('location')[0]
elif 'uri' in headers:
newurl = headers.getheaders('uri')[0]
else:
return
newurl = _rfc3986.clean_url(newurl, "latin-1")
newurl = _rfc3986.urljoin(req.get_full_url(), newurl)
new = self.redirect_request(req, fp, code, msg, headers, newurl)
if new is None:
return
if hasattr(req, 'redirect_dict'):
visited = new.redirect_dict = req.redirect_dict
if (visited.get(newurl, 0) >= self.max_repeats or
len(visited) >= self.max_redirections):
raise HTTPError(req.get_full_url(), code,
self.inf_msg + msg, headers, fp)
else:
visited = new.redirect_dict = req.redirect_dict = {}
visited[newurl] = visited.get(newurl, 0) + 1
fp.read()
fp.close()
# If the redirected URL doesn't match
new_url = new.get_full_url()
if not re.search('^http(?:s)?\:\/\/.*www\.linkedin\.com', new_url):
return _response.make_response('', headers.items(), new_url, 200, 'OK')
else:
return self.parent.open(new)
http_error_301 = http_error_303 = http_error_307 = http_error_302
http_error_refresh = http_error_302

53
hr_linkedin_recruitment/models/recruitment_config.py

@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Author: Nilmar Shereef (<shereef@cybrosys.in>)
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from odoo import models, fields, api
class RecruitmentSettings(models.TransientModel):
_inherit = 'hr.recruitment.config.settings'
company_page_id = fields.Char(string="Company Page ID", help="")
li_username = fields.Char(string="User Name", help="")
li_password = fields.Char(string="Password", help="")
@api.multi
def set_linkedin_page_id(self):
""" Set function for LinkedIn credentials """
return self.env['ir.values'].sudo().set_default(
'hr.recruitment.config.settings', 'company_page_id', self.company_page_id)
@api.multi
def set_linkedin_username(self):
""" Set function for LinkedIn credentials """
return self.env['ir.values'].sudo().set_default(
'hr.recruitment.config.settings', 'li_username', self.li_username)
@api.multi
def set_linkedin_pw(self):
""" Set function for LinkedIn credentials """
return self.env['ir.values'].sudo().set_default(
'hr.recruitment.config.settings', 'li_password', self.li_password)

BIN
hr_linkedin_recruitment/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

BIN
hr_linkedin_recruitment/static/description/config.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
hr_linkedin_recruitment/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
hr_linkedin_recruitment/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

125
hr_linkedin_recruitment/static/description/index.html

@ -0,0 +1,125 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan"> HR-LinkedIn Connector </h2>
<h4 class="oe_slogan"><a href="https://www.cybrosys.com/">Author: Cybrosys Technologies</a></h4>
<h5 class="oe_slogan"><a href="https://www.cybrosys.com/blog/odoo-linkedin-integration-in-hr/">Blog: LinkedIN-HR Integration </a></h5>
</div>
<div class="oe_row oe_spaced">
<h4><p style="margin-left: 41px;">HR Team, Keep smiling for the below reasons:</p></h4>
<ul>
<li style="list-style:none !important;"><span style="color:green;"> &#9786;</span>&nbsp;&nbsp; Share Recruitment Post to LInkedIn from Odoo.</li>
<li style="list-style:none !important;"><span style="color:green;"> &#9786;</span>&nbsp;&nbsp; Enlarge Your Audience Range.</li>
</ul>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="linkedin_banner.jpg">
</div>
</div>
<div class="oe_span6">
<p class="oe_mt32">
This integration module makes your HR recruitment better.
You can share your posts directly to company page of LinkedIn with authorized login.</p>
</div>
</div>
</section>
<section class="oe_container oe_picture oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Setup a LinkedIn App</h2>
<h3 class="oe_slogan">..with proper information..</h3>
</div>
<div class="oe_span12">
<div class="oe_demo oe_picture oe_screenshot" style="max-height: 100% !important;">
<img src="https://cybrosys.com/blog/Uploads/BlogImage/odoo-linkedin-integration-in-hr-3.png">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Fill-up App Credentials </h2>
<h3 class="oe_slogan">..activate developer mode & fill-up API keys..</h3>
</div>
<div class="oe_span12">
<div class="oe_demo oe_picture oe_screenshot">
<img src="https://cybrosys.com/blog/Uploads/BlogImage/odoo-linkedin-integration-in-hr-4.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Configuration of LinkedIn Account Details</h2>
<h3 class="oe_slogan">..Username, Password and Page ID..</h3>
</div>
<div class="oe_span12">
<div class="oe_demo oe_picture oe_screenshot">
<img src="https://cybrosys.com/blog/Uploads/BlogImage/odoo-linkedin-integration-in-hr-2.png">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Share Job Requirement With LinkedIn Page</h2>
<h3 class="oe_slogan">..take right candidates from right place..</h3>
</div>
<div class="oe_span12">
<div class="oe_demo oe_picture oe_screenshot">
<img src="https://cybrosys.com/blog/Uploads/BlogImage/odoo-linkedin-integration-in-hr-5.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Shared Post at LinkedIn Page</h2>
<h3 class="oe_slogan">..take right candidates from right place..</h3>
</div>
<div class="oe_span12">
<div class="oe_demo oe_picture oe_screenshot" style="max-height: 100% !important;">
<img src="https://cybrosys.com/blog/Uploads/BlogImage/odoo-linkedin-integration-in-hr-6.png">
</div>
</div>
</div>
</section>
<section class="oe_container">
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<div>
<a class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/contact/"><i
class="fa fa-phone"></i> Contact Us </a>
<a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/odoo-customization-and-installation/"><i
class="fa fa-check-square"></i> Request Customization </a>
<a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://apps.odoo.com/apps/modules/browse?author=Cybrosys%20Techno%20Solutions"><i
class="fa fa-suitcase"></i> Other Cybro Apps</a>
</div>
<br>
<a href="https://www.cybrosys.com/odoo-customization-and-installation/">
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
</a>
</div>
</section>

BIN
hr_linkedin_recruitment/static/description/job_form_b.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
hr_linkedin_recruitment/static/description/linedin_form.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
hr_linkedin_recruitment/static/description/linkedin_app.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
hr_linkedin_recruitment/static/description/linkedin_banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
hr_linkedin_recruitment/static/description/provider.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

19
hr_linkedin_recruitment/views/hr_job_linkedin.xml

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- job Form View -->
<record id="hr_job_linkedin_form" model="ir.ui.view">
<field name="name">hr.job.linkedin.form</field>
<field name="model">hr.job</field>
<field name="inherit_id" ref="hr.view_hr_job_form"/>
<field name="arch" type="xml">
<xpath expr="//button[@name='set_open']" position="after">
<button name="share_linkedin" string="Share on LinkedIn" type="object" attrs="{'invisible': [('update_key', '!=', False)]}" groups="base.group_user"/>
</xpath>
<xpath expr="//field[@name='description']" position="after">
<field name="update_key" invisible="True"/>
</xpath>
</field>
</record>
</data>
</odoo>

13
hr_linkedin_recruitment/views/oauth_view.xml

@ -0,0 +1,13 @@
<?xml version="1.0"?>
<odoo>
<record id="view_auth_oauth_provider_secret_form" model="ir.ui.view">
<field name="name">auth.oauth.provider.secret.form</field>
<field name="model">auth.oauth.provider</field>
<field name="inherit_id" ref="auth_oauth.view_oauth_provider_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='client_id']" position="after">
<field name="client_secret"/>
</xpath>
</field>
</record>
</odoo>

22
hr_linkedin_recruitment/views/recruitment_config_settings.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- Configure Recruitment Settings View -->
<record id="hr_linkedin_recruitment_config" model="ir.ui.view">
<field name="name">LinkedIn Configure Recruitment</field>
<field name="model">hr.recruitment.config.settings</field>
<field name="inherit_id" ref="hr_recruitment.view_hr_recruitment_configuration"/>
<field name="arch" type="xml">
<xpath expr="//group" position="after">
<group>
<group string="LinkedIn Credentials">
<field name="company_page_id"/>
<field name="li_username"/>
<field name="li_password" password="True"/>
</group>
</group>
</xpath>
</field>
</record>
</data>
</odoo>
Loading…
Cancel
Save