Skip to main content


Showing posts from 2017

RHEL wsgi nginx error: permission denied while connecting to upstream

I had the same issue. What I found is that "SELinux" was blocking nginx from using the socket. If SELinux is enabled you can check the status (which should look similar to below): [root@localhost ~]# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 21 Policy from config file: targeted You can add an NGINX SELinux policy or just disable SELinux to get around the issue.  Check the status of SELinux using       # sestatus If it says enabled, vi into /etc/sysconfig/selinux . This is a symlink to /etc/selinux/config so modify this file in case you don't find the above file.       Terminal command: sudo vi /etc/sysconfig/selinux      The file is highly self-explanatory. Just change the value of           SELINUX to "disabled" -- without quotes. Most important step - REBOOT! Reference

Odoo 10: Link external url to menu

Hi, following code can be used to link menu to external url: <record id="external_link" model="ir.actions.act_url">         <field name="name">Odoobiz</field>         <field name="type">ir.actions.act_url</field>         <field name="target">new</field>         <field name="url"></field> </record> <menuitem action="external_link" name="Odoobiz" id="menu_odoobiz_link" parent="website_blog.menu_website_blog_root"/> This code will create Odoobiz menu under Blog menu and link it to . This will open link in new tab. If you want to open it in same tab itself. Please use - <field name="target">self</field> Thanks!!!!!!!! Enjoy Programming!! :)

PostgreSQL: Scheduler to take db backup every two hours

Hi, Today we are going to write a scheduler to take PostgreSQL db dump every two hours in ubuntu OS. 1. Create a folder called backup in your home directory where we are going to store all the dump files. 2. Because it's cron script so can provide password at runtime, we are going to store required details in ~/. pgpass file in following format hostname:port:database:username:password localhost:5432:mydb:user1:test123 don't forget to change it's permission to 0600 ( chmod 0600 ~/.pgpass ) Note: You can change localhost with Server IP if you have 3. Create a file to write script for db backup. Let's create it in home directory itself and call it Add following command to the file. pg_dump -d mydb -h localhost -p 5432 -U user1 -w  | gzip > /home/ubuntu/backup/$(date +%Y-%m-%d-%H:%m:%s).psql.gz It will save the dump file with date and time as name. e.g  2017-09-16-07:09:1505546517.psql.gz Don't forget to make

Odoo10: Automatically Update Currency Exchange Rates

Hi, we have developed a module to automatically update currency exchange rates with respect to your company's base currency. This module can be used with any of the following API: OANDA EXCHANGE RATE API CURRENCYLAYER EXCHANGE RATE API  FOREX CURRENCY CONVERSION API You can buy this module directly from us or from using following url: Thanks!!!! Enjoy Programming!! :)

Odoo10: Invoice Report with Bank Details

Hi, we have developed a module which will help companies to add bank details on invoice. You can download the same from Thanks!!!! Enjoy Programming :)

Odoo 10 Backend Themes

Hi, we have developed some free backend themes to help community and individual people who don't like default theme from odoo You can download these themes from following links and make changes as per your personal and business needs: Thanks!!! Enjoy Programming :)

Gmail: Download blocked file

                                          Hi, today we are going to learn, how to download blocked file in gmail. Sometimes you see following message in gmail: and you can't download attached file Follow steps to download file: 1. Open original message as shown in image 2. Download Original let's name it download_original.txt 3.  Save following python script in same directory. Let's name it import email import sys if __name__=='__main__':     if len(sys.argv)<2:         print "Please enter a file to extract attachments from"         sys.exit(1)     msg = email.message_from_file(open(sys.argv[1]))     for pl in msg.get_payload():         if pl.get_filename(): # if it is an attachment             open(pl.get_filename(), 'wb').write(pl.get_payload(decode=True)) 4. Go to Python console If you are using MAC book or Linux OS - open terminal and type python type python    import_fil

Blogger: Set subdomain for blog using Cloudflare

If you want to point you blog hosted at to subdomain like using Cloudflare, following are the steps: 1. Go to Basic Settings of your blog 2. Click on Third-party domain settings under Publishing 3. It will ask you to add two CNAME entries under your DNS settings. You can add as follow in Cloudflare 4. Set domain in your blog settings as Save. That's it. Sometimes it reflects immediately, sometimes it takes 24 to 48 hours as well. Thanks!!!!!!!!!! Enjoy Programming!! :)

Odoo 10: Close wizard and open standard form

Hi, Today we are going to learn how to open standard form after saving data in wizard. Let's say I have created an wizard to fill basic User details and once saved open default User form. Here is the xml code for my wizrd: <record id="view_custom_user_wizard" model="ir.ui.view">         <field name="name">Create User</field>         <field name="model">res.users</field>         <field name="arch" type="xml">             <form string="Create User">                 <group>             <field name="company_id" />             <field name="name" required="1"/>             <field name="login" required="1"/>             <field name="password" required="1" password="True" />             <footer>                         <button name="

Odoo: Download Binary File in v10

