Skip to content
Snippets Groups Projects
Commit f00271eb authored by francoisdillinger's avatar francoisdillinger
Browse files

Folder Restructuring and API foundation.

parent b5f2e7b0
No related branches found
No related tags found
No related merge requests found
Showing
with 409 additions and 40 deletions
File deleted
File deleted
File deleted
__pycache__/
.flaskenv
\ No newline at end of file
from flask import Flask
# from database.db_connection import get_db_connection
def create_app():
app = Flask(__name__)
from api.routes.tempData import tempData_bp
from api.routes.powerData import powerData_bp
from api.routes.waterData import waterData_bp
from api.routes.costData import costData_bp
app.register_blueprint(tempData_bp, url_prefix='/api')
app.register_blueprint(powerData_bp, url_prefix='/api')
app.register_blueprint(waterData_bp, url_prefix='/api')
app.register_blueprint(costData_bp, url_prefix='/api')
# The following only needs to be run once to create the database. DO NOT UNCOMMENT!!!
# with app.app_context():
# from database.CS_499_create_db import create_and_seed_db
# create_and_seed_db()
return app
\ No newline at end of file
Flask==2.0.3
\ No newline at end of file
from flask import request, Blueprint, jsonify
import psycopg2
from database.db_connection import get_db_connection
costData_bp = Blueprint('costData', __name__)
@costData_bp.route('/costData', methods = ['GET'])
def get_costData():
conn = psycopg2.connect(database="Team3DB", user="Team3", password="team3", host="138.26.48.83", port="5432")
cur = conn.cursor()
all_costData = cur.execute ('SELECT * FROM total_cost_watts;').fetchall()
all_costData = get_data()
return jsonify(all_costData)
return jsonify(all_costData)
\ No newline at end of file
def get_data():
conn = get_db_connection()
cur = conn.cursor()
cur.execute('SELECT * FROM total_cost_watts;')
all_costData = cur.fetchall()
cur.close()
return all_costData
\ No newline at end of file
from flask import request, Blueprint, jsonify
import psycopg2
from database.db_connection import get_db_connection
powerData_bp = Blueprint('powerData', __name__)
@powerData_bp.route('/powerData', methods = ['GET'])
def get_powerData():
conn = psycopg2.connect(database="Team3DB", user="Team3", password="team3", host="138.26.48.83", port="5432")
cur = conn.cursor()
all_powerData = cur.execute('SELECT * FROM')
all_powerData = get_data()
return jsonify(all_powerData)
def get_data():
conn = get_db_connection()
cur = conn.cursor()
cur.execute('SELECT * FROM power_testcases;')
all_powerData = cur.fetchall()
cur.close()
return all_powerData
\ No newline at end of file
from flask import request, Blueprint, jsonify
import psycopg2
from database.db_connection import get_db_connection
tempData_bp = Blueprint('tempData', __name__)
@tempData_bp.route('/tempData', methods = ['GET'])
def get_temperatureData():
conn = psycopg2.connect(database="Team3DB", user="Team3", password="team3", host="138.26.48.83", port="5432")
cur = conn.cursor()
all_tempData = cur.execute('SELECT * FROM ')
all_tempData = get_data()
return jsonify(all_tempData)
def get_data():
conn = get_db_connection()
cur = conn.cursor()
cur.execute('SELECT * FROM temperature_data;')
all_tempData = cur.fetchall()
cur.close()
return all_tempData
\ No newline at end of file
from flask import request, Blueprint, jsonify
import psycopg2
from database.db_connection import get_db_connection
waterData_bp = Blueprint('waterData', __name__)
@waterData_bp.route('/waterData', methods = ['GET'])
def get_waterData():
conn = psycopg2.connect(database="Team3DB", user="Team3", password="team3", host="138.26.48.83", port="5432")
cur = conn.cursor()
all_waterData = cur.execute('SELECT * FROM')
all_waterData = get_data()
return jsonify(all_waterData)
return jsonify(all_waterData)
\ No newline at end of file
def get_data():
conn = get_db_connection()
cur = conn.cursor()
cur.execute('SELECT * FROM appliance_with_water')
all_waterData = cur.fetchall()
cur.close()
return all_waterData
\ No newline at end of file
from api import create_app
app = create_app()
@app.route('/', methods=['GET'])
def hello():
return {'message': 'Hello, world!'}
if __name__ == '__main__':
app.run(debug=True)
\ No newline at end of file
......@@ -37,8 +37,8 @@ for i in range(0,NUM_WEEKS):
Door_Window_History[time_stamp] = Door_Window(WORKWEEK[j], door_opens, door_minutes, window_open, window_minutes)
time_stamp += 1
for i in Door_Window_History:
print(i, Door_Window_History[i].day, Door_Window_History[i].Door_status, Door_Window_History[i].Door_time, Door_Window_History[i].Window_status, Door_Window_History[i].Window_time)
# for i in Door_Window_History:
# print(i, Door_Window_History[i].day, Door_Window_History[i].Door_status, Door_Window_History[i].Door_time, Door_Window_History[i].Window_status, Door_Window_History[i].Window_time)
class Appliance_1:
......@@ -106,7 +106,7 @@ monthly_power1_FEB=0
monthly_cost1_MAR=0
monthly_power1_MAR=0
print("###################################################### TOTAL APP1 HISTORY FOR 77 DAYS ###################################################### \n")
# print("###################################################### TOTAL APP1 HISTORY FOR 77 DAYS ###################################################### \n")
for i in App1_History:
if i<=31:
monthly_power1_JAN += App1_History[i].micro_pwr + App1_History[i].stove_pwr + App1_History[i].oven_pwr + App1_History[i].Lrtv_pwr + App1_History[i].Brtv_pwr + App1_History[i].fridge_pwr +App1_History[i].lights_pwr
......@@ -118,14 +118,14 @@ for i in App1_History:
monthly_power1_MAR += App1_History[i].micro_pwr + App1_History[i].stove_pwr + App1_History[i].oven_pwr + App1_History[i].Lrtv_pwr + App1_History[i].Brtv_pwr + App1_History[i].fridge_pwr +App1_History[i].lights_pwr
monthly_cost1_MAR += App1_History[i].micro_ct + App1_History[i].stove_ct + App1_History[i].oven_ct + App1_History[i].Lrtv_ct + App1_History[i].Brtv_ct + App1_History[i].fridge_ct + App1_History[i].lights_ct
#print(i,App1_History[i].day,App1_History[i].micro_pwr,App1_History[i].stove_pwr,App1_History[i].oven_pwr,App1_History[i].Lrtv_pwr,App1_History[i].Brtv_pwr,App1_History[i].micro_ct,App1_History[i].stove_ct,App1_History[i].oven_ct,App1_History[i].Lrtv_ct,App1_History[i].Brtv_ct)
print( "_ - _ - _ - _ Power used for each Month _ - _ - _ - _ \n")
print( "Jan APP1 watts used : ",monthly_power1_JAN )
print( "FEB APP1 watts used : ",monthly_power1_FEB )
print( "MAR APP1 watts used : ",monthly_power1_MAR )
print( "_ - _ - _ - _ Cost used for each Month _ - _ - _ - _ \n")
print( "Jan APP1 cost used : ",monthly_cost1_JAN )
print( "FEB APP1 cost used : ",monthly_cost1_FEB )
print( "MAR APP1 cost used : ",monthly_cost1_MAR )
# print( "_ - _ - _ - _ Power used for each Month _ - _ - _ - _ \n")
# print( "Jan APP1 watts used : ",monthly_power1_JAN )
# print( "FEB APP1 watts used : ",monthly_power1_FEB )
# print( "MAR APP1 watts used : ",monthly_power1_MAR )
# print( "_ - _ - _ - _ Cost used for each Month _ - _ - _ - _ \n")
# print( "Jan APP1 cost used : ",monthly_cost1_JAN )
# print( "FEB APP1 cost used : ",monthly_cost1_FEB )
# print( "MAR APP1 cost used : ",monthly_cost1_MAR )
#print("################################################################################################################################################################# \n")
......@@ -212,7 +212,7 @@ monthly_water_usg_FEB=0
monthly_cost2_MAR=0
monthly_power2_MAR=0
monthly_water_usg_MAR=0
print("###################################################### TOTAL APP2 HISTORY FOR 77 DAYS ###################################################### \n")
# print("###################################################### TOTAL APP2 HISTORY FOR 77 DAYS ###################################################### \n")
for i in App2_History:
if i>=31:
monthly_cost2_JAN+= App2_History[i].Water_Heat_ct + App2_History[i].DishWasher_ct + App2_History[i].Clothes_Wash_ct + App2_History[i].Clothes_dry_ct +App2_History[i].Water_ct + App2_History[i].bath_fans_ct
......@@ -227,18 +227,18 @@ for i in App2_History:
monthly_power2_MAR+= App2_History[i].Water_Heat_pwr+ App2_History[i].DishWasher_pwr + App2_History[i].Clothes_Wash_pwr + App2_History[i].Clothes_dry_pwr + App2_History[i].bath_fans_pwr
monthly_water_usg_MAR+= App2_History[i].Bath_water_ug + App2_History[i].Shower_water_ug + App2_History[i].DishWasher_ug+ App2_History[i].Clothes_Wash_ug
#print(i,App2_History[i].day,App2_History[i].Water_Heat_pwr,App2_History[i].DishWasher_pwr,App2_History[i].Clothes_Wash_pwr,App2_History[i].Clothes_dry_pwr,App2_History[i].bath_fans_pwr,App2_History[i].Water_Heat_ug,App2_History[i].Bath_water_ug,App2_History[i].Shower_water_ug,App2_History[i].DishWasher_ug,App2_History[i].Clothes_Wash_ug,App2_History[i].Water_Heat_ct,App2_History[i].DishWasher_ct,App2_History[i].Clothes_Wash_ct,App2_History[i].Clothes_dry_ct,App2_History[i].bath_fans_ct,App2_History[i].Water_ct,App2_History[i].bath,App2_History[i].shower)
print( "_ - _ - _ - _ Power used for each Month _ - _ - _ - _ \n")
print( "Jan APP2 watts used : ",monthly_power2_JAN )
print( "FEB APP2 watts used : ",monthly_power2_FEB )
print( "MAR APP2 watts used : ",monthly_power2_MAR )
print( "_ - _ - _ - _ Cost used for each Month _ - _ - _ - _ \n")
print( "Jan APP2 cost used : ",monthly_cost2_JAN )
print( "FEB APP2 cost used : ",monthly_cost2_FEB )
print( "MAR APP2 cost used : ",monthly_cost2_MAR )
print( "_ - _ - _ - _ Gallons used for each Month _ - _ - _ - _ \n")
print( "Jan APP2 water used : ",monthly_water_usg_JAN )
print( "FEB APP2 water used : ",monthly_water_usg_FEB )
print( "MAR APP2 water used : ",monthly_water_usg_MAR )
# print( "_ - _ - _ - _ Power used for each Month _ - _ - _ - _ \n")
# print( "Jan APP2 watts used : ",monthly_power2_JAN )
# print( "FEB APP2 watts used : ",monthly_power2_FEB )
# print( "MAR APP2 watts used : ",monthly_power2_MAR )
# print( "_ - _ - _ - _ Cost used for each Month _ - _ - _ - _ \n")
# print( "Jan APP2 cost used : ",monthly_cost2_JAN )
# print( "FEB APP2 cost used : ",monthly_cost2_FEB )
# print( "MAR APP2 cost used : ",monthly_cost2_MAR )
# print( "_ - _ - _ - _ Gallons used for each Month _ - _ - _ - _ \n")
# print( "Jan APP2 water used : ",monthly_water_usg_JAN )
# print( "FEB APP2 water used : ",monthly_water_usg_FEB )
# print( "MAR APP2 water used : ",monthly_water_usg_MAR )
#print( "################################################################################################################################################################# \n")
......@@ -299,7 +299,7 @@ monthly_temp_ct_FEB=0
monthly_temp_watts_FEB=0
monthly_temp_ct_MAR=0
monthly_temp_watts_MAR=0
print("###################################################### TOTAL TEMP HISTORY FOR 77 DAYS ###################################################### \n")
# print("###################################################### TOTAL TEMP HISTORY FOR 77 DAYS ###################################################### \n")
for i in App3_History:
if i<=31:
monthly_temp_watts_JAN+=App3_History[i].temp_power
......@@ -310,21 +310,21 @@ for i in App3_History:
if i>59:
monthly_temp_ct_MAR+=App3_History[i].temp_cost
monthly_temp_watts_MAR+=App3_History[i].temp_power
print( "_ - _ - _ - _ Power used for each Month _ - _ - _ - _ \n")
print( "Jan APP3 watts used : ",monthly_temp_watts_JAN )
print( "FEB APP3 watts used : ",monthly_temp_watts_FEB )
print( "MAR APP3 watts used : ",monthly_temp_watts_MAR )
print( "_ - _ - _ - _ Cost used for each Month _ - _ - _ - _ \n")
print( "Jan APP3 cost used : ",monthly_temp_ct_JAN )
print( "FEB APP3 cost used : ",monthly_temp_ct_FEB )
print( "MAR APP3 cost used : ",monthly_temp_ct_MAR )
print( "################################################################################################################################################################# \n")
print("January Total cost",monthly_temp_ct_JAN+monthly_cost2_JAN+monthly_cost1_JAN)
print("Febuary Total cost",monthly_temp_ct_FEB+monthly_cost2_FEB+monthly_cost1_FEB)
print("March Total cost",monthly_temp_ct_MAR+monthly_cost2_FEB+monthly_cost1_MAR)
print("January Total Watts",monthly_temp_watts_JAN+monthly_power2_JAN+monthly_power1_JAN)
print("Febuary Total Watts",monthly_temp_watts_FEB+monthly_power2_FEB+monthly_power1_FEB)
print("March Total Watts",monthly_temp_watts_MAR+monthly_power2_MAR+monthly_power1_MAR)
# print( "_ - _ - _ - _ Power used for each Month _ - _ - _ - _ \n")
# print( "Jan APP3 watts used : ",monthly_temp_watts_JAN )
# print( "FEB APP3 watts used : ",monthly_temp_watts_FEB )
# print( "MAR APP3 watts used : ",monthly_temp_watts_MAR )
# print( "_ - _ - _ - _ Cost used for each Month _ - _ - _ - _ \n")
# print( "Jan APP3 cost used : ",monthly_temp_ct_JAN )
# print( "FEB APP3 cost used : ",monthly_temp_ct_FEB )
# print( "MAR APP3 cost used : ",monthly_temp_ct_MAR )
# print( "################################################################################################################################################################# \n")
# print("January Total cost",monthly_temp_ct_JAN+monthly_cost2_JAN+monthly_cost1_JAN)
# print("Febuary Total cost",monthly_temp_ct_FEB+monthly_cost2_FEB+monthly_cost1_FEB)
# print("March Total cost",monthly_temp_ct_MAR+monthly_cost2_FEB+monthly_cost1_MAR)
# print("January Total Watts",monthly_temp_watts_JAN+monthly_power2_JAN+monthly_power1_JAN)
# print("Febuary Total Watts",monthly_temp_watts_FEB+monthly_power2_FEB+monthly_power1_FEB)
# print("March Total Watts",monthly_temp_watts_MAR+monthly_power2_MAR+monthly_power1_MAR)
......
# import CS_499_backend
from .CS_499_backend import Door_Window, Appliance_1, Appliance_with_Water, Temperature_data, Door_Window_History, App1_History, App2_History, App3_History, time_stamp, time_stamp2, time_stamp3, time_stamp4, monthly_cost1_FEB, monthly_cost1_MAR, monthly_cost1_JAN, monthly_power1_JAN, monthly_power1_FEB, monthly_power1_MAR, monthly_cost2_FEB, monthly_cost2_JAN, monthly_cost2_MAR, monthly_water_usg_MAR, monthly_water_usg_JAN, monthly_water_usg_FEB, monthly_power2_FEB, monthly_power2_JAN, monthly_power2_MAR, monthly_temp_watts_JAN, monthly_temp_watts_FEB, monthly_temp_watts_MAR, monthly_temp_ct_JAN, monthly_temp_ct_FEB, monthly_temp_ct_MAR
from .db_connection import get_db_connection
def create_and_seed_db():
conn = get_db_connection()
cur = conn.cursor()
print("\033[33mCreating and seeding database...\033[33m")
# create a new table for Door_Window_History
print("\033[33mCreating table for Door_Window_History...\033[33m")
cur.execute("""
DROP TABLE IF EXISTS Door_Window_History;
CREATE TABLE Door_Window_History (
id SERIAL PRIMARY KEY,
day VARCHAR(255),
door_status INTEGER,
door_time FLOAT,
window_status INTEGER,
window_time FLOAT
);
""")
conn.commit()
print("\033[32mDoor_Window_History table created successfully in PostgreSQL\033[32m")
#insert the data into the Door_Window_History table
for i in Door_Window_History:
print(" \033[34mInserting data into Door_Window_History table... \033[34m")
for time_stamp, data in Door_Window_History.items():
cur.execute("""
INSERT INTO Door_Window_History (
day, door_status, door_time, window_status, window_time)
VALUES (%s, %s, %s, %s, %s);
""", (
data.day, data.Door_status, data.Door_time,
data.Window_status, data.Window_time
))
conn.commit()
# create a new table for App1_History
print("\033[33mCreating table for App1_History...\033[33m")
cur.execute("""
DROP TABLE IF EXISTS Appliance_1_History;
CREATE TABLE Appliance_1_History (
id SERIAL PRIMARY KEY,
day VARCHAR(255),
micro_pwr FLOAT,
stove_pwr FLOAT,
oven_pwr FLOAT,
Lrtv_pwr FLOAT,
Brtv_pwr FLOAT,
fridge_pwr FLOAT,
micro_ct FLOAT,
stove_ct FLOAT,
oven_ct FLOAT,
Lrtv_ct FLOAT,
Brtv_ct FLOAT,
fridge_ct FLOAT,
lights_pwr FLOAT,
lights_ct FLOAT
);
""")
print("\033[32mApp1_History table created successfully in PostgreSQL\033[32m ")
for time_stamp2, data in App1_History.items():
print(" \033[34mInserting data into Appliance_1_History table... \033[34m")
cur.execute("""
INSERT INTO Appliance_1_History (
day, micro_pwr, stove_pwr, oven_pwr, Lrtv_pwr, Brtv_pwr, fridge_pwr,
micro_ct, stove_ct, oven_ct, Lrtv_ct, Brtv_ct, fridge_ct, lights_pwr, lights_ct)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);
""", (
data.day, data.micro_pwr, data.stove_pwr, data.oven_pwr, data.Lrtv_pwr, data.Brtv_pwr,
data.fridge_pwr, data.micro_ct, data.stove_ct, data.oven_ct, data.Lrtv_ct, data.Brtv_ct,
data.fridge_ct, data.lights_pwr, data.lights_ct
))
conn.commit()
# create a new table for appliance_with_water
print("\033[33mCreating table for appliance_with_water...\033[33m")
cur.execute("""
DROP TABLE IF EXISTS appliance_with_water;
CREATE TABLE appliance_with_water (
id SERIAL PRIMARY KEY,
day TEXT,
water_heat_pwr FLOAT,
dishwasher_pwr FLOAT,
clothes_wash_pwr FLOAT,
clothes_dry_pwr FLOAT,
bath_fans_pwr FLOAT,
water_heat_ug FLOAT,
bath_water_ug FLOAT,
shower_water_ug FLOAT,
dishwasher_ug FLOAT,
clothes_wash_ug FLOAT,
water_heat_ct FLOAT,
dishwasher_ct FLOAT,
clothes_wash_ct FLOAT,
clothes_dry_ct FLOAT,
bath_fans_ct FLOAT,
water_ct FLOAT,
bath INT,
shower INT
);
""")
conn.commit()
print("\033[32mappliance_with_water table created successfully in PostgreSQL\033[32m ")
# insert data into the App2_History table
for time_stamp3, data in App2_History.items():
print(" \033[34mInserting data into appliance_with_water table... \033[34m")
cur.execute("""
INSERT INTO appliance_with_water (
day, water_heat_pwr, dishwasher_pwr, clothes_wash_pwr,
clothes_dry_pwr, bath_fans_pwr, water_heat_ug, bath_water_ug,
shower_water_ug, dishwasher_ug, clothes_wash_ug, water_heat_ct,
dishwasher_ct, clothes_wash_ct, clothes_dry_ct, bath_fans_ct,
water_ct, bath, shower
)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);
""", (
data.day, data.Water_Heat_pwr, data.DishWasher_pwr, data.Clothes_Wash_pwr,
data.Clothes_dry_pwr, data.bath_fans_pwr, data.Water_Heat_ug, data.Bath_water_ug,
data.Shower_water_ug, data.DishWasher_ug, data.Clothes_Wash_ug, data.Water_Heat_ct,
data.DishWasher_ct, data.Clothes_Wash_ct, data.Clothes_dry_ct, data.bath_fans_ct,
data.Water_ct, data.bath, data.shower
))
conn.commit()
# create a new table for Temperature_data
print("\033[33mCreating table for Temperature_data...\033[33m")
cur.execute("""
DROP TABLE IF EXISTS Temperature_data;
CREATE TABLE Temperature_data (
id SERIAL PRIMARY KEY,
temp_power FLOAT,
temp_cost FLOAT
);
""")
conn.commit()
print("\033[32mTemperature_data table created successfully in PostgreSQL\033[32m")
# insert data into the App3_History Table
for time_stamp4, data in App3_History.items():
print(" \033[34mInserting data into Temperature_data table... \033[34m")
cur = conn.cursor()
cur.execute("""
INSERT INTO temperature_data (
temp_power, temp_cost
)
VALUES (%s, %s);
""", (
data.temp_power, data.temp_cost
))
conn.commit()
######################################################################################################################################
######################################################################################################################################
############################################ TEMPERATURE DATA TABLE WATTS & COST BY MONTH ############################################
# create a new table for temp_cost_watts
# conn = psycopg2.connect(database="Team3DB", user="Team3", password="team3", host="138.26.48.83", port="5432")
# cur = conn.cursor()
cur.execute("""
DROP TABLE IF EXISTS temp_cost_watts;
CREATE TABLE temp_cost_watts (
month TEXT,
watts FLOAT,
cost FLOAT
)
""")
conn.commit()
# Insert the monthly power and cost values into the table
cur.execute("""
INSERT INTO temp_cost_watts (month, watts, cost)
VALUES ('Temperature Data (January):', %s, %s),
('Temperature Data (February):', %s, %s),
('Temperature Data (March):', %s, %s)
""", (monthly_temp_watts_JAN, monthly_temp_ct_JAN,
monthly_temp_watts_FEB, monthly_temp_ct_FEB,
monthly_temp_watts_MAR, monthly_temp_ct_MAR))
# Commit the changes
conn.commit()
######################################################################################################################################
######################################################################################################################################
######################################################################################################################################
# create a new table for total_cost_watts
print("\033[33mCreating table for total_cost_watts...\033[33m")
cur.execute("""
DROP TABLE IF EXISTS total_cost_watts;
CREATE TABLE total_cost_watts (
month TEXT,
watts FLOAT,
cost FLOAT
)
""")
conn.commit()
print("\033[32mtotal_cost_watts table created successfully in PostgreSQL\033[32m")
# Insert the monthly power and cost values into the table
cur.execute("""
INSERT INTO total_cost_watts (month, watts, cost)
VALUES ('January', %s, %s),
('February', %s, %s),
('March', %s, %s)
""", (monthly_temp_watts_JAN+monthly_power2_JAN+monthly_power1_JAN, monthly_temp_ct_JAN+monthly_cost2_JAN+monthly_cost1_JAN,
monthly_temp_watts_FEB+monthly_power2_FEB+monthly_power1_FEB, monthly_temp_ct_FEB+monthly_cost2_FEB+monthly_cost1_FEB,
monthly_temp_watts_MAR+monthly_power2_MAR+monthly_power1_MAR, monthly_temp_ct_MAR+monthly_cost2_MAR+monthly_cost1_MAR))
# Commit the changes
conn.commit()
# Close communication with the database
cur.close()
conn.close()
print("\033[32mDatabase generated successfully\033[32m")
import psycopg2
def get_db_connection():
print('Connecting to the PostgreSQL database...')
conn = psycopg2.connect(
database="Team3DB",
user="Team3",
password="team3",
host="138.26.48.83",
port="5432"
)
print('Database connection successful')
return conn
requests==2.26.0
psycopg2-binary==2.9.1
# If numpy won't install make sure your python version is < 3.10
numpy==1.21.2
\ No newline at end of file
# These are the required packages to run this project
# As we use more packages this list will be updated
Flask==2.0.3
psycopg2-binary==2.9.1
#Flask_SQLAlchemy==2.5.1
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><g><path fill="none" stroke="#f59e0b" stroke-linecap="round" stroke-miterlimit="10" stroke-width="3" d="M42.5 32A10.5 10.5 0 1132 21.5 10.5 10.5 0 0142.5 32zM32 15.71V9.5m0 45v-6.21m11.52-27.81l4.39-4.39M16.09 47.91l4.39-4.39m0-23l-4.39-4.39m31.82 31.78l-4.39-4.39M15.71 32H9.5m45 0h-6.21"/><animateTransform attributeName="transform" dur="45s" from="0 32 32" repeatCount="indefinite" to="360 32 32" type="rotate"/></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><g><path fill="none" stroke="#72b9d5" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M46.66 36.2a16.66 16.66 0 01-16.78-16.55 16.29 16.29 0 01.55-4.15A16.56 16.56 0 1048.5 36.1c-.61.06-1.22.1-1.84.1z"/><animateTransform attributeName="transform" dur="10s" repeatCount="indefinite" type="rotate" values="-5 32 32;15 32 32;-5 32 32"/></g></svg>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment