Docusign/Python/Odoo
sudo pip3 install py-oauth2
Uninstall pyoauth2
sudo pip3 uninstall pyoauth2
if you installed already
Useful Tips all you need.
Docusign/Python/Odoo
sudo pip3 install py-oauth2
Uninstall pyoauth2
sudo pip3 uninstall pyoauth2
if you installed already
Change NTS to None as below from sqlnet
SQLNET.AUTHENTICATION_SERVICES= (NONE)
Write below function inside odoo javascript page. this._rpc({ model: 'hr.employee', method: 'default_events', args: [this.res_id], }, { shadow: true, });
Write below function inside Odoo python file
@api.model
def default_events(self,emp_id):
up_ev_data = []
events_obj= self.env['upcoming.events']
leave_obj= self.env['hr.leave']
leaveline= leave_obj.search([('employee_id','=',emp_id),('state','=','validate')])
if(emp_id):
self.env['upcoming.events'].search([('employee_id','=',emp_id)]).unlink()
for leave in leaveline:
vals={
'name' : leave.holiday_status_id.name,
'employee_id': leave.employee_id.id,
'date_start': leave.request_date_from,
'date_end': leave.request_date_to,
'state':'validate',
}
up_ev_data.append((0,0,vals))
events_obj.create(vals)
return up_ev_data Write below function inside odoo javascript page.
this._rpc({
model: 'hr.employee',
method: 'default_events',
args: [this.res_id],
}, {
shadow: true,
});
Write below function inside Odoo python file
addons\employee_events\static\src\js\event_list.js
odoo.define('employee_events.event_list', function (require) {
"use strict";
var FieldOne2Many = require('web.relational_fields').FieldOne2Many;
var fieldRegistry = require('web.field_registry');
var ListRenderer = require('web.ListRenderer');
// Function ListRenderer_extnd
var ListRenderer_extnd = ListRenderer.extend({
_renderRow: function (record, index) {
var $row = this._super.apply(this, arguments);
// Change on2many row's background colour based on event_type condition
if(record.data["event_type"]=='leave')
{
this.$el.find('> table').removeClass('table-striped');
$row.addClass('events_leave');
}
if(record.data["event_type"]=='calendar')
{
this.$el.find('> table').removeClass('table-striped');
$row.addClass('events_calender');
}
if(record.data["event_type"]=='activity')
{
this.$el.find('> table').removeClass('table-striped');
$row.addClass('events_activity');
}
return $row;
},
});
// Extending javascript one2many Render function
var EventListFieldOne2Many = FieldOne2Many.extend({
_getRenderer: function () {
console.log("My Message inside");
if (this.view.arch.tag === 'tree') {
//Calling python funtion default_events(hr.employee) using _rpc
this._rpc({
model: 'hr.employee',
method: 'default_events',
args: [this.res_id],
}, {
shadow: true,
});
// Return ListRenderer_extnd
return ListRenderer_extnd;
}
return this._super.apply(this, arguments);
},
});
console.log("My Event List End!!!");
fieldRegistry.add('Event_List_FieldOne2Many', EventListFieldOne2Many);
});
odoo\addons\employee_events\models\hr_employee.py
import datetime
from odoo import api, fields, models, _
# inherit employee module
class Employee(models.Model):
_inherit = 'hr.employee'
event_ids = fields.One2many('upcoming.events', 'employee_id', string='Upcoming Events',copy=True)
# creating upcoming events from Leaves,Calender and Activity
# Function from event_list.js
@api.model
def default_events(self,emp_id):
up_ev_data = []
events_obj= self.env['upcoming.events']
cal_obj= self.env['calendar.event']
emp_obj= self.env['hr.employee']
act_obj= self.env['mail.activity']
leave_obj= self.env['hr.leave']
if(emp_id):
# Clearing existing upcoming event lines
self.env['upcoming.events'].search([('employee_id','=',emp_id)]).unlink()
# creating upcoming events from Leaves
leaveline= leave_obj.search([('employee_id','=',emp_id),('state','=','validate'),('request_date_to','>',datetime.datetime.utcnow().date())])
for leave in leaveline:
vals={
'name' : leave.holiday_status_id.name,
'employee_id': leave.employee_id.id,
'date_start': leave.request_date_from,
'date_end': leave.request_date_to,
'state':'validate',
'event_type':'leave',
}
up_ev_data.append(vals)
# creating upcoming events from Calendar events
employee= emp_obj.search([('id','=',emp_id)])
if(employee):
event_line=cal_obj.search([('partner_ids','in',employee.user_id.partner_id.id),('privacy','=','public'),('stop_date','>=',datetime.datetime.utcnow().date())])
for event in event_line:
vals={
'name' : event.name,
'employee_id': emp_id,
'date_start': event.start_date,
'date_end': event.stop_date,
'state':'validate',
'event_type':'calendar',
}
up_ev_data.append(vals)
# creating upcoming events from Activity
if(employee):
act_line=act_obj.search([('res_id','=',employee.id),('res_model_id','=','hr.employee'),('date_deadline','>=',datetime.datetime.utcnow().date())])
for act in act_line:
vals={
'name' : act.summary,
'employee_id': emp_id,
'date_start': act.date_deadline,
'date_end': act.date_deadline,
'state':'validate',
'event_type':'activity',
}
up_ev_data.append(vals)
# Sort based on the date
up_ev_data_new=sorted(up_ev_data, key = lambda i: i['date_start'])
# Creating upcoming event lines
events_obj.create(up_ev_data_new)
return up_ev_data
# upcoming.events module
class UpcomingEvents(models.Model):
_name = 'upcoming.events'
name = fields.Char('Events')
employee_id = fields.Many2one('hr.employee', string='Employee')
date_start = fields.Date('Start Date', default=fields.Date.today,
help="Start date of the event.")
date_end = fields.Date('End Date', default=fields.Date.today,
help="End date of the event.")
event_type=fields.Selection([
('leave', 'Leave'),
('calendar', 'Calendar'),
('activity', 'Activity'),
], string='Type', default='calendar')
state = fields.Selection([
('draft', 'New'),
('confirm', 'Waiting Approval'),
('refuse', 'Refused'),
('validate1', 'Waiting Second Approval'),
('validate', 'Approved'),
('cancel', 'Cancelled')
], string='Status', default='draft')
from odoo import api, fields, models, _
class Employee(models.Model):
_inherit = 'hr.employee'
event_ids = fields.One2many('upcoming.events', 'employee_id', string='Upcoming Events',copy=True)
@api.model
def default_events(self,emp_id):
up_ev_data = []
events_obj= self.env['upcoming.events']
leave_obj= self.env['hr.leave']
leaveline= leave_obj.search([('employee_id','=',emp_id),('state','=','validate')])
if(emp_id):
self.env['upcoming.events'].search([('employee_id','=',emp_id)]).unlink()
for leave in leaveline:
vals={
'name' : leave.holiday_status_id.name,
'employee_id': leave.employee_id.id,
'date_start': leave.request_date_from,
'date_end': leave.request_date_to,
'state':'validate',
}
up_ev_data.append((0,0,vals))
events_obj.create(vals)
return up_ev_data
sudo su postgres
createdb –encoding=UTF-8 new_databasename
psql new_databasename < /opt/odoo/backup/backupfile.sql
mkdir “/opt/odoo/backup/”
chown -R postgres:postgres /opt/odoo/backup
sudo su postgres
pg_dump -E UTF-8 -p 5432 -F p -b -f /opt/odoo/backup/backupfile.sql databasename
psql –username=postgres –dbname=postgres
postgres=# alter user postgres password ‘epillars’;
ALTER ROLE
postgres=#
<!-- wp:paragraph -->
<p> sudo vim /etc/systemd/system/odoo.service</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><code>[Unit]<br>Description=Odoo<br>Documentation=<a href="http://www.odoo.com/" target="_blank" rel="noreferrer noopener">http://www.odoo.com/</a><br>[Service]<br># Ubuntu/Debian convention:<br>Type=simple<br>User=odoo<br>ExecStart=/opt/odoo/odoo-10.0/odoo-bin -c /etc/odoo.conf<br>[Install]<br>WantedBy=default.target</code></p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><code>sudo mkdir /var/lib/odoo<br>sudo chown odoo:root /var/lib/odoo -R</code></p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>sudo systemctl enable odoo.service (Enable service)</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>sudo systemctl start odoo.service (starts service)<br>sudo systemctl stop odoo.service (stops service)<br>sudo systemctl restart odoo.service (restarts Service)<br>sudo systemctl status odoo.service (status of service)<br>sudo systemctl enable odoo.service (starts service at boot)<br>sudo systemctl disable odoo.service (disables service at boot) </p>
<!-- /wp:paragraph -->
update-rc.d odoo-server defaults
$ sudo su postgres
$ psql
$ create database db_name;
$ psql db_name < db_name.sql;postgres=# alter database db_name owner to odoo;