[Stoq-devel] [Bug 2674] - Erro na criação da base de exemplos
bugzilla-daemon at async.com.br
bugzilla-daemon at async.com.br
Mon Jul 3 09:38:50 BRT 2006
http://bugs.async.com.br/show_bug.cgi?id=2674
------- Comment #7 from henrique at async.com.br 2006-07-03 09:38 BRT -------
(In reply to comment #6)
> Created an attachment (id=3284)
--> (http://bugs.async.com.br/attachment.cgi?id=3284&action=view) [edit]
> Lincoln: Patch v4 - Stoqlib
>
> Patch com comentários aplicados menos este:
>
> >+ def receive_item(self, sellable, quantity_to_receive):
> >+ pending = self.get_pending_items()
> >+ for item in pending:
> >+ if item.sellable == sellable:
> >+ validated = True
> >+ order_item = item
> >+ if not validated:
> >+ raise ValueError('Your sellable does not exist for this '
> >+ 'Purchase Order')
> ---------------------------------------
> Na verdade self.get_pending_items() retorna PurchaseItem e não
> AbstractSellable, por isso usei o for e aproveitei e peguei o PurchaseItem para
> usá-lo um pouco mais adiante no código. Pode ser que haja um jeito de otimizar
> este código, aguardo sugestão.
>
OK. Esse código possui um bug simples, que é quando o callsite tenta receber um
item que o pedido não possui, nesse caso a sua exceção nunca vai ser executada.
Outra questão é se "receive_item" deve receber um "AbstractSellable" ou um
"PurchaseItem". Eu sugiro a segunda opção, desde que evita todo esse problema,
sem contar que o nome "receive_item" deixa a entender que um PurchaseItem é
esperado. Se você optar por essa sugestão, pode remover todo esse código de
checagem e simplificar as coisas.
More information about the Stoq-devel
mailing list