Exemplo n.º 1
0
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!
Exemplo n.º 2
0
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}
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
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")