Python Daily
2.57K subscribers
1.48K photos
53 videos
2 files
38.9K links
Daily Python News
Question, Tips and Tricks, Best Practices on Python Programming Language
Find more reddit channels over at @r_channels
Download Telegram
Help needed serializing

hello guys im having a hard time serializing sqlalchemy object type AppenderBaseQuery

This is my model:

class Follow(db.Model):

__tablename__ = 'follow'

follower_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True)
followed_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True)
timestamp = db.Column(db.DateTime, default=datetime.utcnow)

def __repr__(self):
return f'follower: {self.follower_id}, followed: {self.followed_id}'


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)
db.session.commit()


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

def selfFollowing(self):
#Allow user in session to follow him/herself to allow posts of user in session
#to be able to render own posts if wanted

u = Follow.query.filter_by(followed_id=self.id).first()
if u is None:
#self.followers.append(Follow(follower=self))
f = Follow(follower_id=self.id, followed_id=self.id)
db.session.add(f)
db.session.commit()

@property
def followed_posts(self):
return Post.query.join(Follow, Follow.followed_id == Post.user_id)\
.filter(Follow.follower_id == self.id).order_by(Post.timestamp.desc())

@property
def followed_posts_to_json(self):
l = []
for p in self.followed_posts:
obj = p.timestamp
date = self.datetime_serialized(obj)
comm = p.comment.comment
c = p.commentList(comm)

json = {

'post_id': p.id,
'posts': p.post,
'time': date,
'userpic': p.postowner.profilepic,
'username': p.username,
'picposted': p.picture,
'comment': c
}
l.append(json)

return l

def post_to_json(self):
l = []
for p in self.post.all():

obj = p.timestamp

j = {

'id': p.id,
'post': p.post,

}

l.append(j)
return l

@staticmethod
def datetime_serialized(obj):
i