class Game(db.Model): id = db.Column(db.Integer, primary_key=True) player1 = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) score1 = db.Column(db.Integer, unique=False, nullable=False, default=0) player2 = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) # need to take a look at this score2 = db.Column(db.Integer, unique=False, nullable=False, default=0) done = db.Column(db.Boolean, unique=False, nullable=False, default=False) over = db.Column(db.Boolean, unique=False, nullable=False, default=False)
class Connection(db.Model): __tablename__ = "Connection" conn_id = db.Column(db.Integer, primary_key=True) dev_id = db.Column(db.Integer, db.ForeignKey("Device.dev_id")) service_id = db.Column(db.Integer, db.ForeignKey("Service.service_id")) gateway_id = db.Column(db.Integer, db.ForeignKey("Gateway.gateway_id")) rssi = db.Column(db.Float) snr = db.Column(db.Float) devices = db.relationship("Device", foreign_keys=dev_id) services = db.relationship("Service", foreign_keys=service_id) gateways = db.relationship("Gateway", foreign_keys=gateway_id) def __repr__(self) -> str: return f"<Connection {self.conn_id}>"
class Astronaut(db.Model): """ Define the model of Astronaut user Args: Form: Inherits the db.Model library Returns: None Attributes: id - Primary key, must be an integer name - Must be string of max length 30 username - Can't be null, can be only one in the database, up to 80 characters email - Must be unique, can't be null and it's string of max 120 characters password - Password is a string of max 180 characters, can't be null admin_id - Integer which is an ID of admin, who created current user """ id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30)) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) password = db.Column(db.String(180), unique=False, nullable=False) admin_id = db.Column(db.Integer, db.ForeignKey('admin.id'), nullable=False) # astronauts need to have the admin ID's that created them admin = db.relationship('Admin', backref=db.backref('admins')) #Method returning string as representation of the object def __repr__(self): return '<Astronaut %r>' % self.username
class Task(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(30)) description = db.Column(db.String(200)) complete = db.Column(db.Boolean, nullable=False, default=False) due = db.Column(db.DateTime, nullable=True) user = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
class Vote(db.Model): VoteId = db.Column(UUID(as_uuid=True), unique=True, primary_key=True) PoliticalPartyID = db.Column(db.CHAR(38), db.ForeignKey('party.UId'), nullable=False) VoteStatus = db.Column(TINYINT(1), default=0) VoteTimestamp = db.Column(db.DATETIME(), nullable=False) def __repr__(self): return f"Vote('{self.VoteStatus}')"
class Posts(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False, unique=True) content = db.Column(db.String(500), nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False) def __repr__(self): return "".join([ "User ID: ", self.user_id, "\r\n", "Title: ", self.title, "\r\n", self.content ])
class Device(db.Model): __tablename__ = "Device" dev_id = db.Column(db.Integer, primary_key=True) device_name = db.Column(db.String) latitude = db.Column(db.Float) longitude = db.Column(db.Float) altitude = db.Column(db.Float) location = db.Column(db.String) user_id = db.Column(db.Integer, db.ForeignKey("TTN_User.user_id")) users = db.relationship("TTN_User", foreign_keys=user_id) def __repr__(self) -> str: return f"<Device {self.dev_id}>"
class Bill(db.Model): __tablename__ = "Bills" id = db.Column(db.Integer, primary_key=True) client_id = db.Column(db.Integer, db.ForeignKey(Client.id)) subject = db.Column(db.String(256), nullable=False) date = db.Column(db.Date, nullable=False) expiration = db.Column(db.Date, nullable=False) price = db.Column(db.Float(precision=2), nullable=False) cash = db.Column(db.Boolean, nullable=False) paid = db.Column(db.Boolean, nullable=False)
class Service(db.Model): __tablename__ = "Service" service_id = db.Column(db.Integer, primary_key=True) time = db.Column(db.String) status = db.Column(db.Integer) water_ml = db.Column(db.Integer) countdown_timer = db.Column(db.Integer) water_counter = db.Column(db.Integer) voltage_max = db.Column(db.Float) voltage_min = db.Column(db.Float) current_max = db.Column(db.Float) current_min = db.Column(db.Float) dev_id = db.Column(db.Integer, db.ForeignKey("Device.dev_id")) devices = db.relationship("Device", foreign_keys=dev_id) def __repr__(self) -> str: return f"<Service {self.service_id}>"
class ChessPuzzle(db.Model): __tablename__ = 'Puzzles' puzzle_id = db.Column(db.Integer, primary_key=True, autoincrement=True) description = db.Column(db.String(200)) fen = db.Column(db.String(250), nullable=False) solution = db.Column(db.String(250), nullable=False) type_id = db.Column(db.Integer, db.ForeignKey('PuzzleTypes.type_id')) def __eq__(self, other): eq_puzzle_id = self.puzzle_id == other.puzzle_id eq_description = self.description == other.description eq_fen = self.fen == other.fen eq_solution = self.solution == other.solution eq_type = self.type_id == other.type_id return eq_puzzle_id and eq_description and eq_fen and eq_solution and eq_type def __str__(self): return " id: %s\n descr: %s\n fen: %s\n solution: %s\n type_id: %s\n\n" \ % (self.puzzle_id, self.description, self.fen, self.solution, self.type_id)
from Application import db, login_manager, application from flask_login import UserMixin from itsdangerous import TimedJSONWebSignatureSerializer as Serializer @login_manager.user_loader # loads in user def load_user(user_id): return User.query.get(int(user_id)) # Association Tables friends = db.Table( 'friends', db.Column('self_id', db.Integer, db.ForeignKey('user.id')), db.Column('friend_id', db.Integer, db.ForeignKey('user.id'))) game_table = db.Table( 'games', db.Column("user_id", db.Integer, db.ForeignKey('user.id')), db.Column("game_id", db.Integer, db.ForeignKey('game.id'))) # Models class Game(db.Model): id = db.Column(db.Integer, primary_key=True) player1 = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) score1 = db.Column(db.Integer, unique=False, nullable=False, default=0) player2 = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) # need to take a look at this score2 = db.Column(db.Integer, unique=False, nullable=False, default=0) done = db.Column(db.Boolean, unique=False, nullable=False, default=False) over = db.Column(db.Boolean, unique=False, nullable=False, default=False)
class Account(db.Model): __tablename__ = credentials.tablename id = db.Column(db.Integer, primary_key=True) provider = db.Column(db.String) username = db.Column(db.String) password = db.Column(db.String) passwordlength = db.Column(db.Integer) definedcharacter = db.Column(db.String) question = db.Column(db.String) answer = db.Column(db.String) lastmodify = db.Column(db.DateTime) userid = db.Column(db.ForeignKey('user.id')) # Get dict from Account object. def getDict(self, keyList): origin = self.__dict__ object = dict() for key in keyList: object[key] = origin[key] return object # Get a dict object of an account with the given id (primary key). @staticmethod def getDictOf(id, keyList): return Account.query.get(id).getDict(keyList) # Get all Account objects from database as a dictionary. # Dictionaries get values of keyList. @staticmethod def getObjList(keyList): accounts = Account.query.filter_by(userid=current_user.id).all() list = [] for account in accounts: object = account.getDict(keyList) list.append(object) return list # Modify a database entry @staticmethod def modifyDBAccount(accountDict): account = Account.query.get(accountDict['id']) account.lastmodify = datetime.datetime.today() a = account.__dict__ for key in accountDict: if key in a and a[key] != accountDict[key]: account.__setattr__(key, accountDict[key]) db.session.commit() @staticmethod def insertAccount(accountDict): accountDict['lastmodify'] = datetime.datetime.today() accountDict['userid'] = current_user.id account = Account() for key in accountDict: account.__setattr__(key, accountDict[key]) db.session.add(account) db.session.commit() return account.id @staticmethod def deleteAccount(id): account = Account.query.get(id) db.session.delete(account) db.session.commit()
return account.id @staticmethod def deleteAccount(id): account = Account.query.get(id) db.session.delete(account) db.session.commit() # ---------------------------------------------------------------------------------------- # Flask Security # ---------------------------------------------------------------------------------------- roles_users = db.Table( 'roles_users', db.Column('user_id', db.Integer(), db.ForeignKey('user.id')), db.Column('role_id', db.Integer(), db.ForeignKey('role.id'))) class Role(db.Model, RoleMixin): id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), unique=True) email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) active = db.Column(db.Boolean())