Exemplo n.º 1
0
def longTimeInteractionWproject(owner, repo, authen):
    print("long Time Interaction With Project .......")
    global client
    dbname = (repo + "_metrics")
    db = client[repo]
    db2 = client[dbname]
    allUsers = ext.getlistUsers(owner, repo)
    global projectUserAssociation
    for user in allUsers:
        association = user.get("association")
        userDB = projectUserAssociation.get(association)
        userLogin = user.get("login")
        userAux = db2[userDB].find_one({"login": userLogin})
        if userAux != None:
            qtComments = userAux.get("participationWComments")
            qtCommits = len(list(db.commits.find({"author.login": userLogin})))
            actions = qtComments + qtCommits
            timeInRepo = daysInProject(userLogin, db)
            if (timeInRepo > 0):
                longTimeInteraction = float(actions) / float(timeInRepo)
            else:
                longTimeInteraction = 0
            db2[userDB].update(
                {"login": userLogin},
                {"$set": {
                    "longTimeInteraction": longTimeInteraction
                }})
Exemplo n.º 2
0
def status(owner, repo, authen):
    global client
    dbname = (repo + "_metrics")
    db2 = client[dbname]
    flw = follow.followers(authen)
    userList = ext.getlistUsers(owner, repo)
    allUsers = list(userList)
    followers = flw.followersList(allUsers)
    for user in allUsers:
        print((user["login"]))
        userlogin = user["login"]
        if (userlogin != None):
            followersqtd = followers[userlogin]
        else:
            followersqtd = 0
        try:
            association = user.get("association")
            userDB = projectUserAssociation.get(association)
            db2[userDB].update({"login": user.get("login")},
                               {"$set": {
                                   "status": followersqtd
                               }})
        except Pymongo.errors.OperationFailure as e:
            print(e)
            continue
Exemplo n.º 3
0
def participationWComments(owner, repo, authen):
    print("participation With Comments .......")
    global client
    dbname = (repo + "_metrics")
    db = client[repo]
    db2 = client[dbname]
    global projectUserAssociation

    userComments = {}
    userCommentsArray = []

    allUsers = ext.getlistUsers(owner, repo)

    allCommentsUser = list(db.issuesComments.find({}))
    for usercomment in allCommentsUser:
        occurrence = usercomment.get("participants")
        if occurrence != None:
            occurrenceKeys = list(occurrence.keys())
            for userlogin in occurrenceKeys:
                if userlogin in userCommentsArray:
                    value = occurrence.get(userlogin)
                    userComments[userlogin] = userComments[userlogin] + int(
                        value)
                else:
                    userComments[userlogin] = int(occurrence.get(userlogin))
                    userCommentsArray.append(userlogin)

    for user in allUsers:
        userlogin = user.get("login")
        if userlogin in userCommentsArray:
            try:
                association = user.get("association")
                userDB = projectUserAssociation.get(association)
                db2[userDB].update({"login": user.get("login")}, {
                    "$set": {
                        "participationWComments": userComments.get(userlogin)
                    }
                })
            except Pymongo.errors.OperationFailure as e:
                print(e)
        else:
            try:
                print((user.get("login")))
                collect = user.get("association")
                association = user.get("association")
                userDB = projectUserAssociation.get(association)
                db2[userDB].update({"login": user.get("login")},
                                   {"$set": {
                                       "participationWComments": 0
                                   }})
            except Pymongo.errors.OperationFailure as e:
                print(e)
Exemplo n.º 4
0
def sourceOfLearning(owner, repo, authen):
    print("sourceOfLearning .....")
    global client
    dbname = (repo + "_metrics")
    db = client[repo]
    db2 = client[dbname]
    userMentions = {}
    userMentionsArray = []

    allUsers = ext.getlistUsers(owner, repo)

    for user in allUsers:
        allMentionUser = list(
            db.issuesComments.find({"mentions": user.get("login")}))
        if len(allMentionUser) > 0:
            userlogin = user.get("login")
            for usermention in allMentionUser:
                mentionsN = usermention.get("mentions")
                occurrence = Counter(mentionsN)
                if userlogin in userMentionsArray:
                    value = occurrence.get(userlogin)
                    userMentions[userlogin] = userMentions[userlogin] + int(
                        value)
                else:
                    if (occurrence.get(userlogin) != None):
                        userMentions[userlogin] = int(
                            occurrence.get(userlogin))
                        userMentionsArray.append(userlogin)
            if userlogin in userMentionsArray:
                try:
                    association = user.get("association")
                    userDB = projectUserAssociation.get(association)
                    db2[userDB].update({"login": user.get("login")}, {
                        "$set": {
                            "sourceOfLearning": userMentions.get(userlogin)
                        }
                    })
                except Pymongo.errors.OperationFailure as e:
                    print(e)
        else:
            try:
                print((user.get("login")))
                association = user.get("association")
                userDB = projectUserAssociation.get(association)
                db2[userDB].update({"login": user.get("login")},
                                   {"$set": {
                                       "sourceOfLearning": 0
                                   }})
            except Pymongo.errors.OperationFailure as e:
                print(e)
