-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodel.py
More file actions
94 lines (74 loc) · 3.65 KB
/
model.py
File metadata and controls
94 lines (74 loc) · 3.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
from flask import Flask
from flask_login import UserMixin
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash, check_password_hash
app = Flask(__name__)
app.debug = False
app.config['SECRET_KEY'] = 'df9d9b8a053375dbae2758d00192748b77c1208ddd6e478c65b35e982c3c633b'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.sqlite'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
class User(db.Model, UserMixin):
__tablename__ = "user"
id = db.Column(db.Integer(), primary_key=True)
username = db.Column(db.String(255), nullable=False)
password_hash = db.Column(db.String(255), nullable=False)
name = db.Column(db.String(255), nullable=False)
email = db.Column(db.String(255), nullable=False)
user_lvl = db.Column(db.Integer(), default=0)
role = db.Column(db.String(255), nullable=False, default="user")
tests_history = db.relationship('TestHistory', backref='user')
def set_password(self, password):
self.password_hash = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.password_hash, password)
class Test(db.Model):
__tablename__ = "test"
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(255), nullable=False)
questions = db.relationship('Question', backref='test')
tests_history = db.relationship('TestHistory', backref='test')
class Question(db.Model):
__tablename__ = "question"
id = db.Column(db.Integer(), primary_key=True)
title = db.Column(db.String(255), nullable=False)
subject = db.Column(db.String(255), nullable=False)
test_id = db.Column(db.Integer(), db.ForeignKey('test.id'))
data_list = db.relationship('Data', backref='question')
questions_history = db.relationship('QuestionHistory', backref='question')
class Data(db.Model):
__tablename__ = "data"
id = db.Column(db.Integer, primary_key=True)
data = db.Column(db.String)
answer = db.Column(db.Integer)
img = db.Column(db.Integer(), default=0)
question_id = db.Column(db.Integer, db.ForeignKey('question.id'))
class TestHistory(db.Model):
__tablename__ = "test_history"
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(255), nullable=False)
user_id = db.Column(db.Integer(), db.ForeignKey('user.id'))
result = db.Column(db.Integer(), default=0)
active = db.Column(db.Boolean(), default=True)
test_id = db.Column(db.Integer(), db.ForeignKey('test.id'))
questions_history = db.relationship('QuestionHistory', backref='test_history')
class QuestionHistory(db.Model):
__tablename__ = "question_history"
id = db.Column(db.Integer(), primary_key=True)
question_id = db.Column(db.Integer, db.ForeignKey('question.id'))
title = db.Column(db.String(255), nullable=False)
img = db.Column(db.Integer(), nullable=False)
data_id = db.Column(db.Integer(), db.ForeignKey('data.id'))
subject = db.Column(db.String(255), nullable=False)
true_answer = db.Column(db.String(255), nullable=False)
user_answer = db.Column(db.String(255), nullable=True)
test_history_id = db.Column(db.Integer, db.ForeignKey('test_history.id'))
answers_list = db.relationship('Answer', backref='question_history')
class Answer(db.Model):
__tablename__ = "answer"
id = db.Column(db.Integer(), primary_key=True)
text = db.Column(db.String(255), nullable=False)
question_history_id = db.Column(db.Integer, db.ForeignKey('question_history.id'))
def save(obj):
db.session.add(obj)
db.session.commit()