示例#1
0
    def post(self):
        if not request.is_json:
            return jsonify({"msg": "missing json request"}), 400

        name = request.json.get('name', None)
        answers_key = request.json.get('answers_key', dict())
        date = datetime.datetime.strptime(request.json.get('date', None),
                                          '%Y-%m-%d')
        description = request.json.get('description', None)
        lessons = request.json.get('lessons', dict())
        setting = request.json.get('setting', dict())
        marks = dict()
        ranks = dict()
        percentage_of_responses_to_questions = dict()
        user_id = get_current_user().id
        students = list()
        workbooks = list()
        classes = list()

        try:
            session = db_session()
            exam = Exam(name, answers_key, date, description, lessons, setting,
                        marks, ranks, percentage_of_responses_to_questions,
                        user_id, students, classes, workbooks)
            session.add(exam)
            session.commit()
            return jsonify(success=True), 201
        except Exception as e:
            session.rollback()
            Logger.debug("could not create new exam")
            Logger.error(e.message)
            return jsonify(success=False), 400
示例#2
0
def test_logger(logger: Logger) -> None:
    msg = "Any Message"
    logger.info(msg)
    logger.error()
    logger.critical(msg)
    logger.debug(msg)
    logger.warning(msg)
示例#3
0
    def add(self):
        if not request.is_json:
            return jsonify({"msg": "missing json request"}), 400

        first_name = request.json.get('first_name', None)
        last_name = request.json.get('last_name', None)
        expire_date = datetime.datetime.strptime(
            request.json.get('expire_date', None), '%Y-%m-%d')
        national_id = request.json.get('national_id', None)
        advisor = request.json.get('advisor', None)
        student_id = request.json.get(
            'student_id', None)  #TODO: generate a unique vlaue instead of None
        user_id = get_current_user().id
        exams = []
        workbooks = []
        classes = []

        try:
            session = db_session()
            student = Student(first_name, last_name, expire_date, national_id,
                              advisor, student_id, user_id, classes, exams,
                              workbooks)
            session.add(student)
            session.commit()
            return jsonify(success=True), 201
        except Exception as e:
            session.rollback()
            Logger.debug("could not create student")
            Logger.error(e.message)
            print e.message
            return jsonify(success=False), 400
示例#4
0
    def registration(self):
        if not request.is_json:
            return jsonify({"msg": "Missing JSON in request"}), 400
        username = request.json.get('username', None)  #TODO: hash the password
        password = request.json.get('password')
        first_name = request.json.get('first_name')
        last_name = request.json.get('last_name')
        email = request.json.get('email')
        national_id = request.json.get('national_id')
        classes = []
        students = []
        exams = []
        account_activated = True
        # roles = [Role('holder')]

        session = db_session()
        try:
            user = User(first_name, last_name, email, national_id, username,
                        password, account_activated, classes, students, exams)
            session.add(user)
            session.commit()
            #TODO: redirect and provide JWT token and return it
            return jsonify(success=True), 201
        except Exception as e:
            session.rollback()
            Logger.debug("registration: Could not add new user to database")
            Logger.error(e.message)
            return jsonify(success=False), 400
示例#5
0
 def exam_correction(self, exam_id):
     exam = Exam.query.filter_by(id=exam_id).first()
     holder = Holder(exam, 340)
     try:
         holder.run_correction()
         return jsonify(success=True), 200
     except Exception as e:
         Logger.error(e.message)
         return jsonify({"success": False, "msg": e.message}), 400
示例#6
0
 def scan_sheets(self, exam_id):
     exam = Exam.query.filter_by(id=exam_id).first()
     holder = Holder(exam, 340)
     try:
         holder.scan_sheets(src_addr=Private_Storage().get_scanned_sheets_dir_for(exam_id), dst_addr="./ans/scanned/", error_addr="./ans/error/", scan_sensitivity=80)
         return jsonify(success=True), 200
     except Exception as e:
         Logger.error(e.message)
         return jsonify({"success": False, "msg": e.message}), 400
示例#7
0
 def initiate_workbooks(self, exam_id):
     exam = Exam.query.filter_by(id=exam_id).first()
     holder = Holder(exam, 340)
     try:
         holder.generate_workbook_for_students()
         return jsonify(success=True), 200
     except Exception as e:
         Logger.error(e.message)
         return jsonify({"success": False, "msg": e.message}), 400
示例#8
0
 def generate_sheets(self, exam_id):
     try:
         holder = Holder(Exam.query.filter_by(id=exam_id).first(), 340)
         holder.generate_all_sheets(tmp_addr=os.path.join(TEMP_Storage().get_png_temp_addr(), 'tmp.png'), template_addr=TEMP_Storage().get_sheet_template_addr(), save_addr=Private_Storage().get_sheets_dir_for(exam_id))
         return jsonify(success=True), 200
     except Exception as e:
         Logger.debug("could not create new exam")
         Logger.error(e.message)
         return jsonify({"success": False, "msg": e.message}), 400
