Esempio n. 1
0
def generate_bp_chart_data(page_month: int, page_year: int, db_cursor, lock):
    months_bp = []
    lock.acquire(True)
    db_cursor.execute(
        """SELECT * FROM tracker WHERE date >= ? and date <= ?  """, (
            get_months_beginning(page_month, page_year).date(),
            get_months_end(page_month, page_year).date(),
        ))
    months_bp += db_cursor.fetchall()
    lock.release()

    chart_bp_min = []
    chart_bp_max = []
    temp = {
        x[0]: (x[tracker_settings["BP_Min"]["index"]],
               x[tracker_settings["BP_Max"]["index"]])
        for x in months_bp
    }
    for day in range(1, number_of_days_in_month(page_month, page_year) + 1):
        date = '{:04d}-{:02d}-{:02d}'.format(page_year, page_month, day)
        if date not in temp:
            chart_bp_min.append("nan")
            chart_bp_max.append("nan")
        else:
            chart_bp_min.append(str(temp[date][0]))
            chart_bp_max.append(str(temp[date][1]))

    return chart_bp_min, chart_bp_max
Esempio n. 2
0
def generate_spending_chart_data(page_month, page_year, number_of_days,
                                 db_cursor, lock):
    months_finance = []
    lock.acquire(True)
    db_cursor.execute(
        """SELECT * FROM finance WHERE date >= ? and date <= ?  """, (
            get_months_beginning(page_month, page_year).date(),
            get_months_end(page_month, page_year).date(),
        ))
    months_vals = db_cursor.fetchall()
    lock.release()
    for day in range(1, number_of_days + 1):
        days_val = 0
        for finance_item in months_vals:
            if int(finance_item[0].split("-")[2]) == day:
                days_val += float(finance_item[2])
        months_finance.append(str(days_val))
    return months_finance
Esempio n. 3
0
def generate_monthly_chart_data(page_month: int, page_year: int,
                                tabel_name: str, db_cursor, lock):
    lock.acquire(True)
    months_data = []
    db_cursor.execute("SELECT * FROM tracker WHERE date >= ? and date <= ?  ",
                      (
                          get_months_beginning(page_month, page_year).date(),
                          get_months_end(page_month, page_year).date(),
                      ))
    index = tracker_settings[tabel_name]["index"]
    temp = {x[0]: x[index] for x in db_cursor.fetchall()}
    for day in range(1, number_of_days_in_month(page_month, page_year) + 1):
        date = '{:04d}-{:02d}-{:02d}'.format(page_year, page_month, day)
        if date not in temp:
            months_data.append("nan")
        else:
            months_data.append(temp[date])
    lock.release()
    return months_data
Esempio n. 4
0
def gen_year_chart_data(page_year: int, table_name: str, calc_func, db_cursor,
                        lock):
    if page_year in temporary_data.keys():
        if table_name in temporary_data[page_year].keys():
            return temporary_data[page_year][table_name]
    ret_list = []
    i = 0
    index = tracker_settings[table_name]["index"]
    while (i + 7) < 364:
        week_beg = datetime.datetime.strptime(
            f"{page_year}-01-01", '%Y-%m-%d') + datetime.timedelta(days=i)
        week_end = datetime.datetime.strptime(
            f"{page_year}-01-01", '%Y-%m-%d') + datetime.timedelta(days=i + 6)
        lock.acquire(True)

        db_cursor.execute(
            "SELECT * FROM tracker WHERE date >= ? and date <= ?  ", (
                week_beg.date(),
                week_end.date(),
            ))
        ret_list = calc_func(db_cursor.fetchall(), index, ret_list)
        lock.release()
        i += 7

    week_end = datetime.datetime.strptime(
        f"{page_year}-01-01", '%Y-%m-%d') + datetime.timedelta(days=364)
    lock.acquire(True)
    db_cursor.execute("SELECT * FROM tracker WHERE date >= ? and date <= ?  ",
                      (
                          week_end.date(),
                          get_months_end(i, page_year).date(),
                      ))
    ret_list = calc_func(db_cursor.fetchall(), index, ret_list)
    lock.release()
    if len(ret_list) != 52:
        raise ValueError(
            f"return list for table {table_name} is of length {len(ret_list)} instead of 52."
        )
    temporary_data[page_year] = temporary_data.get(page_year, {})
    temporary_data[page_year][table_name] = ret_list
    return ret_list
Esempio n. 5
0
def generate_weather_monthly(db_cursor, year: int, lock):
    # extract the year data
    return_data = {}
    for month in range(1, 13):
        lock.acquire(True)
        db_cursor.execute(
            "SELECT * FROM weatherStation WHERE date >= ? and date <= ?  ", (
                get_months_beginning(month, year).date(),
                get_months_end(month, year).date(),
            ))
        monthly_data = db_cursor.fetchall()
        lock.release()
        temp_data = {}
        for item in monthly_data:
            room = int(item[0])
            temp_data[room] = temp_data.get(room, {
                "temp": [],
                "pressure": [],
                "humidity": [],
                "moisture": []
            })
            temp_data[room]["temp"].append(float(item[3]))
            temp_data[room]["humidity"].append(float(item[4]))
            temp_data[room]["pressure"].append(float(item[5]) / 1000)
            temp_data[room]["moisture"].append(float(item[6]))

        for item in temp_data.keys():
            room = item
            return_data[room] = return_data.get(
                room, {
                    "months": [],
                    "temp": {
                        "min": [],
                        "max": [],
                        "avg": []
                    },
                    "pressure": {
                        "min": [],
                        "max": [],
                        "avg": []
                    },
                    "humidity": {
                        "min": [],
                        "max": [],
                        "avg": []
                    },
                    "moisture": {
                        "min": [],
                        "max": [],
                        "avg": []
                    }
                })
            return_data[room]["months"].append(month)
            for parameter in ["temp", "pressure", "humidity", "moisture"]:
                temp_data_clean_list = [
                    x for x in temp_data[room][parameter] if x != 0
                ]
                if len(temp_data_clean_list) > 0:
                    return_data[room][parameter]["min"].append(
                        min(temp_data_clean_list))
                    return_data[room][parameter]["max"].append(
                        max(temp_data_clean_list))
                    return_data[room][parameter]["avg"].append(
                        sum(temp_data_clean_list) / len(temp_data_clean_list))
                else:
                    return_data[room][parameter]["min"].append("nan")
                    return_data[room][parameter]["max"].append("nan")
                    return_data[room][parameter]["avg"].append("nan")
    for month in range(1, 13):
        for room in return_data.keys():
            if month not in return_data[room]["months"]:
                for parameter in ["temp", "pressure", "humidity", "moisture"]:
                    return_data[room][parameter]["min"] = return_data[room][parameter]["min"][:month - 1] + ["nan"] + \
                                                          return_data[room][parameter]["min"][month - 1:]
                    return_data[room][parameter]["max"] = return_data[room][parameter]["max"][:month - 1] + ["nan"] + \
                                                          return_data[room][parameter]["max"][month - 1:]
                    return_data[room][parameter]["avg"] = return_data[room][parameter]["avg"][:month - 1] + ["nan"] + \
                                                          return_data[room][parameter]["avg"][month - 1:]

    return return_data