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")