Exemplo n.º 5
0
def contentValueInProject(owner, repo, authen):
    print("content Value In Project .......")
    global client
    dbname = (repo + "_metrics")
    db = client[repo]
    db2 = client[dbname]

    userCommits = {}
    userCommitsArray = []

    allUsers = ext.getlistUsers(owner, repo)

    for user in allUsers:
        allcommitsInfo = list(
            db.commitsInfo.find({"author": user.get("login")}))
        userlogin = user.get("login")
        for commitsInfo in allcommitsInfo:
            value = float(commitsInfo.get("contentValue"))

            if userlogin in userCommitsArray:
                userCommits[userlogin] = userCommits[userlogin] + value
            else:
                userCommits[userlogin] = float(value)
                userCommitsArray.append(userlogin)

        if userlogin in userCommitsArray:
            contentValueInProject = userCommits.get(userlogin)
            try:
                association = user.get("association")
                userDB = projectUserAssociation.get(association)
                db2[userDB].update(
                    {"login": user.get("login")},
                    {"$set": {
                        "contentValueInProject": contentValueInProject
                    }})
            except Pymongo.errors.OperationFailure as e:
                print(e)
        else:
            try:
                print((user.get("login")))
                collect = user.get("association")
                association = user.get("association")
                userDB = projectUserAssociation.get(association)
                db2[userDB].update({"login": user.get("login")},
                                   {"$set": {
                                       "contentValueInProject": 0
                                   }})
            except Pymongo.errors.OperationFailure as e:
                print(e)
Exemplo n.º 6
0
def statusGlobalSave(owner, repo):
    client = MongoClient('localhost', 27017)
    db4 = client['projects']

    allUsers = ext.getlistUsers(owner, repo)
    for user in allUsers:
        userLogin = user.get('login')
        db4 = client['global_status']
        foundUser = db4.global_status_names.find_one({'login': userLogin})
        if foundUser != None:
            qtProject = foundUser.get('qtProject')
            qtProject = qtProject + 1
            #db4.global_status_names.update({'login': userLogin}, {'$push': {'project': project}})
            db4.global_status_names.update({'login': userLogin}, {'$set': {'qtProject': qtProject}})
        else:
            db4.global_status_names.insert_one({'login': user.get('login'), 'qtProject': 1})
Exemplo n.º 7
0
def ParticipationWcode(owner, repo, authen):
    print("participation With Comments .......")
    global client
    dbname = (repo + "_metrics")
    db = client[repo]
    db2 = client[dbname]
    allUsers = ext.getlistUsers(owner, repo)
    for user in allUsers:
        allprOpen = list(
            db.pullrequests.find({"author.login": user.get("login")}))
        qtprOpen = len(allprOpen)
        allprClosed = list(db.prInfo.find({"mergedby": user.get("login")}))
        qtprClosed = len(allprClosed)
        ParticipationWcode = int(qtprClosed + qtprOpen)
        if ParticipationWcode > 0:
            try:
                association = user.get("association")
                userDB = projectUserAssociation.get(association)
                db2[userDB].update(
                    {"login": user.get("login")},
                    {"$set": {
                        "participationWcode": ParticipationWcode
                    }})
            except Pymongo.errors.OperationFailure as e:
                print(e)
        else:
            try:
                print((user.get("login")))
                association = user.get("association")
                userDB = projectUserAssociation.get(association)
                db2[userDB].update({"login": user.get("login")},
                                   {"$set": {
                                       "participationWcode": 0
                                   }})
            except Pymongo.errors.OperationFailure as e:
                print(e)
Exemplo n.º 8
0
def closenessOwner(owner, repo, authen):
    global client
    print("closeness in project .....")
    dbname = (repo + "_metrics")
    db = client[dbname]
    ownerList = db.owner.find_one({})
    members = list(db.members.find({}, {"_id": 0}))
    users = ext.getlistUsers(owner, repo)
    allUsers = list(users)
    memberLen = len(members)
    ownerLen = 0
    flw = follow.followers(authen)
    if ownerList != None:
        ownerLen = 1

    if (ownerLen > 0) and (memberLen > 0):
        followings = flw.followingsList(ownerList.get("login"))
        if followings != 0:
            for user in allUsers:
                if user in followings:
                    db.owner.update({"login": ownerList.get("login")},
                                    {"$push": {
                                        "closeness": user
                                    }})
        else:
            db.owner.update({"login": ownerList.get("login")},
                            {"$push": {
                                "closeness": 0
                            }})

        memberList = list(members)
        for member in memberList:
            results = follow.followingsList(member.get("login"))
            if results != 0:
                followings = list(results)
                flag = False
                for user in allUsers:
                    if user in followings:
                        print((("{}:{}").format(member.get("login"),
                                                user.get("login"))))
                        flag = True
                        db.members.update({"login": member.get("login")},
                                          {"$push": {
                                              "closeness": user
                                          }})
                if (flag == False):
                    db.members.update({"login": member.get("login")},
                                      {"$push": {
                                          "closeness": 0
                                      }})
            else:
                print((("{}:{}").format(member.get("login"), 0)))
                db.members.update({"login": member.get("login")},
                                  {"$push": {
                                      "closeness": 0
                                  }})

    elif (ownerLen > 0) and (memberLen == 0):
        followings = flw.followingsList(ownerList.get("login"))
        if followings != 0:
            for user in allUsers:
                if user in followings:
                    db.owner.update({"login": ownerList.get("login")},
                                    {"$push": {
                                        "closeness": user
                                    }})
        else:
            db.owner.update({"login": ownerList.get("login")},
                            {"$push": {
                                "closeness": 0
                            }})

    elif (ownerLen == 0) and (memberLen > 0):
        memberList = list(members)
        for member in memberList:
            results = flw.followingsList(member.get("login"))
            if results != 0:
                followings = list(results)
                flag = False
                for user in allUsers:
                    if user in followings:
                        print((("{}:{}").format(member.get("login"),
                                                user.get("login"))))
                        flag = True
                        db.members.update({"login": member.get("login")},
                                          {"$push": {
                                              "closeness": user
                                          }})
                if (flag == False):
                    db.members.update({"login": member.get("login")},
                                      {"$push": {
                                          "closeness": 0
                                      }})
            else:
                print((("{}:{}").format(member.get("login"), 0)))
                db.members.update({"login": member.get("login")},
                                  {"$push": {
                                      "closeness": 0
                                  }})