Beispiel #1
0
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
Beispiel #2
0
    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),
                         {})
Beispiel #3
0
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
Beispiel #4
0
  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),
            {})