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