Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[9.0][MIG] payment_redsys: Migration to v9 #406

Merged
merged 3 commits into from
Feb 9, 2018

Conversation

sergio-teruel
Copy link
Contributor

@pedrobaeza pedrobaeza mentioned this pull request Dec 2, 2016
31 tasks
Copy link
Member

@rafaelbn rafaelbn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks

@pedrobaeza
Copy link
Member

@sergio-teruel, vas a poder añadir tests aquí?

Copy link
Member

@yajo yajo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code review.

if website_id:
base_url = '%s://%s' % (
request.httprequest.environ['wsgi.url_scheme'],
self.env['website'].browse(website_id).domain
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No estoy seguro, pero creo que esto podría llegar a fallar en algunas configuraciones de proxy inverso.

No es suficiente con usar web.base.url?

O quizás añadir soporte para otro parámetro (ej. redsys.host) y usar ese si está disponible y web.base.url en caso contrario?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No es suficiente porque no se sabe el protocolo, ya que ese parámetro sólo incluye el resto de la URL. No es una URI completa. Sergio ya hizo bastantes pruebas y no fallaba.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bueno, si viéramos que surgen problemas, ya se corregirán. 👍

_redsys_valid_tx_status = list(range(0, 100))
_redsys_pending_tx_status = list(range(101, 203))
_redsys_cancel_tx_status = [912, 9912]
_redsys_error_tx_status = list(range(9064, 9095))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Como estás usando estas variables para comparar con el operador in, mejor usa set en vez de list. En cualquier caso, esta implementación penaliza el rendimiento conforme a la anterior.

Creo que lo mejor sería un método parecido a:

def _redsys_status(self, code):
    if 0 <= code <= 100:
        return "done"
    if 101 <= code <= 203:
        return "pending"
    ... etc

@rafaelbn
Copy link
Member

rafaelbn commented Apr 2, 2017

Hola, este PR está funcionando correctamente hace meses. El hecho que no hacer merge creo que es negativo porque no aparece en el apps store ni como módulo y hace que menos gente lo utilice y pueda mejorarlo o incluso plantearse la migración a v10. Voto por merge ya.

@js-landoo
Copy link

js-landoo commented Apr 2, 2017 via email

Copy link
Member

@yajo yajo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My comments are still not addressed, but since they are only performance-related, I won't block this for that.

@js-landoo
Copy link

Pedro, se puede hacer merge de esto?

Copy link
Sponsor Member

@cubells cubells left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

👍

@js-landoo
Copy link

Veo que Redsys publica en su web los addons de software como Prestashop, Magento, WooCommerce, etc.
Están todos los importantes menos Odoo. Si os parece, me puedo encargar de hacer la gestión para que publique este módulo en versiones 8, 9 y cuando esté, la 10. Lo hago a través de un cliente que es usuario de la plataforma de pago, ya que piden identificador de usuario.
Creo que será bueno para la comunidad Odoo, ya que nos dará visibilidad.
Ya me diréis.

@pedrobaeza
Copy link
Member

@js-landoo, el módulo no lo voy a mergear hasta tener tests, pero puedes utilizarlo como quieras. Para lo otro, escribe en el proyecto correspondiente.

@js-landoo
Copy link

OK, Pedro, tomo nota de la necesidad de tests. Lo miro.

Por otro lado, disculpa mi desconocimiento pero no se a que te refieres con lo del proyecto correspondiente. En github no veo que haya proyectos en este repositorio y en la OCA tampoco.
Gracias.

@pedrobaeza
Copy link
Member

OCA/connector-magento, OCA/connector-prestashop

@js-landoo
Copy link

Te refieres a la lista de correo
Connectors, connectors@odoo-community.org,
https://odoo-community.org/groups/connectors-30
publicada en la página de mailing lists de la OCA,
https://odoo-community.org/groups
?
Lo pregunto porconfirmar antes de meter la pata, porque veo que es en inglés y tiene un objetivo bastante alejado de este módulo.

Disculpa por ser tan pesado. Gracias.

@pedrobaeza
Copy link
Member

Perdona, que me he liado yo al creer que era al revés (en la página de Magento, referenciar a Redsys). Entonces sí, por favor, contacta con ellos a ver.

@js-landoo
Copy link

OK, lo pongo en marcha : -)
Saludos.

@yajo
Copy link
Member

yajo commented Aug 23, 2017

Veo que esto tiene ya 3 aprobaciones, ¿falta algo para mezclar?

@pedrobaeza
Copy link
Member

No quiero mergear esto sin tener los correspondientes tests. @sergio-teruel estuvo trabajando en los tests para v10, que luego se puede hacer backport. Puedes echarle una mano con ellos si quieres.

