[POS-commit] r1806 - in stoq/trunk/stoq: domain gui/editors

Evandro Vale Miquelito evandro at async.com.br
Wed Dec 7 15:38:50 BRST 2005


Author: evandro
Date: Wed Dec  7 15:38:49 2005
New Revision: 1806

Modified:
   stoq/trunk/stoq/domain/sellable.py
   stoq/trunk/stoq/gui/editors/sellable.py
   stoq/trunk/stoq/gui/editors/service.py
Log:
Fixing a bug in SellableEditor. Now we are catching properly SQLObject
exceptions when adding existent values in unique fields.
This code will be improved soon after adding some new features in kiwi.

r=henrique


Modified: stoq/trunk/stoq/domain/sellable.py
==============================================================================
--- stoq/trunk/stoq/domain/sellable.py	(original)
+++ stoq/trunk/stoq/domain/sellable.py	Wed Dec  7 15:38:49 2005
@@ -37,6 +37,7 @@
 from stoqlib.exceptions import SellError, DatabaseInconsistency
 
 from stoq.lib.validators import is_date_in_interval, get_formatted_price
+from stoq.lib.runtime import get_connection
 from stoq.lib.parameters import sysparam
 from stoq.domain.interfaces import ISellable, IContainer
 from stoq.domain.base import (Domain, InheritableModelAdapter,
@@ -234,6 +235,14 @@
                                         '%d' % self.state)
         return self.states[self.state]
 
+    def _set_code(self, code):
+        conn = get_connection()
+        query = AbstractSellable.q.code == code
+        # FIXME We should raise a proper stoqlib exception here if we find
+        # an existent code. Waiting for kiwi support 
+        if not AbstractSellable.select(query, connection=conn).count():
+            self._SO_set_code(code)
+
     @classmethod
     def get_available_sellables_query(cls, conn):
         service = sysparam(conn).DELIVERY_SERVICE

Modified: stoq/trunk/stoq/gui/editors/sellable.py
==============================================================================
--- stoq/trunk/stoq/gui/editors/sellable.py	(original)
+++ stoq/trunk/stoq/gui/editors/sellable.py	Wed Dec  7 15:38:49 2005
@@ -37,6 +37,7 @@
 
 from stoq.domain.sellable import SellableCategory, AbstractSellable
 from stoq.domain.interfaces import ISellable, IStorable
+from stoq.lib.runtime import new_transaction
 
 
 _ = gettext.gettext
@@ -162,6 +163,7 @@
         BaseEditor.__init__(self, conn, model)
         self.notes.set_accepts_tab(False)
         self.setup_widgets()
+        self._original_code = self.sellable_proxy.model.code
 
     def set_widget_formats(self):
         for widget in (self.cost, self.stock_total_lbl, self.price):
@@ -212,3 +214,19 @@
 
     def on_sale_price_button__clicked(self, button):
         self.edit_sale_price()
+
+    def validate_confirm(self, *args):
+        code = self.code.get_text()
+        if self.edit_mode and code == self._original_code:
+            return True
+        conn = new_transaction() 
+        query = AbstractSellable.q.code == code
+        qty = AbstractSellable.select(query, connection=conn).count()
+        if qty:
+            msg = _('This code already exists!')
+            self.code.set_invalid(msg)
+            value_ok = False
+        else:
+            value_ok = True
+        conn._connection.close()
+        return value_ok

Modified: stoq/trunk/stoq/gui/editors/service.py
==============================================================================
--- stoq/trunk/stoq/gui/editors/service.py	(original)
+++ stoq/trunk/stoq/gui/editors/service.py	Wed Dec  7 15:38:49 2005
@@ -96,5 +96,3 @@
         model.addFacet(ISellable, code='', description='', price=0.0, 
                        connection=conn)
         return model
-
-    


More information about the POS-commit mailing list