Source code for controllers.chatGroup
import json
import requests
from flask import request
from constants import MOBIL_ITU_AUTH_URL
from middlewares import auth_func
from server import app
from models.setupdb import student_model, chatGroups, studentsOnChat
private_route = auth_func(student_model)
[docs]@app.route("/api/chatgroups", methods=['GET', 'POST'])
@private_route
def show_groups(student):
"""
GET request show all the groups of student. \n
POST request allows student to form a group. Returns the new list of student's groups
"""
# Works
if request.method == 'GET':
return json.dumps(studentsOnChat.showGroupsOfStudent(data=student["id"]))
# Works
elif request.method == 'POST':
data = request.get_json()
chatGroups.createGroup({"group_admin": student["id"],
"name": data["name"],
"created_by": student["id"]})
lastGroupCreatedBy = str(chatGroups.getLastGroupCreatedById(data=student["id"])[0]["id"])
studentsOnChat.addMember({"chatgroup_id": lastGroupCreatedBy,
"student_id": student["id"]})
return json.dumps(studentsOnChat.showGroupsOfStudent(data=student["id"]))
[docs]@app.route("/api/chatgroups/<cid>", methods=['GET', 'PUT', 'DELETE'])
@private_route
def students_group(student, cid):
"""
GET request will show the group to student\n
PUT request will add student to chatgroup. Returns a JSON object of members of group including the new one.\n
DELETE request will remove student from chat. Returns a JSON object of members of group excluding the new one.
"""
try:
print(str(chatGroups.listGroups()[int(cid) - 1]["id"]))
except:
return "This group cannot be found in database!", 404
if request.method == 'GET':
data = {"cid": cid, "sid": student["id"]}
checkIfMember = studentsOnChat.listMembersOfGroup(data)
return json.dumps(studentsOnChat.listMembersOfGroup(data=data))
elif request.method == 'PUT':
newData = {"chatgroup_id": cid, "student_id": str(student["id"])}
studentsOnChat.addMember(newData)
return "Success", 200
elif request.method == 'DELETE':
newData = {"cid": int(cid), "sid": str(student["id"])}
isAdminRes = chatGroups.checkIsAdmin(data=newData)
if isAdminRes[0]["id"] == int(cid):
studentsOnChat.removeMember(newData)
return "Success", 200
return "You can't not remove people when you are not admin!", 404
[docs]@app.route("/chatgroups/<cid>/leave", methods=["GET"])
@private_route
def leave_chatgroup(cid):
"""
Leave room endpoint
"""
data = {"cid": str(cid), "sid": str(student["id"])}
checkIfMember = studentsOnChat.listMembersOfGroup(data)
if student["id"] == checkIfMember[0]["student_id"]:
studentsOnChat.removeMember(data)
return "Success", 200
else:
return "Do not try to harm the balance of nature!", 404