Esempio n. 1
0
def test_UpdateUserAsset(httpConnection, data, expected):
    dataToSend = dict()
    if "user" in data:
        try:
            r = httpConnection.POST("/add-user", data["user"])
        except Exception:
            pytest.fail("Failed to send POST request")
            return

        if r.status_code != 201:
            pytest.fail(f"Failed to add user.\nDetails: {r.text}")
            return

        response = common.getResponse(r.text, expected)
        if response is None:
            return None
        dataToSend["user-id"] = response["id"]
        dataToSend["user-data"] = response["assets"]
        for k, v in data["details_entry"].items():
            dataToSend["user-data"]["datamap"][k] = v

    try:
        r = httpConnection.POST("/update-user-assets", dataToSend)
    except Exception:
        pytest.fail("Failed to send POST request")
        return

    response = common.getResponse(r.text, expected)
    if response is None:
        return None
    if response != expected:
        pytest.fail(f"Request failed\nStatus code: \
            {r.status_code}\nReturned: {response}\nExpected: {expected}")
Esempio n. 2
0
def test_GetProducts(httpConnection, data, expected):
    uuidList = list()
    userUUID = common.addUser(data, httpConnection)
    if userUUID is None:
        return

    if "product" in data:
        for element in data["product"]:
            if "name" in element:
                dataToSend = dict()
                dataToSend["product"] = element
                if userUUID == "":
                    pytest.fail("Missing user test data")
                    return
                dataToSend["user"] = userUUID
                try:
                    r = httpConnection.POST("/add-product", dataToSend)
                except Exception:
                    pytest.fail("Failed to send POST request")
                    return

                if r.status_code != 201:
                    pytest.fail(f"Failed to add product.\nDetails: {r.text}")
                    return

                response = common.getResponse(r.text, expected)
                if response is None:
                    return None
                uuidList.append(response["id"])
            else:
                uuidList.append(element["product_id"])

    try:
        r = httpConnection.GET("/get-products", {"ids": uuidList})
    except Exception:
        pytest.fail("Failed to send GET request")
        return

    response = common.getResponse(r.text, expected)
    if response is None:
        return None
    if r.status_code == 200:
        try:
            for index, product in enumerate(response):
                status = handleProductIDCheck(product, expected[index])
                if status is None:
                    return
                if response[index] != expected[index]:
                    pytest.fail(f"Test failed\n\
Returned: {response[index]}\nExpected: {expected[index]}")
            return
        except Exception as e:
            pytest.fail(f"Failed to compare results.\nDetails: {e}")
            return

    if response != expected:
        pytest.fail(f"Request failed\nStatus code: \
            {r.status_code}\nReturned: {response}\nExpected: {expected}")
Esempio n. 3
0
def test_GetUsers(httpConnection, data, expected):
    uuidList = list()
    for element in data:
        if "username" in element:
            try:
                r = httpConnection.POST("/add-user", element)
            except Exception:
                pytest.fail("Failed to send POST request")
                return

            response = common.getResponse(r.text, expected)
            if response is None:
                return None
            if r.status_code != 201:
                pytest.fail(f"Failed to add user.\nDetails: {response}")
                return

            uuidList.append(response["id"])
        else:
            uuidList.append(element["id"])

    try:
        r = httpConnection.GET("/get-users", {"ids": uuidList})
    except Exception:
        pytest.fail("Failed to send GET request")
        return

    response = common.getResponse(r.text, expected)
    if response is None:
        return None
    if r.status_code == 200:
        try:
            for index, user in enumerate(response):
                status = handleUserIDCheck(user, expected[index])
                if status is None:
                    return

                if response[index] != expected[index]:
                    pytest.fail(f"Test failed\n\
Returned: {response[index]}\nExpected: {expected[index]}")
            return
        except Exception as e:
            pytest.fail(f"Failed to compare results.\nDetails: {e}")
            return

    if response != expected:
        pytest.fail(f"Request failed\nStatus code: \
            {r.status_code}\nReturned: {response}\nExpected: {expected}")
