class Module(Document): module_name = db.StringField(required=True, max_length=20, unique=True) details = db.StringField(max_length=500) number_of_words = db.IntField() parent = db.ObjectIdField() child = db.ObjectIdField() words = db.ListField(gj.FollowReferenceField(Dictionary)) quiz = db.ListField(gj.FollowReferenceField(Quiz))
class Quiz(Document): quiz_name = db.StringField(required=True, max_length=100) details = db.StringField(max_length=500, required=True) questions = db.ListField( gj.FollowReferenceField(Question, reverse_delete_rule=PULL)) def error_checker(id): if not ObjectId.is_valid(id): return Response('Failed: invalid Id', 400) if not Quiz.objects(id=id): return Response('', 204)
class Module(Document): module_name = db.StringField(required=True, max_length=100, unique=True) details = db.StringField(max_length=500) parent = db.ObjectIdField(default=None) words = db.ListField( gj.FollowReferenceField(Dictionary, reverse_delete_rule=PULL)) quiz = db.ListField(gj.FollowReferenceField(Quiz, reverse_delete_rule=PULL)) def error_checker(id): if not ObjectId.is_valid(id): return Response('Failed: invalid Id', 400) if not Module.objects(id=id): return Response('', 204)
class User(db.Document, UserMixin): username = db.StringField(required=True, max_length=20) firstname = db.StringField(max_length=20) lastname = db.StringField(max_length=20) dob = db.DateTimeField(required=True) creation_date = db.DateTimeField() last_login = db.DateTimeField() email = db.EmailField(required=True) password = db.StringField(required=True) is_verified = db.BooleanField(default=False) completed_modules = db.ListField( db.EmbeddedDocumentField(Completed_Modules)) def __init__(self, creation_date, username): self.creation_date = datetime.utcnow() self.username = username
class Question(Document): question_text = db.StringField(max_length=500) word = gj.FollowReferenceField(Dictionary, reverse_delete_rule=CASCADE) def error_checker(id): if not ObjectId.is_valid(id): return Response('Failed: invalid Id', 400) if not Question.objects(id=id): return Response('', 204)
class Dictionary(Document): word = db.StringField(required=True, unique=True) url = db.URLField() in_dictionary = db.BooleanField(default=False) times_requested = db.IntField() def error_checker(id): if not ObjectId.is_valid(id): return Response('Failed: invalid Id', 400) if not Dictionary.objects(id=id): return Response('', 204)
class User(Document, UserMixin): username = db.StringField(required=True, max_length=20, unique=True) firstname = db.StringField(max_length=20) lastname = db.StringField(max_length=20) dob = db.DateTimeField(required=True) creation_date = db.DateTimeField() completed_modules = db.ListField( db.EmbeddedDocumentField(Completed_Modules)) def __init__(self, *args, **kwargs): super(Document, self).__init__(*args, **kwargs) self.creation_date = datetime.now() def get_id(self): return str(self.id) def error_checker(id): if not ObjectId.is_valid(id): return Response('Failed: invalid Id', 400) if not User.objects(id=id): return Response('', 204)
class Completed_Modules(db.EmbeddedDocument): module_id = db.LazyReferenceField(Module) module_name = db.StringField(max_length=100)
class Dictionary(Document): word = db.StringField(required=True, unique=True) url = db.URLField(unique=True) in_dictionary = db.BooleanField(default=False) times_requested = db.IntField()
class Question(Document): question_text = db.StringField(max_length=500) url = db.URLField() answer_bank = db.ListField(db.StringField(max_length=20)) correct_index = db.IntField()
class Quiz(Document): quiz_name = db.StringField(required=True, max_length=20) number_of_questions = db.IntField() details = db.StringField(max_length=500, required=True) questions = db.ListField(gj.FollowReferenceField('Question'))
class UserAnswers(db.EmbeddedDocument): question_id = db.LazyReferenceField(Question, required=True) user_answer = db.StringField(required=True) correct_answer = db.StringField(required=True)