From 6936d8d02ca25d4afc22f39072a58638d9c7e501 Mon Sep 17 00:00:00 2001 From: "Tobias K." Date: Tue, 24 Oct 2023 16:57:28 +0200 Subject: [PATCH] reformated some code --- backend/models/access_control_model.py | 32 +-- backend/models/example_model.py | 13 +- backend/models/post_model.py | 5 +- backend/models/recorder_model.py | 103 ++++++---- backend/models/room_model.py | 32 +-- backend/models/user_model.py | 259 ++++++++++++++---------- backend/models/virtual_command_model.py | 80 +++++--- backend/tools/exception_decorator.py | 4 +- 8 files changed, 327 insertions(+), 201 deletions(-) diff --git a/backend/models/access_control_model.py b/backend/models/access_control_model.py index 2a8812c..d26e460 100644 --- a/backend/models/access_control_model.py +++ b/backend/models/access_control_model.py @@ -21,14 +21,13 @@ class AccessControlEntry(db.Model): name = db.Column(db.Unicode(127), unique=False, nullable=False) url = db.Column(db.Unicode(2047), unique=False, nullable=True, default="") - required_permission_id = db.Column(db.Integer, db.ForeignKey('permission.id')) - required_permission = db.relationship('Permission', back_populates='access_control_entry') - - __table_args__ = ( - CheckConstraint('length(name) > 2', - name='name_min_length'), + required_permission_id = db.Column(db.Integer, db.ForeignKey("permission.id")) + required_permission = db.relationship( + "Permission", back_populates="access_control_entry" ) + __table_args__ = (CheckConstraint("length(name) > 2", name="name_min_length"),) + def __init__(self, **kwargs): super(AccessControlEntry, self).__init__(**kwargs) @@ -56,15 +55,24 @@ class AccessControlEntry(db.Model): return dict(id=self.id, name=self.name) def toJSON(self): - return json.dumps(self.to_dict(), default=lambda o: o.__dict__, - sort_keys=True, indent=4) + return json.dumps( + self.to_dict(), default=lambda o: o.__dict__, sort_keys=True, indent=4 + ) def pre_fill_table(): - a_es = {"url": "", } - access_entries = [AccessControlEntry(name=room['name'], number=room['room_number'], - building_name=room['building_name'], building_number=room['building_number']) for room in - a_es] + a_es = { + "url": "", + } + access_entries = [ + AccessControlEntry( + name=room["name"], + number=room["room_number"], + building_name=room["building_name"], + building_number=room["building_number"], + ) + for room in a_es + ] try: db.session.bulk_save_objects(access_entries) diff --git a/backend/models/example_model.py b/backend/models/example_model.py index 9b84cc0..c7d88e6 100644 --- a/backend/models/example_model.py +++ b/backend/models/example_model.py @@ -7,9 +7,18 @@ class ExampleDataItem(db.Model): """ just an example class... """ + id = db.Column(db.Integer, primary_key=True, autoincrement=True) mac = db.Column(db.String(32), nullable=False, unique=True, index=True) - uuid = db.Column(db.String(36), nullable=False, unique=True, index=True, default=str(uuid.uuid4())) + uuid = db.Column( + db.String(36), + nullable=False, + unique=True, + index=True, + default=str(uuid.uuid4()), + ) some_string_value = db.Column(db.String, nullable=True, index=True) - name = db.Column(db.String(128), default="", nullable=False, index=True, unique=False) + name = db.Column( + db.String(128), default="", nullable=False, index=True, unique=False + ) description = db.Column(db.String(4096), nullable=True, unique=False) diff --git a/backend/models/post_model.py b/backend/models/post_model.py index d675fc5..ab3adbf 100644 --- a/backend/models/post_model.py +++ b/backend/models/post_model.py @@ -10,10 +10,11 @@ class Post(db.Model): """ A post example class """ + id = db.Column(db.Integer, primary_key=True) body = db.Column(db.String(140)) timestamp = db.Column(db.DateTime) - user_id = db.Column(db.Integer, db.ForeignKey('user.id')) + user_id = db.Column(db.Integer, db.ForeignKey("user.id")) def __repr__(self): - return '' % self.body + return "" % self.body diff --git a/backend/models/recorder_model.py b/backend/models/recorder_model.py index 0a9b4cd..6867bd2 100644 --- a/backend/models/recorder_model.py +++ b/backend/models/recorder_model.py @@ -18,26 +18,32 @@ from backend import db, app, login_manager, LrcException from sqlalchemy import or_ from datetime import datetime, timedelta -from backend.models.virtual_command_model import virtual_command_recorder_command_table, virtual_command_recorder_table +from backend.models.virtual_command_model import ( + virtual_command_recorder_command_table, + virtual_command_recorder_table, +) metadata = MetaData() class RecorderModel(db.Model): - __table_args__ = {'extend_existing': True} + __table_args__ = {"extend_existing": True} id = db.Column(db.Integer, autoincrement=True, primary_key=True) created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow()) last_time_modified = db.Column(db.DateTime, nullable=True, default=None) record_adapter_id = db.Column(db.Unicode(63), unique=True, nullable=False) model_name = db.Column(db.Unicode(63), unique=True, nullable=False) notes = db.Column(db.Unicode(255), unique=False, nullable=True, default=None) - recorder_commands = db.relationship('RecorderCommand', back_populates='recorder_model') - recorders = db.relationship('Recorder', back_populates='recorder_model') - checksum = db.Column(db.String(63), unique=True, - nullable=False) # checksum of the recorder commands! (see: model_updater.py) + recorder_commands = db.relationship( + "RecorderCommand", back_populates="recorder_model" + ) + recorders = db.relationship("Recorder", back_populates="recorder_model") + checksum = db.Column( + db.String(63), unique=True, nullable=False + ) # checksum of the recorder commands! (see: model_updater.py) last_checksum_change = db.Column(db.DateTime, nullable=True, default=None) - _requires_user = db.Column(db.Integer, default=False, name='requires_user') - _requires_password = db.Column(db.Integer, default=True, name='requires_password') + _requires_user = db.Column(db.Integer, default=False, name="requires_user") + _requires_password = db.Column(db.Integer, default=True, name="requires_password") @staticmethod def get_all(): @@ -49,11 +55,15 @@ class RecorderModel(db.Model): @staticmethod def get_by_adapter_id(name): - return RecorderModel.query.filter(RecorderModel.record_adapter_id == name).first() + return RecorderModel.query.filter( + RecorderModel.record_adapter_id == name + ).first() @staticmethod def get_where_adapter_id_contains(adapter_id): - return RecorderModel.query.filter(RecorderModel.record_adapter_id.contains(adapter_id)).first() + return RecorderModel.query.filter( + RecorderModel.record_adapter_id.contains(adapter_id) + ).first() @staticmethod def get_by_checksum(md5_sum): @@ -80,10 +90,12 @@ class RecorderModel(db.Model): class Recorder(db.Model): - __table_args__ = {'extend_existing': True} + __table_args__ = {"extend_existing": True} id = db.Column(db.Integer, autoincrement=True, primary_key=True) created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow()) - last_time_modified = db.Column(db.DateTime, nullable=False, default=datetime.utcnow()) + last_time_modified = db.Column( + db.DateTime, nullable=False, default=datetime.utcnow() + ) name = db.Column(db.Unicode(63), unique=True, nullable=False) model_name = db.Column(db.Unicode(63), unique=False, nullable=False) serial_number = db.Column(db.Unicode(63), unique=True, nullable=True) @@ -99,16 +111,21 @@ class Recorder(db.Model): ssh_port = db.Column(db.Integer, unique=False, nullable=False, default=22) username = db.Column(db.String, nullable=True, default=None) password = db.Column(db.String, nullable=True, default=None) - _configured_options_json_string = db.Column(db.UnicodeText, default='') - _additional_notes_json_string = db.Column(db.UnicodeText, default='') + _configured_options_json_string = db.Column(db.UnicodeText, default="") + _additional_notes_json_string = db.Column(db.UnicodeText, default="") additional_camera_connected = db.Column(db.Boolean, default=False) firmware_version = db.Column(db.String, nullable=True, default=None) - room_id = db.Column(db.Integer, db.ForeignKey('room.id')) - room = db.relationship('Room', uselist=False, back_populates='recorder') # one-to-one relation (uselist=False) - recorder_model_id = db.Column(db.Integer, db.ForeignKey('recorder_model.id')) - recorder_model = db.relationship('RecorderModel', back_populates='recorders') - virtual_commands = db.relationship('VirtualCommand', secondary=virtual_command_recorder_table, - back_populates='recorders') + room_id = db.Column(db.Integer, db.ForeignKey("room.id")) + room = db.relationship( + "Room", uselist=False, back_populates="recorder" + ) # one-to-one relation (uselist=False) + recorder_model_id = db.Column(db.Integer, db.ForeignKey("recorder_model.id")) + recorder_model = db.relationship("RecorderModel", back_populates="recorders") + virtual_commands = db.relationship( + "VirtualCommand", + secondary=virtual_command_recorder_table, + back_populates="recorders", + ) def __init__(self, **kwargs): super(Recorder, self).__init__(**kwargs) @@ -123,16 +140,16 @@ class Recorder(db.Model): @staticmethod def get_by_mac(mac: str): - if mac is None or mac == '': + if mac is None or mac == "": return None - mac = mac.replace('-', ':').lower() + mac = mac.replace("-", ":").lower() return Recorder.query.filter(Recorder._mac == mac).first() @staticmethod def get_all(): return Recorder.query.all() - @validates('name') + @validates("name") def validate_name(self, key, value): assert len(value) > 2 return value @@ -146,7 +163,9 @@ class Recorder(db.Model): self._configured_options_json_string = json.dumps(value) def add_configured_option(self, value: str): - self._configured_options_json_string = json.dumps(self.configured_options.append(value)) + self._configured_options_json_string = json.dumps( + self.configured_options.append(value) + ) @hybrid_property def additional_notes(self) -> list: @@ -157,7 +176,9 @@ class Recorder(db.Model): self._additional_notes_json_string = json.dumps(value) def add_additional_notes(self, value: str): - self._additional_notes_json_string = json.dumps(self._additional_notes_json_string.append(value)) + self._additional_notes_json_string = json.dumps( + self._additional_notes_json_string.append(value) + ) @hybrid_property def mac(self) -> str: @@ -165,10 +186,10 @@ class Recorder(db.Model): @mac.setter def mac(self, value: str): - if value is None or value == '': + if value is None or value == "": return if re.match("[0-9a-f]{2}([-:]?)[0-9a-f]{2}(\\1[0-9a-f]{2}){4}$", value.lower()): - self._mac = value.replace('-', ':').lower() + self._mac = value.replace("-", ":").lower() else: raise LrcException("'{}' is not a valid MAC Address!".format(value)) @@ -205,25 +226,35 @@ class Recorder(db.Model): return dict(id=self.id, name=self.name) def toJSON(self): - return json.dumps(self.to_dict(), default=lambda o: o.__dict__, - sort_keys=True, indent=4) + return json.dumps( + self.to_dict(), default=lambda o: o.__dict__, sort_keys=True, indent=4 + ) class RecorderCommand(db.Model): - __table_args__ = {'extend_existing': True} + __table_args__ = {"extend_existing": True} """Table containing permissions associated with groups.""" id = db.Column(db.Integer, autoincrement=True, primary_key=True) created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow()) - last_time_modified = db.Column(db.DateTime, nullable=True, default=datetime.utcnow()) + last_time_modified = db.Column( + db.DateTime, nullable=True, default=datetime.utcnow() + ) name = db.Column(db.Unicode(63), unique=True, nullable=False) - alternative_name = db.Column(db.Unicode(63), unique=True, nullable=True, default=None) + alternative_name = db.Column( + db.Unicode(63), unique=True, nullable=True, default=None + ) disabled = db.Column(db.Boolean, default=False) description = db.Column(db.Unicode(511), nullable=True, default=None) parameters_string = db.Column(db.String(2047), nullable=True) - recorder_model = db.relationship('RecorderModel', back_populates='recorder_commands') - recorder_model_id = db.Column(db.Integer, db.ForeignKey('recorder_model.id')) - virtual_commands = db.relationship('VirtualCommand', secondary=virtual_command_recorder_command_table, - back_populates='recorder_commands') + recorder_model = db.relationship( + "RecorderModel", back_populates="recorder_commands" + ) + recorder_model_id = db.Column(db.Integer, db.ForeignKey("recorder_model.id")) + virtual_commands = db.relationship( + "VirtualCommand", + secondary=virtual_command_recorder_command_table, + back_populates="recorder_commands", + ) @staticmethod def get_all(): diff --git a/backend/models/room_model.py b/backend/models/room_model.py index 419579d..c1e4496 100644 --- a/backend/models/room_model.py +++ b/backend/models/room_model.py @@ -14,7 +14,7 @@ from backend import db from backend.models.recorder_model import Recorder from backend.tools.scrape_rooms import scrape_rooms -logger = logging.getLogger("lrc."+__name__) +logger = logging.getLogger("lrc." + __name__) metadata = MetaData() @@ -23,18 +23,19 @@ class Room(db.Model): id = db.Column(db.Integer, autoincrement=True, primary_key=True) created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow()) name = db.Column(db.Unicode(127), unique=False, nullable=False) - alternate_name = db.Column(db.Unicode(127), unique=False, nullable=True, default=None) + alternate_name = db.Column( + db.Unicode(127), unique=False, nullable=True, default=None + ) comment = db.Column(db.Unicode(2047), unique=False, nullable=True, default="") number = db.Column(db.Unicode(63), unique=False, nullable=True) building_name = db.Column(db.Unicode(63), unique=False, nullable=True) building_number = db.Column(db.Unicode(63), unique=False, nullable=True) - recorder = db.relationship(Recorder, uselist=False, back_populates='room') # one-to-one relation (uselist=False) + recorder = db.relationship( + Recorder, uselist=False, back_populates="room" + ) # one-to-one relation (uselist=False) - __table_args__ = ( - CheckConstraint('length(name) > 2', - name='name_min_length'), - ) + __table_args__ = (CheckConstraint("length(name) > 2", name="name_min_length"),) def __init__(self, **kwargs): db.Model.__init__(self, **kwargs) @@ -72,17 +73,24 @@ class Room(db.Model): return dict(id=self.id, name=self.name) def toJSON(self): - return json.dumps(self.to_dict(), default=lambda o: o.__dict__, - sort_keys=True, indent=4) + return json.dumps( + self.to_dict(), default=lambda o: o.__dict__, sort_keys=True, indent=4 + ) def pre_fill_table(): rooms = scrape_rooms() logger.debug("tada") logger.debug("got {} rooms".format(len(rooms))) - db_rooms = [Room(name=room['name'], number=room['room_number'], - building_name=room['building_name'], building_number=room['building_number']) for room in - rooms] + db_rooms = [ + Room( + name=room["name"], + number=room["room_number"], + building_name=room["building_name"], + building_number=room["building_number"], + ) + for room in rooms + ] try: db.session.bulk_save_objects(db_rooms) diff --git a/backend/models/user_model.py b/backend/models/user_model.py index 03d15c2..7f46c5f 100644 --- a/backend/models/user_model.py +++ b/backend/models/user_model.py @@ -21,61 +21,76 @@ from hashlib import md5 metadata = MetaData() -followers = db.Table('followers', - db.Column('follower_id', db.Integer, db.ForeignKey('user.id')), - db.Column('followed_id', db.Integer, db.ForeignKey('user.id')) - ) +followers = db.Table( + "followers", + db.Column("follower_id", db.Integer, db.ForeignKey("user.id")), + db.Column("followed_id", db.Integer, db.ForeignKey("user.id")), +) -acquaintances = db.Table('acquaintances', - db.Column('me_id', db.Integer, db.ForeignKey('user.id')), - db.Column('acquaintance_id', db.Integer, db.ForeignKey('user.id')) - ) +acquaintances = db.Table( + "acquaintances", + db.Column("me_id", db.Integer, db.ForeignKey("user.id")), + db.Column("acquaintance_id", db.Integer, db.ForeignKey("user.id")), +) -user_favorite_recorders_table = db.Table('user_favorite_recorders', - db.Column('user_id', db.Integer, - db.ForeignKey('user.id', - onupdate="CASCADE", - ondelete="CASCADE"), - primary_key=True), - db.Column('recorder_id', db.Integer, - db.ForeignKey('recorder.id', - onupdate="CASCADE", - ondelete="CASCADE"), - primary_key=True)) +user_favorite_recorders_table = db.Table( + "user_favorite_recorders", + db.Column( + "user_id", + db.Integer, + db.ForeignKey("user.id", onupdate="CASCADE", ondelete="CASCADE"), + primary_key=True, + ), + db.Column( + "recorder_id", + db.Integer, + db.ForeignKey("recorder.id", onupdate="CASCADE", ondelete="CASCADE"), + primary_key=True, + ), +) # This is the association table for the many-to-many relationship between # groups and members - this is, the memberships. -user_group_table = db.Table('user_group', - db.Column('user_id', db.Integer, - db.ForeignKey('user.id', - onupdate="CASCADE", - ondelete="CASCADE"), - primary_key=True), - db.Column('group_id', db.Integer, - db.ForeignKey('group.id', - onupdate="CASCADE", - ondelete="CASCADE"), - primary_key=True)) +user_group_table = db.Table( + "user_group", + db.Column( + "user_id", + db.Integer, + db.ForeignKey("user.id", onupdate="CASCADE", ondelete="CASCADE"), + primary_key=True, + ), + db.Column( + "group_id", + db.Integer, + db.ForeignKey("group.id", onupdate="CASCADE", ondelete="CASCADE"), + primary_key=True, + ), +) # This is the association table for the many-to-many relationship between # groups and permissions. -group_permission_table = db.Table('group_permission', - db.Column('group_id', db.Integer, - db.ForeignKey('group.id', - onupdate="CASCADE", - ondelete="CASCADE"), - primary_key=True), - db.Column('permission_id', db.Integer, - db.ForeignKey('permission.id', - onupdate="CASCADE", - ondelete="CASCADE"), - primary_key=True)) +group_permission_table = db.Table( + "group_permission", + db.Column( + "group_id", + db.Integer, + db.ForeignKey("group.id", onupdate="CASCADE", ondelete="CASCADE"), + primary_key=True, + ), + db.Column( + "permission_id", + db.Integer, + db.ForeignKey("permission.id", onupdate="CASCADE", ondelete="CASCADE"), + primary_key=True, + ), +) class User(UserMixin, db.Model): """ Example user model representation. """ + id = db.Column(db.Integer, primary_key=True) social_id = db.Column(db.Unicode(63), nullable=True, unique=True) nickname = db.Column(db.Unicode(63), index=True, unique=True) @@ -84,32 +99,40 @@ class User(UserMixin, db.Model): email = db.Column(db.String(120), nullable=False, index=True, unique=True) lang = db.Column(db.Unicode(32), index=False, unique=False) timezone = db.Column(db.Unicode(63), index=False, unique=False) - posts = db.relationship(Post, backref='author', lazy='dynamic') - example_data_item = db.relationship(ExampleDataItem, backref='owner') + posts = db.relationship(Post, backref="author", lazy="dynamic") + example_data_item = db.relationship(ExampleDataItem, backref="owner") example_data_item_id = db.Column(db.ForeignKey(ExampleDataItem.id)) about_me = db.Column(db.Unicode(255)) role = db.Column(db.Unicode(63)) - groups = db.relationship('Group', secondary=user_group_table, back_populates='users') + groups = db.relationship( + "Group", secondary=user_group_table, back_populates="users" + ) password = db.Column(db.String(255), nullable=True) registered_on = db.Column(db.DateTime, nullable=False, default=datetime.utcnow()) external_user = db.Column(db.Boolean, default=False) last_seen = db.Column(db.DateTime, default=datetime.utcnow()) last_time_modified = db.Column(db.DateTime, default=datetime.utcnow()) jwt_exp_delta_seconds = db.Column(db.Integer, nullable=True) - acquainted = db.relationship('User', - secondary=acquaintances, - primaryjoin=(acquaintances.c.me_id == id), - secondaryjoin=(acquaintances.c.acquaintance_id == id), - backref=db.backref('acquaintances', lazy='dynamic'), - lazy='dynamic') - followed = db.relationship('User', - secondary=followers, - primaryjoin=(followers.c.follower_id == id), - secondaryjoin=(followers.c.followed_id == id), - backref=db.backref('followers', lazy='dynamic'), - lazy='dynamic') + acquainted = db.relationship( + "User", + secondary=acquaintances, + primaryjoin=(acquaintances.c.me_id == id), + secondaryjoin=(acquaintances.c.acquaintance_id == id), + backref=db.backref("acquaintances", lazy="dynamic"), + lazy="dynamic", + ) + followed = db.relationship( + "User", + secondary=followers, + primaryjoin=(followers.c.follower_id == id), + secondaryjoin=(followers.c.followed_id == id), + backref=db.backref("followers", lazy="dynamic"), + lazy="dynamic", + ) - favorite_recorders = db.relationship(Recorder, secondary=user_favorite_recorders_table) + favorite_recorders = db.relationship( + Recorder, secondary=user_favorite_recorders_table + ) def __init__(self, **kwargs): super(User, self).__init__(**kwargs) @@ -128,9 +151,13 @@ class User(UserMixin, db.Model): :param identifier: :return: """ - return User.query.filter(or_(User.nickname == identifier, - User.email == identifier, - User.id == identifier)).first() + return User.query.filter( + or_( + User.nickname == identifier, + User.email == identifier, + User.id == identifier, + ) + ).first() @staticmethod @login_manager.user_loader @@ -174,12 +201,12 @@ class User(UserMixin, db.Model): :param nickname: :return: """ - return re.sub('[^a-zA-Z0-9_.]', '', nickname) + return re.sub("[^a-zA-Z0-9_.]", "", nickname) @classmethod def authenticate(cls, **kwargs): - email = kwargs.get('email') - password = kwargs.get('password') + email = kwargs.get("email") + password = kwargs.get("password") if not email or not password: return None @@ -244,16 +271,16 @@ class User(UserMixin, db.Model): :return: integer|string """ try: - payload = jwt.decode(auth_token, app.config.get('SECRET_KEY')) + payload = jwt.decode(auth_token, app.config.get("SECRET_KEY")) is_blacklisted_token = BlacklistToken.check_blacklist(auth_token) if is_blacklisted_token: - return 'Token blacklisted. Please log in again.' + return "Token blacklisted. Please log in again." else: - return payload['sub'] + return payload["sub"] except jwt.ExpiredSignatureError: - return 'Signature expired. Please log in again.' + return "Signature expired. Please log in again." except jwt.InvalidTokenError: - return 'Invalid token. Please log in again.' + return "Invalid token. Please log in again." def encode_auth_token(self): """ @@ -262,15 +289,11 @@ class User(UserMixin, db.Model): """ try: payload = { - 'exp': datetime.utcnow() + timedelta(days=0, hours=3, seconds=5), - 'iat': datetime.utcnow(), - 'sub': self.id + "exp": datetime.utcnow() + timedelta(days=0, hours=3, seconds=5), + "iat": datetime.utcnow(), + "sub": self.id, } - return jwt.encode( - payload, - app.config.get('SECRET_KEY'), - algorithm='HS256' - ) + return jwt.encode(payload, app.config.get("SECRET_KEY"), algorithm="HS256") except Exception as e: return e @@ -309,7 +332,10 @@ class User(UserMixin, db.Model): :param size: :return: """ - return 'https://s.gravatar.com/avatar/%s?d=mm&s=%d' % (md5(self.email.encode('utf-8')).hexdigest(), size) + return "https://s.gravatar.com/avatar/%s?d=mm&s=%d" % ( + md5(self.email.encode("utf-8")).hexdigest(), + size, + ) def acquaint(self, user): """ @@ -337,24 +363,35 @@ class User(UserMixin, db.Model): :param user: :return: """ - return self.acquainted.filter(acquaintances.c.acquaintance_id == user.id).count() > 0 + return ( + self.acquainted.filter(acquaintances.c.acquaintance_id == user.id).count() + > 0 + ) def get_acquaintances(self): """ Returns the list of acquaintances. :return: """ - return User.query.join(acquaintances, (acquaintances.c.acquaintance_id == User.id)).filter( - acquaintances.c.me_id == self.id).order_by(User.nickname.desc()) + return ( + User.query.join(acquaintances, (acquaintances.c.acquaintance_id == User.id)) + .filter(acquaintances.c.me_id == self.id) + .order_by(User.nickname.desc()) + ) def shared_example_data_items(self): """ Returns a list of the shared data items. :return: """ - return ExampleDataItem.query.join(acquaintances, - (acquaintances.c.acquaintance_id == ExampleDataItem.user_id)).filter( - acquaintances.c.me_id == self.id).order_by(ExampleDataItem.timestamp.desc()) + return ( + ExampleDataItem.query.join( + acquaintances, + (acquaintances.c.acquaintance_id == ExampleDataItem.user_id), + ) + .filter(acquaintances.c.me_id == self.id) + .order_by(ExampleDataItem.timestamp.desc()) + ) def follow(self, user): """ @@ -389,26 +426,33 @@ class User(UserMixin, db.Model): Returns list of followed posts. :return: """ - return Post.query.join(followers, (followers.c.followed_id == Post.user_id)).filter( - followers.c.follower_id == self.id).order_by(Post.timestamp.desc()) + return ( + Post.query.join(followers, (followers.c.followed_id == Post.user_id)) + .filter(followers.c.follower_id == self.id) + .order_by(Post.timestamp.desc()) + ) def to_dict(self): # return self.__dict__ - return dict(id=self.id, email=self.email, groups=[g.to_dict() for g in self.groups]) + return dict( + id=self.id, email=self.email, groups=[g.to_dict() for g in self.groups] + ) def toJSON(self): - return json.dumps(self.to_dict(), default=lambda o: o.__dict__, - sort_keys=True, indent=4) + return json.dumps( + self.to_dict(), default=lambda o: o.__dict__, sort_keys=True, indent=4 + ) def __repr__(self): - return '' % self.email + return "" % self.email class BlacklistToken(db.Model): """ Token Model for storing JWT tokens """ - __tablename__ = 'blacklist_tokens' + + __tablename__ = "blacklist_tokens" id = db.Column(db.Integer, primary_key=True, autoincrement=True) token = db.Column(db.String(500), unique=True, nullable=False) @@ -419,7 +463,7 @@ class BlacklistToken(db.Model): self.blacklisted_on = datetime.now() def __repr__(self): - return '