[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