Commit 8059c7f6 authored by Boris Kocherov's avatar Boris Kocherov

sqlcatalog properties could not be changed through form edit if database connection does not exist.

parent f50e2113
......@@ -26,6 +26,7 @@ from AccessControl.SimpleObjectPolicies import ContainerAssertions
from BTrees.OIBTree import OIBTree
from App.config import getConfiguration
from BTrees.Length import Length
from Shared.DC.ZRDB.DA import DatabaseError
from Shared.DC.ZRDB.TM import TM
from Acquisition import aq_parent, aq_inner, aq_base
......@@ -1062,19 +1063,22 @@ class Catalog(Folder,
return self.sql_search_result_keys
def _getCatalogSchema(self, table=None):
result_list = []
try:
method_name = self.sql_catalog_schema
try:
method = getattr(self, method_name)
search_result = method(table=table)
for c in search_result:
result_list.append(c.Field)
except ConflictError:
except AttributeError:
pass
else:
try:
return tuple(c.Field for c in method(table=table))
except (ConflictError, DatabaseError):
raise
except:
LOG('SQLCatalog', WARNING, '_getCatalogSchema failed with the method %s' % method_name, error=sys.exc_info())
except Exception:
pass
return tuple(result_list)
LOG('SQLCatalog', WARNING, '_getCatalogSchema failed with the method %s'
% method_name, error=sys.exc_info())
return ()
@transactional_cache_decorator('SQLCatalog.getColumnIds')
def _getColumnIds(self):
......@@ -1148,18 +1152,22 @@ class Catalog(Folder,
Calls the show table method and returns dictionnary of
Field Ids
"""
keys = []
method_name = self.sql_catalog_tables
try:
method = getattr(self, method_name)
search_result = method()
for c in search_result:
keys.append(c[0])
except ConflictError:
except AttributeError:
pass
else:
try:
return [c[0] for c in method()]
except (ConflictError, DatabaseError):
raise
except:
except Exception:
pass
return keys
LOG('SQLCatalog', WARNING, 'getTableIds failed with the method %s'
% method_name, error=sys.exc_info())
return []
def getUIDBuffer(self, force_new_buffer=False):
global global_uid_buffer_dict
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment