Wednesday, June 30, 2010

Solving python-xml dependency

  1. get http://sourceforge.net/projects/pyxml/files/pyxml/0.8.4/PyXML-0.8.4.tar.gz/download   
  2. $ tar -zxvf PyXML-0.8.4.tar.gz $ cd PyXML-0.8.4/   
  3. $ sudo python setup.py install  

Thursday, June 03, 2010

Here are my changes in netsvc

class GenericXMLRPCRequestHandler(OpenERPDispatcher):
    def _dispatch(self, method, params):
        try:
            service_name = self.path.split("/")[-1]
            return self.dispatch(service_name, method, params)
        except OpenERPDispatcherException, e:
#            raise xmlrpclib.Fault(tools.exception_to_unicode(e.exception), e.traceback)
            if 'xmlrpclib' in self.headers.getheader('User-Agent'):
                raise xmlrpclib.Fault(tools.exception_to_unicode(e.exception), e.traceback)
            else:
                raise xmlrpclib.Fault(1,tools.exception_to_unicode(e.exception))

The result is that instead of getting a casting error, you get the correct exception like in : org.apache.xmlrpc.XmlRpcException: 'super' object has no attribute '__getattr__'

Which is what you see on the console... Well Open ERP messages are sometimes a bit cryptic in fact in this case the called method does not exist on the object...

Open ERP xmlrpc protocol is not respected

I am working on a small lib to ease Java applications integration with Open ERP.

It works but... in case of error there is no clean error handling and the Apache xmlrpc lib fires an exception. The problem being it cannot cast a String into an int.

Well it appears that Open ERP does not follow the xmlrpc protocol...



https://bugs.launchpad.net/openerp/+bug/257581

The 'worst' is there

http://launchpadlibrarian.net/31048347/xmlrpc.patch

which gives the following


=== modified file 'bin/netsvc.py'
--- bin/netsvc.py 2009-08-28 16:50:27 +0000
+++ bin/netsvc.py 2009-08-31 10:11:37 +0000
@@ -262,7 +262,10 @@
             service_name = self.path.split("/")[-1]
             return self.dispatch(service_name, method, params)
         except OpenERPDispatcherException, e:
-            raise xmlrpclib.Fault(tools.exception_to_unicode(e.exception), e.traceback)
+            if 'xmlrpclib' in self.headers.getheader('User-Agent'):
+                raise xmlrpclib.Fault(tools.exception_to_unicode(e.exception), e.traceback)
+            else:
+                raise xmlrpclib.Fault(1,tools.exception_to_unicode(e.exception))
 
 class SSLSocket(object):
     def __init__(self, socket):

So somebody provided a clean fix and nobody cares !

Tuesday, June 01, 2010

Open ERP Installing the trunk... previewing version 6

If you want to see a previewing of the next Open ERP you will need the following...

sudo easy_install formencode
sudo easy_install babel

It is the first time, I got the new look & feel...


Very elegant design. Although I think the colours should be more contrasted to ease readability. Ergonomy and elegance are two things...

The Axelor logo is gone, confirming that the web stuff has been entirely rewritten...

Obviously Ajax driven application have better network performance.


More and more to come (in spite I am very busy...)