Example #1
0
def get_hourly_goal_data(team, resource):
    """:return: the energy goal data for the user's team."""
    date = datetime.datetime.today()
    if resource_mgr.is_blackout(date):
        return {"is_blackout": True}

    data = resource_mgr.team_resource_data(date=date.date(), team=team, resource=resource)
    if data:
        goal_settings = resource_goal.team_goal_settings(team, resource)
        goal_percentage = goal_settings.goal_percent_reduction
        baseline = resource_goal.team_hourly_resource_baseline(date, team, resource)
        if goal_settings.baseline_method == "Dynamic":
            # get previous day's goal result and the current goal percent
            previous_goal_result = resource_goal.team_goal(date - datetime.timedelta(days=1),
                                                           team, resource)
            if previous_goal_result and previous_goal_result.current_goal_percent_reduction:
                goal_percentage = previous_goal_result.current_goal_percent_reduction

        goal = {"goal_usage": (baseline * 100 - baseline * goal_percentage) / 100,
                "warning_usage": (baseline * 100 - baseline * goal_percentage / 2) / 100,
                "actual_usage": data.usage,
                "updated_at": datetime.datetime.combine(date=data.date, time=data.time)
               }
        goal["actual_diff"] = abs(goal["actual_usage"] - goal["goal_usage"])
        return goal
    else:
        return {"actual_usage": None}
Example #2
0
def get_hourly_goal_data(team, resource):
    """:return: the energy goal data for the user's team."""

    hourly_goal = cache_mgr.get_cache("hgoal-%s-%d" % (resource, team.id))
    if hourly_goal is None:
        date = datetime.datetime.today()
        hourly_goal = {"resource": resource}
        if resource_mgr.is_blackout(date):
            hourly_goal.update({"is_blackout": True})
        else:
            resource_setting = resource_mgr.get_resource_setting(resource)
            unit = resource_setting.unit
            rate = resource_setting.conversion_rate

            usage_data = resource_mgr.team_resource_data(date=date.date(),
                                                         team=team,
                                                         resource=resource)
            if usage_data:
                actual_usage = utils.format_usage(usage_data.usage, rate)

                goal_settings = resource_goal.team_goal_settings(
                    team, resource)
                goal_percent = resource_goal.get_goal_percent(
                    date, team, resource, goal_settings)

                baseline = resource_goal.team_hourly_resource_baseline(
                    resource, team, usage_data.date, usage_data.time)
                goal_usage = utils.format_usage(
                    baseline * (100 - goal_percent) / 100, rate)
                warning_usage = utils.format_usage(
                    baseline * (100 - goal_percent / 2) / 100, rate)
                actual_diff = abs(actual_usage - goal_usage)

                hourly_goal.update({
                    "goal_usage":
                    goal_usage,
                    "warning_usage":
                    warning_usage,
                    "actual_usage":
                    actual_usage,
                    "actual_diff":
                    actual_diff,
                    "updated_at":
                    datetime.datetime.combine(date=usage_data.date,
                                              time=usage_data.time),
                    "unit":
                    unit,
                })
            else:
                hourly_goal.update({"no_data": True})

        cache_mgr.set_cache("hgoal-%s-%d" % (resource, team.id), hourly_goal,
                            600)

    return hourly_goal
Example #3
0
def get_hourly_goal_data(team, resource):
    """:return: the energy goal data for the user's team."""

    hourly_goal = cache_mgr.get_cache("hgoal-%s-%d" % (resource, team.id))
    if hourly_goal is None:
        date = datetime.datetime.today()
        hourly_goal = {"resource": resource}
        if resource_mgr.is_blackout(date):
            hourly_goal.update({"is_blackout": True})
        else:
            resource_setting = resource_mgr.get_resource_setting(resource)
            unit = resource_setting.unit
            rate = resource_setting.conversion_rate

            usage_data = resource_mgr.team_resource_data(date=date.date(),
                                                         team=team,
                                                         resource=resource)
            if usage_data:
                actual_usage = utils.format_usage(usage_data.usage, rate)

                goal_settings = resource_goal.team_goal_settings(team, resource)
                goal_percent = resource_goal.get_goal_percent(date, team, resource, goal_settings)

                baseline = resource_goal.team_hourly_resource_baseline(
                    resource, team, usage_data.date, usage_data.time)
                goal_usage = utils.format_usage(baseline * (100 - goal_percent) / 100, rate)
                warning_usage = utils.format_usage(baseline * (100 - goal_percent / 2) / 100, rate)
                actual_diff = abs(actual_usage - goal_usage)

                hourly_goal.update({"goal_usage": goal_usage,
                    "warning_usage": warning_usage,
                    "actual_usage": actual_usage,
                    "actual_diff": actual_diff,
                    "updated_at": datetime.datetime.combine(date=usage_data.date,
                                                            time=usage_data.time),
                    "unit": unit,
                   })
            else:
                hourly_goal.update({"no_data": True})

        cache_mgr.set_cache("hgoal-%s-%d" % (resource, team.id), hourly_goal, 600)

    return hourly_goal