Esempio n. 4
0
File: web.py Progetto: vehsakul/rzd
def formResults(reqList, opener, item = None):

  if item:
    trainNum4mail = item.reqProps[5]

  st0  = urllib.quote(reqList[0].encode('utf-8'))
  st1  = urllib.quote(reqList[2].encode('utf-8'))
  id0  = reqList[1]
  id1  = reqList[3]
  date = reqList[4]

  if (not id0 or not id1):
    return None

  req1 = 'http://pass.rzd.ru/timetable/public/ru?STRUCTURE_ID=735&layer_id=5371&dir=0&tfl=3&checkSeats=0&withoutSeats=y&st0=%s&code0=%s&dt0=%s&st1=%s&code1=%s&dt1=%s' % (st0, id0, date, st1, id1, date)

  out = '<html><body><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'

  r = json.loads(getResponse(req1, opener))
  if (r['result'].lower()=='ok'):
    try:
      out += r['tp'][0]['msgList'][0]['message'] + '<br>'
    except IndexError, e:
      logging.error('msgList Error: ' + str(r))
    return out
Esempio n. 5
0
def test_CreateProduct(httpConnection, data, expected):
    userUUID = common.addUser(data, httpConnection)
    if userUUID is None:
        return

    dataToSend = dict()
    dataToSend["product"] = data["product"]
    dataToSend["user"] = userUUID

    try:
        r = httpConnection.POST("/add-product", dataToSend)
    except Exception:
        pytest.fail("Failed to send POST request")
        return

    response = common.getResponse(r.text, expected)
    if response is None:
        return None
    if r.status_code == 201:
        if response["name"] != expected["name"]:
            pytest.fail(
                f"Test failed\nReturned: {response}\nExpected: {expected}")
        return

    if response != expected:
        pytest.fail(f"Request failed\nStatus code: \
            {r.status_code}\nReturned: {response}\nExpected: {expected}")
Esempio n. 6
0
def test_GetProduct(httpConnection, data, expected):
    userUUID = common.addUser(data, httpConnection)
    if userUUID is None:
        return

    productUUID = common.addProduct(data, userUUID, httpConnection)
    if productUUID is None:
        return

    try:
        r = httpConnection.GET("/get-product-by-id", {"id": productUUID})
    except Exception:
        pytest.fail("Failed to send GET request")
        return

    response = common.getResponse(r.text, expected)
    if response is None:
        return None
    if r.status_code == 200:
        try:
            status = handleProductIDCheck(response, expected)
            if status is None:
                return

            if response != expected:
                pytest.fail(
                    f"Test failed\nReturned: {response}\nExpected: {expected}")
            return
        except Exception as e:
            pytest.fail(f"Failed to compare results.\nDetails: {e}")
            return

    if response != expected:
        pytest.fail(f"Request failed\nStatus code: \
            {r.status_code}\nReturned: {response}\nExpected: {expected}")
Esempio n. 7
0
def test_GetUser(httpConnection, data, expected):
    uuid = ""
    if "username" in data:
        try:
            r = httpConnection.POST("/add-user", data)
        except Exception:
            pytest.fail("Failed to send POST request")
            return

        if r.status_code != 201:
            pytest.fail(f"Failed to add user.\nDetails: {r.text}")
            return

        response = common.getResponse(r.text, expected)
        if response is None:
            return None
        uuid = response["id"]
    else:
        uuid = data["id"]

    try:
        r = httpConnection.GET("/get-user-by-id", {"id": uuid})
    except Exception:
        pytest.fail("Failed to send GET request")
        return

    response = common.getResponse(r.text, expected)
    if response is None:
        return None
    if r.status_code == 200:
        try:
            zeroID = '00000000-0000-0000-0000-000000000000'
            if response["username"] != expected["username"] or \
                response["email"] != expected["email"] or \
                response["settings"]["id"] == '' or \
                response["settings"]["id"] == zeroID or \
                response["assets"]["id"] == '' or \
                    response["assets"]["id"] == zeroID:
                pytest.fail(
                    f"Test failed\nReturned: {response}\nExpected: {expected}")
            return
        except Exception as e:
            pytest.fail(f"Failed to compare results.\nDetails: {e}")
            return
    if response != expected:
        pytest.fail(f"Request failed\nStatus code: \
            {r.status_code}\nReturned: {response}\nExpected: {expected}")
