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.

Tu marca aqui mismo

Llega a miles de personas.

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.