Spaces:
Runtime error
Runtime error
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") | |