🔍 Code Extractor

function get_analysis_files

Maturity: 50

Flask API endpoint that retrieves files associated with a specific analysis within a session, returning them as a JSON response.

File:
/tf/active/vicechatdev/full_smartstat/app.py
Lines:
1285 - 1299
Complexity:
simple

Purpose

This endpoint serves as a REST API route to fetch all files related to a particular analysis. It's designed to be called by frontend applications or API clients to retrieve analysis artifacts, outputs, or related documents. The function delegates the actual file retrieval to an analysis_service and handles error cases with appropriate HTTP status codes.

Source Code

def get_analysis_files(session_id, analysis_id):
    """Get files for a specific analysis"""
    try:
        files = analysis_service.get_analysis_files(session_id, analysis_id)
        return jsonify({
            'success': True,
            'files': files
        })
        
    except Exception as e:
        logger.error(f"Error getting analysis files: {str(e)}")
        return jsonify({
            'success': False,
            'error': str(e)
        }), 500

Parameters

Name Type Default Kind
session_id - - positional_or_keyword
analysis_id - - positional_or_keyword

Parameter Details

session_id: String identifier for the user session or analysis session. Used to scope the analysis lookup to a specific session context. Expected to be a valid session identifier (likely UUID or similar) that exists in the system.

analysis_id: String identifier for the specific analysis whose files are being requested. Expected to be a valid analysis identifier that exists within the specified session. Used to locate and retrieve the correct set of files.

Return Value

Returns a Flask Response object containing JSON data. On success (HTTP 200), returns {'success': True, 'files': <list_of_files>} where files is the data structure returned by analysis_service.get_analysis_files(). On error (HTTP 500), returns {'success': False, 'error': <error_message>} with a 500 status code. The exact structure of the 'files' array depends on the analysis_service implementation.

Dependencies

  • flask
  • logging
  • typing
  • pathlib
  • pandas
  • werkzeug
  • uuid
  • datetime
  • tempfile
  • base64
  • threading
  • time
  • shutil

Required Imports

from flask import Flask
from flask import jsonify
import logging
from services import StatisticalAnalysisService

Usage Example

# Assuming Flask app setup
from flask import Flask, jsonify
import logging
from services import StatisticalAnalysisService

app = Flask(__name__)
logger = logging.getLogger(__name__)
analysis_service = StatisticalAnalysisService()

@app.route('/api/session/<session_id>/analysis/<analysis_id>/files')
def get_analysis_files(session_id, analysis_id):
    try:
        files = analysis_service.get_analysis_files(session_id, analysis_id)
        return jsonify({
            'success': True,
            'files': files
        })
    except Exception as e:
        logger.error(f"Error getting analysis files: {str(e)}")
        return jsonify({
            'success': False,
            'error': str(e)
        }), 500

# Client usage example:
# GET /api/session/abc123/analysis/xyz789/files
# Response: {"success": true, "files": [{"name": "output.csv", "path": "/path/to/file"}]}

Best Practices

  • Ensure the analysis_service is properly initialized before the Flask app starts handling requests
  • Consider adding authentication/authorization checks before allowing file access
  • Add input validation for session_id and analysis_id to prevent injection attacks
  • Consider adding rate limiting to prevent abuse of the endpoint
  • The broad Exception catch should ideally be replaced with specific exception types for better error handling
  • Consider adding request logging for audit trails
  • Add CORS headers if this API will be accessed from different domains
  • Consider implementing pagination if the files list can be large
  • Add HTTP method restriction (methods=['GET']) to the route decorator for clarity
  • Consider adding response caching headers if file lists don't change frequently

Similar Components

AI-powered semantic similarity - components with related functionality:

  • function get_results_v1 81.3% similar

    Flask route handler that retrieves and returns statistical analysis results, generated files, and AI-generated interpretations for a given session ID.

    From: /tf/active/vicechatdev/smartstat/app.py
  • function get_results 80.7% similar

    Flask route handler that retrieves and returns comprehensive analysis results for a given session, including summary data, generated files, interpretations, and execution tracking information.

    From: /tf/active/vicechatdev/full_smartstat/app.py
  • function get_analysis_session 80.1% similar

    Flask API endpoint that retrieves details of a specific data analysis session for an authenticated user, ensuring the user has access to the requested session.

    From: /tf/active/vicechatdev/vice_ai/new_app.py
  • function upload_analysis_dataset 74.4% similar

    Flask API endpoint that handles file upload for data analysis sessions, accepting CSV and Excel files, validating user access, and processing the dataset through a data analysis service.

    From: /tf/active/vicechatdev/vice_ai/new_app.py
  • function get_session_status 74.3% similar

    Flask API endpoint that retrieves the current status and summary of an analysis session by its ID.

    From: /tf/active/vicechatdev/full_smartstat/app.py
← Back to Browse