Entradas

Nuevo proyecto de ZOOOK esale

Instalación de Django y ZOOOK

ZOOOK es una aplicación de Django, pero no es compatible con la versión 1.5, por lo que lo primero que habrá que hacer es instalar la versión 1.4. Se puede instalar ejecutando:

$ sudo pip install django==1.4

En el manual anterior se instalaban todas las dependencias de forma manual, en este se va a utilizar el instalador del proyecto para instalar todas las dependencias. Para descargar e instalar el proyecto:

$ bzr branch lp:zoook-esale/6.1 django-zoook
$ cd django-zoook
$ sudo python setup.py install

Para poder ejecutar ZOOOK será necesario crear la base de datos con su acceso y configurarlo, para que Django cree los datos necesarios.

Se crea el usuario con acceso a la base de datos:

$ sudo -u postgres createuser --createdb --no-superuser --no-createrole --pwprompt zoook

Se crea la base de datos para este usuario:

$ sudo -u postgres psql -d postgres
postgres=# CREATE DATABASE dj_zoook OWNER zoook;
postgres=# q

Por último habrá que configurar ZOOOK, para esto hay que editar el fichero config.py.

Indicar la base de datos:

DATABASES = { 
 'default': { 
 'ENGINE': 'django.db.backends.postgresql_psycopg2', 
 'NAME': 'dj_zoook', 
 'USER': 'zoook', 
 'PASSWORD': 'zoook', 
 'HOST': '192.168.0.122', 
 'PORT': '5432', 
 } 
}

La configuración de OpenERP:

OERP_CONF = { 
 'username':'admin', 
 'password':'admin', 
 'dbname':'openerp', 
 'protocol':'xmlrpc', #xmlrpc 
 'uri':'http://192.168.0.122', #xmlrpc 
 'port':8069, #xmlrpc 
}

En el fichero de configuración se indica la posibilidad de utilizar pyro, pero esta opción no está disponible en OpenERP 6.1

Se puede configurar los idiomas para la web:

LANGUAGE_CODE = 'es' 
LANGUAGES = ( 
 ('en', ugettext('English')), 
 ('es', ugettext('Spanish')), 
) 
DEFAULT_LANGUAGE = 1 
LOCALE_URI = True 
LOCALEURL_USE_ACCEPT_LANGUAGE = True 
LOCALES = { 
 'en':'en_US', 
 'es':'es_ES', 
}

En la configuración se indica también la o las tiendas de OpenERP a las que tiene acceso la web, se indica el identificador interno.

OERP_SALE = 1 #Sale Shop. All price, orders, ... use this Sale Shop ID. 
OERP_SALES = [1] #Sale Shops. Orders by Sale Shops

Por último se puede indicar la configuración para el envío de correos

EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = 'myemailuserXXX' 
EMAIL_HOST_PASSWORD = 'mypasswordXXX' 
EMAIL_PORT = 587

Antes de ejecutar por primera vez la aplicación será necesario crear el fichero de log y configurarlo.

Se puede crear por ejemplo, dentro de la carpeta django-zoook principal del proyecto, un directorio para log con un fichero zoook.log

$ mkdir log
$ touch log/zoook.log

En el fichero logconfig.py se indicará donde se encuentra este fichero en esta linea

LOGFILE = os.path.join(zoook_root, 'log', 'zoook.log') #path sync log

Una vez está todo configurado se pueden crear las tablas en la base de datos necesarias para ejecutar la web.

$ python manage.py syncdb

La primera vez que se ejecute syncdb creará un usuario de administración para Django, habrá que indicar el nombre de usuario y su contraseña.

Antes de arrancar la web habrá que configurar la tienda con:

$ ./configuration.py

Por ultimo se arranca la web con:

python manage.py runserver

En caso de error puede ser debido a la falta de algún módulo de django, se puede comentar en settings.py o instalarlo con pip.

Instalación de ZOOOK en OpenERP

Se instalará ZOOOK sobre OpenERP 6.1.

Para facilitar la instalación se han creado nuevos repositorios, uno con el propio ZOOOK y otro con los addons extra necesarios.

Para descargar los repositorios:

$ bzr branch lp:~zoook-community/zoook-esale/zoook-6.1 
$ bzr branch lp:~zoook-community/zoook-esale/zoook-extra-addons-6.1

La instalación de ZOOOK en OpenERP será igual que cualquier otro módulo, añadiendo los módulos descargados al addons_path, y desde el propio OpenERP actualizando la lista de módulos disponibles e instalando el módulo zoook. Importante al añadir en el archivo de configuración el extra-addons de zoook hacerlo antes del extra-addons genérico, con esto se consigue cargar los módulos de zoook antes.

Configuración de ZOOOK en OpenERP

Una vez instalado el módulo en Ventas/Configuración/Ventas/Tienda podemos configurar los parámetros de la tienda que se quiera sincronizar con ZOOOK.

zoook-OpenERP-01-tienda

Al marcar la opción OpenERP e-sale se podrán configura el resto de parámetros.

La conexión SSH será necesaria para sincronizar ZOOOK

En la solapa de acciones están los procesos para actualizar zook, exportar categorías, productos, imágenes y configuración global.

Para exportar el árbol de categorías, se indicará la categoría raíz en la solapa configuración y habrá que marcar como exportable cada categoría.

