1717from flask_recaptcha import ReCaptcha
1818
1919import servants .user as user
20+ from app .utils import format_check_for_table
2021from db import db_methods
2122from db .db_types import Check
2223from lti_session_passback .lti import utils
2627from root_logger import get_logging_stdout_handler , get_root_logger
2728from servants import pre_luncher
2829from tasks import create_task
29- from utils import checklist_filter , decorator_assertion , get_file_len , timezone_offset , format_check
30+ from utils import checklist_filter , decorator_assertion , get_file_len , format_check
3031
3132logger = get_root_logger ('web' )
3233UPLOAD_FOLDER = '/usr/src/project/files'
3536 'report' : {'doc' , 'odt' , 'docx' }
3637}
3738DOCUMENT_TYPES = {'Лабораторная работа' , 'Курсовая работа' , 'ВКР' }
38- TABLE_COLUMNS = ['Solution' , 'User' , 'File' , 'Check added' , 'LMS date' , 'Score' ]
39+ TABLE_COLUMNS = ['Solution' , 'User' , 'File' , 'Criteria' , ' Check added' , 'LMS date' , 'Score' ]
3940
4041app = Flask (__name__ , static_folder = "./../src/" , template_folder = "./templates/" )
4142app .config .from_pyfile ('settings.py' )
@@ -188,11 +189,13 @@ def run_task():
188189 'user' : current_user .username ,
189190 'lms_user_id' : current_user .lms_user_id ,
190191 'enabled_checks' : current_user .criteria ,
192+ 'criteria' : current_user .criteria ,
191193 'file_type' : current_user .file_type ,
192194 'filename' : file .filename ,
193195 'score' : - 1 , # score=-1 -> checking in progress
194196 'is_ended' : False ,
195- 'is_failed' : False
197+ 'is_failed' : False ,
198+ 'params_for_passback' : current_user .params_for_passback
196199 })
197200 db_methods .add_check (file_id , check ) # add check for parsed_file to db
198201 task = create_task .delay (check .pack (to_str = True )) # add check to queue
@@ -243,7 +246,7 @@ def results(_id):
243246 if check is not None :
244247 # show processing time for user
245248 avg_process_time = None if check .is_ended else db_methods .get_average_processing_time ()
246- return render_template ("./results.html" , navi_upload = True , name = current_user . name , results = check , id = _id ,
249+ return render_template ("./results.html" , navi_upload = True , results = check ,
247250 columns = TABLE_COLUMNS , avg_process_time = avg_process_time ,
248251 stats = format_check (check .pack ()))
249252 else :
@@ -336,7 +339,8 @@ def api_criteria_pack():
336339 # testing pack initialization
337340 file_type_info = {'type' : file_type }
338341 if file_type == DEFAULT_REPORT_TYPE_INFO ['type' ]:
339- file_type_info ['report_type' ] = report_type if report_type in REPORT_TYPES else DEFAULT_REPORT_TYPE_INFO ['report_type' ]
342+ file_type_info ['report_type' ] = report_type if report_type in REPORT_TYPES else DEFAULT_REPORT_TYPE_INFO [
343+ 'report_type' ]
340344 inited , err = init_criterions (raw_criterions , file_type = file_type_info )
341345 if len (raw_criterions ) != len (inited ) or err :
342346 msg = f"При инициализации набора { pack_name } возникли ошибки. JSON-конфигурация: '{ raw_criterions } '. Успешно инициализированные: { inited } . Возникшие ошибки: { err } ."
@@ -416,16 +420,7 @@ def check_list_data():
416420 # construct response
417421 response = {
418422 "total" : count ,
419- "rows" : [{
420- "_id" : str (item ["_id" ]),
421- "filename" : item ["filename" ],
422- "user" : item ["user" ],
423- "lms-user-id" : item ["lms_user_id" ] if item .get ("lms_user_id" ) else '-' ,
424- "upload-date" : (item ["_id" ].generation_time + timezone_offset ).strftime ("%d.%m.%Y %H:%M:%S" ),
425- "moodle-date" : item ['lms_passback_time' ].strftime ("%d.%m.%Y %H:%M:%S" ) if item .get (
426- 'lms_passback_time' ) else '-' ,
427- "score" : item ["score" ]
428- } for item in rows ]
423+ "rows" : [format_check_for_table (item ) for item in rows ]
429424 }
430425
431426 # return json data
@@ -448,17 +443,7 @@ def get_query(req):
448443
449444def get_stats ():
450445 rows , count = db_methods .get_checks (** get_query (request ))
451- return [{
452- "_id" : str (item ["_id" ]),
453- "filename" : item ["filename" ],
454- "user" : item ["user" ],
455- "lms-username" : item ["user" ].rsplit ('_' , 1 )[0 ],
456- "lms-user-id" : item ["lms_user_id" ] if item .get ("lms_user_id" ) else '-' ,
457- "upload-date" : (item ["_id" ].generation_time + timezone_offset ).strftime ("%d.%m.%Y %H:%M:%S" ),
458- "moodle-date" : item ['lms_passback_time' ].strftime ("%d.%m.%Y %H:%M:%S" ) if item .get (
459- 'lms_passback_time' ) else '-' ,
460- "score" : item ["score" ]
461- } for item in rows ]
446+ return [format_check_for_table (item ) for item in rows ]
462447
463448
464449@app .route ("/get_csv" )
0 commit comments