adibak commited on
Commit
8f4c73e
·
1 Parent(s): dade368

add comments and visually clear file input upon clicking X

Browse files
Files changed (2) hide show
  1. app.py +14 -12
  2. helpers/file_manager.py +0 -9
app.py CHANGED
@@ -222,44 +222,45 @@ with st.sidebar:
222
  value='2024-05-01-preview',
223
  )
224
 
 
225
  from pypdf import PdfReader
 
226
 
227
- uploaded_pdf = st.file_uploader("1: Upload a PDF file", type=["pdf"])
 
 
 
 
 
228
 
229
- # Detect file change: update session state
230
  if uploaded_pdf:
231
- # Unique hash for reset logic
232
  new_file_hash = hash(uploaded_pdf.getvalue())
233
 
234
- # If file is newly uploaded or changed
235
  if st.session_state.get("current_pdf_hash") != new_file_hash:
236
  reader = PdfReader(uploaded_pdf)
237
  total_pages = len(reader.pages)
238
 
239
  st.session_state["pdf_page_count"] = total_pages
240
  st.session_state["current_pdf_hash"] = new_file_hash
241
-
242
- # Force slider reset
243
  st.session_state.pop("page_range", None)
244
 
245
- # Set default page count if no file uploaded
246
  page_count = st.session_state.get("pdf_page_count", 50)
247
- max_slider = min(50, page_count)
248
 
249
- # Show slider only after file upload
250
  if "pdf_page_count" in st.session_state:
 
251
  page_range_slider = st.slider(
252
- label="2: Specify a page range to examine:",
253
  min_value=1,
254
  max_value=max_slider,
255
  value=(1, max_slider),
256
- key="page_range" # persistent + resettable
257
  )
258
  else:
259
  st.info("📄 Upload a PDF to specify a page range.")
260
 
261
 
262
-
263
  def build_ui():
264
  """
265
  Display the input elements for content generation.
@@ -320,6 +321,7 @@ def set_up_chat_ui():
320
  logger.info(f"type {type(prompt)}")
321
  prompt_text = prompt
322
 
 
323
  if uploaded_pdf and "page_range" in st.session_state:
324
  st.session_state[ADDITIONAL_INFO] = filem.get_pdf_contents(
325
  uploaded_pdf,
 
222
  value='2024-05-01-preview',
223
  )
224
 
225
+
226
  from pypdf import PdfReader
227
+ uploaded_pdf = st.file_uploader("4: Upload a PDF file", type=["pdf"])
228
 
229
+ # Check if user cleared the file input
230
+ if uploaded_pdf is None and "current_pdf_hash" in st.session_state:
231
+ st.session_state.pop("current_pdf_hash", None)
232
+ st.session_state.pop("pdf_page_count", None)
233
+ st.session_state.pop("page_range", None)
234
+ st.session_state.pop("additional_info", None) # optional: clear extracted text too
235
 
236
+ # Handle file upload and range tracking
237
  if uploaded_pdf:
 
238
  new_file_hash = hash(uploaded_pdf.getvalue())
239
 
 
240
  if st.session_state.get("current_pdf_hash") != new_file_hash:
241
  reader = PdfReader(uploaded_pdf)
242
  total_pages = len(reader.pages)
243
 
244
  st.session_state["pdf_page_count"] = total_pages
245
  st.session_state["current_pdf_hash"] = new_file_hash
 
 
246
  st.session_state.pop("page_range", None)
247
 
 
248
  page_count = st.session_state.get("pdf_page_count", 50)
249
+ max_slider = min(50, page_count) # enforce 50 page limmit
250
 
 
251
  if "pdf_page_count" in st.session_state:
252
+ # make the range slider
253
  page_range_slider = st.slider(
254
+ label="5: Specify a page range to examine:",
255
  min_value=1,
256
  max_value=max_slider,
257
  value=(1, max_slider),
258
+ key="page_range"
259
  )
260
  else:
261
  st.info("📄 Upload a PDF to specify a page range.")
262
 
263
 
 
264
  def build_ui():
265
  """
266
  Display the input elements for content generation.
 
321
  logger.info(f"type {type(prompt)}")
322
  prompt_text = prompt
323
 
324
+ # if the user uploaded a pdf and specified a range, get the contents
325
  if uploaded_pdf and "page_range" in st.session_state:
326
  st.session_state[ADDITIONAL_INFO] = filem.get_pdf_contents(
327
  uploaded_pdf,
helpers/file_manager.py CHANGED
@@ -33,17 +33,8 @@ def get_pdf_contents(
33
 
34
  reader = PdfReader(pdf_file)
35
 
36
- # get number of pages
37
- total_pages = len(reader.pages)
38
- n_pages = min(max_pages, total_pages) # set n_pages to min of 50 or the pdf length if the pdf is shorter than 50 pages
39
-
40
- # ensure validity
41
  start, end = page_range # set start and end per the range (user-specified values)
42
- start = max(1, start) # set start to max of 1, or user-spec start
43
- end = min(n_pages, end) # set end to min of n_pages, or user-spec end
44
 
45
- logger.info(f"start={start}")
46
- logger.info(f"end={end}")
47
  text = ''
48
  for page_num in range(start - 1, end):
49
  page = reader.pages[page_num]
 
33
 
34
  reader = PdfReader(pdf_file)
35
 
 
 
 
 
 
36
  start, end = page_range # set start and end per the range (user-specified values)
 
 
37
 
 
 
38
  text = ''
39
  for page_num in range(start - 1, end):
40
  page = reader.pages[page_num]