dabo Commit Revision 861 Date: 2005-02-28 16:43:55 -0800 (Mon, 28 Feb 2005) Author: ed
Changed: U trunk/db/dCursorMixin.py
Log: Added the 'clearSQL()' method to reset all of the setXXX values for the SQL Builder. Also added an automatic setting of the KeyField if it isn't explicitly set by the user.
Diff: Modified: trunk/db/dCursorMixin.py =================================================================== --- trunk/db/dCursorMixin.py 2005-02-28 20:52:09 UTC (rev 860) +++ trunk/db/dCursorMixin.py 2005-03-01 00:43:55 UTC (rev 861) @@ -53,6 +53,8 @@ self.__nonUpdateFields = [] # User-editable list of non-updated fields self.nonUpdateFields = [] + # Flag that is set when the user explicitly sets the Key Field + self._keyFieldSet = False self._blank = {} self.__unsortedRows = [] @@ -67,15 +69,8 @@ # Reference to the object with backend-specific behaviors self.__backend = None - # properties for the SQL Builder functions - self._fieldClause = "" - self._fromClause = "" - self._whereClause = "" - self._childFilterClause = "" - self._groupByClause = "" - self._orderByClause = "" - self._limitClause = "" - self._defaultLimit = 1000 + # set properties for the SQL Builder functions + self.clearSQL() self.hasSqlBuilder = True # props for building the auxiliary cursor @@ -92,6 +87,17 @@ self.sql = self._getBackendObject().setSQL(sql) + def clearSQL(self): + self._fieldClause = "" + self._fromClause = "" + self._whereClause = "" + self._childFilterClause = "" + self._groupByClause = "" + self._orderByClause = "" + self._limitClause = "" + self._defaultLimit = 1000 + + def getSortColumn(self): return self.sortColumn @@ -371,7 +377,7 @@ ret = val if type(val) in (str, unicode): if ("\n" in val) or ("<" in val) or ("&" in val): - ret = "<![CDATA[%s]]>" % val + ret = "<![CDATA[%s]]>" % val.encode(self.Encoding) return ret def setNonUpdateFields(self, fldList=[]): @@ -1311,9 +1317,9 @@ if orderByClause: orderByClause = "order by " + orderByClause if limitClause: - limitClause = self.getLimitWord() + " " + limitClause + limitClause = "%s %s" % (self.getLimitWord(), limitClause) else: - limitClause = self.getLimitWord() + " " + str(self._defaultLimit) + limitClause = "%s %s" % (self.getLimitWord(), self._defaultLimit) return self._getBackendObject().formSQL(fieldClause, fromClause, whereClause, groupByClause, orderByClause, limitClause) @@ -1372,6 +1378,7 @@ def _setKeyField(self, kf): self._keyField = str(kf) self._getAuxCursor()._keyField = str(kf) + self._keyFieldSet = True def _setRowNumber(self, num): self.__rownumber = num @@ -1397,7 +1404,13 @@ def _setTable(self, table): self._table = str(table) self._getAuxCursor()._table = str(table) - + if not self._keyFieldSet: + # Get the PK field, if any + try: + self._keyField = [fld[0] for fld in self.getFields(table) + if fld[2] ][0] + except: pass + def _isAdding(self): """ Return True if the current record is a new record. """
©2005 Ed Leafe |