ImportError: No module named ws_sr_padron

57 views
Skip to first unread message

Andrés Teszkiewicz

unread,
Apr 8, 2018, 9:41:28 PM4/8/18
to tryton-ar
Hola a todos,

Estoy haciendo mi primera instalación de Tryton para utilizarlo como ERP de nuestra cooperativa. 

Ya logré instalar tryton en versión 4.4 y activar varios módulos de lo de tryton: account, bank, party, etc

Luego comencé a instalar los módulos de trytonar y me econtré con algunos problemas de compatibilidad. 

En donde quedé trabado es que al intentar instalar account_invoice_ar, instalé primero los requerimientos incluyendo pyafipws

Y ahora cuando quiero iniciar el server recibo este error. 

ImportError: No module named ws_sr_padron


Yo tengo instalado pyafipws desde la rama master de repositorio y el archivo ws_sr_padron.py está incluido, pero por algún motivo cuando en el código de party_ar intenta importar desde ws_sr_padron levanta el error.


Si alguno pasó por esto y puede darme un mano, se los agradecería.


Saludos


Andrés

Cesar Tynik

unread,
Apr 8, 2018, 10:34:34 PM4/8/18
to tryt...@googlegroups.com
Hola Andrés, adjunto unos pasos que seguimos nosotros esta semana (utilizando tryton 4.2 con python 3.5)


- Instalamos la rama py3k de pyafipws [1]
- la rama stable_py3k de pysimple soap [2]
- M2Crypto para python 3 [3]

Y realizamos los siguientes cambios a los archivos:

- Pasar 2to3 a account_invoice_ar y party_ar
- Crear la carpeta cache con permisos de usuario en /usr/local/lib/python3.5/dist-packages/PyAfipWs-3.5.0-py3.5.egg/pyafipws
- Realizar los siguientes cambios (paso el diff):

<pre>
diff -ur ~/Descargas/pyafipws-py3k/wsaa.py ./wsaa.py
--- ~/Descargas/pyafipws-py3k/wsaa.py    2018-01-26 02:54:28.000000000 -0300
+++ ./wsaa.py    2018-03-24 02:15:37.366551171 -0300
@@ -87,7 +87,7 @@
         # soporte de contraseña de encriptación (clave privada, opcional)
         callback = lambda *args, **kwarg: passphrase
         # Cargar clave privada y certificado
-        if not privatekey.startswith("-----BEGIN RSA PRIVATE KEY-----"):
+        if not privatekey.startswith(b"-----BEGIN RSA PRIVATE KEY-----"):
             # leer contenido desde archivo (evitar problemas Applink / MSVCRT)
             if os.path.exists(privatekey) and os.path.exists(cert):
                 privatekey = open(privatekey).read()
@@ -104,7 +104,7 @@
         #Rand.save_file('randpool.dat')         # Guardar el estado del PRNG's
 
         # extraer el cuerpo del mensaje (parte firmada)
-        msg = email.message_from_string(out.read())
+        msg = email.message_from_string(out.read().decode("utf8"))
         for part in msg.walk():
             filename = part.get_filename()
             if filename == "smime.p7m":                 # es la parte firmada?
@@ -122,7 +122,7 @@
             out = Popen([openssl, "smime", "-sign",
                          "-signer", cert, "-inkey", privatekey,
                          "-outform","DER", "-nodetach"],
-                        stdin=PIPE, stdout=PIPE, stderr=PIPE).communicate(tra.encode("utf8"))[0]
+                        stdin=PIPE, stdout=PIPE, stderr=PIPE).communicate(tra)[0]
             return b64encode(out).decode("utf8")
         except OSError as e:
             if e.errno == 2:
@@ -186,7 +186,7 @@
             bio = BIO.MemoryBuffer(cert)
             x509 = X509.load_cert_bio(bio, X509.FORMAT_DER)
         else:
-            if not crt.startswith("-----BEGIN CERTIFICATE-----"):
+            if not crt.startswith(b"-----BEGIN CERTIFICATE-----"):
                 crt = open(crt).read()
             bio = BIO.MemoryBuffer(crt)
             x509 = X509.load_cert_bio(bio, X509.FORMAT_PEM)
