89 lines
1.7 KiB
Python
89 lines
1.7 KiB
Python
#!/usr/bin/env python
|
|
# encoding: utf-8
|
|
|
|
from abc import ABC, abstractmethod
|
|
import yaml
|
|
|
|
"""
|
|
|
|
Adapter to pull data from the filesystem
|
|
|
|
# Loader
|
|
|
|
# Writer
|
|
"""
|
|
|
|
|
|
class Loader(ABC):
|
|
|
|
"""Load data from source"""
|
|
|
|
CONFIG = {}
|
|
|
|
def __init__(self, configfile=""):
|
|
"""Init loader
|
|
|
|
:param configfile: yaml file with informations on data source
|
|
"""
|
|
self._config = self.CONFIG
|
|
if configfile.endswith(".yml"):
|
|
with open(configfile, "r") as config:
|
|
self._config.update(yaml.load(config, Loader=yaml.FullLoader))
|
|
|
|
def get_config(self):
|
|
""" Get config"""
|
|
return self._config
|
|
|
|
@abstractmethod
|
|
def get_tribes(self):
|
|
""" Get tribes list """
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_exams(self, tribes=[]):
|
|
"""Get exams list
|
|
|
|
:param tribes: get only exams for those tribes
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_students(self, tribes=[]):
|
|
"""Get student list
|
|
|
|
:param filters: list of filters
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_exam_questions(self, exams=[]):
|
|
"""Get questions for the exam
|
|
|
|
:param exams: questions for those exams only
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_questions_scores(self, questions=[]):
|
|
"""Get scores of those questions
|
|
|
|
:param questions: score for those questions
|
|
"""
|
|
pass
|
|
|
|
# @abstractmethod
|
|
# def get_student_scores(self, student):
|
|
# """Get scores of the student
|
|
|
|
# :param student:
|
|
# """
|
|
# pass
|
|
|
|
|
|
class Writer(ABC):
|
|
|
|
""" Write datas to the source """
|
|
|
|
def __init__(self):
|
|
pass
|