Esempio n. 8
0
def test_AddProductUsers(httpConnection, data, expected):
    partnerUUIDs = list()

    userUUID = common.addUser(data, httpConnection)
    if userUUID is None:
        return

    productUUID = common.addProduct(data, userUUID, httpConnection)
    if productUUID is None:
        return

    if "partner_user" in data:
        for user in data["partner_user"]:
            try:
                r = httpConnection.POST("/add-user", user["user"])
            except Exception:
                pytest.fail("Failed to send POST request")
                return

            response = common.getResponse(r.text, expected)
            if response is None:
                return None
            if r.status_code != 201:
                pytest.fail(f"Failed to add product.\nDetails: {response}")
                return

            partnerUUID = dict()
            partnerUUID["id"] = response["id"]
            partnerUUID["privilege"] = user["privilege"]
            partnerUUIDs.append(partnerUUID)

    dataToSend = dict()
    dataToSend["product_id"] = productUUID
    dataToSend["users"] = partnerUUIDs
    try:
        r = httpConnection.POST("/add-product-user", dataToSend)
    except Exception:
        pytest.fail("Failed to send POST request")
        return

    response = common.getResponse(r.text, expected)
    if response is None:
        return None
    if response != expected:
        pytest.fail(f"Request failed\nStatus code: \
            {r.status_code}\nReturned: {response}\nExpected: {expected}")
Esempio n. 9
0
def test_GetUserByEmail(httpConnection, data, expected):
    email = ""
    if "username" in data:
        try:
            r = httpConnection.POST("/add-user", data)
        except Exception:
            pytest.fail("Failed to send POST request")
            return

        response = common.getResponse(r.text, expected)
        if response is None:
            return None
        if r.status_code != 201:
            pytest.fail(f"Failed to add user.\nDetails: {response}")
            return

        email = response["email"]
    else:
        email = data["email"]

    try:
        r = httpConnection.GET("/get-user-by-email", {"email": email})
    except Exception:
        pytest.fail("Failed to send GET request")
        return

    response = common.getResponse(r.text, expected)
    if response is None:
        return None
    if r.status_code == 200:
        try:
            status = handleUserIDCheck(response, expected)
            if status is None:
                return

            if response != expected:
                pytest.fail(
                    f"Test failed\nReturned: {response}\nExpected: {expected}")
        except Exception as e:
            pytest.fail(f"Failed to compare results.\nDetails: {e}")
            return

    if response != expected:
        pytest.fail(f"Request failed\nStatus code: \
            {r.status_code}\nReturned: {response}\nExpected: {expected}")
Esempio n. 10
0
def test_UpdateProjectAsset(httpConnection, data, expected):
    dataToSend = dict()
    userUUID = common.addUser(data, httpConnection)
    if userUUID is None:
        return

    productUUID = common.addProduct(data, userUUID, httpConnection)
    if productUUID is None:
        return

    dataToSend["project"] = data["project"]
    dataToSend["product_id"] = productUUID
    dataToSend["owner_id"] = userUUID
    if "project" in data:
        try:
            r = httpConnection.POST("/add-project", dataToSend)
        except Exception:
            pytest.fail("Failed to send POST request")
            return

        if r.status_code != 201:
            pytest.fail(f"Failed to add project.\nDetails: {r.text}")
            return
        response = common.getResponse(r.text, expected)
        if response is None:
            return None

        dataToSend = dict()
        dataToSend["project"] = response
        for k, v in data["details_entry"].items():
            dataToSend["project"]["assets"]["datamap"][k] = v

    try:
        r = httpConnection.POST("/update-project-assets", dataToSend)
    except Exception:
        pytest.fail("Failed to send POST request")
        return

    response = common.getResponse(r.text, expected)
    if response is None:
        return None
    if response != expected:
        pytest.fail(f"Request failed\nStatus code: \
            {r.status_code}\nReturned: {response}\nExpected: {expected}")
Esempio n. 11
0
File: web.py Progetto: vehsakul/rzd
def getCityId(city, s):
  req = 'http://pass.rzd.ru/suggester?lang=ru&stationNamePart=%s' % urllib.quote(city.encode('utf-8'))
  respData = getResponse(req)
  try:
    rJson = json.loads(respData)
    for item in rJson:
      if item['name'].lower() == city.lower():
        s.response.out.write(u'Найден: %s : %s<br>' % (item['name'], item['id']))
        return item['id']
  except ValueError, e:
    logging.error('getCityId err: %s %s' % (respData, city))
Esempio n. 12
0
def test_Authenticate(httpConnection, data, expected):
    uuid = ""
    email = "empty"
    password = "******"
    if "user" in data:
        try:
            r = httpConnection.POST("/add-user", data["user"])
        except Exception:
            pytest.fail("Failed to send POST request")
            return

        response = common.getResponse(r.text, expected)
        if response is None:
            return None
        if r.status_code != 201:
            pytest.fail(f"Failed to add user.\nDetails: {response}")
            return

        uuid = response["id"]
        email = data["login"]["email"]
        password = data["login"]["password"]
    else:
        uuid = data["id"]

    try:
        r = httpConnection.GET("/authenticate", {
            "id": uuid,
            "email": email,
            "password": password
        })
    except Exception:
        pytest.fail("Failed to send GET request")
        return

    response = common.getResponse(r.text, expected)
    if response is None:
        return None
    if response != expected:
        pytest.fail(f"Request failed\nStatus code: \
            {r.status_code}\nReturned: {response}\nExpected: {expected}")
Esempio n. 13
0
def test_CreateUser(httpConnection, data, expected):
    try:
        r = httpConnection.POST("/add-user", data)
    except Exception:
        pytest.fail("Failed to send POST request")
        return

    response = common.getResponse(r.text, expected)
    if response is None:
        return None
    if r.status_code == 201:
        if response["username"] != expected["username"] or \
          response["email"] != expected["email"]:
            pytest.fail(
                f"Test failed\nReturned: {response}\nExpected: {expected}")
        return

    if response != expected:
        pytest.fail(f"Request failed\nStatus code: \
            {r.status_code}\nReturned: {response}\nExpected: {expected}")
Esempio n. 14
0
File: web.py Progetto: vehsakul/rzd
    def get(self):
        global suggestDict
        suggOut = '[]'

        try:
          station = self.request.get('stationNamePart')
          stationKey = station[:3]

          sStations = set()

          if stationKey in suggestDict:
            sStations = suggestDict[stationKey]
          else:
            req = 'http://pass.rzd.ru/suggester?lang=ru&stationNamePart=%s' % urllib.quote(station.encode('utf-8'))
            respData = getResponse(req)

            if len(respData) > 0:
              rJson = json.loads(respData)
              for item in rJson:
                sStations.add(item['name'])

          suggOut = '['              
          lStations = self.sort4Find(sStations, station.lower())[:15]
          cnt = 1
          for item in lStations:
            suggOut += '{"id":"%d","label":"%s","value":"%s"},' % (cnt, item, item)
            cnt += 1
          suggOut = suggOut[:-1]
          suggOut += ']'

          if len(suggestDict) < suggestDictSize: #one more stub !!!
            suggestDict[stationKey] = sStations

          self.response.out.write(suggOut)

        except (TypeError, ValueError):
          self.response.out.write(suggOut)
Esempio n. 15
0
def test_DeleteProductUser(httpConnection, data, expected):
    userUUID = common.addUser(data, httpConnection)
    if userUUID is None:
        return

    productUUID = common.addProduct(data, userUUID, httpConnection)
    if productUUID is None:
        return

    dataToSend = dict()
    dataToSend["product_id"] = productUUID
    dataToSend["user_id"] = userUUID
    try:
        r = httpConnection.POST("/delete-product-user", dataToSend)
    except Exception:
        pytest.fail("Failed to send POST request")
        return

    response = common.getResponse(r.text, expected)
    if response is None:
        return None
    if response != expected:
        pytest.fail(f"Request failed\nStatus code: \
            {r.status_code}\nReturned: {response}\nExpected: {expected}")
