|
|
from datetime import datetime |
|
|
from app import db, login |
|
|
from werkzeug.security import generate_password_hash, check_password_hash |
|
|
from flask_login import UserMixin |
|
|
|
|
|
class User(UserMixin, db.Model): |
|
|
id = db.Column(db.Integer, primary_key=True) |
|
|
username = db.Column(db.String(64), index=True, unique=True) |
|
|
email = db.Column(db.String(120), index=True, unique=True) |
|
|
password_hash = db.Column(db.String(128)) |
|
|
is_admin = db.Column(db.Boolean, default=False) |
|
|
reports = db.relationship('Report', backref='author', lazy='dynamic') |
|
|
|
|
|
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) |
|
|
|
|
|
def __repr__(self): |
|
|
return f'<User {self.username}>' |
|
|
|
|
|
class Report(db.Model): |
|
|
id = db.Column(db.Integer, primary_key=True) |
|
|
age = db.Column(db.Integer, nullable=False) |
|
|
gender = db.Column(db.String(10), nullable=False) |
|
|
symptoms = db.Column(db.Text) |
|
|
cnn_prediction = db.Column(db.Float) |
|
|
cnn_result = db.Column(db.String(20)) |
|
|
final_result = db.Column(db.String(20)) |
|
|
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) |
|
|
user_id = db.Column(db.Integer, db.ForeignKey('user.id')) |
|
|
|
|
|
def __repr__(self): |
|
|
return f'<Report {self.id} - {self.final_result}>' |
|
|
|
|
|
@login.user_loader |
|
|
def load_user(id): |
|
|
return User.query.get(int(id)) |