@@ -255,7 +255,7 @@
     @inicializar_y_capturar_excepciones
     def SignTRA(self, tra, cert, privatekey, passphrase=""):
         "Firmar el TRA y devolver CMS"
-        return sign_tra(str(tra),cert.encode('latin1'),privatekey.encode('latin1'),passphrase.encode("utf8"))
+        return sign_tra(tra.encode("utf8"),cert.encode('latin1'),privatekey.encode('latin1'),passphrase.encode("utf8"))
 
     @inicializar_y_capturar_excepciones
     def LoginCMS(self, cms):

diff -ur ./afip_auth.old ./afip_auth.py
--- ./afip_auth.old   2017-12-06 18:39:29.000000000 -0300
+++ ./afip_auth.py  2018-03-24 03:49:28.575788539 -0300
@@ -44,8 +44,10 @@
     wsaa.LanzarExcepciones = True  # raise python exceptions on any failure
 
     # make md5 hash of the parameter for caching...
+    cat = service + certificate + private_key
+    cat = cat.encode('latin1')
     fn = '%s.xml' % hashlib.md5(
-        service + certificate + private_key).hexdigest()
+        cat).hexdigest()
     if cache:
         fn = os.path.join(cache, fn)
     else:

</pre>




--
Has recibido este mensaje porque estás suscrito al grupo "tryton-ar" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a tryton-ar+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Andrés Teszkiewicz

unread,
Apr 9, 2018, 8:26:36 AM4/9/18
to tryt...@googlegroups.com
Hola Cesar,

Gracias por responder. 

Instalé todo con python 2.7 para ser compatible con la rama master de pyafipws. No quisiera pasarme a python3 ahora, estoy buscando una solución con python2.7

Saludos

Andrés

Luciano Rossi

unread,
Apr 9, 2018, 4:06:57 PM4/9/18
to tryt...@googlegroups.com
El 08/04/18 a las 22:41, Andrés Teszkiewicz escribió:
> Hola a todos,
>
> Estoy haciendo mi primera instalación de Tryton para utilizarlo como ERP
> de nuestra cooperativa.
>
> Ya logré instalar tryton en versión 4.4 y activar varios módulos de lo
> de tryton: account, bank, party, etc
>
> Luego comencé a instalar los módulos de trytonar y me econtré con
> algunos problemas de compatibilidad.
>
> En donde quedé trabado es que al intentar instalar account_invoice_ar,
> instalé primero los requerimientos incluyendo pyafipws
>
> Y ahora cuando quiero iniciar el server recibo este error.
>
> ImportError: No module named ws_sr_padron

Hola Andres,

Dos preguntas, ¿estas seguro que pyafipws esta en tu virtualenv?, ¿qué
versión de pyafipws bajaste? El tag 2.7 no tiene el módulo de
ws_sr_padron, así que ahora el módulo de party_ar requiere la rama
master de pyafipws para funcionar.

Si entras a la consola de python en tu virtualenv que te dice?

$python
...
from pyafipws.wsfev1 import WSFEv1
from pyafipws.ws_sr_padron import WSSrPadronA4
...

abrazo!

>
>
> Yo tengo instalado pyafipws desde la rama master de repositorio y el
> archivo ws_sr_padron.py está incluido, pero por algún motivo cuando en
> el código de party_ar intenta importar desde ws_sr_padron levanta el error.
>
>
> Si alguno pasó por esto y puede darme un mano, se los agradecería.
>
>
> Saludos
>
>
> Andrés
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "tryton-ar" de
> Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus
> mensajes, envía un correo electrónico a
> tryton-ar+...@googlegroups.com
> <mailto:tryton-ar+...@googlegroups.com>.
> Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
Luciano Rossi - lu...@gcoop.coop
http://gcoop.coop - Cooperativa de Software Libre
Julián Alvarez 958 CABA C1414DRT +54 11 4771-0055

Visitá www.tiendas.coop - www.nube.coop

Andrés Teszkiewicz