示例#9
0
    def add(self):
        if not request.is_json:
            return jsonify({"msg": "missing json request"}), 400
        name = request.json.get("name", None)
        desciption = request.json.get("description", None)
        students = []
        user_id = get_current_user().id
        exams = []

        try:
            session = db_session()
            new_class = Class(name, desciption, students, user_id, exams)
            session.add(new_class)
            session.commit()
            return jsonify(success=True), 201
        except Exception as e:
            session.rollback()
            Logger.debug("could not create new class")
            Logger.error(e.message)
            return jsonify(success=False), 400
示例#10
0
 def add_exams(self, class_id):
     try:
         session = db_session()
         if not request.is_json:
             return jsonify({"msg": "missing json request"}), 400
         exams = request.json.get('exams', None)
         the_class = Class.query.filter_by(id=class_id).first()
         for exam_id in exams:
             exam = Exam.query.filter_by(id=exam_id).first()
             exam.students += the_class.students
             the_class.exams.append(exam)
             exam.classes.append(the_class)
             session.add(the_class)
             session.add(exam)
             session.commit()
         return jsonify(success=True), 200
     except Exception as e:
         session.rollback()
         Logger.debug("could not assign exams to class")
         Logger.error(e.message)
         return jsonify(success=False), 400
示例#11
0
    def patch(self, id):
        exam = Exam.query.filter_by(id=id).first()
        if not request.is_json:
            return jsonify({"msg": "missing json request"}), 400
        exam.name = request.json.get('name', exam.name)
        exam.answers_key = request.json.get('answers_key', exam.answers_key)
        # exam.date = datetime.datetime.strptime(request.json.get('date', str(exam.date)),'%Y-%m-%d')
        exam.description = request.json.get('description', exam.description)
        exam.lessons = request.json.get('lessons', exam.lessons)
        exam.setting = request.json.get('setting', exam.setting)

        try:
            session = db_session()
            session.add(exam)
            session.commit()
            return jsonify(success=True), 200
        except Exception as e:
            session.rollback()
            Logger.debug("could not update exam")
            Logger.error(e.message)
            return jsonify(success=False), 400
示例#12
0
    def login(self):
        if not request.is_json:
            return jsonify({"msg": "Missing JSON in request"}), 400

        username = request.json.get('username', None)
        password = request.json.get('password', None)
        try:
            user = User.query.filter_by(username=username,
                                        password=password).first()
            if not user:
                return jsonify({"msg": "wrong username or password"}), 401

            #generating access token
            access_token = create_access_token(identity=username)
            return jsonify(access_token=access_token), 200

        except Exception as e:
            Logger.debug("login: user could not login, entered username: "******"msg": "server error"}), 500
示例#13
0
 def add_students(self, class_id):
     try:
         if not request.is_json:
             return jsonify({"msg": "missing json request"}), 400
         students = request.json.get('students', None)
         the_class = Class.query.filter_by(id=class_id).first()
         session = db_session()
         for student_id in students:
             student = Student.query.filter_by(id=student_id).first()
             student.classes.append(the_class)
             the_class.students.append(student)
             if the_class.exams:
                 for exam in the_class.exams:
                     exam.students.append(student)
                     session.add(exam)
             session.add(the_class)
             session.add(student)
             session.commit()
         return jsonify(success=True), 200
     except Exception as e:
         session.rollback()
         Logger.debug("could not assign students to class")
         Logger.error(e.message)
         return jsonify(success=False), 400
示例#14
0
def change_logger(logger_name='test'):
    global logger
    logger = Logger(logger_name)
示例#15
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import functools
import traceback
from project.logger import Logger

logger_name = 'app'
logger = Logger(logger_name)


def change_logger(logger_name='test'):
    global logger
    logger = Logger(logger_name)


def trace(f: callable) -> callable:
    """ trace decorator

    Args:
        f: decorated function

    Returns:
        wrapper function

    >>> fn = lambda : print("hello")
    >>> lg = trace(fn)
    >>> type(lg)
    <class 'function'>
    >>> lg.__name__
    '<lambda>'
示例#16
0
def logger() -> Logger:
    return Logger()
from datetime import timedelta

from fastapi import APIRouter, HTTPException
from starlette import status

from project.config import Config
from project.dal.retailer import RetailerRepository
from project.dtos.auth import Token, AuthData
from project.logger import Logger
from project.services.auth.auth_service import AuthService

config = Config()
logger = Logger()

router = APIRouter()
retailer_repository = RetailerRepository(config, logger)

auth_service = AuthService(config, logger, retailer_repository)


@router.post("/auth/token/", response_model=Token)
def login_for_access_token(auth_data: AuthData) -> Token:
    retailer = auth_service.authenticate_retailer(email=auth_data.email,
                                                  password=auth_data.password)

    if not retailer:
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Incorrect username or password",
            headers={"WWW-Authenticate": "Bearer"},
        )
示例#18
0
 def logger(self):
     return Logger(logger_name)