Odoo : SQL Query Tips

In this article we will show some useful tips that will help you work with SQL Queries in python/Odoo.

How to execute queries in Odoo 10 ?

you should use the self.env.cr to run a sql query

cr = self.env.cr
cr.execute("SELECT a, b, c FROM [your_table] WHERE [condition]")
cr.fetchall()

It’s highly recommended to use the double quotes ” ” instead of single quotes ‘ ‘

What’s the query can returns ?

cr.dictfetchall() : will give you all the matching records in the form of the list of dictionary containing key, value [{'': ''}, {'': ''}, ...].
cr.dictfetchone : works same as cr.dictfetchall() except it returns only a single record {'': ''}.
cr.fetchall() : will give you all the matching records in the form of the list of tuple [(''), (''), ...].
cr.fetchone() : works same way as cr.fetchall() except it returns only single record ('').

SQL Queries with variables

You can execute Queries with variables using %s like:

cr.execute("SELECT a, b, c FROM [your_table] AS a WHERE a.id = %s AND a.field = %s", (first_value, second_value))

Hope it was useful for you
Good luck !!

Install Odoo 9 on Ubuntu 14.04

Hello everyone

Thanks to a script writing by André Schenkels, you can install Odoo 9 on Ubuntu easily just by runing the script and following the steps.

NB: You can create/run the script from any place/directory you want, for example right under /opt/

Open up an Ubuntu terminal and #sudo cd to the directory where you’d like to keep and run the script. for /opt case, we will do :

#sudo cd /opt

Then we create the file odoo_install.sh

#sudo nano odoo_install.sh

Next fill the file with this content :

#!/bin/bash
################################################################################
# Script for Installation: ODOO 9.0 Community server on Ubuntu 14.04 LTS
# Author: André Schenkels, ICTSTUDIO 2015
#-------------------------------------------------------------------------------
#
# This script will install ODOO Server on
# clean Ubuntu 14.04 Server
#-------------------------------------------------------------------------------
# USAGE:
#
# odoo-install
#
# EXAMPLE:
# ./odoo-install
#
################################################################################

OE_USER="odoo"
OE_HOME="/opt/$OE_USER"
OE_HOME_EXT="/opt/$OE_USER/$OE_USER-server"

#Enter version for checkout "9.0" for version 9.0,"8.0" for version 8.0, "7.0 (version 7), "master" for trunk
OE_VERSION="9.0"

#set the superadmin password
OE_SUPERADMIN="superadminpassword"
OE_CONFIG="$OE_USER-server"

#--------------------------------------------------
# Update Server
#--------------------------------------------------
echo -e "\n---- Update Server ----"
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y locales

#--------------------------------------------------
# Install PostgreSQL Server
#--------------------------------------------------
sudo export LANGUAGE=en_US.UTF-8
sudo export LANG=en_US.UTF-8
sudo export LC_ALL=en_US.UTF-8
sudo locale-gen en_US.UTF-8
sudo dpkg-reconfigure locales

echo -e "\n---- Install PostgreSQL Server ----"
sudo apt-get install postgresql -y

echo -e "\n---- PostgreSQL $PG_VERSION Settings  ----"
sudo sed -i s/"#listen_addresses = 'localhost'"/"listen_addresses = '*'"/g /etc/postgresql/9.4/main/postgresql.conf

echo -e "\n---- Creating the ODOO PostgreSQL User  ----"
sudo su - postgres -c "createuser -s $OE_USER" 2> /dev/null || true

sudo service postgresql restart

#--------------------------------------------------
# System Settings
#--------------------------------------------------

echo -e "\n---- Create ODOO system user ----"
sudo adduser --system --quiet --shell=/bin/bash --home=$OE_HOME --gecos 'ODOO' --group $OE_USER

echo -e "\n---- Create Log directory ----"
sudo mkdir /var/log/$OE_USER
sudo chown $OE_USER:$OE_USER /var/log/$OE_USER

#--------------------------------------------------
# Install Basic Dependencies
#--------------------------------------------------
echo -e "\n---- Install tool packages ----"
sudo apt-get install wget git python-pip python-imaging python-setuptools python-dev libxslt-dev libxml2-dev libldap2-dev libsasl2-dev node-less postgresql-server-dev-all -y

