45 |
auxTable = string.split(string.replace(table,' ',''),',') |
auxTable = string.split(string.replace(table,' ',''),',') |
46 |
|
|
47 |
for table in auxTable: |
for table in auxTable: |
48 |
historyFields = ("start_t","end_t", table) |
historyFields = ("_start_t","_end_t", table) |
49 |
statement = "SELECT %s, %s FROM %s WHERE (1 = 0)" % historyFields |
statement = "SELECT %s, %s FROM %s WHERE (1 = 0)" % historyFields |
50 |
try: |
try: |
51 |
cursor = self._parent._dataObject._dataConnection.cursor() |
cursor = self._parent._dataObject._dataConnection.cursor() |
91 |
GDebug.printMesg(5, "_postChanges: statement=%s" % statement) |
GDebug.printMesg(5, "_postChanges: statement=%s" % statement) |
92 |
|
|
93 |
try: |
try: |
94 |
#print "statement: %s" % statement |
print "statement: %s" % statement |
95 |
self._parent._update_cursor.execute(statement) |
self._parent._update_cursor.execute(statement) |
96 |
|
|
97 |
# Set _initialData to be the just-now posted values |
# Set _initialData to be the just-now posted values |
110 |
|
|
111 |
def _postChangesWHist(self): |
def _postChangesWHist(self): |
112 |
auxTable = string.split(string.replace(self._parent._dataObject.table,' ',''),',') |
auxTable = string.split(string.replace(self._parent._dataObject.table,' ',''),',') |
113 |
|
auxHTable = None |
114 |
|
if hasattr(self._parent._dataObject,"historytable"): |
115 |
|
auxHTable = string.split(string.replace(self._parent._dataObject.historytable,' ',''),',') |
116 |
statements = [] |
statements = [] |
117 |
result = 1 |
result = 1 |
118 |
if self._deleteFlag: |
if self._deleteFlag: |
126 |
if not result: break |
if not result: break |
127 |
elif self._updateFlag: |
elif self._updateFlag: |
128 |
if len(auxTable) > 1: |
if len(auxTable) > 1: |
129 |
for iterTable in auxTable: |
for iterTable in auxHTable: |
130 |
result = self._doDeleteStatementWHist(iterTable) |
result = self._doDeleteStatementWHist(iterTable) |
131 |
if not result: break |
if not result: break |
132 |
result = self._doInsertStatementWHist(iterTable) |
result = self._doInsertStatementWHist(iterTable) |
133 |
if not result: break |
if not result: break |
134 |
|
print iterTable |
135 |
else: |
else: |
136 |
result = self._doDeleteStatementWHist(auxTable[0]) |
result = self._doDeleteStatementWHist(auxTable[0]) |
137 |
if result: result = self._doInsertStatementWHist(auxTable[0]) |
if result: result = self._doInsertStatementWHist(auxTable[0]) |
141 |
if not self._deleteFlag: |
if not self._deleteFlag: |
142 |
self._initialData = {} |
self._initialData = {} |
143 |
self._initialData.update(self._fields) |
self._initialData.update(self._fields) |
144 |
|
|
145 |
|
print self._fields |
146 |
self._updateFlag = 0 |
self._updateFlag = 0 |
147 |
self._insertFlag = 0 |
self._insertFlag = 0 |
148 |
self._deleteFlag = 0 |
self._deleteFlag = 0 |
195 |
import mx.DateTime |
import mx.DateTime |
196 |
today = self._parent._dataObject._toSqlString(mx.DateTime.localtime()) |
today = self._parent._dataObject._toSqlString(mx.DateTime.localtime()) |
197 |
return self._parent._dataObject.triggerExtensions.atomicModify(today, \ |
return self._parent._dataObject.triggerExtensions.atomicModify(today, \ |
198 |
"%s.end_t" % (table), \ |
"%s._end_t" % (table), \ |
199 |
self._parent._dataObject, \ |
self._parent._dataObject, \ |
200 |
self, \ |
self, \ |
201 |
"end_t IS NULL") |
"_end_t IS NULL") |
202 |
|
|
203 |
|
|
204 |
def _buildInsertStatement(self, table): |
def _buildInsertStatement(self, table): |
222 |
pass |
pass |
223 |
|
|
224 |
try: |
try: |
225 |
pkFields.remove(auxField) |
if self._fields[field]: |
226 |
|
pkFields.remove(auxField) |
227 |
|
else: |
228 |
|
continue |
229 |
except ValueError: |
except ValueError: |
230 |
pass |
pass |
231 |
|
|
274 |
|
|
275 |
if pkFields.count(auxField) > 0: continue |
if pkFields.count(auxField) > 0: continue |
276 |
|
|
277 |
|
#try: |
278 |
|
# if self._fields[field]: |
279 |
|
# pkFields.remove(auxField) |
280 |
|
# else: |
281 |
|
# continue |
282 |
|
#except ValueError: |
283 |
|
# pass |
284 |
|
|
285 |
fields.append(auxField) |
fields.append(auxField) |
286 |
if self._fields[field] == None or self._fields[field] == '': |
if self._fields[field] == None or self._fields[field] == '': |
287 |
vals.append ("NULL") # % (self._fields[field])) |
vals.append ("NULL") # % (self._fields[field])) |
303 |
|
|
304 |
if self._haveHistory(table): |
if self._haveHistory(table): |
305 |
import mx.DateTime |
import mx.DateTime |
306 |
fields.append("start_t") |
fields.append("_start_t") |
307 |
vals.append(self._parent._dataObject._toSqlString(mx.DateTime.localtime())) |
vals.append(self._parent._dataObject._toSqlString(mx.DateTime.localtime())) |
308 |
|
|
309 |
statement = "BEGIN; INSERT INTO %s (%s) VALUES (%s)" % \ |
statement = "INSERT INTO %s (%s) VALUES (%s)" % \ |
310 |
(table, string.join(fields,','), \ |
(table, string.join(fields,','), \ |
311 |
string.join(vals,',') ) + "; COMMIT " |
string.join(vals,',') ) |
312 |
|
print statement |
313 |
try: |
try: |
314 |
|
self._parent._update_cursor.execute("BEGIN") |
315 |
self._parent._update_cursor.execute(statement) |
self._parent._update_cursor.execute(statement) |
316 |
|
self._parent._update_cursor.execute("COMMIT") |
317 |
|
|
318 |
except self._parent._dataObject._DatabaseError, err: |
except self._parent._dataObject._DatabaseError, err: |
319 |
raise GDataObjects.ConnectionError, err |
raise GDataObjects.ConnectionError, err |