美文网首页
gitlab用户event统计

gitlab用户event统计

作者: 繁华丶凋零 | 来源:发表于2021-02-25 23:46 被阅读0次

某时间段gitlab用户的event计数

import requests
import json
import gitlab
import datetime
import sys, os, re
import queue
import threading


cookier = {'_gitlab_session':'xxxxxxxxxxxxx',
           'diff_view':'parallel',
           'event_filter':'all',
           'experimentation_subject_id':'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
           'sidebar_collapsed':'false'}


git_url = 'http://url'
git_token = 'xxxxxxxxxx'
gl = gitlab.Gitlab(git_url,git_token)
now_time = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
my_queue = queue.Queue()
    
def get_event(user):
    url = 'http://url/users/' + user + '/calendar.json'
    response = requests.get(url,cookies=cookier)
    return(response.json())   

def get_users():
    user_list = []
    users = gl.users.list(all=True)
    for i in users:
        name_username_list = []
        name_username_list.append(i.username)
        name_username_list.append(i.name)
        user_list.append(name_username_list)
    return(user_list)

def storeInQueue(f):
    def wrapper(*args):
        my_queue.put(f(*args))
    return wrapper

@storeInQueue
def data_chuli(userlist,aftertime,beforetime):
    user = userlist[0]
    user_name = userlist[1]
    one_user_info = []
    try:    
       data = get_event(user)
       for line in data:
           linedata = {}
           linedata['num'] = data[line]
           linedata['time'] = int(line.replace('-',''))
           if linedata['time'] > int(beforetime):
               continue
           if linedata['time'] < int(aftertime):
               continue  
           linedata['user'] = user
           linedata['user_name'] = user_name
           one_user_info.append(linedata)
    except Exception as e:
       print(e)
    return(one_user_info)

def user_info_get(aftertime,beforetime):
    threads = []
    result = []
    info = {}
#    userall = ['chenqiming','zutao_tt','baiyuan1','lijian1']
    userall = get_users()
    for userlist in userall:
        runGetStatusThread = threading.Thread(target=data_chuli,args=(userlist,aftertime,beforetime,))
        threads.append(runGetStatusThread)
 
    for i in threads:
        i.start()

    for i in threads:
        i.join()

    for i in threads:
        r = my_queue.get()
        if bool(r):
            result.extend(r)
    info['info'] = result
    return(info) 

 

#a = user_info_get(20201209,20201210)
#print(a)


from flask import Flask, render_template, request, redirect, url_for
from flask_cors import CORS
import json
import requestgit

app = Flask(__name__)
gitevent = requestgit

@app.route('/api/gitlib_zcy_info/userevent',methods=['POST', 'GET'])
def show_event_info():
    if request.method == 'POST':
        beforetime = request.json['beforetime']
        aftertime = request.json['aftertime']
        info = gitevent.user_info_get(aftertime,beforetime)
        return(json.dumps(info))

if __name__ == '__main__':
    CORS(app, supports_credentials=True)
    app.run(host='0.0.0.0', port="50308",debug=True)

相关文章

网友评论

      本文标题:gitlab用户event统计

      本文链接:https://www.haomeiwen.com/subject/gvhefltx.html