def removeUserFromProject(token, userId, projectId): """ <span class="card-title">>This Call will remove a user from a project</span> <br> <b>Route Parameters</b><br> - seToken: 'seToken'<br> - userId: 0987654321,<br> - 'projectId': 1234567890<br> <br> <br> <b>Payload</b><br> - NONE {<br> }<br> <br> <b>Response</b> <br> 200 - User updated <br> 400 - Bad Request """ requestingUser = get_user_by_token(token) if requestingUser is None: return bad_request("Bad User Token") try: userToRemove = User.get_by_id(int(userId)) except Exception as e: return bad_request("Bad id format") if userToRemove is None: return bad_request("No such user to remove") #check project Exists project = Project.get_by_id(int(projectId)) if project is None: return bad_request("No such Project!") #check if user is owner of project if requestingUser.key().id() != project.master_id: # check if user want to delete itself if requestingUser.key().id() != userToRemove.key().id(): return forbidden("No permission to delete user") try: userToRemove.projects_id_list.remove(projectId) project.membersId.remove(userToRemove.key().id()) except Exception as e: return bad_request("user is not listed to this project") db.put(userToRemove) db.put(project) db.save return Response(response=userToRemove.to_JSON(), status=200, mimetype="application/json") # Real response!
def get_stats(user): from models.Project import Project from models.Message import Message labels = ["Commits", "Open Issues Assigned", "Messages", "Unfinished Tasks"] data = [0, 0, 0, 0] for pid in user.projects_id_list: project = Project.get_by_id(int(pid)) info = json.loads(project.info) stats = info["stats"]["micro"] p_data = stats["data"] p_series = stats["series"] try: user_index = p_series.index(user.username) # adding commits data[0] = data[0] + p_data[user_index][0] # adding open issues data[1] = data[1] + p_data[user_index][1] except Exception: pass messages = Message.all().filter("master_id =", user.key().id()) for m in messages.run(): data[2] = data[2] + 1 # need to do tasks #### data = [data] return {"data": data, "labels": labels}
def to_JSON(self): user = User.get_by_id(self.master_id) if self.isProject: group = Project.get_by_id(self.groupId) else: group = Course.get_by_id(self.groupId) data = { 'groupId' : self.groupId, 'message' : self.message, 'date' : { 'year': self.msgDate.year, 'month': self.msgDate.month, 'day': self.msgDate.day, 'hour': self.msgDate.hour, 'minute': self.msgDate.minute }, 'id' : self.key().id(), 'master_id' : self.master_id, 'isProject' : self.isProject, 'user': json.loads(user.to_JSON()), 'group': json.loads(group.to_JSON()) } return json.dumps(data)
def getUsersByProject(token, projectId): """ <span class="card-title">>This Call will return all users in Project</span> <br> <b>Route Parameters</b><br> - seToken: 'seToken'<br> - projectId: 123456789 <br> <br> <b>Payload</b><br> - NONE <br> <br> <b>Response</b> <br> 200 - JSON Example:<br> <code> {<br> 'username': '******',<br> 'name': 'Darth Vader',<br> 'email': '[email protected],<br> 'isLecturer': 'True',<br> 'seToken': 'xxxxxx-xxxxx-xxxxx-xxxxxx',<br> 'avatar_url': 'http://location.git.com/somthing'<br> 'isFirstLogin': False,<br> 'campuses_id_list': [43243532532,5325325325,532532342],<br> 'courses_id_list': [53523,43432423,432432432432]<br> } </code> <br> 403 - No User Found """ if token is None: return no_content("Token Is Empty, No User Found") user = get_user_by_token(token) if user is None: return bad_request("Bad User Token") try: project = Project.get_by_id(int(projectId)) except Exception as e: return bad_request("Bad id format") if project is None: return bad_request("No such Project") arr = [] for u in enumerate(project.membersId): u = json.loads(User.get_by_id(int(u)).to_JSON()) arr.append(dict(u)) if len(arr) != 0: return Response(response=json.dumps(arr), status=200, mimetype="application/json") else: return Response(response=[], status=200, mimetype="application/json")