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."}
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)
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__()
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)
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)
def __init__(self): self.qdb = QDataBase(app.config["DBHOST"])
class Classes(Resource): def __init__(self): self.qdb = QDataBase(app.config["DBHOST"]) def get(self): return self.qdb.get_classes()