From c5487cec6f4c38315c2b887b53831d7a26b06b20 Mon Sep 17 00:00:00 2001 From: Lasse Server Date: Thu, 22 Feb 2024 06:32:13 +0100 Subject: [PATCH] Adding report --- __pycache__/bot.cpython-39.pyc | Bin 0 -> 9734 bytes __pycache__/bot_strings.cpython-39.pyc | Bin 0 -> 908 bytes bot.py | 2 +- report_template.html | 28 ++++++++++++++++++++ streamlit_interface.py | 34 ++++++++++++++++++++++++- 5 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 __pycache__/bot.cpython-39.pyc create mode 100644 __pycache__/bot_strings.cpython-39.pyc create mode 100644 report_template.html diff --git a/__pycache__/bot.cpython-39.pyc b/__pycache__/bot.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d7501155ee6b286aa75a837319fa3f7eb533ccd3 GIT binary patch literal 9734 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 literal 0 HcmV?d00001 diff --git a/bot.py b/bot.py index fe13e57..76ef349 100644 --- a/bot.py +++ b/bot.py @@ -148,7 +148,7 @@ class Chatbot(BaseBot): return question else: - return False, False + return 'done' class CheckerBot(BaseBot): diff --git a/report_template.html b/report_template.html new file mode 100644 index 0000000..21d22b7 --- /dev/null +++ b/report_template.html @@ -0,0 +1,28 @@ + + + + + + +

Report by {{ report.name }}

+

Description: {{ report.description }}

+

Incident: {{ report.incident }}

+

Role: {{ report.role }}

+

Location: {{ report.location }}

+

Image: {{ report.image }}

+

Size: {{ report.size }}

+

Shape: {{ report.shape }}

+

Color: {{ report.color }}

+

Organization: {{ report.organization }}

+

Type: {{ report.type }}

+

Marked: {{ report.marked }}

+

Blockage: {{ report.blockage }}

+

Area Description: {{ report.area_description }}

+

Contact Person Phone Number: {{ report.contact_person_phone_number }}

+

Contact Person Name: {{ report.contact_person_name }}

+ + \ No newline at end of file diff --git a/streamlit_interface.py b/streamlit_interface.py index 33d43a8..a065bbb 100644 --- a/streamlit_interface.py +++ b/streamlit_interface.py @@ -1,4 +1,5 @@ import streamlit as st +import json import numpy as np from PIL import Image from bot import Chatbot, Report, CheckerBot, GeneralBot, botstrings @@ -29,6 +30,24 @@ def store_state(): st.session_state.report = report +def generate_report(): + from jinja2 import Environment, FileSystemLoader + + # Load the Jinja2 template + env = Environment(loader=FileSystemLoader('.')) + template = env.get_template('report_template.html') + + return template.render(report=report) + + +def report_button(): + if st.button("Generate report"): + report = st.session_state.report + report_html = generate_report(report) + st.markdown(report_html, unsafe_allow_html=True) + + + st.title("UNMAS Bot") # Initialize chat history @@ -65,7 +84,7 @@ for message in st.session_state.messages: with st.chat_message(message["role"]): st.markdown(message["content"]) - +print('Upload image', st.session_state.upload_image) if st.session_state.upload_image: user_input = None img_file = st.file_uploader('Upload an image', type=['png', 'jpg', 'jpeg']) @@ -79,6 +98,7 @@ if st.session_state.upload_image: send(question, check=False) st.session_state.upload_image = False store_state() + st.rerun() # user_input = st.chat_input('') @@ -93,6 +113,10 @@ else: if user_input and not st.session_state.upload_image: + if user_input.lower() == 'show report': + # Download the report + report_button() + st.chat_message("user").markdown(user_input) # Add user message to chat history st.session_state.messages.append({"role": "user", "content": user_input}) @@ -148,6 +172,14 @@ if user_input and not st.session_state.upload_image: print(st.session_state.upload_image) send(question, check=False, add_to_memory=False) st.rerun() + + elif question == 'done': + send('Thank you for your help! I will now process the information and get back to you. Below is the report.', check=False) + r = report.__dict__.copy() + del r['descriptions'] + del r['image'] + st.write(json.dumps(r, indent=4)) + else: send(question, check=False)