某时间段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)
网友评论