allisson / django-pagseguro2

Integração da API v2 do PagSeguro com o Django.
MIT License
95 stars 44 forks source link

base_params, params and itens devem ser variáveis de instância #6

Closed fjsj closed 9 years ago

fjsj commented 9 years ago

itens, base_params e params estão como variáveis de classe. O comportamento esperado é que elas fossem variáveis de instância, já que PagSeguroApi é uma classe instanciável com métodos que alteram essas variáveis.

O fato dessas variáveis serem de classe causa um bug sutil: pode acontecer da variável de classe não ser resetada após o final do request (o Django não garante isso). Isso aconteceu comigo em um deployment simples com gunicorn. No meu caso, ao voltar para a página anterior ao checkout do PagSeguro e realizar outra compra, as duas compras se acumulavam no carrinho do PagSeguro, o que é um comportamento incorreto. A solução segue neste pull-request.

coveralls commented 9 years ago

Coverage Status

Coverage increased (+0.15%) when pulling b12f4fffa757f03c0376e9ae612438bd4e588dbb on vintasoftware:fix-itens-bug into 253d18e3f7b0f5c974683d5f12365bf1f27ea1c7 on allisson:master.

allisson commented 9 years ago

Beleza, valeu!

allisson commented 9 years ago

Versão 1.0.8 lançada com esse fix :)