unread,
Apr 9, 2018, 9:18:03 PM4/9/18
to tryt...@googlegroups.com
Hola Lukio

gracias por la aclaración de la rama master, por  las dudas eliminé la versión de pyafipws que tenía y cloné la rama master en 

/usr/lib/python2.7/dist-packages/pyafipws

luego corri python setup.py install

y acá el output de mi entorno de python

Python 2.7.13 (default, Nov 24 2017, 17:33:09) 

[GCC 6.3.0 20170516] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> from pyafipws.wsfev1 import WSFEv1

para soporte de DBF debe instalar dbf 0.88.019 o superior

>>> from pyafipws.ws_sr_padron import WSSrPadronA4

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>


Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
Luciano Rossi - lu...@gcoop.coop
http://gcoop.coop - Cooperativa de Software Libre
Julián Alvarez 958 CABA C1414DRT +54 11 4771-0055

Visitá www.tiendas.coop - www.nube.coop

--
Has recibido este mensaje porque estás suscrito al grupo "tryton-ar" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a tryton-ar+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.

Luciano Rossi

unread,
Apr 10, 2018, 1:43:09 AM4/10/18
to tryt...@googlegroups.com
Hola!

El 09/04/18 a las 22:18, Andrés Teszkiewicz escribió:
> Hola Lukio
>
> gracias por la aclaración de la rama master, por las dudas eliminé la
> versión de pyafipws que tenía y cloné la rama master en
>
> /usr/lib/python2.7/dist-packages/pyafipws

Fijate si en esa carpeta tenés el archivo *ws_sr_padron.py*.
Si ese archivo existe, deberías poder importar ese módulo sin problemas.

abrazo!

Andrés Teszkiewicz

unread,
Apr 10, 2018, 8:24:40 AM4/10/18
to tryt...@googlegroups.com
Hola Lukio

gracias por la ayuda, revisando me di cuenta que me había quedado una copia de la 2.7 de pyafipws en /usr/local/lib

ya pude hacer la config de  los modulos en la base con tryton-admin

y ahora cuando voy por el cliente de tryton a activar los módulos me tira el siguiente error

Traceback (most recent call last):
  File "/trytond/wsgi.py", line 47, in dispatch_request
    return endpoint(request, **request.view_args)
  File "/trytond/protocols/dispatcher.py", line 41, in rpc
    request, database_name, *request.rpc_params)
  File "/wrapt/wrappers.py", line 523, in __call__
    args, kwargs)
  File "/trytond/wsgi.py", line 39, in auth_required
    return wrapped(*args, **kwargs)
  File "/trytond/protocols/wrappers.py", line 105, in wrapper
    return func(request, pool, *args, **kwargs)
  File "/trytond/protocols/dispatcher.py", line 165, in _dispatch
    result = rpc.result(meth(*c_args, **c_kwargs))
  File "/trytond/wizard/wizard.py", line 287, in execute
    return wizard._execute(state_name)
  File "/trytond/wizard/wizard.py", line 318, in _execute
    result = self._execute(transition())
  File "/trytond/ir/module.py", line 580, in transition_upgrade
    pool.init(update=update, lang=lang)
  File "/trytond/pool.py", line 155, in init
    lang=lang)
  File "/trytond/modules/__init__.py", line 456, in load_modules
    _load_modules()
  File "/trytond/modules/__init__.py", line 421, in _load_modules
    load_module_graph(graph, pool, update, lang)
  File "/trytond/modules/__init__.py", line 244, in load_module_graph
    cls.__register__(module)
  File "/trytond/model/model.py", line 116, in __register__
    Translation.register_fields(cls, module_name)
  File "/trytond/ir/translation.py", line 263, in register_fields
    update_insert_field(field, trans_name)
  File "/trytond/ir/translation.py", line 211, in update_insert_field
    string_md5 = cls.get_src_md5(field.string)
  File "/trytond/ir/translation.py", line 383, in get_src_md5
    return md5((src or '').encode('utf-8')).hexdigest()
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 14: ordinal not in range(128

Alguna sugerencia?

Reply all
Reply to author
Forward
0 new messages