To download any binary file in Odoo10 following is the link:<module_name>&field=<field_name>&filename_field=<field_filename>&id=<object_id> module_name    - the name of the model with the Binary field field_name         - the name of the Binary field object_id            - id of the record containing particular file. field_filename    - name of a Char field containing file's name (optional). So if you want to call a function on button click and download the file, code is as follow: file_url = "<module_name>&field=<field_name>&filename_field=<field_filename>&id=<object_id>" return {     'type': 'ir.actions.act_url',     'url': file_url,     'target': 'new' } In Reports or web page, you can use it as: <t t-foreach="files&qu

Emails not working in PHP/Ubuntu

Hi, lot of solutions are there to fix this problem but I feel somewhere, sometimes we miss the basic part... It may be possibility that we don't have sendemail  utility itself not installed. Please install by running following command. sudo apt-get install sendmail -y If issue is still there please check following link: Thanks!!!! Enjoy Programming :)

Odoo: Set/use context in email templates

Today we are going to discuss, how to use/change the context in dynamic/custom templates. Let's say we want to send some values to an email template other than normal object id, here is the code for that In controllers/ local_context = request.env.context.copy() In file local_context = self.env.context.copy() local_context.update({     'name': 'Shiv',     'place': 'Bangalore' }) template = request.env.ref('module_name.email_template_id')             template.with_context(local_context).send_mail(, force_send=True, raise_exception=True) In email template code you can access context as: <p>${ctx['name']}</p> <p>${ctx[' place ']}</p> That's it. To know how to create a custom email template, please check here: Thanks!!! Enjoy Programming!!! :)

Odoo: Upload binary images from backend using API

If you want to upload a binary image to Odoo using are the steps: controllers/ # -*- coding: utf-8 -*- from import _ from odoo import http from odoo.http import request from odoo.addons import web from time import strftime import functools import datetime import json import base64 import sys import copy from dateutil import parser import logging from operator import itemgetter logger = logging.getLogger(__name__) def serialize_exception(f):     @functools.wraps(f)     def wrap(*args, **kwargs):         try:             return f(*args, **kwargs)         except Exception, e:             logger.debug("An exception occured during an http request")             #se = _serialize_exception(e)             error = {                 'code': 200,                 'message': "Odoo Server Error",                 'data': str(e)             }             return json.dumps(error)     return wrap class Binary(web.c

Write web services using Odoo controllers

In Odoo you can write web-services for the outside world. Let's discuss how it can be done using controllers. Suppose I need a cross-domain API that will return data in JSON format. For that, we have to enable CORS and have to setup nginx reverse proxy . Example: API to send teachers data from Odoo: # -*- coding: utf-8 -*- from import _ from odoo import http from odoo.http import request import json import sys class odoo_public_data(http.Controller):     @http.route('/get/teachers', type='http', methods=['GET'], auth="public")     def get_teachers(self, **kwargs):         teacher_model = request.env['dps.teacher']         teacher_ids = teacher_model.sudo().search([])         teacher_list = {'status': 1, 'data': []}         try:             if teacher_ids:                 for teacher in teacher_ids:                     vals = {                         'id':,    

Nginx reverse proxy on odoo

Let's discuss how to set nginx reverse proxy in odoo Why we need revese proxy? Odoo runs on 8069 port by default and if you want to route it through other port, say 80 we can use nginx reverse proxy for that. It will also help to handle web services, if any, your odoo instance is providing to outside world. What to do? 1. Install nginx 2. Create virtual host for your website/odoo instance. Let's say you want to run it on Please create config file at location: /etc/nginx/sites-available/ CREATE symbolic link for this at /etc/nginx/sites-enabled/ Following is the code for ssl enabled config file upstream myodoo {     server; } server {         listen 443 default;         server_name;         access_log /var/log/nginx/oddo.access.log;         error_log /var/log/nginx/oddo.error.log;         if ($scheme = http) {                 return 301 https://myodoo.domai

Postgres/Django: could not load library

If you are getting an error like this after PostgreSQL update: ERROR:  could not load library "/usr/local/Cellar/postgresql/9.5.6/lib/": dlopen(/usr/local/Cellar/postgresql/9.5.6/lib/, 10): Library not loaded: /usr/local/lib/libCGAL.10.dylib   Referenced from: /usr/local/lib/libSFCGAL.1.dylib   Reason: image not found  or of library libspatialite Run following command brew reinstall sfcgal --build-from-source    brew reinstall libspatialite --build-from-source I hope it will fix your issue. Thanks!!!! Enjoy Programming!!! :)

Enable pep8 autoformat in Sublime Text

Steps to install pep8 autoformat package in Sublime Editor 1. Download Mercurial from and install it. 2. Go To Sublime Text -> Preferences -> Browse Packages -> Note down the location. 3. Open terminal and go to Sublime Packages location. 4. Get clone - hg clone 'Python PEP8 Autoformat' 5. Restart Sublime Text3 6. If pep8 max line length 80 not working - Go To Sublime Text -> Preferences -> Settings -> User - Add rules "rulers": [80] Thanks!!!! Enjoy Programming!!! :)

Odoo: Change currency for Web Shop

If you are facing any issue with currency changes for a webshop following steps mentioned in the post: It worked for me. Hopefully will work for you as well. Thanks!!!! Enjoy Programming :)