Changeset 246
- Timestamp:
- 08/18/07 19:03:33 (1 year ago)
- Files:
-
- trunk/setup.py (modified) (1 diff)
- trunk/src/dm/__init__.py (modified) (1 diff)
- trunk/src/dm/accesscontrol.py (modified) (4 diffs)
- trunk/src/dm/db.py (modified) (12 diffs)
- trunk/src/dm/dom/base.py (modified) (4 diffs)
- trunk/src/dm/dom/meta.py (modified) (6 diffs)
- trunk/src/dm/view/base.py (modified) (9 diffs)
- trunk/src/dm/view/basetest.py (modified) (2 diffs)
- trunk/src/dm/view/manipulator.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/setup.py
r217 r246 34 34 """, 35 35 classifiers = [ 36 'Development Status :: 3 - Alpha',36 'Development Status :: 4 - Beta', 37 37 'Environment :: Console', 38 38 'Environment :: Web Environment', trunk/src/dm/__init__.py
r240 r246 1 __version__ = '0. 2'1 __version__ = '0.3dev' trunk/src/dm/accesscontrol.py
r130 r246 86 86 def logAccessAttempt(self, person, actionName, protectedObject): 87 87 if self.debug: 88 if self.person:89 personName = self.person.name88 if person: 89 personName = person.name 90 90 else: 91 91 personName = 'None' … … 125 125 126 126 def assertAccessAuthorised(self): 127 raise AccessNotAuthorised("Access not authorised, by default.") 127 msg = "Access not authorised on any role and denied by default." 128 raise AccessNotAuthorised(msg) 128 129 129 130 def isRoleAuthorised(self, role): 130 131 if self.isPermissionGranted(role.grants): 131 132 if self.debug: 132 msg = "Access authorised by '%s' role." % role.name 133 self.logger.debug(msg) 134 return True 135 else: 136 if self.debug: 137 msg = "Access not authorised by '%s' role." % role.name 133 msg = "Access authorised by '%s' associated role." % ( 134 role.name 135 ) 136 self.logger.debug(msg) 137 return True 138 else: 139 if self.debug: 140 msg = "Access not authorised by '%s' associated role." % ( 141 role.name 142 ) 138 143 self.logger.debug(msg) 139 144 return False … … 223 228 if self.isPermissionGranted(self.person.grants): 224 229 if self.debug: 225 msg = "Access personally authorised to person."226 self.logger.debug(msg) 227 return True 228 else: 229 if self.debug: 230 msg = "Access not personally authorised to person."230 msg = "Access authorised by personal role." 231 self.logger.debug(msg) 232 return True 233 else: 234 if self.debug: 235 msg = "Access not authorised by personal role." 231 236 self.logger.debug(msg) 232 237 return False … … 235 240 if self.isPermissionGranted(self.getVisitor().grants): 236 241 if self.debug: 237 msg = "Access personally authorised to visitor."238 self.logger.debug(msg) 239 return True 240 else: 241 if self.debug: 242 msg = "Access not personally authorised to visitor."242 msg = "Access authorised by visitor personal role." 243 self.logger.debug(msg) 244 return True 245 else: 246 if self.debug: 247 msg = "Access not authorised by visitor personal role." 243 248 self.logger.debug(msg) 244 249 return False trunk/src/dm/db.py
r181 r246 49 49 logger = RequiredFeature('Logger') 50 50 51 dbdebug = False51 moddebug = False 52 52 53 53 class ConnectionFacade(object): … … 105 105 "Retreive record of domain object." 106 106 record = None 107 if dbdebug and debug:107 if moddebug and debug: 108 108 logger.debug('Finding %s record in database.' % (className)) 109 109 if self.isSelectById(kwds) and len(kwds) == 1: … … 187 187 else: 188 188 records = self.getRecordClass(className).select() 189 if dbdebug and debug:189 if moddebug and debug: 190 190 logger.debug('Listed %s records from database.' % (className)) 191 191 return records … … 194 194 "Create new recorded domain object." 195 195 newRecord = self.createRecord(className, *args, **kwds) 196 if dbdebug and debug:196 if moddebug and debug: 197 197 message = "Created new db record. %s" % newRecord 198 198 logger.debug(message) … … 671 671 self.loadDomainObject(loadedList) 672 672 else: 673 if dbdebug and debug:673 if moddebug and debug: 674 674 message = "Avoided circular loading of %s #%s." % ( 675 675 self.getClassName(), self.id … … 677 677 logger.debug(message) 678 678 else: 679 if dbdebug and debug:679 if moddebug and debug: 680 680 message = "Reusing %s #%s values." % ( 681 681 self.getClassName(), self.id … … 687 687 "Reinstantiates pre-recorded domain object." 688 688 domainClass = self.getDomainClass() 689 if dbdebug and debug:689 if moddebug and debug: 690 690 message = "Reinstantiating %s from record." % self.getClassName() 691 691 logger.debug(message) … … 710 710 def loadMapperAttributesFromRecord(self): 711 711 "Maps record values to mapper attributes." 712 if dbdebug and debug:712 if moddebug and debug: 713 713 message = "Reloading mapper attributes from record." 714 714 logger.debug(message) … … 716 716 717 717 def loadDomainObjectFromMapperAttributes(self, loadedList): 718 if dbdebug and debug:718 if moddebug and debug: 719 719 message = "Loading %s from mapper attributes..." % ( 720 720 self.getClassName() … … 725 725 dbName = metaAttr.dbName 726 726 domName = metaAttr.domName 727 if dbdebug and debug:727 if moddebug and debug: 728 728 message = "Loading %s %s attribute." % ( 729 729 self.getClassName(), domName, … … 754 754 mappedValue = getattr(self, dbName) 755 755 setattr(self.domainObject, domName, mappedValue) 756 if debug:756 if moddebug and debug: 757 757 message = "Loaded %s from record #%s" % ( 758 758 self.getClassName(), self.id, … … 781 781 isChanged = True 782 782 if isChanged: 783 if dbdebug and debug:783 if moddebug and debug: 784 784 message = "Updating RDBMS with %s mapper value." % ( 785 785 self.meta.domName trunk/src/dm/dom/base.py
r222 r246 6 6 7 7 debug = RequiredFeature('Debug') 8 domdebug = False8 moddebug = False 9 9 10 10 class DomainBase(object): … … 73 73 if self.isCached: 74 74 if key in self.cache: 75 if domdebug and debug:75 if moddebug and debug: 76 76 message = "Cache hit for key: '%s'" % key 77 77 self.log.debug(message) 78 78 return self.readCache(key) 79 79 else: 80 if domdebug and debug:80 if moddebug and debug: 81 81 message = "Cache miss for key: '%s'" % key 82 82 self.log.debug(message) 83 if domdebug and debug:83 if moddebug and debug: 84 84 message = "Retrieving from %s record for key: '%s'" % (self, key) 85 85 if message == 'WeekEarmarkTemplate': … … 572 572 return dictValues 573 573 574 def asRequestParams(self ):574 def asRequestParams(self, attrNames=None): 575 575 requestParams = MultiValueDict() 576 576 for attr in self.meta.attributes: 577 577 attrName = attr.name 578 if (attrNames != None) and (attrName not in attrNames): 579 continue 578 580 attrValueRepr = attr.createValueRepr(self) 579 581 if attr.isList(): … … 763 765 if not('startsWithAttributeName' in kwds and kwds['startsWithAttributeName']): 764 766 kwds['startsWithAttributeName'] = self.startsWithAttributeName 765 if domdebug and debug:767 if moddebug and debug: 766 768 className = self.registerClass.__name__ 767 769 message = "Creating '%s' register with kwds: %s" % (className, kwds) trunk/src/dm/dom/meta.py
r230 r246 12 12 from dm.dictionarywords import DB_MIGRATION_IN_PROGRESS 13 13 import os 14 15 moddebug = True 14 16 15 17 class NotDefined(object): … … 201 203 202 204 def makeValueFromMultiValueDict(self, multiValueDict): 203 return multiValueDict.get(self.name, '') 205 attrValue = multiValueDict.get(self.name, '') 206 if moddebug and self.debug: 207 msg = "Made %s value: %s" % (self.name, attrValue) 208 self.logger.debug(msg) 209 return attrValue 204 210 205 211 … … 240 246 passwordText = multiValueDict[self.name] 241 247 if self.dictionary[DB_MIGRATION_IN_PROGRESS]: 242 returnpasswordText248 attrValue = passwordText 243 249 elif passwordText: 244 return self.makeDigest(passwordText) 245 else: 246 return '' 250 attrValue = self.makeDigest(passwordText) 251 else: 252 attrValue = '' 253 if moddebug and self.debug: 254 msg = "Made %s value: %s" % (self.name, attrValue) 255 self.logger.debug(msg) 256 return attrValue 247 257 248 258 def makeDigest(self, clearText): … … 265 275 def makeValueFromMultiValueDict(self, multiValueDict): 266 276 dateTimeString = multiValueDict[self.name] 267 return self.convertor.fromHTML(dateTimeString) 277 attrValue = self.convertor.fromHTML(dateTimeString) 278 if moddebug and self.debug: 279 msg = "Made %s value: %s" % (self.name, attrValue) 280 self.logger.debug(msg) 281 return attrValue 268 282 269 283 def createValueRepr(self, domainObject): … … 292 306 boolVal = multiValueDict[self.name] or False 293 307 if boolVal.__class__ == False.__class__: 294 returnboolVal308 attrValue = boolVal 295 309 elif boolVal.__class__ == ''.__class__: 296 return boolVal.lower() in self.trueStrings 297 else: 298 return False 310 attrValue = boolVal.lower() in self.trueStrings 311 else: 312 attrValue = False 313 if moddebug and self.debug: 314 msg = "Made %s value: %s" % (self.name, attrValue) 315 self.logger.debug(msg) 316 return attrValue 299 317 300 318 def createValueRepr(self, domainObject): … … 309 327 310 328 def makeValueFromMultiValueDict(self, multiValueDict): 311 return int(multiValueDict[self.name]) 329 attrValueKey = multiValueDict[self.name] 330 if attrValueKey: 331 return int(attrValueKey) 332 else: 333 if hasattr(self, 'default'): 334 attrValueKey = self.default 335 else: 336 return None 312 337 313 338 trunk/src/dm/view/base.py
r233 r246 37 37 authCookieDomain = '.' + dictionary[DOMAIN_NAME] 38 38 39 def __init__(self, request=None, **kwds):39 def __init__(self, request=None, masterView=None, **kwds): 40 40 self.request = request 41 self.masterView = masterView 41 42 self.response = None 43 self.path = None 42 44 self.session = None 43 45 # todo: clarify meaning of redirect and redirectPath … … 45 47 self.redirectPath = '' 46 48 self.returnPath = '' 49 self.initFromMaster() 47 50 # todo: clean up all this guff 48 51 self._canReadSystem = None … … 68 71 self._canDeleteService = None 69 72 73 def initFromMaster(self): 74 if self.masterView != None: 75 self.path = self.masterView.path 76 self.session = self.masterView.session 77 70 78 def getMethodName(self): 71 79 if self.request.POST: … … 342 350 343 351 def getResponse(self): 344 return HttpResponse('Sorry, the getResponse() method is not implemented on class %s' % self.__class__) 352 msg = 'The getResponse() method is not implemented on class %s' % ( 353 self.__class__ 354 ) 355 return HttpResponse(msg) 345 356 346 357 347 358 class SessionView(ControlledAccessView): 348 359 349 #templateLoader = TemplateLoader()350 360 templatePath = None 351 361 majorNavigation = [] … … 356 366 def __init__(self, **kwds): 357 367 super(SessionView, self).__init__(**kwds) 358 self.template = None359 self.context = None368 self.template = None 369 self.context = None 360 370 self.sessionCookieString = '' 361 371 self.person = None … … 383 393 384 394 def setPathFromRequest(self): 395 if self.path != None: return 385 396 uriPrefix = self.dictionary[URI_PREFIX] 386 397 requestPath = self.request.path … … 392 403 def readRequestSession(self): 393 404 "Determines session from a cookie in request." 405 if self.session != None: 406 return 394 407 cookieName = self.authSessionCookieName 395 408 cookieString = self.request.COOKIES.get(cookieName, '') 396 409 if not cookieString: 397 410 if self.debug: 398 self.logger.debug('No authentication session cookie in request.') 411 msg = 'No authentication session cookie in request.' 412 self.logger.debug(msg) 399 413 return 400 414 if cookieString == self.noAuthSessionCookieString: 401 415 if self.debug: 402 self.logger.debug('Unauthenticated session cookie in request.') 416 msg = 'Unauthenticated session cookie in request.' 417 self.logger.debug(msg) 403 418 return 404 419 if self.debug: 405 self.logger.debug('Session cookie in request...') 420 msg = 'Session cookie in request... (%s)' % ( 421 self.__class__.__name__ 422 ) 423 self.logger.debug(msg) 406 424 self.setSessionFromCookieString(cookieString) 407 425 if self.session: 408 426 self.session.updateLastVisited() 409 427 if moddebug and self.debug: 410 self.logger.debug('Session re-established: %s' % self.session) 428 msg = 'Session re-established: %s' % self.session 429 self.logger.debug(msg) 411 430 else: 412 431 if moddebug and self.debug: 413 self.logger.debug('No session for cookieString: %s' % cookieString) 432 msg = 'No session for cookieString: %s' % cookieString 433 self.logger.debug(msg) 414 434 415 435 def getRequestParam(self, paramName, default=None): … … 429 449 # self.requestParams.update(self.request.FILES) 430 450 if moddebug and self.debug: 431 self.logger.debug("Request params: %s" % self.requestParams) 451 msg = "Request params: %s" % self.requestParams 452 self.logger.debug(msg) 432 453 return self.requestParams 433 454 434 455 def getZeroRequestParams(self): 435 456 return {} 457 #return MultiValueDict() 436 458 437 459 def getResponse(self): … … 790 812 def getInitialParams(self): 791 813 return {} 814 #return MultiValueDict() 792 815 793 816 def isSubmissionRequest(self): trunk/src/dm/view/basetest.py
r208 r246 81 81 self.viewSession = None 82 82 self.initViewSession() 83 self.GET = {} 84 self.POST = {} 85 self.COOKIES = {} 83 self.GET = MultiValueDict() 84 self.POST = MultiValueDict() 85 self.COOKIES = MultiValueDict() 86 #self.GET = {} 87 #self.POST = {} 88 #self.COOKIES = {} 86 89 self.initCookies() 87 90 self.initPost() … … 116 119 def buildRequest(self): 117 120 request = HttpRequest() 118 request.GET.update(self.GET) 119 request.POST.update(self.POST) 120 request.COOKIES.update(self.COOKIES) 121 #request.GET.update(self.GET) 122 #request.POST.update(self.POST) 123 #request.COOKIES.update(self.COOKIES) 124 request.GET = self.GET 125 request.POST = self.POST 126 request.COOKIES = self.COOKIES 121 127 request.path = self.requestPath 122 128 return request trunk/src/dm/view/manipulator.py
r222 r246 154 154 field_name=metaAttr.name, 155 155 is_required=isFieldRequired, 156 cols=30, 157 rows=8, 156 158 ) 157 159 elif metaAttr.typeName == 'Password':
