Example #1
0
class Auth(Resource):
    def __init__(self):
        self.qdb = QDataBase(app.config["DBHOST"])

    @login_required
    def get(self):
        return session["username"]

    def post(self):
        json_data = request.get_json()

        data, errors = AuthSchema().load(json_data)

        if errors:
            return errors, 400

        if any([
                self.qdb.is_class_instructor(c, data.username)
                for c in self.qdb.get_classes()
        ]):
            session["username"] = data.username
        else:
            session["username"] = base64.b64encode(
                os.urandom(24)).decode("utf-8")

        return AuthSchema().dump(session)

    def delete(self):
        session.pop("username", None)
        return {"message": "Logged out."}
Example #2
0
class Queue(Resource):
    def __init__(self):
        self.qdb = QDataBase(app.config["DBHOST"])

        self.delete_reqparse = reqparse.RequestParser()
        self.delete_reqparse.add_argument('id',
                                          type=str,
                                          required=True,
                                          help='No name provided')

        self.queue_get_schema = QueueGetSchema()

        super().__init__()

    def get_queue(self, queue_id):
        queue, timestamps, rev = self.qdb.get_queue(queue_id)
        message = self.qdb.get_announcement(queue_id)

        return {
            "queue": queue,
            "timestamps": timestamps,
            "announcement": message,
            "paused": self.qdb.is_queue_paused(queue_id),
            "rev": rev,
        }

    @queue_required
    @validation_required
    def get(self, queue_id):
        args = self.queue_get_schema.load(request.args).data

        q_revision = args.get("rev", self.qdb.get_queue_revision(queue_id))

        while q_revision == self.qdb.get_queue_revision(queue_id):
            time.sleep(1.0)

        return self.get_queue(queue_id)

    @login_required
    @queue_required
    @validation_required
    def post(self, queue_id):
        if self.qdb.is_queue_paused(queue_id):
            return {"message": "Queue not accepting further questions."}, 409
        json_data = request.get_json()
        newkid = KidSchema(strict=True).load(json_data,
                                             partial=("id", "answer")).data
        newkid["id"] = session["username"]
        newkid["answer"] = False
        self.qdb.add_question(queue_id, newkid, newkid["id"])

        return self.get_queue(queue_id)

    @login_required
    @queue_required
    def delete(self, queue_id):
        self.qdb.remove_question(queue_id, session["username"])

        return self.get_queue(queue_id)
Example #3
0
    def __init__(self):
        self.qdb = QDataBase(app.config["DBHOST"])

        self.delete_reqparse = reqparse.RequestParser()
        self.delete_reqparse.add_argument('id',
                                          type=str,
                                          required=True,
                                          help='No name provided')

        self.queue_get_schema = QueueGetSchema()

        super().__init__()
Example #4
0
class QClass(Resource):
    post_schema = QClassPostSchema(strict=True)
    delete_schema = QClassDeleteSchema(strict=True)

    def __init__(self):
        self.qdb = QDataBase(app.config["DBHOST"])

    def get(self, class_id):
        return self.qdb.get_queues(class_id)

    @login_required
    @instructor_required_classop
    @validation_required
    def post(self, class_id):
        json_data = request.get_json()
        name = self.post_schema.load(json_data).data["name"]

        if name:
            self.qdb.add_queue(class_id, name)

        return self.qdb.get_queues(class_id)

    @login_required
    @instructor_required_classop
    @validation_required
    def delete(self, class_id):
        json_data = request.get_json()
        queue_id = self.delete_schema.load(json_data).data["id"]

        self.qdb.remove_queue(class_id, queue_id)

        return self.qdb.get_queues(class_id)
Example #5
0
class QueueInfo(Resource):
    def __init__(self):
        self.qdb = QDataBase(app.config["DBHOST"])

    def get(self, queue_id):
        return self.qdb.get_queue_info(queue_id)

    @login_required
    @queue_required
    @instructor_required_queueop
    def post(self, queue_id):
        self.qdb.resume_queue(queue_id)
        return self.qdb.get_queue_info(queue_id)

    @login_required
    @queue_required
    @instructor_required_queueop
    def delete(self, queue_id):
        self.qdb.pause_queue(queue_id)
        return self.qdb.get_queue_info(queue_id)
Example #6
0
 def __init__(self):
     self.qdb = QDataBase(app.config["DBHOST"])
Example #7
0
class Classes(Resource):
    def __init__(self):
        self.qdb = QDataBase(app.config["DBHOST"])

    def get(self):
        return self.qdb.get_classes()