Skip to content
Snippets Groups Projects
Select Git revision
  • e9761bafec1a6d4d6de083fa6a1fa3dfbeed3594
  • dev default protected
  • integrating-verify-otp-screen
  • language-selection
  • ECAP1-24-verify_otp
5 results

app_text.dart

Blame
  • process_data.py 3.43 KiB
    # process_data.py
    
    import time
    from config import API_URL, INPUT_EXCEL_FILE, OUTPUT_EXCEL_FILE, OUTPUT_HEADERS, FORMATTED_RESPONSES_COUNT
    from utils import load_excel, save_excel, create_output_workbook
    from utils.unpack_data import unpack_input_data  # Import the new unpack function
    from utils.api_client import send_api_request
    #pands data format
    
    
    def process_rows():
        # Load input workbook
        workbook = load_excel(INPUT_EXCEL_FILE)
        sheet = workbook.active
    
        # Generate dynamic output headers
        output_headers = OUTPUT_HEADERS + [
            f"Formatted Response{i + 1}" for i in range(FORMATTED_RESPONSES_COUNT)
        ] + [
            f"Response Time{i + 1} (seconds)" for i in range(FORMATTED_RESPONSES_COUNT)
        ]
    
        # Create output workbook
        output_workbook = create_output_workbook(output_headers)
        output_sheet = output_workbook.active
    
        for row_index, row in enumerate(sheet.iter_rows(min_row=2, values_only=True), start=2):
            if all(cell is None for cell in row):
                print(f"Skipping empty row {row_index}")
                continue
    
            # Map input columns to header keys dynamically
            input_data = {header: row[i] for i, header in enumerate(OUTPUT_HEADERS)}
    
            # Check if all required fields are present
            if any(value is None for value in input_data.values()):
                print(f"Skipping row {row_index}: Missing required data")
                continue
    
            print(f"Processing row {row_index}")
    
            # Unpack input data and prepare the payload
            payload = unpack_input_data(input_data)
    
            responses = []
            response_times = []
    
            for _ in range(FORMATTED_RESPONSES_COUNT):
                try:
                    response, response_time = send_api_request(API_URL, payload)
    
                    # Check if the response is an actual response object and contains status_code
                    if isinstance(response, dict):  # The response is likely the JSON data
                        formatted_response = "Response:\n"
                        for key, value in response.items():
                            if isinstance(value, str) and "\n" in value:
                                formatted_response += f"{key.capitalize()}:\n{value.strip()}\n"
                            else:
                                formatted_response += f"{key.capitalize()}: {value}\n"
                        formatted_response += "-" * 50
                        responses.append(formatted_response)
                    else:
                        # If the response doesn't contain JSON, handle error (may need to add a check here)
                        error_response = f"Error: Invalid response format received\n"
                        responses.append(error_response)
    
                    response_times.append(response_time)
                except Exception as e:
                    # Handle unexpected exceptions
                    error_message = f"Exception occurred: {str(e)}"
                    responses.append(error_message)
                    response_times.append(0)
    
                time.sleep(1)
    
            # Append data to the output sheet
            output_row = list(input_data.values()) + [
                responses[i] if i < len(responses) else "N/A" for i in range(FORMATTED_RESPONSES_COUNT)
            ] + [
                response_times[i] if i < len(response_times) else 0 for i in range(FORMATTED_RESPONSES_COUNT)
            ]
    
            output_sheet.append(output_row)
    
        # Save the output workbook
        save_excel(output_workbook, OUTPUT_EXCEL_FILE)
        print(f"Responses saved in {OUTPUT_EXCEL_FILE}")