Programacion Interactiva

Descubre una Nueva y Poderosa Herramienta.

FrameWork de Nueva Generacion

Acceso a tu Informacion desde cualquier Dispositivo con Navegador.

Enfoque en el Backend

Frontend de forma facil con Odoo y XML.

Creacion de Verticales

Creacion de nuevas Verticales Conquistando nuevos Mercados.

Asesoria Especializada

Consultoria desde $15 USD por Hora.

Publicidad

miércoles, 18 de marzo de 2015

Solucion Error: NotImplementedError: 'update' not supported on frozendict

Error: NotImplementedError: 'update' not supported on frozendict


    Buenos Dias, lectores del Blog, este error ah sido muy común en mi código a la hora de migrar módulos de OpenERP 7 hacia Odoo. El error ah ocurrido cuando intento hacer un update a la variable context, ustedes se preguntaran por que no podemos actualizar un simple diccionario, bueno el problema es que Odoo ahora protege la integridad de los diccionarios como Context volviéndolos Inmutables, como si se tratase de una Tupla, utilizando Frozen Dict.

El Codigo que utlizaba era algo simple como:

context.update({'date_work': invoice.date_invoice})

Al compilar el error:

NotImplementedError: 'update' not supported on frozendict


La solución fue muy simple, convertir el Diccionario Frozen Dict:

context=dict(context)
context.update({'date_work': invoice.date_invoice})

Con esto podemos convertir el Diccionario "Inmutable" a un diccionario común y poder continuar con nuestro código.


Espero que les funcione y sea de utilidad.


miércoles, 4 de marzo de 2015

Definicion de Clases Api Odoo

API Odoo



    Como todos sabemos Odoo anteriormente OpenERP, ah modificado su Núcleo de desarrollo, ofreciendo nuevas alternativas para la creación de Módulos para este ERP, ahora trae a nosotros los modulos Website, que permiten integrar una e-shop, un sitio web, añadir temas, chat de contacto, etc.
Podemos observar también modificaciones al Framework de Desarrollo de Módulos, una nueva Api que cambia el Aspecto del desarrollo, pero que es compatible con el Framework de la versión 7 de OpenERP,  mis proximas entradas seran con aspectos importantes de esta nueva Version.

Definición de Clases con la nueva API (Odoo)

Para la creación de una clase con la Api de Odoo se utiliza el código siguiente:

from openerp.osv import fields, osv
from datetime import datetime
import time


class mi_clase_odoo(osv.osv):
    _name = 'mi.clase.odoo'
    #Definicion de Campos
    name = fields.Char('Nombre del Alumno', required=True)
    date_act = fields.Date('Fecha')
    _defaults = {  
        'date_act': lambda *a: time.strftime('%Y-%m-%d'),  
        }
mi_clase_odoo()

En OpenERP 7 se crearía con el código:


from openerp.osv import fields, osv
from datetime import datetime
import time


class mi_clase_odoo(osv.osv):
    _name = 'mi.clase.odoo'
    #Definicion de Campos
    _description = 'Grupos'
    _columns = {
        'name':fields.char('Nombre', size=64), 
        'date_act': fields.date('Fecha'),
    }
    _defaults = {  
        'date_act': lambda *a: time.strftime('%Y-%m-%d'),  
        }
mi_clase_odoo()

Ambas formas son Validas en el desarrollo para Odoo, ya que tiene retrocompatibilidad con la definición de clases osv.osv.

Diferencias Odoo y OpenERP7:
  • La primer diferencia es la importación de las librerías, ahora importamos api y no osv.
  • Al definir la clase heredamos models.Model y en OpenERP osv.osv.
  • Para definir un campo en Odoo, ya no es necesario ingresarlo en un diccionario, ahora se define directamente, primer elemento nombre del campo y seguido del tipo de campo a definir, en OpenERP7 utilizamos el _columns{}.
  • Definir campos por defecto se utiliza de la misma manera.
Este es mi primer Aporte sobre la Api de Odoo, espero que sea de su agrado.

Restaurar Respaldo de Odoo desde Terminal (Archivos *.dump)

Creación y restauración de respaldo Odoo desde Terminal.


    Buenos días lectores, gracias por los comentarios y los correos, espero que este Blog los haya sacado de algún problema, hoy vengo con una entrada similar a una ya escrita en mi blog, respecto al tema de Respaldar y Restaurar bases de Odoo desde una terminal, pero ahora con algunos cambios importantes, como es ignorar tablas.

Creación del respaldo


         Parámetros:

  • -i

        -- ignore-version
        Se ignora la versión de la base de datos

  • -h

       -host
       Especifica el nombre del equipo en que corre el servidor.

  • -p

       -port
       Por defecto siempre usamos el puerto 5432 por el cual podemos acceder a PostgreSQL.

  • -U

       --username
       Usuario de Postgres para generar el backup, aqui debemos revisar el archivo .conf de Odoo, o podemos siempre utilizar el Usuario postgres que trae por defecto.


  • -F

       --format
       Seleccionar el Formato de salida.

  • -b

       --blobs
       Para incluir tablas muy extensas en el dump sin errores.

  • -v

       --verbose
       Permite crear los respaldos a detalle en el dump.

  • -f

       --file
       Enviar el respaldo a un Archivo X.dump

Ejemplo:

pg_dump -i -h localhost -p 5432 -U odoo -F c -b -v -f "/opt/odoo/backups/Odoo_Test.backup" Odoo_Test


Con el fragmento anterior creamos un archivo llamado "Odoo_Test.backup" en mi ruta /opt/odoo/backups, de la base de datos Odoo_Test.

Para excluir alguna tabla, como puede ser la tabla ir_attachment, que contiene los datos adjuntos que aumenta el tamaño de la Base de Datos, quedaría el siguiente código:

pg_dump -i -h localhost -p 5432 -U odoo -F c -b -v -f "/opt/odoo/backups/Odoo_Test.backup" Odoo_Test -T ir_attachment


Como vemos solo agregamos  -T y el nombre de la tabla.

Restauración de la Base de Datos

Para poder restaurar el archivo dump o backup, es necesario crear una Base de Datos en blanco utilizamos el comando:

sudo su postgres

Una vez dentro del prompt de Postgres ejecutamos el comando para la creacion de la Base:

createdb Odoo_Resturacion -O odoo

    createdb: Indicamos el nombre de la Base Nueva.
    -O: Indicamos el usuario postgres al que pertenecerá la Base que estamos creando en PostgreSQL se conoce como Owner (Propietario).

Una vez creada la Base de Datos, ejecutamos el siguiente fragmento de código, para comenzar con la Restauración:

pg_restore -i -h localhost -p 5432 -U odoo -d Odoo_Restauracion -v "/opt/odoo/bakcups/Odoo_Test.backup"

    -d: Base de Datos para restaurar la Información
    -v: Especificamos la ruta del Archivo de Respaldo.

Con esto iniciara la restauración de nuestra base de Datos.