Spaces:
				
			
			
	
			
			
					
		Running
		
	
	
	
			
			
	
	
	
	
		
		
					
		Running
		
	
		adibak
		
	commited on
		
		
					Commit 
							
							·
						
						8f4c73e
	
1
								Parent(s):
							
							dade368
								
add comments and visually clear file input upon clicking X
Browse files- app.py +14 -12
- 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 | 
            -
                     | 
|  | |
|  | |
|  | |
|  | |
|  | |
| 228 |  | 
| 229 | 
            -
                    #  | 
| 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=" | 
| 253 | 
             
                            min_value=1,
         | 
| 254 | 
             
                            max_value=max_slider,
         | 
| 255 | 
             
                            value=(1, max_slider),
         | 
| 256 | 
            -
                            key="page_range" | 
| 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]
         |