candidate-platform / core /questions_loader_local.py
shaileshjadhavSS
Added WIP note for techs that don't have questionnaire
a709932
raw
history blame
2 kB
import csv
import os
import random
class QuestionLoaderLocal:
def __init__(self, file_path, question_count):
"""
Initializes the QuestionLoader with a base path for local files.
:param base_path: The base path where the question files are located.
"""
self.base_path = "candidate_assesment/data"
self.question_count = question_count
self.file_path = file_path
def fetch_questions(self):
"""
Fetches the questions for the given technology from the local file system.
:param technology: The technology (e.g., Python, Django) to fetch questions for.
:return: A list of dictionaries, where each dictionary represents a question.
:raises: Exception if the file cannot be fetched or read.
"""
# file_path = os.path.join(BASE_DIR, "questions", technology, "questions.csv")
if not os.path.exists(self.file_path):
return []
# raise FileNotFoundError(f"No questions found for technology")
try:
questions = []
# Read and parse the CSV file
with open(self.file_path, mode="r", encoding="utf-8") as file:
csv_reader = csv.DictReader(file)
for row in csv_reader:
questions.append({
"question": row["question"],
"option1": row["option1"],
"option2": row["option2"],
"option3": row["option3"],
"option4": row["option4"],
"answer": row["answer"],
"difficulty": row["difficulty"].lower()
})
# Randomly select 20 questions
sampled_questions = random.sample(questions, min(self.question_count, len(questions)))
return sampled_questions
except Exception as e:
raise RuntimeError(f"Failed to fetch questions: {str(e)}")