Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
    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)
Esempio n. 6
0
#!/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)