Package teamwork :: Package agent :: Module audit
[hide private]
[frames] | no frames]

Source Code for Module teamwork.agent.audit

 1  from support import * 
 2   
3 -class Auditor(Supporter):
4 """Mix-in entity class that supports an audit trail""" 5
6 - def __init__(self):
7 self.history = {}
8
9 - def formatHistory(self,entry):
10 str = '%s by %s at %s' % \ 11 (string.capitalize(entry['what']), 12 entry['who'], 13 time.strftime('%x %X',time.localtime(entry['when']))) 14 return str
15
16 - def getHistory(self,key):
17 return map(self.formatHistory,self.__getHistory(key))
18
19 - def __getHistory(self,key):
20 """Returns the history of changes to this entity's state/goal value""" 21 try: 22 history = self.history[key] 23 except AttributeError: 24 history = [] 25 self.history = {key:history} 26 except KeyError: 27 history = [] 28 self.history[key] = history 29 return history
30
31 - def extendHistory(self,entry,key=None):
32 if key: 33 history = self.__getHistory(key) 34 if len(history) > 0: 35 lastEntry = history[0] 36 if lastEntry['who'] != entry['who'] \ 37 or lastEntry['what'] != entry['what'] \ 38 or entry['what'] == 'stepped': 39 # New entry 40 history.insert(0,entry) 41 elif lastEntry['what'] == 'modified': 42 lastEntry['when'] = entry['when'] 43 else: 44 history.append(entry) 45 else: 46 for key in self.getStateFeatures(): 47 self.extendHistory(entry,key) 48 for key in self.getGoals(): 49 self.extendHistory(entry,key) 50 for entity in self.getEntityBeliefs(): 51 entity.extendHistory(entry)
52
53 - def setState(self,feature,value,log=None):
54 """Sets this entity's state value for the specified feature to 55 the provided float value""" 56 Supporter.setState(self,feature,value) 57 if log: 58 self.extendHistory(log,feature)
59