Added question generating API
This commit is contained in:
		@@ -2,7 +2,10 @@ import os
 | 
			
		||||
import pathlib
 | 
			
		||||
from json import dump, loads
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
 | 
			
		||||
from flask.json import jsonify
 | 
			
		||||
from main import app
 | 
			
		||||
from random import shuffle
 | 
			
		||||
 | 
			
		||||
from werkzeug.utils import secure_filename
 | 
			
		||||
 | 
			
		||||
@@ -58,4 +61,36 @@ def store_data_file(file, default:bool=None):
 | 
			
		||||
    if default:
 | 
			
		||||
        with open(os.path.join(app.config['DATA_FILE_DIRECTORY'], '.default.txt'), 'w') as _file:
 | 
			
		||||
            _file.write(filename)
 | 
			
		||||
    return filename
 | 
			
		||||
    return filename
 | 
			
		||||
 | 
			
		||||
def randomise_list(list:list):
 | 
			
		||||
    _list = list.copy()
 | 
			
		||||
    shuffle(_list)
 | 
			
		||||
    return(_list)
 | 
			
		||||
 | 
			
		||||
def generate_questions(dataset:dict):
 | 
			
		||||
    questions_list = dataset['questions']
 | 
			
		||||
    output = []
 | 
			
		||||
    for block in randomise_list(questions_list):
 | 
			
		||||
        if block['type'] == 'question':
 | 
			
		||||
            question = {
 | 
			
		||||
                'q_type': 'question',
 | 
			
		||||
                'q_no': block['q_no'],
 | 
			
		||||
                'question_header': '',
 | 
			
		||||
                'text': block['text'],
 | 
			
		||||
                'options': randomise_list(block['options'])
 | 
			
		||||
            }
 | 
			
		||||
            output.append(question)
 | 
			
		||||
        if block['type'] == 'block':
 | 
			
		||||
            for key, _question in enumerate(randomise_list(block['questions'])):
 | 
			
		||||
                question = {
 | 
			
		||||
                    'q_type': 'block',
 | 
			
		||||
                    'q_no': _question['q_no'],
 | 
			
		||||
                    'question_header': block['question_header'] if 'question_header' in block else '',
 | 
			
		||||
                    'block_length': len(block['questions']),
 | 
			
		||||
                    'block_q_no': key,
 | 
			
		||||
                    'text': _question['text'],
 | 
			
		||||
                    'options': randomise_list(_question['options'])
 | 
			
		||||
                }
 | 
			
		||||
                output.append(question)
 | 
			
		||||
    return output
 | 
			
		||||
		Reference in New Issue
	
	Block a user