@witoszek
Copy link

witoszek commented Sep 8, 2017

Hola Buenos días
Soy nuevo en esta parte de la programación de Odoo con los módulos.
Me gustaría saber como se puede instalar en odoo 9 este modulo Redsys payment acquire pues cuando lo intento instalar no aparece ninguna manera de hacerlo.
Se habla de Mergear , ¿hay que hacerlo para instalarlo?. ¿Cuales son las instrucciones para instalarlo?

Un saludo

Daniel Witoszek Arias

@pedrobaeza
Copy link
Member

@witoszek debes descargarte el código de este PR si quieres utilizarlo, y para eso necesitas conocimientos de GIT/GitHub que aquí no podemos darte.

callback_url = self.env['ir.config_parameter'].get_param(
'payment_redsys.callback_url')
if callback_url:
return '%s%s' % (callback_url, path)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

En caso de llamarlo sin path como aquí https://github.com/OCA/l10n-spain/pull/406/files#diff-e6553d240f9a320224682ba5da058208R129 devolverá el valor de payment_redsys.callback_url+'None'

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cámbialo por return '%s%s' % (callback_url, path or '')

@pedrobaeza
Copy link
Member

@sergio-teruel Travis está en rojo

@sergio-teruel
Copy link
Contributor Author

@pedrobaeza no consigo silenciar el log en esta funcion 9f706ac#diff-ad3fabe3e9d7083da3cc550d9e941c7aR209
realiza una llamada http y el metodo 9f706ac#diff-e6553d240f9a320224682ba5da058208R273 que hace un raise me fastidia el test...

@yajo
Copy link
Member

yajo commented Dec 4, 2017

No sé si será porque igual el mute_logger no funciona en peticiones http, donde se abre teóricamente otro hilo diferente. Si es así, tal vez puedas usar mock para comprobar que se llama a la excepción.

@pedrobaeza
Copy link
Member

Bueno, ahora mismo el PR está en verde, así que realmente no te está fastidiando, ¿verdad? ¿O es que en el último commit no están todos los tests?

De todas formas, puede que te estés complicando la vida: cuando se lanzan excepciones, lo suyo sería comprobar esas excepciones con with self.assertRaises(<nombre_excepción>):, y así realmente no va a lanzar nada al log.

@sergio-teruel
Copy link
Contributor Author

@pedrobaeza No. eso no funciona, el raise no es capturado

@yajo
Copy link
Member

yajo commented Dec 4, 2017

Claro, no sirve cuando son peticiones http

@jesusmendezQubiq
Copy link

jesusmendezQubiq commented Dec 11, 2017

Hola,
Estoy instalando el PR de este módulo para la versión 9, y me da error al instalarlo. Tengo la librería pycryipto instalada correctamente. Tenéis idea como solucionarlo?.

Saludos,
Jesús Méndez
Qubiq

Error :

