示例#1
0
def update_energy_usage():
    """Update the energy usage from WattDepot server."""

    challenge_mgr.init()
    date = datetime.datetime.today()

    # workaround the issue that wattdepot might not have the latest data yet.
    date = date - datetime.timedelta(minutes=5)

    start_time = date.strftime("%Y-%m-%dT00:00:00")
    end_time = date.strftime("%Y-%m-%dT%H:%M:%S")

    s = requests.session()
    s.params = {'startTime': start_time, 'endTime': end_time}

    for team in Team.objects.all():
        usage = get_energy_usage(s, team.name)
        if usage:
            try:
                latest_usage = EnergyUsage.objects.get(team=team, date=date.date())
            except ObjectDoesNotExist:
                latest_usage = EnergyUsage(team=team, date=date.date())

            latest_usage.time = date.time()
            latest_usage.usage = usage
            latest_usage.save()
            print 'team %s energy usage updated at %s.' % (team, date)
示例#2
0
    def testTeamEnergyGoal(self):
        """Test energy goal"""
        profile = self.user.get_profile()
        points = profile.points()

        goal_settings = EnergyGoalSetting.objects.filter(team=self.team)
        if not goal_settings:
            goal_settings = EnergyGoalSetting(team=self.team,
                goal_percent_reduction=5,
                goal_points=20,
                baseline_method="Fixed",
                manual_entry=True,
                manual_entry_time=datetime.time(hour=15),
            )
            goal_settings.save()
        else:
            goal_settings = goal_settings[0]

        goal_baseline = EnergyBaselineDaily(
            team=self.team,
            day=datetime.date.today().weekday(),
            usage=150,
        )
        goal_baseline.save()
        energy_data = EnergyUsage(
            team=self.team,
            date=datetime.date.today(),
            time=datetime.time(hour=15),
            usage=100,
        )
        energy_data.save()

        today = datetime.date.today()
        resource_goal.check_team_resource_goal("energy", self.team, today)

        profile = Profile.objects.get(user__username="******")
        self.assertEqual(profile.points(), points,
            "User that did not complete the setup process should not be awarded points.")

        profile.setup_complete = True
        profile.save()

        energy_data.usage = 150
        energy_data.save()

        EnergyGoal.objects.filter(team=self.team, date=today).delete()
        resource_goal.check_team_resource_goal("energy", self.team, today)

        profile = Profile.objects.get(user__username="******")
        self.assertEqual(profile.points(), points,
            "Team that failed the goal should not be awarded any points.")

        energy_data.usage = 100
        energy_data.save()
        EnergyGoal.objects.filter(team=self.team, date=today).delete()
        resource_goal.check_team_resource_goal("energy", self.team, today)

        profile = Profile.objects.get(user__username="******")
        self.assertEqual(profile.points(), points + goal_settings.goal_points,
            "User that setup their profile should be awarded points.")
示例#3
0
    def testEnergy(self):
        """test Energy."""
        date = datetime.date.today()
        EnergyUsage(
            team=self.team,
            date=date,
            time=datetime.time(hour=15),
            usage=100,
        ).save()

        rank = resource_mgr.resource_team_rank_info(self.team,
                                                    "energy")["rank"]
        usage = resource_mgr.team_resource_usage(date=date,
                                                 team=self.team,
                                                 resource="energy")
        self.assertEqual(rank, 1, "The team should be first rank.")
        self.assertEqual(usage, 100, "The team usage is not correct.")
示例#4
0
    def setup_resource_usages(self):
        """remove any resource usage before the competition"""
        today = datetime.datetime.today()
        for usage in EnergyUsage.objects.filter(date__lte=today):
            usage.delete()
        for usage in WaterUsage.objects.filter(date__lte=today):
            usage.delete()

        # add initialize data for energy and water
        for team in Team.objects.all():
            WaterUsage(team=team,
                       date=today.date(),
                       time=datetime.time(15),
                       usage=1000).save()
            EnergyUsage(team=team,
                        date=today.date(),
                        time=datetime.time(15),
                        usage=1000).save()

        self.stdout.write("created initial resource usages for all teams.\n")