Installing Zoook on Ubuntu – Part IV: Zoook – Parametrize and connect with OpenERP

1. Install OpenERP dependencies

You’ll have to install the following modules in OpenERP:

2. Connecting Zoook to the Database

At first create a PostgreSQL database for Zoook. In a development environment you can use the user openerp. This way you don’t have to create a new one. In production its recommended to make sure that every user has an exclusive access to the database.

$ sudo -u postgres psql
postgres=# CREATE DATABASE dj_zoook OWNER openerp;
postgres=# l

The last command shows the existent databases. If everything worked out fine it should show someting like the following:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/list_databases.png

Verify the correct creation of the database.

3. Parametrisation of Zoook

3.1. ~/django-projects/zoook-app/config.py

Edit the file and adjust the parameters of the connection to OpenERP. You’ll have to configure all passages. The following ones are especially important for the interconnection with the OpenERP server and error detection:

  • LANGUAGESDefines the languages of your web shop. They have to be the same as in OpenERP.
    #Edit your languages
    LANGUAGE_CODE = 'es'
    LANGUAGES = (
        ('es', ugettext('Spanish')),
        ('en', ugettext('English')),
    )
    DEFAULT_LANGUAGE = 1
    LOCALE_URI = True
  • OERP_SALEIndicates which OpenERP shop should be used in Zoook (just for the case that you have several shops).
    OERP_SALE = 1 #Sale Shop. All price, orders, ... use this Sale Shop ID.
  • LOGSDefines the path to Zoooks logging files.
    LOGFILE = '/home/roberto/django-projects/zoook-app/log/sync.log' #path sync log
    LOGSALE = '/home/roberto/django-projects/zoook-app/log/sale.log' #path sale log
  • DATABASESDefines where and how Zoook finds its database.
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
            'NAME': 'dj_zoook',     # Or path to database file if using sqlite3.
            'USER': 'openerp',      # Not used with sqlite3.
            'PASSWORD': 'openerp',  # Not used with sqlite3.
            'HOST': '192.168.0.122',    # Set to empty string for 192.168.0.122. Not used with sqlite3.
            'PORT': '5432',         # Set to empty string for default. Not used with sqlite3.
        }
    }
  • OERP_CONFDefines the connection to the XML-RPC service of OpenERP.
    OERP_CONF = {
        'username':'admin',
        'password':'openerp',
        'dbname':'openerp',
        'protocol':'xmlrpc', #xmlrpc
        'uri':'http://192.168.0.122', #xmlrpc
        'port':8069, #xmlrpc
    # 'protocol':'pyro', #pyro
    # 'uri':'192.168.0.122', #pyro
    # 'port':8071, #pyro
    }

3.2. ~/django-projects/zoook-app/sync/config_path.py

Contains the routes to Zoook so that the SSH synchronisation process can find the needed files.

djpath = '/home/roberto/django-projects/zoook-app'

3.3. ~/django-projects/zoook-app/settings.py

Edit this file to assign a new unique password to Zoook. I’d recommend to use a password generator such as safepasswd.com.

# Make this unique, and don't share it with anybody.
SECRET_KEY = 'YOUR_PASSWORD_GOES_HERE'

3.4. Create Zoooks database tables

  • Generate the data base structure
    $ cd ~/django-projects/zoook-app
    $ python manage.py syncdb

    The script will ask if you want to create a new super-user. Affirm and pass it the needed data for the account you’ll later want to administer Zoook with.

    http://www.domatix.com/http://www.domatix.com/wp-content/uploads/syncdb_superuser3.png

    Create a superuser for Django.

3.5. ~/django-projects/zoook-app/configuration.py

Execute the configuration assistant and give it further information needed by Django.

  • Execute configuration.py
    $ cd ~/django-projects/zoook-app
    $ ./configuration.py

    The output should look like this:

    http://www.domatix.com/http://www.domatix.com/wp-content/uploads/asistente_configuration.png

    Configuration of Django.

3.6. Adjust file permissions

  • Change the permissions in the sync directory
    $ cd ~/django-projects/zoook-app/
    $ sudo chown -R roberto:www-data *
    $ sudo chmod 775 -R sync