Odoo Server Error Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/openerp/http.py", line 647, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/usr/local/lib/python2.7/site-packages/openerp/http.py", line 684, in dispatch result = self._call_function(**self.params) File "/usr/local/lib/python2.7/site-packages/openerp/http.py", line 320, in _call_function return checked_call(self.db, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/openerp/service/model.py", line 118, in wrapper return f(dbname, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/openerp/http.py", line 313, in checked_call result = self.endpoint(*a, **kw) File "/usr/local/lib/python2.7/site-packages/openerp/http.py", line 963, in __call__ return self.method(*args, **kw) File "/usr/local/lib/python2.7/site-packages/openerp/http.py", line 513, in response_wrap response = f(*args, **kw) File "/usr/local/lib/python2.7/site-packages/openerp/addons/web/controllers/main.py", line 901, in call_button action = self._call_kw(model, method, args, {}) File "/usr/local/lib/python2.7/site-packages/openerp/addons/web/controllers/main.py", line 889, in _call_kw return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/openerp/api.py", line 250, in wrapper return old_api(self, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/openerp/addons/base/module/module.py", line 459, in button_immediate_install return self._button_immediate_function(cr, uid, ids, self.button_install, context=context) File "/usr/local/lib/python2.7/site-packages/openerp/api.py", line 250, in wrapper return old_api(self, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/openerp/addons/base/module/module.py", line 533, in _button_immediate_function registry = openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True) File "/usr/local/lib/python2.7/site-packages/openerp/modules/registry.py", line 386, in new openerp.modules.load_modules(registry._db, force_demo, status, update_module) File "/usr/local/lib/python2.7/site-packages/openerp/modules/loading.py", line 338, in load_modules loaded_modules, update_module) File "/usr/local/lib/python2.7/site-packages/openerp/modules/loading.py", line 237, in load_marked_modules loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks) File "/usr/local/lib/python2.7/site-packages/openerp/modules/loading.py", line 156, in load_module_graph _load_data(cr, module_name, idref, mode, kind='data') File "/usr/local/lib/python2.7/site-packages/openerp/modules/loading.py", line 98, in _load_data tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report) File "/usr/local/lib/python2.7/site-packages/openerp/tools/convert.py", line 851, in convert_file convert_xml_import(cr, module, fp, idref, mode, noupdate, report) File "/usr/local/lib/python2.7/site-packages/openerp/tools/convert.py", line 938, in convert_xml_import obj.parse(doc.getroot(), mode=mode) File "/usr/local/lib/python2.7/site-packages/openerp/tools/convert.py", line 801, in parse self.parse(rec, mode) File "/usr/local/lib/python2.7/site-packages/openerp/tools/convert.py", line 804, in parse self._tags[rec.tag](self.cr, rec, de, mode=mode) File "/usr/local/lib/python2.7/site-packages/openerp/tools/convert.py", line 708, in _tag_record id = self.pool['ir.model.data']._update(cr, self.uid, rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode, context=rec_context ) File "/usr/local/lib/python2.7/site-packages/openerp/api.py", line 250, in wrapper return old_api(self, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/openerp/addons/base/ir/ir_model.py", line 1143, in _update res_id = model_obj.create(cr, uid, values, context=context) File "/usr/local/lib/python2.7/site-packages/openerp/api.py", line 250, in wrapper return old_api(self, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/openerp/addons/base/ir/ir_ui_view.py", line 353, in create context=context) File "/usr/local/lib/python2.7/site-packages/openerp/api.py", line 250, in wrapper return old_api(self, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/openerp/api.py", line 354, in old_api result = method(recs, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/openerp/models.py", line 4157, in create record = self.browse(self._create(old_vals)) File "/usr/local/lib/python2.7/site-packages/openerp/api.py", line 248, in wrapper return new_api(self, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/openerp/api.py", line 490, in new_api result = method(self._model, cr, uid, *args, **old_kwargs) File "/usr/local/lib/python2.7/site-packages/openerp/models.py", line 4354, in _create recs._validate_fields(vals) File "/usr/local/lib/python2.7/site-packages/openerp/api.py", line 248, in wrapper return new_api(self, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/openerp/models.py", line 1271, in _validate_fields raise ValidationError('\n'.join(errors)) ParseError: "Invalid view definition

Error details:
Element '<xpath expr="//group[@name="acquirer_display"]">' cannot be located in parent view

Error context:
View acquirer.form.redsys
[view_id: 1288, xml_id: n/a, model: payment.acquirer, parent_id: 561]
None" while parsing /mnt/custom-addons/payment_redsys/views/payment_acquirer.xml:4, near

acquirer.form.redsys
payment.acquirer
























@pedrobaeza
Copy link
Member

@jesusmendezQubiq debes tener alguna modificación custom que lo estropea. Prueba sobre una BD en blanco.

@jesusmendezQubiq
Copy link

@pedrobaeza Módulo funcionando correctamente en BD en blanco.
Gracias y un saludo,
Jesús,

@yajo yajo force-pushed the 9.0-PR-payment_redsys branch 3 times, most recently from 018c060 to f4e5c7a Compare February 8, 2018 13:57
sergio-teruel and others added 2 commits February 9, 2018 01:47
If there's a website installed in your integration environment, it will most likely have a `website_id` key that would produce a failure.
@yajo
Copy link
Member

yajo commented Feb 9, 2018

Travis went ❌ with a8b488e

@pedrobaeza
Copy link
Member

Ya lo he visto y estoy con ello. Eso es lo que pasa por hacer rebase 😛

@pedrobaeza
Copy link
Member

Bueno, tras un largo camino, este módulo pasa a estar completo, con tests, y con una base grande de pruebas en varios clientes. Fusiono.

@pedrobaeza pedrobaeza merged commit 79a904c into OCA:9.0 Feb 9, 2018
@pedrobaeza pedrobaeza deleted the 9.0-PR-payment_redsys branch February 9, 2018 11:12
@ghost
Copy link

ghost commented Feb 26, 2018

Hola, soy nuevo en Odoo. ¿Cuánto queda para que el módulo Redsys aparezca en Odoo apps para la versión 10 (y 11)?
Gracias.

@rafaelbn
Copy link
Member

Tovía no sale para v11 🤔 pero si para v10 https://www.odoo.com/apps/modules/11.0/payment_redsys/

@yajo
Copy link
Member

yajo commented Apr 27, 2018

captura de pantalla de 2018-04-27 09-29-30

Se te habrá pasado el de la izquierda (o lo habrán puesto justo ahora)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

9 participants