Mietanbot / app.py
MathiasFiF's picture
Update app.py
67b302f
raw
history blame contribute delete
No virus
3.69 kB
import streamlit as st
from docx import Document
import os
from datetime import timedelta
import subprocess
def convert_docx_to_pdf(input_file, output_file):
try:
subprocess.run(["unoconv", "-f", "pdf", "-o", output_file, input_file], check=True)
except subprocess.CalledProcessError as e:
print(f"Conversion to pdf failed: {e}")
return False
return True
def automatic_mietanbot(name_anbieter, adresse_anbieter, email, telephone, datum, zimmer, adresse, move_in_date, move_out_date, rent):
doc = Document("Mietanbot_Vorlage.docx")
for p in doc.paragraphs:
if "Mietanbot" in p.text:
p.text+=f" {adresse}"
if 'Name des Anbieters:' in p.text:
p.clear()
p.add_run(f"Name des Anbieters: {name_anbieter}")
elif 'Derzeitige Adresse des Anbieters:' in p.text:
p.clear()
p.add_run(f"Derzeitige Adresse des Anbieters: {adresse_anbieter}")
elif 'Email des Anbieters:' in p.text:
p.clear()
p.add_run(f"Email des Anbieters: {email}")
elif 'Tel. des Anbieters:' in p.text:
p.clear()
p.add_run(f"Tel. des Anbieters: {telephone}")
elif 'Der Anbieter, erstellt am' in p.text:
p.clear()
p.add_run(f"Der Anbieter, erstellt am {datum} das verbindliche Anbot, den Bestandsgegenstand Zimmer {zimmer} {adresse} ab {move_in_date} zu mieten und bleibt mit diesem Anbot bis zum {move_out_date} im Wort. Der monatliche Mietzins beträgt {rent} EUR inklusive MwSt.")
elif 'Als Kaution sind ' in p.text:
p.clear()
p.add_run(f"Als Kaution sind {3*float(rent)} Euro vereinbart die auf das, im Mietvertrag vereinbarte Konto einzuzahlen sind. Die Kaution wird nach ordnungsgemäßer Rückgabe der Wohnung und Erledigung aller vom Anbieter zu erfüllenden Verpflichtungen zurückbezahlt.")
doc_path = "edited_Mietanbot.docx"
dur = "6 Monate" if duration_6_month else "1 Jahr"
pdf_path = f"Mietanbot_{adresse}_{zimmer}_{dur}.pdf"
doc.save(doc_path)
# Convert DOCX to PDF
convert_docx_to_pdf(doc_path, pdf_path)
return pdf_path,dur
# Streamlit UI
st.title("Automatic Mietanbot Generator")
name_anbieter = st.text_input("Name des Anbieters:")
adresse_anbieter = st.text_input("Derzeitige Adresse des Anbieters:")
email = st.text_input("Email des Anbieters:")
telephone = st.text_input("Tel. des Anbieters:")
datum = st.date_input("Datum:")
zimmer = st.text_input("Zimmer:")
adresse = st.text_input("Adresse:")
move_in_date = st.date_input("Move-in Date:")
rent = st.text_input("Rent:")
duration_6_month = st.checkbox("6 Month Duration")
duration_1_year = st.checkbox("1 Year Duration")
# Calculate move_out_date based on selected duration
if duration_6_month:
move_out_date = move_in_date + timedelta(days=180)
elif duration_1_year:
move_out_date = move_in_date + timedelta(days=365)
else:
move_out_date = "N/A"
if st.button("Generate Mietanbot"):
pdf_path,dur = automatic_mietanbot(name_anbieter, adresse_anbieter, email, telephone, datum, zimmer, adresse, move_in_date, move_out_date, rent)
# Download PDF
if os.path.exists(pdf_path):
with open(pdf_path, "rb") as f:
pdf_data = f.read()
st.download_button("Download Mietanbot PDF", pdf_data, f"Mietanbot_{adresse}_{zimmer}_{dur}.pdf","application/pdf")
# Download DOCX
if os.path.exists(pdf_path):
with open(pdf_path, "rb") as f:
pdf_data = f.read()
st.download_button("Download Mietanbot DOCX", pdf_data, f"Mietanbot_{adresse}_{zimmer}_{dur}.docx","application/docx")