[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r9972 - trunk/gnue-forms/src/GFObjects
From: |
reinhard |
Subject: |
[gnue] r9972 - trunk/gnue-forms/src/GFObjects |
Date: |
Thu, 15 Oct 2009 16:32:44 -0500 (CDT) |
Author: reinhard
Date: 2009-10-15 16:32:44 -0500 (Thu, 15 Oct 2009)
New Revision: 9972
Modified:
trunk/gnue-forms/src/GFObjects/GFBlock.py
trunk/gnue-forms/src/GFObjects/GFEntry.py
Log:
Behave as reasonable as possible if there is no resultset behind the block.
Modified: trunk/gnue-forms/src/GFObjects/GFBlock.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFBlock.py 2009-10-15 13:12:49 UTC (rev
9971)
+++ trunk/gnue-forms/src/GFObjects/GFBlock.py 2009-10-15 21:32:44 UTC (rev
9972)
@@ -25,6 +25,7 @@
Classes making up the Block object.
"""
+from gnue.common.apps import errors
from gnue.common.datasources import GConditions
from gnue.common.definitions import GParser
from gnue.common import events
@@ -354,14 +355,15 @@
self.__resultset = event.resultSet
- recno = self.__resultset.getRecordNumber()
- if recno == -1:
- self.__scrolling_blocked = True
- try:
- if not self.__resultset.firstRecord():
- self.__resultset.insertRecord(self._lastValues)
- finally:
- self.__scrolling_blocked = False
+ if self.__resultset is not None:
+ recno = self.__resultset.getRecordNumber()
+ if recno == -1 and self.editable in ('Y', 'new'):
+ self.__scrolling_blocked = True
+ try:
+ if not self.__resultset.firstRecord():
+ self.__resultset.insertRecord(self._lastValues)
+ finally:
+ self.__scrolling_blocked = False
self.__current_record_changed(True)
@@ -682,6 +684,9 @@
if self.mode == 'query':
return
+ if self.__resultset is None:
+ return
+
if self.__resultset.isFirstRecord():
return
@@ -704,6 +709,9 @@
if self.mode == 'query':
return False
+ if self.__resultset is None:
+ return
+
if self.__resultset.isFirstRecord():
return False
@@ -731,6 +739,9 @@
if self.mode == 'query':
return False
+ if self.__resultset is None:
+ return
+
if self.__resultset.isLastRecord():
if self.autoCreate and self.get_record_status() != 'empty' and \
not self.editable in('update', 'N'):
@@ -756,6 +767,9 @@
if self.mode == 'query':
return
+ if self.__resultset is None:
+ return
+
if self.__resultset.isLastRecord():
return
@@ -778,6 +792,9 @@
if self.mode == 'query':
return
+ if self.__resultset is None:
+ return
+
# If record_number is negative, move relative to last record
if record_number < 0:
record_number += self.__resultset.getRecordCount()
@@ -804,6 +821,9 @@
@param count: the number of records to move from the current record.
"""
+ if self.__resultset is None:
+ return
+
record_number = self.__resultset.getRecordNumber() + count
record_number = max(record_number, 0)
@@ -826,6 +846,9 @@
if self.mode == 'query':
return False
+ if self.__resultset is None:
+ return
+
# First, convert the fieldname/value pairs to column/value pairs.
cond = {}
for (fieldname, value) in params.iteritems():
@@ -892,7 +915,10 @@
Return the number of records in this block.
"""
- return self.__resultset.getRecordCount()
+ if self.__resultset is not None:
+ return self.__resultset.getRecordCount()
+ else:
+ return 0
# -------------------------------------------------------------------------
@@ -988,6 +1014,9 @@
Return True if the current record is the first one in the result set.
"""
+ if self.__resultset is None:
+ return True
+
return self.__resultset.isFirstRecord()
# -------------------------------------------------------------------------
@@ -997,6 +1026,9 @@
Return True if the current record is the last one in the result set.
"""
+ if self.__resultset is None:
+ return True
+
return self.__resultset.isLastRecord()
@@ -1058,6 +1090,8 @@
elif self.mode == 'init':
self.__initializing_record[field.field] = value
+ elif self.__resultset is None:
+ raise NoDataInBlockError(self)
else:
self.processTrigger('Pre-Change')
field.processTrigger('Pre-Change')
@@ -1087,6 +1121,9 @@
if self.mode == 'query':
return
+ if self.__resultset is None:
+ raise NoDataInBlockError(self)
+
self._focus_out()
self.__resultset.insertRecord(self._lastValues)
@@ -1109,6 +1146,9 @@
if self.mode == 'query':
return
+ if self.__resultset is None:
+ raise NoDataInBlockError(self)
+
self._focus_out()
self.__resultset.duplicateRecord(exclude=exclude, include=include)
@@ -1126,6 +1166,9 @@
if self.mode == 'query':
return
+ if self.__resultset is None:
+ raise NoDataInBlockError(self)
+
self.__resultset.current.delete()
if self._form.get_focus_block() is self:
@@ -1141,6 +1184,9 @@
if self.mode == 'query':
return
+ if self.__resultset is None:
+ raise NoDataInBlockError(self)
+
self.__resultset.current.undelete()
if self._form.get_focus_block() is self:
@@ -1202,6 +1248,9 @@
@param parameters: Function parameter dictionary.
"""
+ if self.__resultset is None:
+ raise NoDataInBlockError(self)
+
# Remember the current record; the record pointer is not reliable
# between postAll and requeryAll!
current = self.__resultset.current
@@ -1225,6 +1274,9 @@
user, for example to make gnue-appserver recalculate calculated fields.
"""
+ if self.__resultset is None:
+ raise NoDataInBlockError(self)
+
self._dataSourceLink.postAll()
self._dataSourceLink.requeryAll(False)
@@ -1252,6 +1304,9 @@
@returns: list of dictionaries (one per record)
"""
+ if self.__resultset is None:
+ return []
+
result = []
if not fieldnames:
fields = self._fieldMap.values()
@@ -1368,6 +1423,9 @@
if self.mode == 'query':
newRecord = 0
newRecordCount = 1
+ elif self.__resultset is None:
+ newRecord = 0
+ newRecordCount = 0
else:
newRecord = self.__resultset.getRecordNumber()
newRecordCount = self.__resultset.getRecordCount()
@@ -1434,6 +1492,10 @@
record_number = 1
record_count = 1
record_status = 'QRY'
+ elif self.__resultset is None:
+ record_number = 0
+ record_count = 0
+ record_status = 'NUL'
else:
record_number = self.__resultset.getRecordNumber()+1
record_count = self.__resultset.getRecordCount()
@@ -1670,3 +1732,14 @@
'datasource': source,
'block': block.name},
block._url, block._lineNumber)
+
+# =============================================================================
+
+class NoDataInBlockError(errors.ApplicationError):
+ """
+ There is no data in this block loaded.
+ """
+ def __init__(self, source, block):
+ message = u_("There is no data in block '%(block)s'")
+ errors.ApplicationError.__init__(self, message % {
+ 'block': block.name})
Modified: trunk/gnue-forms/src/GFObjects/GFEntry.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFEntry.py 2009-10-15 13:12:49 UTC (rev
9971)
+++ trunk/gnue-forms/src/GFObjects/GFEntry.py 2009-10-15 21:32:44 UTC (rev
9972)
@@ -111,7 +111,8 @@
def _is_navigable_(self, mode):
- return self.navigable and self._block.navigable and not self.hidden
+ return self.navigable and self._block.navigable \
+ and self._block.get_record_count() > 0 and not self.hidden
# -------------------------------------------------------------------------
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r9972 - trunk/gnue-forms/src/GFObjects,
reinhard <=