Skip to content

Commit

Permalink
Implementing Friends into the service (add,accept,reject,friendslist)
Browse files Browse the repository at this point in the history
  • Loading branch information
SirGankalot committed Jul 5, 2024
1 parent f61c9ed commit e3feec4
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 39 deletions.
25 changes: 19 additions & 6 deletions service/src/templates/add_friend.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,32 @@
<form method="POST">
<div style="word-wrap: break-word;">
<ul class="list-group list-group-flush" id="friends">
<h1>Friends</h1>
{% for user in users %}
<h1>Friends Requests</h1>
{% for request in requests %}
<li class="list-group-item">
{{ user.email }}
<button type="submit" class="btn btn-primary" name="accept_friend" value="{{ user.email }}">ACCEPT</button>
<button type="submit" class="btn btn-danger" name="reject_friend" value="{{ user.email }}">REJECT</button>
{{ request.email }}
<button type="submit" class="btn btn-primary" name="accept_friend" value="{{ request.email }}">ACCEPT</button>
<button type="submit" class="btn btn-danger" name="reject_friend" value="{{ request.email }}">REJECT</button>
</li>
{% endfor %}
</ul>
</div>
<input type="text" name="" class="form-control" placeholder="Enter email of friend">
<h1>Add Friend</h1>
<input type="text" name="friend_email" class="form-control" placeholder="Enter email of friend">
<div align="center">
<button type="submit" class="btn btn-primary" name="add_friend">Add Friend</button>
</div>
<h1>Friends</h1>
<ul class="list-group list-group-flush" id="friends">
{% for friend in friends %}
<li class="list-group-item">
Friends Email: {{ friend.email }}</br>
Friends Name: {{ friend.name }}</br>
{% if friend.public_key_name %}
Friends Public Key: {{ friend.public_key_name }}</br>
{% endif %}
Time created: {{ friend.time }}</br>
</li>
{% endfor %}
</form>
{% endblock %}
3 changes: 2 additions & 1 deletion service/src/templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,9 @@
<a class="nav-item nav-link" id="groups" href="/creategroup">Groupchats</a>
<a class="nav-item nav-link" id="userlist" href="/userlist">Userlist</a>
<a class="nav-item nav-link" id="profil" href="/profil">Profil</a>
<a class="nav-item nav-link" id="logout" href="/logout">Logout</a>
<a class="nav-item nav-link" id="flag" href="/flag">Event</a>
<a class="nav-item nav-link" id="add_friend" href="/add_friend">Add Friend</a>
<a class="nav-item nav-link" id="logout" href="/logout">Logout</a>
{% else %}
<div class="navbar-nav ml-auto">
<a class="nav-item nav-link" id="login" href="/login">Login</a>
Expand Down
105 changes: 73 additions & 32 deletions service/src/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -292,39 +292,80 @@ async def flag():
return render_template("flag.html", user=current_user)


# @views.route('/add_friend', methods=['GET', 'POST'])
# @login_required
# async def add_friend_headfunction():
# if request.method == 'POST':
# if 'accept_friend' in request.form:
# user_email = request.form.get('user.email')
# print(user_email)

# elif 'reject_friend' in request.form:
# user_email = request.form.get('user.email')
# print(user_email)
@views.route('/add_friend', methods=['GET', 'POST'])
@login_required
async def add_friend_headfunction():
if request.method == 'POST':
if 'accept_friend' in request.form:
user_email = request.form.get('accept_friend')
print(user_email)
accept_friend(user_email)

elif 'reject_friend' in request.form:
user_email = request.form.get('reject_friend')
print(user_email)
reject_friend(user_email)

# elif 'add_friend' in request.form:
# friend_email = request.form.get('friend_email')
# print(friend_email)
# add_friend(friend_email)
# #return add_friend(friend_email)
# else:
# users = User.query.all()
# user_list = []
# for user in users:
# if user.email != current_user.email:
# user_list.append(user)
# return render_template("add_friend.html", users=user_list)

# # def accept_friend():

# # def reject_friend():

# def add_friend(friend_email):
# if len(friend_email) < 1:
# flash('Friend email is too short!', category='error')
# elif db.session.query(User).filter_by(email=friend_email).first():
elif 'add_friend' in request.form:
friend_email = request.form.get('friend_email')
print(friend_email)
add_friend(friend_email)

current_user_id = current_user.id
userlist_of_friends = []
for i in db.session.query(user_friends_association).filter_by(user_id=current_user_id).all():
if db.session.query(user_friends_association).filter_by(user_id=i.friend_id, friend_id=current_user_id).first():
userlist_of_friends.append(db.session.query(User).filter_by(id=i.friend_id).first())
userlist_requests = []
for i in db.session.query(user_friends_association).filter_by(friend_id=current_user_id).all():
if not db.session.query(user_friends_association).filter_by(user_id=current_user_id, friend_id=i.user_id).first():
userlist_requests.append(db.session.query(User).filter_by(id=i.user_id).first())
return render_template("add_friend.html", friends = userlist_of_friends, requests = userlist_requests, user=current_user)

else:
current_user_id = current_user.id
userlist_of_friends = []
for i in db.session.query(user_friends_association).filter_by(user_id=current_user_id).all():
if db.session.query(user_friends_association).filter_by(user_id=i.friend_id, friend_id=current_user_id).first():
userlist_of_friends.append(db.session.query(User).filter_by(id=i.friend_id).first())
userlist_requests = []
for i in db.session.query(user_friends_association).filter_by(friend_id=current_user_id).all():
if not db.session.query(user_friends_association).filter_by(user_id=current_user_id, friend_id=i.user_id).first():
userlist_requests.append(db.session.query(User).filter_by(id=i.user_id).first())
return render_template("add_friend.html", friends = userlist_of_friends, requests = userlist_requests, user=current_user)

def accept_friend(user_email):
user_id = db.session.query(User).filter_by(email=user_email).first().id
current_user_id = current_user.id
new_friend = user_friends_association.insert().values(user_id=current_user_id, friend_id=user_id)
db.session.execute(new_friend)
db.session.commit()
flash('Friend added!', category='success')

def reject_friend(user_email):
user_id = db.session.query(User).filter_by(email=user_email).first().id
current_user_id = current_user.id
if db.session.query(user_friends_association).filter_by(user_id=user_id, friend_id=current_user_id).first():
db.session.query(user_friends_association).filter_by(user_id=user_id, friend_id=current_user_id).delete()
db.session.commit()
flash('Friend rejected!', category='success')

def add_friend(friend_email):
if len(friend_email) < 1:
flash('Friend email is too short!', category='error')
if friend_email == current_user.email:
flash('You cannot add yourself!', category='error')
elif db.session.query(User).filter_by(email=friend_email).first():
friend = db.session.query(User).filter_by(email=friend_email).first()
friend_id = friend.id
current_user_id = current_user.id
if db.session.query(user_friends_association).filter_by(user_id=current_user_id, friend_id=friend_id).first():
flash('Friend already added!', category='error')
else:
new_friend = user_friends_association.insert().values(user_id=current_user_id, friend_id=friend_id)
db.session.execute(new_friend)
db.session.commit()
flash('Friend added!', category='success')



0 comments on commit e3feec4

Please sign in to comment.