celery-integration
peter.fong 9 months ago
parent f9606ea1b0
commit d724316c4b

1
.gitignore vendored

@ -4,6 +4,7 @@
# Optioneel: Negeer ongewenste Python-bestanden overal in submappen
**/*.pyc
**/*.pyo
**/*.db
**/*.pyd
**/.DS_Store
**/.venv/

Binary file not shown.

@ -21,6 +21,16 @@ app.config["UPLOAD_FOLDER"] = UPLOAD_FOLDER
app.secret_key = "9f2a1d3e4c5b6a7d8e9f0a1b2c3d4e5f"
@app.route("/clear_db", methods=["POST", "GET"])
def clear_db():
with sqlite3.connect(DATABASE) as conn:
cursor = conn.cursor()
cursor.execute("DELETE FROM onderhoud")
conn.commit()
flash("De database is geleegd!", "success")
return redirect(url_for("debug_db"))
def init_db():
with sqlite3.connect(DATABASE) as conn:
cursor = conn.cursor()
@ -130,6 +140,10 @@ def clean_column_name(name):
def process_excel(filepath):
# Controleer of de database bestaat
if not os.path.exists(DATABASE):
init_db()
df = pd.read_excel(filepath)
# Kolomnamen normaliseren
df.columns = [clean_column_name(col) for col in df.columns]
@ -142,23 +156,35 @@ def process_excel(filepath):
# Debug: Controleer of de records echt zijn toegevoegd
cursor.execute("SELECT COUNT(*) FROM onderhoud")
count = cursor.fetchone()[0]
# Controleer of data correct is ingevoerd
print(f"Aantal records in de database: {count}")
@app.route("/extrapolate", methods=["GET", "POST"])
def show_result():
# Haal de huidige datum op voor de standaardwaarde
today = datetime.today().strftime('%Y-%m-%d')
x_str = request.form.get("selected_date")
try:
x = datetime.strptime(x_str, "%Y-%m-%d") if x_str else datetime.today()
except ValueError:
flash("Ongeldige datum ingevoerd.", "danger")
return redirect(url_for("upload_file"))
result = get_extrapolation(x)
if x_str:
try:
x = datetime.strptime(x_str, "%Y-%m-%d")
except ValueError:
flash("Ongeldige datum ingevoerd.", "danger")
return redirect(url_for("upload_file"))
# **Met datum -> gebruik extrapolatie**
result = get_extrapolation(x)
else:
# **Zonder datum -> toon ruwe databasegegevens**
with sqlite3.connect(DATABASE) as conn:
cursor = conn.cursor()
cursor.execute("SELECT * FROM onderhoud")
columns = [desc[0] for desc in cursor.description]
rows = cursor.fetchall()
result = [dict(zip(columns, row))
for row in rows] # Zet om naar dicts voor weergave
return render_template("resultaat.html", result=result, selected_date=x_str, today=today)
@ -169,17 +195,13 @@ def get_extrapolation(x):
today = datetime.today()
with sqlite3.connect(DATABASE) as conn:
cursor = conn.cursor()
cursor.execute("""
SELECT Object_code, Object_omschrijving, Afdeling_object, PO_Code, Omschrijving_PO,
Vervaldatum, Frequentie, UOM, PO_schema_Niet_gebruikt, Cluster, Locatie,
Locatie_omschrijving, Klasse_object, Categorie
FROM onderhoud
""")
cursor.execute("SELECT * FROM onderhoud")
columns = [desc[0] for desc in cursor.description]
rows = cursor.fetchall()
raw_data = [dict(zip(columns, row)) for row in rows]
result = []
result = raw_data.copy()
for row in raw_data:
vervaldatum = row.get("Vervaldatum")
@ -190,22 +212,42 @@ def get_extrapolation(x):
extrapolated_dates = extrapolate_vervaldatum(
vervaldatum, uom, frequentie, x)
for i, date in enumerate(extrapolated_dates):
new_row = row.copy()
begindatum = pd.to_datetime(date)
if begindatum <= today:
new_row["Overtijd"] = "Ja"
else:
new_row["Overtijd"] = "Nee"
new_row["Begindatum"] = date
if date:
new_row = row.copy()
begindatum = pd.to_datetime(date)
new_row["Overtijd"] = "Ja" if begindatum.date(
) <= today.date() else "Nee"
if i == 0:
new_row["Parent"] = "*"
else:
new_row["Parent"] = ""
new_row["Begindatum"] = date
result.append(new_row)
result.append(new_row)
return remove_duplicates(result) # Dubbele records verwijderen
return result
def remove_duplicates(data, unique_keys=None):
if not data:
return data
if unique_keys is None:
unique_keys = ["Object_code", "Begindatum", "PO_Code", "Object_omschrijving",
"Omschrijving_PO", "Frequentie", "UOM"]
seen = set()
unique_data = []
for record in data:
cleaned_record = {k: ("" if pd.isna(v) else v)
for k, v in record.items()}
if not cleaned_record.get("Begindatum"):
continue
key_tuple = tuple(cleaned_record.get(k, "") for k in unique_keys)
if key_tuple not in seen:
seen.add(key_tuple)
unique_data.append(cleaned_record)
return unique_data
def extrapolate_vervaldatum(vervaldatum, uom, frequentie, x):
@ -217,9 +259,9 @@ def extrapolate_vervaldatum(vervaldatum, uom, frequentie, x):
while vervaldatum <= x:
result.append(vervaldatum.strftime("%Y-%m-%d"))
if uom == "D":
vervaldatum += pd.DateOffset(days=frequentie)
# vervaldatum += pd.DateOffset(days=frequentie)
# vervaldatum += pd.DateOffset(weeks=frequentie // 7)
# vervaldatum += pd.DateOffset(months=frequentie // 30)
vervaldatum += pd.DateOffset(months=frequentie // 30)
elif uom == "W":
vervaldatum += pd.DateOffset(weeks=frequentie)
elif uom == "M":

@ -129,9 +129,7 @@
applyColors();
});
$('#resetTable').on('click', function () {
table.search('').columns().search('').draw();
table.order([0, 'asc']).draw();
table.page(0).draw('page');
window.location.href = "{{ url_for('show_result') }}";
});
});
</script>

Loading…
Cancel
Save