Esempio n. 16
0
def moodReport(inCmd, inStr, matches=[[], []]):
    from common import say, getResponse
    from Fermi import stateSummary
    from satisfactionMaximization import IV

    reportType = "short"
    if "report" in inStr:
        reportType = "full"

    PREVMOOD = GLOB['PREVMOOD']
    MOOD = GLOB['MOOD']
    INGESTED = GLOB['INGESTED']

    if reportType == "short":
        #mVec = copy.deepcopy(MOOD)
        #mVec = fullMoodVec(mVec)

        Fm = fullMoodVec(MOOD, pronoun=True)  # weight vector
        Fm.sort(key=lambda tup: tup[1])
        Fm.reverse()

        #curFace = getFace(MOOD)
        #rStr = "I am feeling "+curFace[2]+"."

        rStr = "I am feeling " + Fm[0][0]
        if Fm[0][0] >= 0:
            rStr += ", but"
        else:
            rStr += ", and"

        #print "HERE"

        # sort by weight
        Fw = fullMoodVec(IV(), colloquial=True)  # weight vector
        Fw.sort(key=lambda tup: tup[1])
        Fw.reverse()

        topNeed = Fw[0]
        if topNeed[1] >= 0.85:
            rStr += " I am badly in need of some " + topNeed[0] + '.'
        elif topNeed[1] >= 0.5:
            rStr += " I am in need of some " + topNeed[0] + '.'
        elif topNeed[1] >= 0.25:
            rStr += " I could use some " + topNeed[0] + '.'
        else:
            rStr += " I wouldn't mind some " + topNeed[0] + '.'

        say(rStr, more=False, speak=setting("SPEAK"), location="history")

        #topThought = m.getTopSentence(QV, ["", GLOB['MOOD']])
        #print k.sf(topThought[1], 3)
        #say('*'+topThought[0]+'*', more=False, speak=setting("SPEAK"), moodUpdate=True)

    else:

        # want to get previous mood before AI talks about mood report
        prevFace = getFace(PREVMOOD)

        say(getResponse(inCmd), more=False, speak=setting("SPEAK"))

        curFace = getFace(MOOD)

        SMood, iWeights = ingestionMood(moodType="SUBSTANCE")
        imVec = [SMood[i] * iWeights[i] for i in range(GLOB['MOODDIM'])]
        iFace = getFace(SMood)

        T = timeFactor()

        print
        print " Current mood:", curFace[2]
        print "     Emoticon:", curFace[0]
        #print "\n     %s" % ''.join('%s'%MOOD)
        stateSummary()

        print
        print "Previous mood:", prevFace[2]
        print "     Emoticon:", prevFace[0]
        #print "\n     %s" % ''.join('%s'%PREVMOOD)
        stateSummary(PREVMOOD)

        print
        print "Mood from ingestions"
        print "     Emoticon:", iFace[0]
        #print "\n     %s" % ''.join('%s'%imVec)
        stateSummary(imVec)

        print
        print "Mood from time of day"
        print "     Emoticon:", getFace(T)[0]
        print "      Arousal: %.2f" % T[1]
    return True