3.7. Testing Zoook

  • Run the server
    $ cd ~/django-projects/zoook-app/
    $ python manage.py runserver

    this should show something like:

    http://www.domatix.com/http://www.domatix.com/wp-content/uploads/server_django_post.png

    Successfully initiated Django server.

    Open your browser and open up the direction of the server (http://127.0.0.1:8000/). Zoook should load the first time and you should end up with a site like this:

    http://www.domatix.com/http://www.domatix.com/wp-content/uploads/server_zoook_test.png

    Start page of Zoook.

    Access the administration area with the super user credentials created beforehand:

    http://www.domatix.com/http://www.domatix.com/wp-content/uploads/zoook_administration.png

    Zooks administration page.

4. Connecting Zoook with OpenERP

A SSH server is required on the machine where Zoook is installed:

$ sudo apt-get install openssh-server

The next step is to configure poweremail to create a template for orders. This article won’t cover the further details of this step. You can get that information here.

Now, open up OpenERP and configure the shop for the connection with Zoook. Open

Sales => Configuration => Sales => Shop

Choose the shop you’re going to use with Zoook, edit it and check the box next to OpenERP e-Sale in the upper right. As an outcome of this should appear a new configuration tab for Zoook.

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/openerp_config_tienda001.png

Mark a shop fort exportation.

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/openerp_config_tienda002.png

Mark all products for exportation.

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/openerp_config_tienda007.png

Configure the SSH connection.

When doing the test of the connection it should pop up a message, saying that it is configured properly.

5. Export test products

Now, we’ll only have to add some test categories and products. The only thing noteworthy at this point is that in order to export a product to the web you have to check “Export to online shop?”. Once this is checked you’ll see a new tab with the name “e-Sale” where you can parametrise the options of the product of the web shop.

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/openerp_config_product.png

Configuring e-Sale options on a product.

After the creation of products you’ll have to go back to the configuration of the shop to export products, categories, images etc. After doing a refresh of the page of Zoook you should be able to see the introduced data:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/zoook_category_view.png

Successfully exported category in Zoook.

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/zoook_product_view.png

Successfully exported product in Zoook.

Installing Zoook on Ubuntu – Part III: Zoook installation

1 Download Zoook from the repositories

The repository of the Django application of Zoook isn’t available any more on Launchpad. But you can fetch a zipped copy here.

For the rest of this article I assume that you unpacked the content of the archive to /home/roberto/django-projects/zoook-app.

2 Install dependencies

Zoook depends on the following packages:

Install the python-setuptools package first in order to make the installation of these dependencies easier:

$ sudo apt-get install python-setuptools

The next step is to create a folder, where you want to install all further third party dependencies of Zoook. This will later on make updates of the packages via git, mercurial, etc. much easier. In this tutorial we are going to use ~/django-projects/zoook-external for this purpose:

$ cd ~/django-projects
$ mkdir zoook-external

2.1 OOOP (Open Object On Python)

Clone and install the fork of Zikzak Media:

$ cd ~/django-projects/zoook-external
$ git clone https://github.com/zikzakmedia/ooop.git
$ cd ooop
$ sudo python setup.py install

2.2 Pyro3 (Python Remote Objects)

Check their PyPI project page for the latest version – that is 3.15 as of this writing –, download, unpack and install it:

$ cd ~/django-projects/zoook-external
$ wget pypi.python.org/packages/source/P/Pyro/Pyro-3.15.tar.gz
$ tar xvzf Pyro-3.15.tar.gz
$ cd Pyro-3.15
$ sudo python setup.py install

2.3 Paramiko

Check their website for the latest version – that is 1.7.7.1 as of this writing –, download, unpack and install it:

$ cd ~/django-projects/zoook-external
$ wget http://www.lag.net/paramiko/download/paramiko-1.7.7.1.tar.gz
$ tar xvzf paramiko-1.7.7.1.tar.gz
$ cd paramiko-1.7.7.1
$ sudo python setup.py install

2.4 Recaptcha Client

Check their PyPI project page for the latest version – that is 1.0.6 as of this writing –, download, unpack and install it:

$ cd ~/django-projects/zoook-external
$ wget http://pypi.python.org/packages/source/r/recaptcha-client/recaptcha-client-1.0.6.tar.gz
$ tar xvzf recaptcha-client-1.0.6.tar.gz
$ cd recaptcha-client-1.0.6
$ sudo python setup.py install

2.5 inplaceeditform

Clone and install the fork of Zikzak Media:

$ cd ~/django-projects/zoook-external
$ git clone https://github.com/zikzakmedia/django-inplaceeditform.git
$ cd django-inplaceeditform
$ sudo python setup.py install

2.6 django-localurl

In the case that there is no Mercurial installed:

$ sudo apt-get install mercurial

This done, clone the oficial repository of django-localurl and install it:

$ cd ~/django-projects/zoook-external
$ hg clone https://bitbucket.org/carljm/django-localeurl
$ cd django-localeurl/
$ sudo python setup.py install

2.7 django-transmeta

In case that you don’t have SVN installed:

$ sudo apt-get install svn

That finished go ahead to the installation of django-transmeta:

$ cd ~/django-projects/zoook-external
$ svn checkout http://django-transmeta.googlecode.com/svn/trunk/ django-transmeta
$ cd django-transmeta
$ sudo python setup.py install

2.8 django-maintenancemode

Clone and install Zikzak Media’s fork of django-maintanencemode:

$ cd ~/django-projects/zoook-external
$ git clone https://github.com/zikzakmedia/django-maintenancemode.git
$ cd django-maintenancemode
$ sudo python setup.py install

2.9 Correct imports

As a default Zoook’s module do absolute imports with a zoook. prefix. You’ll have to convert these absolute imports to relative ones. That is, to eliminate this ‘zoook’ prefix. Modify the following files as indicated.

2.9.1 /zoook-app/settings.py

Change this line

ROOT_URLCONF = 'zoook.urls'

to

ROOT_URLCONF = 'urls'

2.9.2 /zoook-app/tools/cms/templatetags/imageslider.py

Change this line

from zoook.tools.cms.models import ImageSlider, ImageSliderItem

to

from tools.cms.models import ImageSlider, ImageSliderItem

2.9.3 /zoook-app/tools/cms/templatetags/menubuilder.py

Change this line

from zoook.tools.cms.models import Menu, MenuItem

to

from tools.cms.models import Menu, MenuItem

2.9.4 /zoook-app/tools/cms/templatetags/modules.py

Change this line

from zoook.tools.cms.models import Modules

to

from tools.cms.models import Modules

The next and final article in this series will be dedicated to the interconnection of Zoook and OpenERP.

Installing Zoook on Ubuntu – Part II: Python and Django

1 Install Python

The default Python interpreter on Ubuntu 11.10 is 2.7.2. To verify that this is the version on your system execute:

$ python

This should return something like the following:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/python_version.png

Find out the version of your Python installation.

The message indicates that the version 2.7.2 is installed.

To exit the Python interpreter execute a

>>> quit()

In the rare case that there is no Python on your system, install it via

$ sudo apt-get install python

2 Install Django

Install all dependencies needed by Django:

$ sudo apt-get install python-dev python-psycopg2

You can install Django in three different ways:

  1. via the package management system of your distribution,
  2. fetching the latest stable version from the website, or
  3. download the development version from their repositories.

2.1 Installation via the package management system

The installation via the package management system is as simple as

$ sudo apt-get install python-django

2.2 Installing the last stable version from the website

Surf to the download section of the Django site and check for the latest stable version. That was 1.3.1 as of this writing (8th of February 2012).

$ cd ~
$ tar xvzf Django-1.3.1.tar.gz
$ mv Django-1.3.1 django-src

This way you’ll find the source code in the directory ~/django-src. The next step is to pass this information to Python. Locate the site-packages of your Python installation:

$ python -c "from distutils.sysconfig import get_python_lib; 
 print get_python_lib()"

This should return something like the following:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/site-packages.png

Locate the site-packages of your Python installation.

which indicates that your site-package directory is /usr/lib/python2.7/dist-packages. In this directory you’ll have to add the route to the Django sources:

$ echo '/home/roberto/django-src' | sudo tee -a 
 /usr/lib/python2.7/dist-packages/django.pth

This creates the file /usr/lib/python2.7/dist-packages/django.pth with the path to your Django installation.

To make a live a bit more comfortable, create a symbolic link to django-admin.py:

$ sudo ln -s /home/roberto/django-src/django/bin/django-admin.py 
 /usr/local/bin

This way you can use django-admin.py in every place of the file system instead of executing the script by its absolute path ~/django-src/django/bin/django-admin.py.

3 Verify the installation

Check that Python can find the Django modules:

$ python
>>> import django
>>> print django.get_version()

This should return something like:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/python-django-verification.png

Check that Python finds Django.

This indicates that Python detected Django in its 1.3.1 version.

3.1 Create a Django test project

We are going to create a Django test page in order to verify that everything is working fine. At first create a new directory for this:

$ mkdir ~/django-projects
$ cd ~/django-projects

In this case the directory is located in the home directory of the user and has the name django-projects. Now, create a test project in this category:

$ django-admin.py startproject testdjango

Change to the directory of the project and start the Django server:

$ cd testdjango
$ python manage.py runserver

This should return something like:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/testdjango_launched.png

Successfully started Django server.

The server started up correctly and is waiting for connections on port 8000 (http://127.0.0.1:8000/). When navigating your browser to this direction you should see a site like this:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/django-testproject_ok.png

Djangos start page.

Now, we could create a database in PostgreSQL and verify the connection with the project. But, given the aim of this article (install Zoook) we’re going into the details of the database access when configuring Zoook.

Installing Zoook on Ubuntu – Part I: Apache and PostgreSQL

Whar are we going to install?

  • Apache 2
  • PostgreSQL 9.11
  • pgAdmin3 1.14.0
  • Python 2.7
  • the mod_wsgi module for Apache 2
  • Zoook.

In this series of articles we are going into the details of how to install Zoook on Ubuntu 11.00.

The aim of these articles is to document the steps to implement a Zoook in a development as well as in an actual production environment and to give the user the solutions to possible problems that can come up during the installation and configuration process.

The whole process it is going to be split up into four parts with this one being the first explaining how to set up Apache 2 and PostgreSQL.

1 Install Apache 2 (production environment)

Django incorporates a server for development environments that is recommended to use as it simplifies the debugging process. So this step is not needed in development environments.

To install Apache 2 open up a terminal and execute:

$ sudo apt-get install apache2

2 Install PostgreSQL

Python as well as Apache support various database back ends. But, this article is centred on the usage of PostgreSQL.

To install PostgreSQL execute:

$ sudo apt-get install postgresql

3 Install pgAdmin3

The next step is to install pgAdmin3. A graphical interface to PostgreSQL that makes the management of the PostgreSQL server easier. Actually the last available version is 1.14.0. But, in the repository of Ubuntu is only te version 1.12.3-1.

3.1 Installation from the repositories

To install the version 1.12.3-1 from the repositories:

$ sudo apt-get install pgadmin3

3.2 Compilation and Installation of the source code

If you prefer to install the last version, you have to fetch the source code and compile it. Download the source and unpack it:

$ tar xvzf pgadmin3-1.14.0.tar.gz

Change to the directory where you unpacked it:

$ cd pgadmin3-1.14.0

Before you can install it make sure that all the dependencies are satisfied:

$ sudo apt-get install build-essential libwxgtk2.8-dev libxml2-dev 
       libxslt1-dev  libgtk2.0-dev

After this execute

$ ./configure

The next step would be to execute make. But, if you do that now it’ll raise the error:

./db/keywords.c:33:34: error: parser/kwlist.h: No such file or directory

This error is produced because there is a bug in the PostgreSQL constructor that misses to install the necessary file in the appropriate directory. To solve this you have to download this file and create the directory /usr/include/postgresql/parser:

$ sudo mkdir -p /usr/include/postgresql/parser

Move the downloaded archive to this directory:

$ sudo mv kwlist.h /usr/include/postgresql/parser

Now, you can execute

$ make

and afterwards

$ make install

The installation should have succeed correctly.

Additionally create a symbolic link to the pgadmin3 executable:

$ sudo ln -s /usr/local/pgadmin3/bin/pgadmin3 /usr/local/bin/pgadmin3

This way you can execute it via:

$ pgadmin3

instead of:

$ /usr/local/bin/pgadmin3

4 Configure PostgreSQL user

PostgreSQL has the default setting ident sameuser for local connections. This permits a system user to access the same account on the SQL server. For this reason you have to create a new user on the SQL server with the same name under which the server is running.

$ sudo -u postgres createuser --superuser YOUR_USER_NAME
    $ sudo -u postgres psql
    postgres=# password YOUR_USER_NAME

Re-initiate the Apache server after all these changes:

$ sudo /etc/init.d/apache2 restart

Now the system is set up to continue with the following steps to install Python, Django, mod_wsgi and Zoook.

Instalar Zoook en Ubuntu – Parte IV: Zoook – Parametrización y conexión OpenERP

1.- Instalar dependencias OpenERP

Desde OpenERP hay que instalar los siguientes módulos:

account_payment_extension (addons-extra) +info
base_vat
delivery+info
django (addons-extra) +info
nan_product_pack (addons-extra). Opcional. Requerido para usar productos agrupados. +info
poweremailhttps://github.com/openlabs/poweremail ) +info
product
product_
manufacturer+info
product_attributes (addons-extra). Opcional. Requerido para usar atributos en los productos. +info
product_
m2mcategories (addons-extra) +info
product_images_olbs (addons-extra) +info
sale_payment (addons-extra) +info
sale_promotionshttps://code.launchpad.net/~zikzak/oosalespromotions/sale_promotions o addons-extra del proyecto OpenERP
zoook ( https://github.com/zikzakmedia/openerp-esale )

2.- Conexión base de datos Zoook

Lo primero será crear una base de datos PostgresSQL para Zoook. En un entorno de desarrollo se puede asignar al usuario openerp (normalmente ya usado para openerp) para no tener que crear otro. En producción es mejor asegurarse de que cada usuario puede acceder exclusivamente a su base de datos.

Crear base de datos:

sudo -u postgres psql
postgres=# CREATE DATABASE dj_zoook OWNER openerp;
postgres=# l

El último comando muestra las bases de datos existentes para verificar que se ha creado correctamente. Debería mostrar algo como:

tutorial

3.- Parametrización Zoook

3.1.- /home/roberto/django-projects/zoook-app/config.py

Editar el archivo y ajustar los parámetros de conexión con OpenERP. Hay que configurar todas las secciones pero destacaremos las siguientes por estar implicadas directamente con la conexión con OpenERP o la detección de errores:

LANGUAGES : Crear los lenguajes que se desaa utilizar en la tienda online. Los mismos que en OpenERP.

Para el presente artículo queda:

#Edit your languages
LANGUAGE_CODE = 'es'
LANGUAGES = (
    ('es', ugettext('Spanish')),
    ('en', ugettext('English')),
)
DEFAULT_LANGUAGE = 1
LOCALE_URI = True

OERP_SALE : Indica qué tienda de OpenERP estará vinculada con Zoook.

Para el presente artículo queda:

OERP_SALE = 1 #Sale Shop. All price, orders, ... use this Sale Shop ID.

LOGS : Rutas para almacenar los logs de Zoook

Para el presente artículo queda:

LOGFILE = '/home/roberto/django-projects/zoook-app/log/sync.log' #path sync log
LOGSALE = '/home/roberto/django-projects/zoook-app/log/sale.log' #path sale log

DATABASES : Datos de conexión con la base de datos propia de Zoook.

Para el presente artículo queda:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'dj_zoook',     # Or path to database file if using sqlite3.
        'USER': 'openerp',      # Not used with sqlite3.
        'PASSWORD': 'openerp',  # Not used with sqlite3.
        'HOST': '192.168.0.122',    # Set to empty string for 192.168.0.122. Not used with sqlite3.
        'PORT': '5432',         # Set to empty string for default. Not used with sqlite3.
    }
}

OERP_CONF : Datos de conexión Webservice XML-RPC OpenERP.

Para el presente artículo queda:

OERP_CONF = {
    'username':'admin',
    'password':'openerp',
    'dbname':'openerp',
    'protocol':'xmlrpc', #xmlrpc
    'uri':'http://192.168.0.122', #xmlrpc
    'port':8069, #xmlrpc
#    'protocol':'pyro', #pyro
#    'uri':'192.168.0.122', #pyro
#    'port':8071, #pyro
}

3.2.- /home/roberto/django-projects/zoook-app/sync/config_path.py

Este archivo contiene la ruta a Zoook para que el proceso de sincronización por SSH pueda encontrar las dependencias necesarias.

Para el presente artículo queda:

djpath = '/home/roberto/django-projects/zoook-app'

3.3.- /home/roberto/django-projects/zoook-app/settings.py

Editar el archivo para asignar una clave secreta única a Zoook. Para generarla podemos usar el generador de claves seguras safepasswd.com

Para el presente artículo queda:

# Make this unique, and don't share it with anybody.
SECRET_KEY = 'AQUÍ_LA_CLAVE_SECRETA_ÚNICA'

3.4.- Crear tablas Zoook.

Generar estructura de la base de datos:

cd ~/django-projects/zoook-app
python manage.py syncdb

El script preguntará si deseamos crear un superusuario. Decir que sí e introducir los datos de acceso del usuario que se usará para la administración de Zoook.

tutorial

3.5.-/home/roberto/django-projects/zoook-app/configuration.py

Ejecutar el asistente de configuración para introducir parámetros adicionales requeridos por Django.

Ejecutar configuration.py:

cd ~/django-projects/zoook-app
./configuration.py

Devolverá algo como:

tutorial

 3.6.- Ajustar permisos de archivos.

Cambiar permisos directorio sync:

cd ~/django-projects/zoook-app/
sudo chown -R roberto:www-data *
sudo chmod 775 -R sync

3.7.- Prueba de Zoook.

Cargamos el servidor:

cd ~/django-projects/zoook-app/
python manage.py runserver

que mostrará algo como:

tutorial

Al abrir en el navegador la dirección de nuestro servidor ( http://127.0.0.1:8000 ) cargará por primera vez Zoook:

tutorial

Podemos acceder a la administración con los datos del superusuario creado anteriormente:

tutorial

4.- Conexión Zoook – OpenERP

Se necesita acceso SSH al servidor que contiene Zoook. En este caso y para el entorno de desarrollo instalaremos OpenSSH Server:

Cargamos el servidor:

sudo apt-get install openssh-server

Lo siguiente es configurar poweremail para crear una plantilla que se usará para los pedidos de venta. En este artículo no se entrará en detalles del proceso.Se puede obtener información en:

http://www.sharoonthomas.com/2009/09/poweremail-for-open-erp.html

A continuación abrir OpenERP y configurar la tienda para la conexión con Zoook.

Ventas => Configuración => Ventas => Tienda

Elegir la tienda que se va a usar con Zoook, editarla y marcar “Tienda Zoook” en la parte superior derecha. Aparecerán entonces las opciones de configuración de Zoook.

tutorial

tutorial

tutorial

Al hacer el test de conexión debería dar un mensaje de que la conexión es correcta.

5.- Exportar productos de prueba

Sólo quedaría agregar categorías y productos de prueba. Lo único destacable en este punto es que para que un producto se exporte a la web hay que marcar en el mantenimiento “¿Exportar tienda on-line?”. Una vez marcado aparecerá una nueva pestaña con nombre “e-Sale” desde donde podremos parametrizar las opciones del producto en la tienda online.

tutorial

Al finalizar la creación de productos hay que volver a la configuración de la tienda para exportar productos, categorías, imágenes, etc. Al refrescar/cargar la web de Zoook se podrán ver los datos introducidos:

tutorial

tutorial

Con esto finaliza la serie de artículos destinada a documentar cómo poner en marcha Zoook.

Instalar Zoook en Ubuntu – Parte III: Zoook – Instalación

Lo siguiente será crear una carpeta donde almacenar todas las aplicaciones de terceros que necesita Zoook. Esto será útil para poder actualizarlas con git, mercurial, svn, etc. en caso de necesitarlo.

La carpeta elegida para almacenar las aplicaciones de terceros será:

/home/roberto/django-projects/zoook-external

Crear la carpeta:

cd ~/django-projects
mkdir zoook-external

A continuación usaremos esa carpeta para almacenar las dependencias.

2.1.- OOOP ( Open Object On Python )

Para instalar OOOP:

cd ~/django-projects/zoook-external
git clone https://github.com/zikzakmedia/ooop.git
cd ooop
sudo python setup.py install

2.2.- Pyro3 ( Python Remote Objects )

Buscar la descarga en su web:

http://pypi.python.org/pypi/Pyro/

en este artículo se usará la última versión disponible a día de hoy que es:

http://pypi.python.org/packages/source/P/Pyro/Pyro-3.15.tar.gz

Instalar Pyro3:

cd ~/django-projects/zoook-external
wget pypi.python.org/packages/source/P/Pyro/Pyro-3.15.tar.gz
tar xvzf Pyro-3.15.tar.gz
cd Pyro-3.15
sudo python setup.py install

2.3.- Paramiko

http://www.lag.net/paramiko/

en este artículo se usará la última versión disponible a día de hoy que es:

http://www.lag.net/paramiko/download/paramiko-1.7.7.1.tar.gz

Para instalar Paramiko:

cd ~/django-projects/zoook-external
wget http://www.lag.net/paramiko/download/paramiko-1.7.7.1.tar.gz
tar xvzf paramiko-1.7.7.1.tar.gz
cd paramiko-1.7.7.1
sudo python setup.py install

 2.4.- recaptcha-client

http://pypi.python.org/packages/source/r/recaptcha-client/

en este artículo se usará la última versión disponible a día de hoy que es:

http://pypi.python.org/packages/source/r/recaptcha-client/recaptcha-client-1.0.6.tar.gz

Para instalar recaptcha-client:

cd ~/django-projects/zoook-external
wget http://pypi.python.org/packages/source/r/recaptcha-client/recaptcha-client-1.0.6.tar.gz
tar xvzf recaptcha-client-1.0.6.tar.gz
cd recaptcha-client-1.0.6
sudo python setup.py install

2.5.- inplaceditform

Clonar e instalar el fork de inplaceeditform mantenido por Zikzakmedia:

cd ~/django-projects/zoook-external
git clone https://github.com/zikzakmedia/django-inplaceeditform.git
cd django-inplaceeditform
sudo python setup.py install

 

2.6.- django-localeurl

En caso de no tener instalado el control de versiones Mercurial hay que instalarlo.

Instalar Mercurial:

sudo apt-get install mercurial

Después clonar el repositorio oficial de django-localeurl e instalarlo.

Clonar django-localeurl e instalarlo:

cd ~/django-projects/zoook-external
hg clone https://bitbucket.org/carljm/django-localeurl
cd django-localeurl/
sudo python setup.py install

2.7.- django-transmeta

En caso de no tener instalado SVN hay que instalarlo.

Instalar SVN:

sudo apt-get install svn

Después clonar el repositorio svn de django-transmeta e instalarlo.

Clonar django-localeurl:

cd ~/django-projects/zoook-external
svn checkout http://django-transmeta.googlecode.com/svn/trunk/ django-transmeta
cd django-transmeta
sudo python setup.py install

2.8.- django-maintenancemode

Clonar e instalar el fork de django-maintenancemode mantenido por Zikzakmedia:

cd ~/django-projects/zoook-external
git clone https://github.com/zikzakmedia/django-maintenancemode.git
cd django-maintenancemode
sudo python setup.py install

3.- Corregir rutas con prefijo “zoook”.

Por defecto Zoook trae ciertas rutas en los import que incluyen “zoook.”. Entendemos que deben tener agregado al PYTHONPATH la ruta de los proyectos y el prefijo “zoook” implica buscar dentro del proyecto zoook.

La solución propuesta es convertir esas urls en relativas al proyecto actual de zoook. Esto es, eliminar el prefijo “zoook.” de las llamadas que lo contienen.

Será necesario realizar las siguientes modificaciones:

Editar /zoook-app/settings.py y cambiar:

ROOT_URLCONF = 'zoook.urls'

por:

ROOT_URLCONF = 'urls'

Editar /zoook-app/tools/cms/templatetags/imageslider.py y cambiar:

from zoook.tools.cms.models import ImageSlider, ImageSliderItem

por:

from tools.cms.models import ImageSlider, ImageSliderItem

Editar /zoook-app/tools/cms/templatetags/menubuilder.py y cambiar:

from zoook.tools.cms.models import Menu, MenuItem

por:

from tools.cms.models import Menu, MenuItem

Editar /zoook-app/tools/cms/templatetags/modules.py y cambiar:

from zoook.tools.cms.models import Modules

por:

from tools.cms.models import Modules

Dada la extensión de este artículo hemos decidido dividirlo. En la próxima parte estableceremos las conexiones con OpenERP y parametrizaremos Zoook.

Instalar Zoook en Ubuntu – Parte II: Python y Django

2.- Instalar Django

Django puede instalarse de tres formas:

  1. Usar los sistemas de distribución de paquetes de algunas distribuciones (como Ubuntu).
  2. Descargar la versión estable desde su web.
  3. Descargar la última versión en desarrollo desde repositorios.

En el momento de escribir este artículo la versión estable de los repositorios de Ubuntu coincide con la versión estable descargable por la web. Instalar la última versión desde los repositorios de Ubuntu es tan sencillo como:

sydo apt-get install python-django

Ahora se detallará el proceso a seguir para instalar la última versión estable en caso de no estar disponible a través de repositorios de Ubuntu.

En primer lugar hay que ir a la sección de descargas de la web de Django y descargar la última versión estable/oficial de Django. En el momento de escribir este artículo la versión era la 1.3.1 y el archivo descargado es Django-1.3.1.tar.gz

Suponiendo que se ha descargado el archivo en la carpeta de usuario estos serían los pasos para generar el directorio en el que se almacenará el código fuente de Django:

cd ~
tar xvzf Django-1.3.1.tar.gz
mv Django-1.3.1 django-src

De esta forma la carpeta que contendrá el código fuente de Django queda situada en:

/home/roberto/django-src

Con la carpeta de Django preparada el siguiente paso es informarle a Python de dónde la hemos generado. Para eso, a su vez, hay que buscar dónde están los site-packages de Python.

Averiguar dónde están los site-packages de Python:

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

Nos devolverá algo como:

Tutorial

que indica que en este caso el directorio de los site-packages es: /usr/lib/python2.7/dist-packages

Dentro de ese directorio hay que agregar la ruta a la carpeta con el código fuente de Django.

Para agregar la ruta a Django:

echo '/home/roberto/django-src' | sudo tee -a /usr/lib/python2.7/dist-packages/django.pth

eso creará un archivo /usr/lib/python2.7/dist-packages/django.pth en cuyo interior queda almacenada la ruta de acceso a Django.

A continuación crear enlace simbólico a django-admin.py para facilitar su uso:

sudo ln -s /home/roberto/django-src/django/bin/django-admin.py /usr/local/bin

 De este modo se puede usar django-admin.py desde cualquier carpeta en lugar de tener que usar /home/roberto/django-src/django/bin/django-admin.py

3.- Verificar instalación

Comprobar que Python es capaz de encontrar Django:

python
>>> import django
>>> print django.get_version()

Que devolverá algo como:

Tutorial

que indica que Python ha detectado y conectado correctamente con la versión 1.3.1 de Django que hay en el sistema.

La siguiente verificación será crear el primer proyecto de Django para verificar que la generación funciona.

Crear una carpeta para almacenar los proyectos de Django y acceder a ella:

mkdir /home/roberto/django-projects
cd /home/roberto/django-projects

En este caso la carpeta se ha creado en el home del usuario con el nombre “django-projects” pero no es necesario que sea así. En su lugar podría haberse usado, por ejemplo, la carpeta workspace que usa Eclipse.

Crear el proyecto de prueba en la carpeta:

django-admin.py startproject testdjango

Acceder al proyecto y lanzar el servidor Django integrado:

cd testdjango
python manage.py runserver

que devuelve algo como:

  Tutorial

El servidor ha arrancado correctamente y está esperando conexiones locales en el puerto 8000 ( http://127.0.0.1:8000 ). Al abrir el navegador en la ruta indicada por el mensaje debería aparecer:

  Tutorial

El proyecto ha cargado correctamente y es accesible desde el navegador. Ahora se podría crear una base de datos en PostgreSQL y comprobar la conectividad con el proyecto pero dada la finalidad de este artículo ( instalar Zoook ) el acceso a base de datos se detallará más adelante al configurar Zoook.

Instalar Zoook en Ubuntu – Parte I: Apache y PostgreSQL

1.- Instalar Apache 2 (entornos de producción)

Django incorpora un servidor para entornos de desarrollo que además es recomendable usar ya que simplifica enormemente el proceso de debug. Por lo tanto no es necesario realizar este paso en entornos de desarrollo.

Para instalar Apache 2 escribir en un terminal:

sudo apt-get install apache2

2.- Instalar PostgreSQL

Tanto Python como Apache soportan varios motores de bases de datos pero este artículo está centrado en cómo usar PostgreSQL.

Para instalar PostgreSQL

sudo apt-get install postgresql

3.- Instalar pgAdmin3

Lo siguiente es instalar la interfaz gráfica pgAdmin3 para facilitar la gestión del servidor PostgreSQL. Actualmente la última versión disponible es la 1.14.0 pero en los repositorios de ubuntu está la versión 1.12.3-1.

Para instalar la versión 1.12.3-1 desde los repositorios:

sudo apt-get install pgadmin3{/code}

Si se prefiere instalar la última versión hay que descargar directamente el código fuente y compilarlo. Descargar las fuentes de:

http://www.pgadmin.org/download/

En este caso descargar:

http://wwwmaster.postgresql.org/download/mirrors-ftp/pgadmin3/release/v1.14.0/src/pgadmin3-1.14.0.tar.gz

Tras descargarlo descomprimirlo con:

tar xvzf pgadmin3-1.14.0.tar.gz

y acceder a la carpeta donde se ha descomprimido:

cd pgadmin3-1.14.0{/code}

Antes de instalarlo hay que asegurarse de tener todas las dependencias necesarias:

sudo apt-get install build-essential libwxgtk2.8-dev libxml2-dev libxslt1-dev libgtk2.0-dev

Después ejecutar:

./configure

Lo siguiente sería hacer un make pero si se hace ahora se obtiene un error:

./db/keywords.c:33:34: error: parser/kwlist.h: No such file or directory

Este error se produce porque hay un bug en el constructor del PostreSQL que no copia un archivo necesario ( kwlist.h ) en la carpeta correspondiente. Para solucionarlo descargar este archivo y después:

crear la carpeta /usr/include/postgresql/parser con:

sudo mkdir -p /usr/include/postgresql/parser

mover allí el archivo descargado con:

sudo mv kwlist.h /usr/include/postgresql/parser

A continuación ya se puede ejecutar:

make

y luego:

sudo make install

La instalación debería haberse realizado correctamente.

Adicionalmente y para mayor comodidad crear un enlace simbólico al ejecutable de pgadmin3 con:

sudo ln -s /usr/local/pgadmin3/bin/pgadmin3 /usr/local/bin/pgadmin3

De este modo se puede acceder a él desde cualquier lugar ejecutando simplemente:

pgadmin3

en lugar de tener que usar:

/usr/local/bin/pgadmin3

4.- Configurar usuarios PostgreSQL

PostgreSQL por defecto trabaja con ‘ident sameuser’ para conexiones locales que permite usar el mismo usuario que ya existe en el sistema para establecer las conexiones con base de datos. De un modo similar se puede crear un usuario alternativo en el sistema y generarle un acceso a PostgreSQL.

El modo de crear un usuario superusuario es:

sudo -u postgres createuser --superuser NOMBREUSUARIO
sudo -u postgres psql
postgres=# password NOMBREUSUARIO

Tras todos los cambios reiniciar el servidor apache:

sudo /etc/init.d/apache2 restart

Finalizado todo este proceso quedaría el sistema listo para continuar con los siguientes pasos en los que instalaremos Python, Django, el módulo mod_wsgi para Apache 2 y finalmente Zoook.

En los próximos días publicaremos el resto de partes.