Spaces:
Runtime error
Runtime error
import streamlit as st | |
from docx import Document | |
from docx2pdf import convert | |
import datetime | |
# Function to load file based on selected filename | |
def load_file(filename): | |
with open(filename, 'r') as file: | |
file_contents = file.read() | |
return file_contents | |
# Function to save file with changes | |
def save_file(filename, content): | |
with open(filename, 'w') as file: | |
file.write(content) | |
# Function to create 2 formats of current date "Month DD YYYY" "MM/DD/YYYY" | |
def create_date_format(): | |
current_date = datetime.datetime.now() | |
current_month = current_date.month | |
current_day = current_date.day | |
current_year = current_date.year | |
month_name = datetime.datetime.strptime(str(current_month), "%m").strftime("%B") | |
current_date_format1 = f"{month_name} {current_day}, {current_year}" | |
current_date_format2 = f"{current_month}/{current_day}/{current_year}" | |
#create a pedding with spaces b second date | |
return current_date_format1, current_date_format2.ljust(13) | |
def main(): | |
st.title('File Editor') | |
# List of available files | |
files = ["LOI_ADDRESS_DATE.docx", "LOI_ADDRESS_D.docx", 'file3.txt'] | |
selected_file = st.selectbox('Select a file:', files) | |
current_date_format1, current_date_format2 = create_date_format() | |
replacements = ["owner_name", | |
"property_owner", | |
"property_address", | |
"purchase_price", | |
"property_size_sf", | |
"price_per_sf", | |
"brokerage_name" | |
] | |
parameter_values = {} | |
for param in replacements: | |
parameter_values[param] = st.text_input(f'Enter value for {param}:') | |
parameter_values["current_date"] = current_date_format2 | |
parameter_values["Month_day_year"] = current_date_format1 | |
# run the file update | |
modified_doc = replace_text_in_docx(selected_file, parameter_values) | |
# Save button | |
if st.button('Save Changes'): | |
base_name, extension = selected_file.split(".") | |
new_filename = f"{base_name}_modified{extension}" | |
# new_filename = "LOI_ADDRESS_DATE_modified.docx" | |
modified_doc.save(new_filename) | |
st.success('File saved successfully!') | |
with open(new_filename, 'rb') as f: | |
st.download_button('Download Docx', f, file_name='LOI_ADDRESS_DATE_modified.docx') | |
# Function to replace parameters in file content with provided values | |
def replace_text_in_docx(docx_file, replacements): | |
doc = Document(docx_file) | |
for search_text, replace_text in replacements.items(): | |
for paragraph in doc.paragraphs: | |
paragraph.text.replace(search_text, replace_text) | |
if search_text in paragraph.text: | |
inline = paragraph.runs | |
for i in range(len(inline)): | |
if search_text in inline[i].text: | |
text = inline[i].text.replace(search_text, replace_text) | |
inline[i].text = text | |
return doc | |
# Function to replace parameters in file content with provided values | |
def replace_parameters(file_contents, parameter_values): | |
updated_contents = file_contents | |
for param, value in parameter_values.items(): | |
updated_contents = updated_contents.replace(f'@{param}', value) | |
return updated_contents | |
if __name__ == "__main__": | |
main() | |