Esempio n. 17
0
def ingest(inCmd,
           inStr,
           mood=[],
           weight=[],
           isCmd=False,
           isMem=False,
           matches=[[], []]):
    from common import wordSim, processResponse, getResponse, say
    #from loadFile import load
    from determineFunction import findCMD, refineMatches
    from Fermi import substituteBiographicMemory

    if not (isCmd or isMem):
        matches = refineMatches(inCmd, inStr)
        matches = substituteBiographicMemory(matches, queryType='what is')

    if len(matches[0]) == 0 and not (isCmd or isMem):
        say(getResponse(findCMD("rephrase")),
            more=False,
            speak=setting("SPEAK"),
            moodUpdate=True)
        return False
    '''
	Algorithm:
		- load substance from list
		- record ingestion time
		- append to INGESTED list

	'''

    if isCmd:
        ingestionTime = time.time()

        taskProfile = "pow(2.0, -1.0*T*T/(900.0*900.0))"  # ~15 minute half life

        taskDetails = [[inCmd[0]], mood, weight, taskProfile]
        #print "appending: ", taskDetails

        GLOB['INGESTED'].append([taskDetails, ingestionTime, "COMMAND"])
        GLOB['MOOD'] = updateMood(GLOB['MOOD'], weight=[0] * GLOB['MOODDIM'])

        #print "AFTER CMD ADD"
        #print GLOB['MOOD']

        return  # no return value if adding a cmd mood modifier

    if isMem:
        #print "ADDING MEMORY MOOD"

        ingestionTime = time.time()

        memProfile = "pow(2.0, -1.0*T*T/(900.0*900.0))"  # ~15 minute half life

        memDetails = [[inStr], mood, weight, memProfile]
        #print "appending: ", taskDetails

        GLOB['INGESTED'].append([memDetails, ingestionTime, "MEMORY"])
        GLOB['MOOD'] = updateMood(GLOB['MOOD'], weight=[0] * GLOB['MOODDIM'])

        #print "AFTER CMD ADD"
        #print GLOB['MOOD']

        return  # no return value if adding a cmd mood modifier

    substances = load(SETS_DIR + "substances.txt", LPC=5)
    # line 0: name(s)
    # line 1: effect
    # line 2: weight
    # line 3: profile equations
    # line 4: response formats
    '''
	for matchStr in inCmd[1]:
		matchStr= matchStr.replace('juice','')
		inStr = inStr.replace(matchStr, '')
	'''

    # find top match

    maxMatch = 0
    topSubstance = []
    for substance in substances:
        for matchPhrase in substance[0]:
            matchScore = wordSim(matches[0][0], matchPhrase, useInScore=True)
            #print matchPhrase, inStr, matchScore
            if matchScore >= maxMatch:
                maxMatch = matchScore
                topSubstance = substance

    if setting('DEBUG'):
        print "INGESTION SCORE:", topSubstance[0], " - ", maxMatch

    # topSubstance[4]:

    #replacements = [topSubstance[0][randint(0,len(topSubstance[0])-1)]]
    replacements = topSubstance[0][randint(0,
                                           len(topSubstance[0]) -
                                           1)]  #matches[0][0] #
    #rStr = processResponse(getResponse(inCmd), replacements)
    responseForm = topSubstance[4][randint(0, len(topSubstance[4]) - 1)]
    rStr = processResponse(responseForm, [replacements])

    say(rStr, more=False, speak=setting("SPEAK"))

    # now modify mood accordingly
    ingestionTime = time.time()

    #print "appending: ", topSubstance

    GLOB['INGESTED'].append([topSubstance, ingestionTime, "SUBSTANCE"])

    #print "BEFORE UPDATE"
    #print GLOB['MOOD']

    GLOB['MOOD'] = updateMood(GLOB['MOOD'], weight=[0] * GLOB['MOODDIM'])

    #print "AFTER SUBSTANCE ADD"
    #print GLOB['MOOD']

    return [topSubstance[0][0], True]