echo -e "\n---- Install wkhtml and place on correct place for ODOO 8 ----"
sudo wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
sudo apt-get install -f -y
sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
sudo cp /usr/local/bin/wkhtmltopdf /usr/bin
sudo cp /usr/local/bin/wkhtmltoimage /usr/bin

#--------------------------------------------------
# Install ODOO
#--------------------------------------------------

echo -e "\n==== Download ODOO Server ===="
cd $OE_HOME
sudo su $OE_USER -c "git clone --depth 1 --single-branch --branch $OE_VERSION https://www.github.com/odoo/odoo $OE_HOME_EXT/"
cd -

echo -e "\n---- Create custom module directory ----"
sudo su $OE_USER -c "mkdir $OE_HOME/custom"
sudo su $OE_USER -c "mkdir $OE_HOME/custom/addons"

echo -e "\n---- Setting permissions on home folder ----"
sudo chown -R $OE_USER:$OE_USER $OE_HOME/*

#--------------------------------------------------
# Install Dependencies
#--------------------------------------------------
echo -e "\n---- Install tool packages ----"
sudo pip install -r $OE_HOME_EXT/requirements.txt

#echo -e "\n---- Install python packages ----"
sudo easy_install pyPdf vatnumber pydot psycogreen suds ofxparse


#--------------------------------------------------
# Configure ODOO
#--------------------------------------------------
echo -e "* Create server config file"
sudo cp $OE_HOME_EXT/debian/openerp-server.conf /etc/$OE_CONFIG.conf
sudo chown $OE_USER:$OE_USER /etc/$OE_CONFIG.conf
sudo chmod 640 /etc/$OE_CONFIG.conf

echo -e "* Change server config file"
echo -e "** Remove unwanted lines"
sudo sed -i "/db_user/d" /etc/$OE_CONFIG.conf
sudo sed -i "/admin_passwd/d" /etc/$OE_CONFIG.conf
sudo sed -i "/addons_path/d" /etc/$OE_CONFIG.conf

echo -e "** Add correct lines"
sudo su root -c "echo 'db_user = $OE_USER' >> /etc/$OE_CONFIG.conf"
sudo su root -c "echo 'admin_passwd = $OE_SUPERADMIN' >> /etc/$OE_CONFIG.conf"
sudo su root -c "echo 'logfile = /var/log/$OE_USER/$OE_CONFIG$1.log' >> /etc/$OE_CONFIG.conf"
sudo su root -c "echo 'addons_path=$OE_HOME_EXT/addons,$OE_HOME/custom/addons' >> /etc/$OE_CONFIG.conf"

echo -e "* Create startup file"
sudo su root -c "echo '#!/bin/sh' >> $OE_HOME_EXT/start.sh"
sudo su root -c "echo 'sudo -u $OE_USER $OE_HOME_EXT/openerp-server --config=/etc/$OE_CONFIG.conf' >> $OE_HOME_EXT/start.sh"
sudo chmod 755 $OE_HOME_EXT/start.sh

#--------------------------------------------------
# Adding ODOO as a deamon (initscript)
#--------------------------------------------------

echo -e "* Create init file"
echo '#!/bin/sh' >> ~/$OE_CONFIG
echo '### BEGIN INIT INFO' >> ~/$OE_CONFIG
echo "# Provides: $OE_CONFIG" >> ~/$OE_CONFIG
echo '# Required-Start: $remote_fs $syslog' >> ~/$OE_CONFIG
echo '# Required-Stop: $remote_fs $syslog' >> ~/$OE_CONFIG
echo '# Should-Start: $network' >> ~/$OE_CONFIG
echo '# Should-Stop: $network' >> ~/$OE_CONFIG
echo '# Default-Start: 2 3 4 5' >> ~/$OE_CONFIG
echo '# Default-Stop: 0 1 6' >> ~/$OE_CONFIG
echo '# Short-Description: Enterprise Business Applications' >> ~/$OE_CONFIG
echo '# Description: ODOO Business Applications' >> ~/$OE_CONFIG
echo '### END INIT INFO' >> ~/$OE_CONFIG
echo 'PATH=/bin:/sbin:/usr/bin' >> ~/$OE_CONFIG
echo "DAEMON=$OE_HOME_EXT/openerp-server" >> ~/$OE_CONFIG
echo "NAME=$OE_CONFIG" >> ~/$OE_CONFIG
echo "DESC=$OE_CONFIG" >> ~/$OE_CONFIG
echo '' >> ~/$OE_CONFIG
echo '# Specify the user name (Default: odoo).' >> ~/$OE_CONFIG
echo "USER=$OE_USER" >> ~/$OE_CONFIG
echo '' >> ~/$OE_CONFIG
echo '# Specify an alternate config file (Default: /etc/openerp-server.conf).' >> ~/$OE_CONFIG
echo "CONFIGFILE=\"/etc/$OE_CONFIG.conf\"" >> ~/$OE_CONFIG
echo '' >> ~/$OE_CONFIG
echo '# pidfile' >> ~/$OE_CONFIG
echo 'PIDFILE=/var/run/$NAME.pid' >> ~/$OE_CONFIG
echo '' >> ~/$OE_CONFIG
echo '# Additional options that are passed to the Daemon.' >> ~/$OE_CONFIG
echo 'DAEMON_OPTS="-c $CONFIGFILE"' >> ~/$OE_CONFIG
echo '[ -x $DAEMON ] || exit 0' >> ~/$OE_CONFIG
echo '[ -f $CONFIGFILE ] || exit 0' >> ~/$OE_CONFIG
echo 'checkpid() {' >> ~/$OE_CONFIG
echo '[ -f $PIDFILE ] || return 1' >> ~/$OE_CONFIG
echo 'pid=`cat $PIDFILE`' >> ~/$OE_CONFIG
echo '[ -d /proc/$pid ] && return 0' >> ~/$OE_CONFIG
echo 'return 1' >> ~/$OE_CONFIG
echo '}' >> ~/$OE_CONFIG
echo '' >> ~/$OE_CONFIG
echo 'case "${1}" in' >> ~/$OE_CONFIG
echo 'start)' >> ~/$OE_CONFIG
echo 'echo -n "Starting ${DESC}: "' >> ~/$OE_CONFIG
echo 'start-stop-daemon --start --quiet --pidfile ${PIDFILE} \' >> ~/$OE_CONFIG
echo '--chuid ${USER} --background --make-pidfile \' >> ~/$OE_CONFIG
echo '--exec ${DAEMON} -- ${DAEMON_OPTS}' >> ~/$OE_CONFIG
echo 'echo "${NAME}."' >> ~/$OE_CONFIG
echo ';;' >> ~/$OE_CONFIG
echo 'stop)' >> ~/$OE_CONFIG
echo 'echo -n "Stopping ${DESC}: "' >> ~/$OE_CONFIG
echo 'start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \' >> ~/$OE_CONFIG
echo '--oknodo' >> ~/$OE_CONFIG
echo 'echo "${NAME}."' >> ~/$OE_CONFIG
echo ';;' >> ~/$OE_CONFIG
echo '' >> ~/$OE_CONFIG
echo 'restart|force-reload)' >> ~/$OE_CONFIG
echo 'echo -n "Restarting ${DESC}: "' >> ~/$OE_CONFIG
echo 'start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \' >> ~/$OE_CONFIG
echo '--oknodo' >> ~/$OE_CONFIG
echo 'sleep 1' >> ~/$OE_CONFIG
echo 'start-stop-daemon --start --quiet --pidfile ${PIDFILE} \' >> ~/$OE_CONFIG
echo '--chuid ${USER} --background --make-pidfile \' >> ~/$OE_CONFIG
echo '--exec ${DAEMON} -- ${DAEMON_OPTS}' >> ~/$OE_CONFIG
echo 'echo "${NAME}."' >> ~/$OE_CONFIG
echo ';;' >> ~/$OE_CONFIG
echo '*)' >> ~/$OE_CONFIG
echo 'N=/etc/init.d/${NAME}' >> ~/$OE_CONFIG
echo 'echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2' >> ~/$OE_CONFIG
echo 'exit 1' >> ~/$OE_CONFIG
echo ';;' >> ~/$OE_CONFIG
echo '' >> ~/$OE_CONFIG
echo 'esac' >> ~/$OE_CONFIG
echo 'exit 0' >> ~/$OE_CONFIG

echo -e "* Security Init File"
sudo mv ~/$OE_CONFIG /etc/init.d/$OE_CONFIG
sudo chmod 755 /etc/init.d/$OE_CONFIG
sudo chown root: /etc/init.d/$OE_CONFIG

echo -e "* Start ODOO on Startup"
sudo update-rc.d $OE_CONFIG defaults

sudo service $OE_CONFIG start
echo "Done! The ODOO server can be started with: service $OE_CONFIG start"


When running this script, you will be asked to configure somethings.

For safety, make sure to change the Odoo super administrator password.

The next step is to make this file executable, to be able to execute it and everything will be installed automatically. To do this use :

#sudo chmod +x odoo_install.sh

And now you should execute the script by using:

./odoo_install.sh


Odoo will be installed automatically!

Important : Give this a while since it will need to download all dependencies, download Odoo and install it.

Browse to http://localhost:8069/ and you’ll see this screen:

Odoo 9

Congratulation ! you have finished 🙂

Liclipse (Eclipse) Installation on Ubuntu

Hello everyone

We will show you in this Tutorial how to Install LiClipse, the most popular Eclipse IDE.

LiClipse is the lightweight version of the most popular Eclipse IDE and it includes PyDev and Egit by default which will help python/django developers

The problem is that we cannot find this version in Ubuntu Software Center but we can install it easily if we follow the steps below

You can also watch this video that succinctly summarize the steps of this tutorial

Dowload LiClipse

Download latest version of LiClipse from the official website, for my case I choose LiClipse 3.0.1 for Linux (64 bits).

Install LiClipse

Go to your Download folder and extract Liclipse file:

#sudo tar xvzf liclipse_3.0.1_linux.gtk.x86.tar.gz

Move the extracted folder to /opt folder using the command

#sudo mv liclipse /opt

Now create a shortcut of LiClipse in the applications folder:

#sudo ln -s /opt/liclipse/LiClipse /usr/bin/liclipse

We have now installed LiCipse in our system. But we need to create a launcher for easier access. Paste the following command in terminal to create the launcher

#sudo nano /usr/share/applications/liclipse.desktop

Paste the following content in the file. NB: in my case I used the version 3.0.1, you should use the version you are working with.

[Desktop Entry]
Version=3.0.1
Name=LiClipse
Comment=IDE for Python/Django developers
Exec=env UBUNTU_MENUPROXY=0 /opt/liclipse/LiClipse
Icon=/opt/liclipse/icon.xpm
Terminal=false
Type=Application
Categories=Utility;Application;Development;IDE

Rest of the content should not be changed. Save this file :

CTRL+O : To save the changes.
CTRL+X : To exit

Now have installed LiClipse successfully. You can now launch LiClipse from the Ubuntu dash menu

Liclipse

It can be locked in the launcher

lock to Launcher

Congratulations !! 🙂

Debug Odoo 9 & 8 using Eclipse IDE

Hello everyone
We will show you in this tutorial, how to debug Odoo V9 / V8 from Eclipse IDE ( step by step ). We will be working on Ubuntu  14.04 for stability reasons, but you can use any other version.

Update the system and install necessary packages for Odoo :

First thing to do is to update your system, which let you get the newest versions of packages and their dependencies existing on your machine.

#sudo apt-get update
#sudo apt-get upgrade

aptget upgrade

aptget update

Then we should install the Prerequisites packages for Odoo :

#sudo apt-get install python-cups python-dateutil python-decorator python-docutils python-feedparser python-gdata python-geoip python-gevent python-imaging python-jinja2 python-ldap python-libxslt1 python-lxml python-mako python-mock python-openid python-passlib python-psutil python-psycopg2 python-pybabel python-pychart python-pydot python-pyparsing python-pypdf python-reportlab python-requests python-simplejson python-tz python-unicodecsv python-unittest2 python-vatnumber python-vobject python-werkzeug python-xlwt python-yaml wkhtmltopdf

To install wkhtmltopdf (a package that let you print reports in Odoo 8 & 9), you should run this commands :

#sudo wget http://download.gna.org/wkhtmltopdf/0.12/0.12.1/wkhtmltox-0.12.1_linux-trusty-amd64.deb
#sudo dpkg -i wkhtmltox-0.12.1_linux-trusty-amd64.deb
#sudo cp /usr/local/bin/wkhtmltopdf /usr/bin
#sudo cp /usr/local/bin/wkhtmltoimage /usr/bin

For Ubuntu 14.04 users, you should install “python-passlib” package, to avoid “error 500 Internal Server” Error :

#sudo apt-get install python-passlib

Setup Eclipse :

Very Important : For me I used LiClipse is a very featured Eclipse (Provides a number of enhancements) for Linux with PyDev (Python) support, To install/run it : (A big thanks to arulmr)

LiClipse is the lightweight version of the most popular Eclipse IDE and it includes PyDev and Egit by default which will help python/django developers

To install it follow my article Liclipse (Eclipse) Installation on Ubuntu

Once LiClipse installation is Done. We need to setup the GIT repository in order to download Odoo Source code. To do so, Click Windows -> Open Perspective -> Other

Eclipse 7

A Window will Open ask you to select a perspective. Click Git

Eclipse 8

 

In Next Windows Select “Clone a Git Repository

Eclipse 9

In th URI field type “https://github.com/odoo/odoo.git“ | In the Host field type “github.com“ | In the Repository path type “/odoo/odoo.git“. Click Next

Eclipse 10

You will be presented which Branches you want to clone, You can see all of the versions of Odoo. Select only 8.0 or 9.0 or which ever version you want.

In next windows Select the Directory where you want to clone the Source and Click Finish (We recommend Eclipse workspace  : /home/workspace/odoo). The Cloning Process will begin. This Process may Take a while depending on the speed of your Internet.

Now we need to Setup eclipse’s Perspective to work with Python. To do so click Window -> Open Perspective -> Other and from the Window Select Pydev and Click OK.

Eclipse 11

To setup the Interpreter for python, Click Windows -> Preference and In the Left Pane, Select Pydev and the Interpreter Python and then Click Auto-Config on the Right side, The System will automatically detect Your python version. Click OK to Close this Windows once eclipse is done setting up Environment.

Eclipse 13

To dispaly your code in Eclipse Click File -> Pydev Project.

In project name type odoo the name you like. uncheck Use Default and click Browse and select the source directory (The directory that you specified earlier, where cloning the source. As an example we used /home/workspace/odoo ) and click Finish.

We Finished with setting up Eclipse for Odoo use.

Setting up Odoo Configuration File

You can create your own config file for Odoo like this one :

#sudo nano /etc/openerp-server.conf

Copy this content in the file :

[options]
; This is the password that allows database operations:
; admin_passwd = admin
db_host = False
db_port = False
db_user = odoo
db_password = False
addons_path = /home/workspace/odoo/addons

( In addons_path you should use your own addons directory )

ctrl + o to save the file and ctrl + x to exit nano

To take this file in consideration go to the “Running the Code of Odoo from Eclipse” step.

Configure PostgreSQL server

Now we need to create a role in PostgreSql for the user that will be Running Eclipse.

Usually we use our current user

#sudo su postgres
#psql -t template1
#template1=# create user usmanbek with superuser password 'postgres';
#template1=# \q

Running the Code of Odoo from Eclipse

To take the openerp-server.conf file in consideration, you should go to Eclipse openerp-server -> Run As -> Run Configuration.

config 1

In the argument tab click on Variables.

config 2

A select variable box appears. Click on Edit Variables.

config 3

A preferences box appears. Click on New.

config4

A new box appears. Put whatever you want in “Name” field, Ex: Config file | In the “Value” field put : –config=/etc/openerp-server.conf

config5

Choose the variable you have just created (for my case it’s Config file) and Click Ok

config 6

Finally you click on Run 🙂

Now to access the Webclient, type localhost:8069. You will see this page.

odoo running

Congratulation, now you can develop Odoo modules easily