def getResult(user_uuid): # This is in here, as opposed to the top level as recommended by the PEP # because then we don't have to worry about loading bottle in the unit tests from bottle import template user = User.fromUUID(user_uuid) currFootprint = getCarbonFootprint(user) if currFootprint is None: currFootprint = carbon.getFootprintCompare(user_uuid) setCarbonFootprint(user, currFootprint) (myModeShareCount, avgModeShareCount, myModeShareDistance, avgModeShareDistance, myModeCarbonFootprint, avgModeCarbonFootprint, myModeCarbonFootprintNoLongMotorized, avgModeCarbonFootprintNoLongMotorized, # ignored myOptimalCarbonFootprint, avgOptimalCarbonFootprint, myOptimalCarbonFootprintNoLongMotorized, avgOptimalCarbonFootprintNoLongMotorized) = currFootprint renderedTemplate = template("clients/data/result_template.html", myModeShareCount = json.dumps(myModeShareCount), avgModeShareCount = json.dumps(avgModeShareCount), myModeShareDistance = json.dumps(myModeShareDistance), avgModeShareDistance = json.dumps(avgModeShareDistance), myModeCarbonFootprint = json.dumps(myModeCarbonFootprint), avgModeCarbonFootprint = json.dumps(avgModeCarbonFootprint), myOptimalCarbonFootprint = json.dumps(myOptimalCarbonFootprint), avgOptimalCarbonFootprint = json.dumps(avgOptimalCarbonFootprint)) # logging.debug(renderedTemplate) return renderedTemplate
def testMySummary(self): (myModeShareCount, avgModeShareCount, myModeShareDistance, avgModeShareDistance, myModeCarbonFootprint, avgModeCarbonFootprint, myModeCarbonFootprintNoLongMotorized, avgModeCarbonFootprintNoLongMotorized, myOptimalCarbonFootprint, avgOptimalCarbonFootprint, myOptimalCarbonFootprintNoLongMotorized, avgOptimalCarbonFootprintNoLongMotorized ) = carbon.getFootprintCompare('*****@*****.**') # >>> m = {'air_long': 0, 'air_short': 0.2, 'bus_long': 0, 'bus_short': 0.3} # >>> f = [(i, m[i]) for i in m if m[i] != 0] # >>> f # [('bus_short', 0.3), ('air_short', 0.2)] # >>> dict(f) # {'bus_short': 0.3, 'air_short': 0.2} filterZero = lambda m: dict([(i, m[i]) for i in m if m[i] != 0]) self.assertEqual(len(myModeShareCount), len(carbon.getDisplayModes())) self.assertEqual(len(myModeShareDistance), len(carbon.getDisplayModes())) # We have duplicated the bus trip to get bus, air and unconfirmed trips. # we ignore the unconfirmed trip, so only expect to get three values... self.assertAlmostEqual(sum(myModeShareDistance.values()), 2 * self.busExpect + self.walkExpect, places=4) self.assertEqual( filterZero(myModeShareDistance), { 'bus': self.busExpect, 'walking': self.walkExpect, 'air': self.busExpect }) logging.debug(filterZero(myModeShareDistance)) self.assertEqual( filterZero(myModeCarbonFootprint), { 'bus_short': old_div((self.busExpect * self.busCarbon), 1000), 'air_short': old_div((self.busExpect * self.airCarbon), 1000) }) self.assertEqual( filterZero(myModeCarbonFootprintNoLongMotorized), {'bus_short': old_div((self.busExpect * self.busCarbon), 1000)}) self.assertEqual(filterZero(myOptimalCarbonFootprint), { 'air_short': old_div((self.busExpect * self.busOptimalCarbon), 1000) }) self.assertEqual(filterZero(myOptimalCarbonFootprintNoLongMotorized), {})
def getResult(user_uuid): # This is in here, as opposed to the top level as recommended by the PEP # because then we don't have to worry about loading bottle in the unit tests from bottle import template user = User.fromUUID(user_uuid) currFootprint = getCarbonFootprint(user) if currFootprint is None: currFootprint = carbon.getFootprintCompare(user_uuid) setCarbonFootprint(user, currFootprint) ( myModeShareCount, avgModeShareCount, myModeShareDistance, avgModeShareDistance, myModeCarbonFootprint, avgModeCarbonFootprint, myModeCarbonFootprintNoLongMotorized, avgModeCarbonFootprintNoLongMotorized, # ignored myOptimalCarbonFootprint, avgOptimalCarbonFootprint, myOptimalCarbonFootprintNoLongMotorized, avgOptimalCarbonFootprintNoLongMotorized) = currFootprint renderedTemplate = template( "clients/data/result_template.html", myModeShareCount=json.dumps(myModeShareCount), avgModeShareCount=json.dumps(avgModeShareCount), myModeShareDistance=json.dumps(myModeShareDistance), avgModeShareDistance=json.dumps(avgModeShareDistance), myModeCarbonFootprint=json.dumps(myModeCarbonFootprint), avgModeCarbonFootprint=json.dumps(avgModeCarbonFootprint), myOptimalCarbonFootprint=json.dumps(myOptimalCarbonFootprint), avgOptimalCarbonFootprint=json.dumps(avgOptimalCarbonFootprint)) # logging.debug(renderedTemplate) return renderedTemplate
def testMySummary(self): (myModeShareCount, avgModeShareCount, myModeShareDistance, avgModeShareDistance, myModeCarbonFootprint, avgModeCarbonFootprint, myModeCarbonFootprintNoLongMotorized, avgModeCarbonFootprintNoLongMotorized, myOptimalCarbonFootprint, avgOptimalCarbonFootprint, myOptimalCarbonFootprintNoLongMotorized, avgOptimalCarbonFootprintNoLongMotorized) = carbon.getFootprintCompare('*****@*****.**') # >>> m = {'air_long': 0, 'air_short': 0.2, 'bus_long': 0, 'bus_short': 0.3} # >>> f = [(i, m[i]) for i in m if m[i] != 0] # >>> f # [('bus_short', 0.3), ('air_short', 0.2)] # >>> dict(f) # {'bus_short': 0.3, 'air_short': 0.2} filterZero = lambda m: dict([(i, m[i]) for i in m if m[i] != 0]) self.assertEqual(len(myModeShareCount), len(carbon.getDisplayModes())) self.assertEqual(len(myModeShareDistance), len(carbon.getDisplayModes())) # We have duplicated the bus trip to get bus, air and unconfirmed trips. # we ignore the unconfirmed trip, so only expect to get three values... self.assertAlmostEqual(sum(myModeShareDistance.values()), 2 * self.busExpect + self.walkExpect, places = 4) self.assertEqual(filterZero(myModeShareDistance), {'bus': self.busExpect, 'walking': self.walkExpect, 'air': self.busExpect}) logging.debug(filterZero(myModeShareDistance)) self.assertEqual(filterZero(myModeCarbonFootprint), {'bus_short': (self.busExpect * self.busCarbon)/1000, 'air_short': (self.busExpect * self.airCarbon)/1000}) self.assertEqual(filterZero(myModeCarbonFootprintNoLongMotorized), {'bus_short': (self.busExpect * self.busCarbon)/1000}) self.assertEqual(filterZero(myOptimalCarbonFootprint), {'air_short': (self.busExpect * self.busOptimalCarbon)/1000}) self.assertEqual(filterZero(myOptimalCarbonFootprintNoLongMotorized), {})