def dotell_body(str, loc, toks,changed_only=False): model = toks[1] if model == '.': model = defaultmodel context = [x for x in toks[2:-6] if x != '/'] componentid = toks[-5] evidence_type = toks[-3] newval = toks[-1] print "Tell %s/%s/%s, %s:%s" % (model, context, componentid, evidence_type, newval) try: if model!=defaultmodel: global Personis import Personis as pmdns um = pmdns.Access(model=model, user=user, password=password) if changed_only: comp = um.ask(context=context, view=[componentid], resolver='default')[0] if comp.value == newval: return True # don't actually need to do the tell um.tell(context=context, componentid=componentid, evidence=Personis_base.Evidence(evidence_type=evidence_type, value=newval)) else: if changed_only: comp = currentum.ask(context=context, view=[componentid], resolver='default')[0] if comp.value == newval: return True # don't actually need to do the tell currentum.tell(context=context, componentid=componentid, evidence=Personis_base.Evidence(evidence_type=evidence_type, value=newval)) except: print 'tell failed' raise ParseException, (str, loc, "tell failed",0) return True
def askval(str, loc, toks): if toks[2] == '!': resolver = toks[1] del toks[1:3] else: resolver = "default" model = toks[1] if model == '.': model = defaultmodel context = [x for x in toks[2:-3] if x != '/'] componentid = toks[-2] print "AskVal -> resolver: %s, model: %s, context: %s, componentid:%s" % (resolver, model, context, componentid) if model != defaultmodel: global Personis import Personis as pmdns try: um = pmdns.Access(model=model, user=user, password=password) reslist = um.ask(context=context, view=[componentid], resolver=resolver) except: print "ask failed" return "-no model-" else: reslist = currentum.ask(context=context, view=[componentid], resolver=resolver) print "result: ", reslist[0].value if reslist[0].value == None: return "" else: return reslist[0].value
def do_model(self, line): """model modelname [modeldirectory]""" global um, umname, modeldir if not loggedin(self.username, self.userpassword, 'model'): return line = line.split() if len(line) == 0: if self.accesstype == "server": print "usage: model modelname" return else: print "usage: model modelname modeldirectory" return self.umname = line[0] if self.accesstype == "base": if len(line) != 2: print "usage: model modelname modeldirectory" return else: modeldir = line[1] try: um = Personis_a.Access(model=self.umname, modeldir=modeldir, authType="user", auth=self.username + ":" + self.userpassword) except: print "Failed to access model '%s', modeldir '%s', user '%s', password '%s'" % ( self.umname, modeldir, self.username, self.userpassword) return else: try: um = Personis.Access(model=self.umname, user=self.username, password=self.userpassword) except: print "Failed to access model '%s', user '%s', password '%s'" % ( self.umname, self.username, self.userpassword) raise return print "model '%s' open, access type is '%s'" % (self.umname, self.accesstype)
#!/usr/bin/env python import Personis import Personis_base from Personis_util import printcomplist # add some evidence to some components - use example1_asks to see it print ">>>> add evidence of Alice's names to his model" um = Personis.Access(model="Alice", user='******', password='******') # create a piece of evidence with demoex2 as source and Alice as value ev = Personis_base.Evidence(source="demoex2", evidence_type="explicit", value="Alice") # tell this as user Alice's first name um.tell(context=["Personal"], componentid='firstname', evidence=ev) ev = Personis_base.Evidence(source="demoex2", evidence_type="explicit", value="Smith") um.tell(context=["Personal"], componentid='lastname', evidence=ev) print "===================================================================" print ">>>> Now check the evidence list for Alice's names" reslist = um.ask(context=["Personal"], view='fullname') printcomplist(reslist, printev="yes")
from Personis_util import showobj, printcomplist def printAskContext(info): (cobjlist, contexts, theviews, thesubs) = info printcomplist(cobjlist, printev="yes") print "Contexts: %s" % str(contexts) print "Views: %s" % str(theviews) print "Subscriptions: %s" % str(thesubs) print "===================================================================" print "Examples that show how app registration works" print "===================================================================" um = Personis.Access(model="Alice", user='******', password='******') print ">>>> List the registered apps (should be none):" apps = um.listapps() print apps print ">>>> Try and set permissions on an unregistered app:" try: um.setpermission(context=["Personal"], app="MyHealth", permissions={ 'ask': True, 'tell': False }) except Exception as e: print "setpermission failed with exception : %s\n" % (e)
#!/usr/bin/env python import Personis import Personis_base from urllib2 import urlopen import json, time u = urlopen("http://wbsapi.withings.net/measure?action=getmeas&userid=14044&publickey=a724d144737439b5&limit=1") res = u.read() res = json.jsonToObj(res) mtime = res['body']['measuregrps'][0]['date'] weight = res['body']['measuregrps'][0]['measures'][0]['value']/1000.0 print "Time:", time.ctime(mtime), "Weight:", weight um = Personis.Access(model="bob", user='******') ev = Personis_base.Evidence(source="withings", evidence_type="given", value=weight, time=mtime) um.tell(context=["Personal", "Health"], componentid='weight', evidence=ev)