Changeset 294

Show
Ignore:
Timestamp:
01/27/08 00:47:12 (10 months ago)
Author:
johnbywater
Message:

Added support for creating indexes of attributes.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/dm/__init__.py

    r283 r294  
    1 __version__ = '0.3.9
     1__version__ = '0.3.11
  • trunk/src/dm/db.py

    r292 r294  
    477477            if self.dbName: 
    478478                mapper.sqlmeta.table = self.dbName 
    479                 if self.isCached: 
    480                     mapper.sqlmeta.cacheValues = True 
     479            if self.isCached: 
     480                mapper.sqlmeta.cacheValues = True 
     481            # Todo: Figure indexes in sqlmeta. 
     482            #indexes = self.getSQLObjectIndexes() 
     483            #if indexes: 
     484            #    mapper.indexes = indexes 
    481485        return mapper 
    482486 
     
    497501                mapperAttributes[setMethodName] = setMethod 
    498502                mapperAttributes[getMethodName] = getMethod 
     503            if a.dom.isIndexed: 
     504                indexName = "%sIndex" % a.dbName 
     505                index = DatabaseIndex(mapperClassAttribute) 
     506                mapperAttributes[indexName] = index 
     507 
    499508        return mapperAttributes 
     509 
     510    def getSQLObjectIndexes(self): 
     511        indexes = [] 
     512        for mapperAttr in self.attributes: 
     513            if mapperAttr.dom.isIndexed: 
     514                indexes.append(DatabaseIndex(mapperAttr.dbName)) 
     515        return indexes 
    500516 
    501517    def createClass(self, name, base, attrs): 
    502518        newClass = type(name, (base,), attrs) 
    503         #for a in self.attributes: 
    504         #    if a.dom.isImageFile: 
    505         #        setMethodName = '_set_%s' % a.dbName 
    506         #        getMethodName = '_get_%s' % a.dbName 
    507         #        setMethod = a.dom.setFileContent 
    508         #        getMethod = a.dom.getFileContent 
    509         #        setattr(newClass, setMethodName, setMethod) 
    510         #        setattr(newClass, getMethodName, getMethod) 
    511519        return newClass 
    512520 
  • trunk/src/dm/dom/meta.py

    r291 r294  
    120120    isImageFile = False 
    121121 
    122     def __init__(self, typeName='', name='', dbName='', default=NotDefined, title='', comment='', isEditable=True, isHidden=False, isRequired=True, getChoices=None, **kwds): 
     122    def __init__(self, typeName='', name='', dbName='', default=NotDefined, title='', comment='', isEditable=True, isHidden=False, isRequired=True, getChoices=None, isTemporal=False, isIndexed=False, **kwds): 
    123123        self.typeName = typeName 
    124124        self.name = name 
     
    137137        self.isRequired = isRequired 
    138138        self.getChoices = getChoices 
     139        self.isIndexed = isIndexed 
     140        self.isTemporal = isTemporal 
    139141 
    140142    def __repr__(self): 
     
    486488    def getObjectByKey(self, key): 
    487489        domainRegister = self.getDomainRegister() 
     490        if self.dictionary[DB_MIGRATION_IN_PROGRESS]: 
     491            if hasattr(domainRegister, 'getAll'): 
     492                domainRegister = domainRegister.getAll() 
    488493        return domainRegister[key] 
    489494 
  • trunk/src/dm/domtest.py

    r275 r294  
    66import dm.dom.imagetest 
    77import dm.dom.registrytest 
     8import dm.dom.temporaltest 
    89 
    910def suite(): 
     
    1516        dm.dom.imagetest.suite(), 
    1617        dm.dom.registrytest.suite(), 
     18        dm.dom.temporaltest.suite(), 
    1719    ] 
    1820    return unittest.TestSuite(suites) 
  • trunk/src/dm/migrate.py

    r293 r294  
    149149        self.idMap = {} 
    150150        for className in self.importOrder: 
     151            print "Importing %s objects." % className 
    151152            domainClass = self.registry.getDomainClass(className) 
    152153            classRegister = domainClass.createRegister() 
     
    245246                    idMapKey = "%s %s" % (className, objectId) 
    246247                    self.idMap[idMapKey] = newObjectId 
     248                msg = "Importing %s #%s OK" % ( 
     249                    className, objectId 
     250                ) 
     251                print msg 
     252            print "Importing %s objects completed OK." % className 
     253        print "Imported all domain objects records OK." 
    247254 
    248255 
  • trunk/src/dm/testunit.py

    r156 r294  
    99import dm.builder 
    1010from dm.ioc import * 
     11import dm.dom.builder 
    1112 
    1213features.allowReplace = True 
     14 
    1315 
    1416class SystemModeError(Exception): 
    1517    pass 
    1618 
     19 
     20class ModelBuilder(dm.dom.builder.ModelBuilder): 
     21 
     22    def construct(self): 
     23        super(ModelBuilder, self).construct() 
     24        self.loadTemporalAttributed() 
     25 
     26    def loadTemporalAttributed(self): 
     27        from dm.dom.temporaltest import TemporalAttributed 
     28        self.registry.registerDomainClass(TemporalAttributed) 
     29        self.registry.temporalAttributeds = TemporalAttributed.createRegister() 
     30 
     31 
     32class ApplicationBuilder(dm.builder.ApplicationBuilder): 
     33 
     34    def findModelBuilder(self): 
     35        return ModelBuilder() 
     36 
     37 
    1738class ApplicationTestSuite(unittest.TestSuite): 
    1839 
    19     appBuilderClass = dm.builder.ApplicationBuilder 
     40    appBuilderClass = ApplicationBuilder 
    2041 
    2142    def buildApplication(self): 
  • trunk/src/dm/view/registrytest.py

    r272 r294  
    105105        self.view.userQuery = 'i' 
    106106        results = self.view.searchManipulatedRegister() 
    107         self.failUnlessEqual(len(results), 3
     107        self.failUnlessEqual(len(results), 3, [i.name for i in results]
    108108 
    109109class TestRegistrySearchView2(RegistryViewTestCase):