Esempio n. 18
0
def moodReport(inCmd, inStr, matches=[[],[]]):
	from common import say, getResponse
	from Fermi import stateSummary
	from satisfactionMaximization import IV

	reportType="short"
	if "report" in inStr:
		reportType = "full"


	PREVMOOD = GLOB['PREVMOOD']
	MOOD = GLOB['MOOD']
	INGESTED = GLOB['INGESTED']

	if reportType == "short":
		#mVec = copy.deepcopy(MOOD)
		#mVec = fullMoodVec(mVec)
		

		Fm = fullMoodVec(MOOD,pronoun=True) # weight vector
		Fm.sort(key=lambda tup: tup[1])
		Fm.reverse()

		#curFace = getFace(MOOD)
		#rStr = "I am feeling "+curFace[2]+"."
		
		rStr = "I am feeling "+Fm[0][0]
		if Fm[0][0] >= 0:
			rStr += ", but"
		else:
			rStr += ", and"

		#print "HERE"


		# sort by weight
		Fw = fullMoodVec(IV(),colloquial=True) # weight vector
		Fw.sort(key=lambda tup: tup[1])
		Fw.reverse()

		topNeed = Fw[0]
		if topNeed[1] >= 0.85:
			rStr += " I am badly in need of some "+topNeed[0]+'.'
		elif topNeed[1] >= 0.5:
			rStr += " I am in need of some "+topNeed[0]+'.'
		elif topNeed[1] >= 0.25:
			rStr += " I could use some "+topNeed[0]+'.'
		else:
			rStr += " I wouldn't mind some "+topNeed[0]+'.'


		say(rStr, more=False, speak=setting("SPEAK"), location="history")
		
		#topThought = m.getTopSentence(QV, ["", GLOB['MOOD']])
		#print k.sf(topThought[1], 3)
		#say('*'+topThought[0]+'*', more=False, speak=setting("SPEAK"), moodUpdate=True)


	else:

		# want to get previous mood before AI talks about mood report
		prevFace = getFace(PREVMOOD)

		say(getResponse(inCmd), more=False, speak=setting("SPEAK"))

		curFace = getFace(MOOD)
		
		SMood, iWeights = ingestionMood(moodType="SUBSTANCE")
		imVec = [SMood[i]*iWeights[i] for i in range(GLOB['MOODDIM'])]
		iFace = getFace(SMood)
		
		T = timeFactor()

		print
		print " Current mood:", curFace[2] 
		print "     Emoticon:", curFace[0]
		#print "\n     %s" % ''.join('%s'%MOOD)
		stateSummary()

		print
		print "Previous mood:", prevFace[2]
		print "     Emoticon:", prevFace[0]
		#print "\n     %s" % ''.join('%s'%PREVMOOD)
		stateSummary(PREVMOOD)

		print
		print "Mood from ingestions"
		print "     Emoticon:", iFace[0]
		#print "\n     %s" % ''.join('%s'%imVec)
		stateSummary(imVec)

		print
		print "Mood from time of day"
		print "     Emoticon:", getFace(T)[0]
		print "      Arousal: %.2f" % T[1]
	return True
Esempio n. 19
0
def ingest(inCmd, inStr, mood=[], weight=[], isCmd=False, isMem=False, matches=[[],[]]):
	from common import wordSim, processResponse, getResponse, say
	#from loadFile import load
	from determineFunction import findCMD, refineMatches
	from Fermi import substituteBiographicMemory

	if not (isCmd or isMem):
		matches = refineMatches(inCmd, inStr)
		matches = substituteBiographicMemory(matches, queryType='what is')

	if len(matches[0]) ==0 and not (isCmd or isMem):
		say(getResponse(findCMD("rephrase")), more=False, speak=setting("SPEAK"), moodUpdate=True)
		return False

	'''
	Algorithm:
		- load substance from list
		- record ingestion time
		- append to INGESTED list

	'''

	if isCmd:
		ingestionTime = time.time()
		
		taskProfile="pow(2.0, -1.0*T*T/(900.0*900.0))" # ~15 minute half life
		
		taskDetails = [[inCmd[0]], mood, weight, taskProfile]
		#print "appending: ", taskDetails

		GLOB['INGESTED'].append([taskDetails, ingestionTime, "COMMAND"])
		GLOB['MOOD']=updateMood(GLOB['MOOD'], weight=[0]*GLOB['MOODDIM'])
		
		#print "AFTER CMD ADD"
		#print GLOB['MOOD']

		return # no return value if adding a cmd mood modifier

	if isMem:
		#print "ADDING MEMORY MOOD"

		ingestionTime = time.time()
		
		memProfile="pow(2.0, -1.0*T*T/(900.0*900.0))" # ~15 minute half life
		


		memDetails = [[inStr], mood, weight, memProfile]
		#print "appending: ", taskDetails

		GLOB['INGESTED'].append([memDetails, ingestionTime, "MEMORY"])
		GLOB['MOOD']=updateMood(GLOB['MOOD'], weight=[0]*GLOB['MOODDIM'])
		
		#print "AFTER CMD ADD"
		#print GLOB['MOOD']

		return # no return value if adding a cmd mood modifier




	substances = load(SETS_DIR+"substances.txt", LPC=5)
	# line 0: name(s)
	# line 1: effect
	# line 2: weight
	# line 3: profile equations
	# line 4: response formats

	'''
	for matchStr in inCmd[1]:
		matchStr= matchStr.replace('juice','')
		inStr = inStr.replace(matchStr, '')
	'''

	# find top match

	maxMatch=0
	topSubstance=[]
	for substance in substances:
		for matchPhrase in substance[0]:
			matchScore = wordSim(matches[0][0], matchPhrase, useInScore=True)
			#print matchPhrase, inStr, matchScore
			if matchScore >= maxMatch:
				maxMatch = matchScore
				topSubstance = substance

	if setting('DEBUG'):
		print "INGESTION SCORE:", topSubstance[0], " - ", maxMatch

	# topSubstance[4]: 

	#replacements = [topSubstance[0][randint(0,len(topSubstance[0])-1)]]
	replacements = topSubstance[0][randint(0,len(topSubstance[0])-1)] #matches[0][0] #
	#rStr = processResponse(getResponse(inCmd), replacements)
	responseForm = topSubstance[4][randint(0,len(topSubstance[4])-1)]
	rStr = processResponse(responseForm, [replacements])
	
	say(rStr, more=False, speak=setting("SPEAK"))



	# now modify mood accordingly
	ingestionTime = time.time()

	#print "appending: ", topSubstance



	GLOB['INGESTED'].append([topSubstance, ingestionTime, "SUBSTANCE"])


	#print "BEFORE UPDATE"
	#print GLOB['MOOD']

	GLOB['MOOD']=updateMood(GLOB['MOOD'], weight=[0]*GLOB['MOODDIM'])

	#print "AFTER SUBSTANCE ADD"
	#print GLOB['MOOD']

	return [topSubstance[0][0], True]
