代码中有注释,直接看代码
#coding:utf8
#!/usr/bin/env python
#@author: 9527
import gitlab
import openpyxl
import datetime
class GitlabInfoget():
def __init__(self,queue02,Url,token):
#这里传入的是GUI界面的Frame中的队列,可以直接去掉
self.queue02 = queue02
#配置GitLab服务器访问地址和访问令牌
self.Url = Url
self.token =token
#调用登录接口
self.gl = gitlab.Gitlab(Url, private\_token=token)
def get\_project\_info(self):
#向GUI界面Frame的队列中压入字符串
self.queue02.put("正在查询project信息")
#获取项目信息list
projects = self.gl.projects.list(all=True)
return projects
def get\_each\_project\_info(self,projects):
#向GUI界面Frame的队列中压入字符串
self.queue02.put("正在处理数据表头")
#定义行列起始值
Info\_row = 1 #行
Info\_column = 1 #列
# 创建一个工作簿
self.workbook = openpyxl.Workbook()
# 获取当前活动工作表
self.sheet = self.workbook.active
#设定表头
write\_in\_excel\_data0 = \["project名称","project层级",
"projectID","project简介","web地址","成员信息"\]
#写入表头信息
for data in write\_in\_excel\_data0:
# 在第Info\_row行第Info\_column列写入数据
self.sheet.cell(row=Info\_row,column=Info\_column, value=data)
#换列
Info\_column+=1
#遍历获取到的项目信息
for project in projects:
#同上
self.queue02.put("\n正在写入第" + str(Info_row) +"个project数据\n")
#换行
Info\_row +=1
#重置列起始值
Info\_column = 1 #列
#获取该项目所有成员信息(包括继承)
member1 = project.members\_all.list(get\_all=True)
#project名称
projectname = project.name
#project名称
projectlevel = project.path\_with\_namespace
#project的ID
projectid = project.id
#project简介
projectdescription = project.description
#web访问地址
web\_addr = project.web\_url
#数据归纳
write\_in\_excel\_data1 = \[str(projectname) , str(projectlevel) ,
str(projectid) ,str(projectdescription),str(web\_addr)\]
for data in write\_in\_excel\_data1:
# 在第Info\_row行第Info\_column列写入数据
self.sheet.cell(row=Info\_row,column=Info\_column, value=data)
#换列
Info\_column+=1
#遍历该项目成员信息
for member in member1:
#获取该成员信息的name,及姓名
member1name = member.name
#获取该成员信息的username,及姓名
member1user = member.username
#获取该成员信息的access\_level,即接入权限
member1access\_level = member.access\_level
#数据归纳
write\_in\_excel\_data2 = \[str(member1name),"-",str(member1user),
"-",str(member1access\_level)\]
write\_in\_excel\_data2 = "\\n".join(write\_in\_excel\_data2)
# 在第Info\_row行第Info\_column列写入数据
self.sheet.cell(row=Info\_row, column=Info\_column, value=write\_in\_excel\_data2)
#换列
Info\_column+=1
today = datetime.date.today()
filename\_excel = "gitlab\_projectINFO\_"+str(today) + ".xlsx"
self.workbook.save(filename\_excel)
#同上
self.queue02.put("\n数据已整理存入Excel文件完毕,文件名:" + str(filename_excel)+"\n")
# 释放连接
self.gl.session.close()
return True
'''
A = GitlabInfoget("192.168.1.1","test-Token")
B = A.get_project_info()
C = A.get_each_project_info(B)
print(C)
'''
手机扫一扫
移动阅读更方便
你可能感兴趣的文章