-
- Traceback (most recent call last)
- File "/usr/lib/python3.6/site-packages/flask/app.py", line 1994, in __call__
- return self.wsgi_app(environ, start_response)
- File "/usr/lib/python3.6/site-packages/flask/app.py", line 1985, in wsgi_app
- response = self.handle_exception(e)
- File "/usr/lib/python3.6/site-packages/flask/app.py", line 1540, in handle_exception
- reraise(exc_type, exc_value, tb)
- File "/usr/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
- raise value
- File "/usr/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
- response = self.full_dispatch_request()
- File "/usr/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
- rv = self.handle_user_exception(e)
- File "/usr/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
- reraise(exc_type, exc_value, tb)
- File "/usr/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
- raise value
- File "/usr/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
- rv = self.dispatch_request()
- File "/usr/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
- return self.view_functions[rule.endpoint](**req.view_args)
- File "/home/quechon/PycharmProjects/untitled3/myapp/login/routes.py", line 66, in _register_process
- timecreated=datetime.datetime.utcnow()
- File "<string>", line 4, in __init__
-
- File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/state.py", line 414, in _initialize_instance
- manager.dispatch.init_failure(self, args, kwargs)
- File "/usr/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__
- compat.reraise(exc_type, exc_value, exc_tb)
- File "/usr/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 186, in reraise
- raise value
- File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/state.py", line 411, in _initialize_instance
- return manager.original_init(*mixed[1:], **kwargs)
- File "/home/quechon/PycharmProjects/untitled3/myapp/models.py", line 80, in __init__
- self.follow(self)
- File "/home/quechon/PycharmProjects/untitled3/myapp/models.py", line 47, in follow
- if not self.is_following(user):
- File "/home/quechon/PycharmProjects/untitled3/myapp/models.py", line 57, in is_following
- return self.followed.filter_by(followed_id=user.id).first() is not None
- File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 1517, in filter_by
- return self.filter(sql.and_(*clauses))
- File "<string>", line 2, in filter
-
- File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/base.py", line 198, in generate
- self = args[0]._clone()
- File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/dynamic.py", line 278, in _clone
- orm_util.instance_str(instance), self.attr.key))
- sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <User at 0x7fe2ac0e6e80> is not bound to a Session, and no contextual session is established; lazy load operation of attribute 'followed' cannot proceed
-
-
-
-
-
- class User(db.Model):
-
- __tablename__ = 'user'
-
- id = db.Column(db.Integer, primary_key=True)
- username = db.Column(db.String(100), unique=True)
- email = db.Column(db.String(100))
- password = db.Column(db.Binary)
- profilepic = db.Column(db.String)
- timecreated = db.Column(db.DateTime)
-
- #picture = db.relationship('Picture', backref='owner', lazy='dynamic')
- comment = db.relationship('Comment', backref='user', lazy='dynamic')
- post = db.relationship('Post', backref='user', lazy='dynamic')
-
- followed = db.relationship('Follow', foreign_keys=[Follow.follower_id],
- backref=db.backref('follower', lazy='joined'),
- lazy='dynamic',
- cascade='all, delete-orphan')
- followers = db.relationship('Follow',
- foreign_keys=[Follow.followed_id],
- backref=db.backref('followed', lazy='joined'),
- lazy='dynamic',
- cascade='all, delete-orphan')
-
- def follow(self, user):
- if not self.is_following(user):
- f = Follow(follower=self, followed=user)
- db.session.add(f)
-
- def unfollow(self, user):
- f = self.followed.filter_by(followed_id=user.id).first()
- if f:
- db.session.delete(f)
-
- def is_following(self, user):
- return self.followed.filter_by(followed_id=user.id).first() is not None
-
- def is_followed_by(self, user):
- return self.followers.filter_by(follower_id=user.id).first() is not None
-
- @property
- def followed_posts(self):
- return Post.query.join(Follow.followed_id == Post.user_id)\
- .filter(Follow.follower_id == self.id)
-
- def is_authenticated(self):
- return True
-
- def is_active(self):
- return True
-
- def is_anonymous(self):
- return False
-
- def get_id(self):
- return str(self.id)
-
- def __init__(self, **kwargs):
- self.follow(self)
-
- def __repr__(self):
- return f'<id - {self.id} | - {self.username}>'
-