Esempio n. 20
0
def test_DeleteUser(httpConnection, data, expected):
    userUUID = common.addUser(data, httpConnection)
    if userUUID is None:
        return

    productUUIDs = list()
    if "products_to_delete" in data:
        for product in data["products_to_delete"]:
            dataToSend = dict()
            dataToSend["product"] = product
            dataToSend["user"] = userUUID
            try:
                r = httpConnection.POST("/add-product", dataToSend)
            except Exception:
                pytest.fail("Failed to send POST request")
                return

            response = common.getResponse(r.text, expected)
            if response is None:
                return None
            if r.status_code != 201:
                pytest.fail(f"Failed to add user.\nDetails: {response}")
                return
            productUUIDs.append(response["id"])

    # Add nominated users and their product relationship
    nominatedUUIDs = list()
    if "nominated_users" in data:
        for nominatedUser in data["nominated_users"]:
            try:
                r = httpConnection.POST("/add-user", nominatedUser)
            except Exception:
                pytest.fail("Failed to send POST request")
                return

            response = common.getResponse(r.text, expected)
            if response is None:
                return None
            if r.status_code != 201:
                pytest.fail(
                    f"Failed to add nominated user.\nDetails: {r.text}")
                return

            nominatedUUIDs.append(response["id"])

            productUsers = list()
            productUser = dict()
            productUser["id"] = response["id"]
            productUser["privilege"] = 2
            productUsers.append(productUser)
            dataToSend = dict()
            dataToSend["product_id"] = productUUIDs[0]
            dataToSend["users"] = productUsers

            try:
                r = httpConnection.POST("/add-product-user", dataToSend)
            except Exception:
                pytest.fail("Failed to send POST request")
                return

            response = common.getResponse(r.text, expected)
            if response is None:
                return None
            if r.status_code != 201:
                pytest.fail(
                    f"Failed to add nominated user.\nDetails: {response}")
                return

    if len(nominatedUUIDs) > len(productUUIDs):
        pytest.fail("Too many nominated users.")
        return

    nominees = dict()
    for index, nominee in enumerate(nominatedUUIDs):
        nominees[productUUIDs[index]] = nominee

    try:
        r = httpConnection.POST("/delete-user", {
            "id": userUUID,
            "nominees": nominees
        })
    except Exception:
        pytest.fail("Failed to send POST request")
        return

    response = common.getResponse(r.text, expected)
    if response is None:
        return None
    if response != expected:
        pytest.fail(f"Request failed\nStatus code: \
            {r.status_code}\nReturned: {response}\nExpected: {expected}")