Changeset 366

Show
Ignore:
Timestamp:
05/21/08 19:17:50 (6 months ago)
Author:
johnbywater
Message:

Added protection for non-integer id values.

Files:

Legend:

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

    r362 r366  
    186186                id = int(id) 
    187187            except: 
    188                 msg = "Couldn't cast id to int for %s: %s" % (className, id) 
     188                msg = "Couldn't cast %s id to int: '%s'" % (className, id) 
    189189                raise Exception, msg 
    190190            recordClass = self.getRecordClass(className) 
     
    785785        return self.__class__.__name__ 
    786786         
     787    def getDomainClassName(self): 
     788        return self.meta.dom.name 
     789         
     790    getDomainClassName = classmethod(getDomainClassName) 
     791 
    787792    def getDomainClass(self): 
    788793        "Returns mapper's synonymous domain model class." 
    789         domClassName = self.meta.dom.name 
    790794        registry = RequiredFeature('DomainRegistry') 
    791         return registry.getDomainClass(domClassName
     795        return registry.getDomainClass(self.getDomainClassName()
    792796 
    793797    def loadDomainObject(self, loadedList, loadMapper=True): 
     
    11401144                    name += '_id' 
    11411145            if name == 'id': 
    1142                 value = int(value) 
     1146                try: 
     1147                    value = int(value) 
     1148                except: 
     1149                    className = self.getDomainClassName() 
     1150                    msg = "Couldn't cast %s id to int: '%s'" % (className, value) 
     1151                    raise Exception, msg 
    11431152            # todo: expand for all database systems 
    11441153            sqlSafeValue = sqlrepr(value, 'postgres')