Display following/followed users on the profile page

This commit is contained in:
Gergely Polonkai 2018-07-09 13:04:55 +02:00
parent ba1a660b1a
commit f1fab33c8d
2 changed files with 46 additions and 0 deletions

View File

@ -194,6 +194,32 @@ class Profile(db.Model): # pylint: disable=too-few-public-methods
return f'<Profile {self.id}(@{username}{domain})>' return f'<Profile {self.id}(@{username}{domain})>'
@property
def followed_list(self):
"""List of profiles this profile is following
"""
# This will always be empty for remote profiles
if not self.user:
return []
return Profile.query \
.join(UserFollow.followed) \
.filter(UserFollow.follower == self)
@property
def follower_list(self):
"""List of profiles that follow this profile
"""
# This will always be empty for remote profiles
if not self.user:
return []
return Profile.query \
.join(UserFollow.follower) \
.filter(UserFollow.followed == self)
class Event(db.Model): class Event(db.Model):
"""Database model for events """Database model for events
@ -404,9 +430,13 @@ class UserFollow(db.Model):
#: The ID of the profile that is following the other #: The ID of the profile that is following the other
follower_id = db.Column(db.Integer(), db.ForeignKey('profiles.id'), primary_key=True) follower_id = db.Column(db.Integer(), db.ForeignKey('profiles.id'), primary_key=True)
follower = db.relationship('Profile', foreign_keys=[follower_id])
#: The ID of the profile being followed #: The ID of the profile being followed
followed_id = db.Column(db.Integer(), db.ForeignKey('profiles.id'), primary_key=True) followed_id = db.Column(db.Integer(), db.ForeignKey('profiles.id'), primary_key=True)
followed = db.relationship('Profile', foreign_keys=[followed_id])
#: The timestamp when the follow was initiated #: The timestamp when the follow was initiated
initiated_at = db.Column(db.DateTime(), default=datetime.utcnow, nullable=False) initiated_at = db.Column(db.DateTime(), default=datetime.utcnow, nullable=False)

View File

@ -8,4 +8,20 @@
{% if profile.user != current_user %} {% if profile.user != current_user %}
<a href="{{ url_for('follow_user', username=profile.user.username) }}">{% trans %}Follow{% endtrans %} <a href="{{ url_for('follow_user', username=profile.user.username) }}">{% trans %}Follow{% endtrans %}
{% endif %} {% endif %}
<h2>
{% trans %}Follows{% endtrans %}
</h2>
{% for followed in profile.followed_list %}
{{ followed }}
{% endfor %}
<h2>
{% trans %}Followers{% endtrans %}
</h2>
{% for follower in profile.follower_list %}
{{ follower }}
{% endfor %}
{% endblock content %} {% endblock content %}