def get(self, *args, **kwargs): git_url = self.get_argument('git_url', default=None, strip=True) relative_path = self.get_argument('relative_path', default=None, strip=True) hook_name = self.get_argument('hook_name', default=None, strip=True) search_val = self.get_argument('search_val', default=None, strip=True) log_list = [] with DBContext('r') as session: if git_url and relative_path and hook_name: offset = datetime.timedelta(days=-3) re_date = (datetime.datetime.now() + offset).strftime('%Y-%m-%d') hooks_log = session.query(HooksLog.logs_info).filter(HooksLog.git_url == git_url, HooksLog.relative_path == relative_path, HooksLog.hook_name == hook_name).filter( cast(HooksLog.create_time, DATE) > cast(re_date, DATE)).order_by(-HooksLog.id).first() if hooks_log: return self.write(dict(code=0, msg='获取成功', data=hooks_log[0])) else: return self.write(dict(code=-2, msg='未找到最近触发的任务', data='')) elif search_val: hooks_log_info = session.query(HooksLog).filter( or_(HooksLog.git_url.like('{}%'.format(search_val)), HooksLog.relative_path.like('{}%'.format(search_val)), HooksLog.logs_info.like('{}%'.format(search_val)))).order_by(-HooksLog.id).all() else: hooks_log_info = session.query(HooksLog).order_by(-HooksLog.id).limit(200).all() for msg in hooks_log_info: data_dict = model_to_dict(msg) data_dict['create_time'] = str(data_dict['create_time']) log_list.append(data_dict) return self.write(dict(code=0, msg='获取成功', data=log_list))
async def check_project_branches(git_url, project_id): with DBContext('r') as session: git_conf = session.query(GitConf).filter( GitConf.git_url == git_url).first() git_conf = model_to_dict(git_conf) res = await get_branches(git_conf, project_id) return res
def get(self, *args, **kwargs): git_url = self.get_argument('git_url', default=None, strip=True) group_name = self.get_argument('group_name', default=None, strip=True) repo_user_list = [] if not git_url or group_name: with DBContext('r') as session: git_group_info = session.query(GitUsers).all() else: with DBContext('r') as session: git_user_info = session.query(GitGroup.user_list).filter( GitGroup.git_url == git_url, GitGroup.group_name == group_name).first() if git_user_info: git_user_info = git_user_info[0] git_user_list = git_user_info.split(',') git_group_info = session.query(GitUsers).filter( GitUsers.user_id.in_(git_user_list)).all() else: return self.write(dict(code=0, msg='没有用户', data=[])) for msg in git_group_info: data_dict = model_to_dict(msg) repo_user_list.append(data_dict) return self.write(dict(code=0, msg='获取成功', data=repo_user_list))
def get(self, *args, **kwargs): repo_conf_list = [] with DBContext('r') as session: git_group_info = session.query(GitConf).all() for msg in git_group_info: data_dict = model_to_dict(msg) repo_conf_list.append(data_dict) return self.write(dict(code=0, msg='获取成功', data=repo_conf_list))
def get(self, *args, **kwargs): repo_list = [] with DBContext('r') as session: repo_info = session.query(GitRepo).all() for msg in repo_info: data_dict = model_to_dict(msg) repo_list.append(data_dict) _tree = [{ "expand": True, "title": "GitLab", "children": [], "data_type": 'root' }] if repo_list: tmp_tree = { "git_url": {}, "group_name": {}, } for t in repo_list: git_url, group_name = t["git_url"], t['group_name'] # 因为是第一层所以没有parent tmp_tree["git_url"][git_url] = { "expand": True, "title": git_url, "parent": "GitLab", "children": [], "data_type": 'git_url' } tmp_tree["group_name"][git_url + "|" + group_name] = { "expand": False, "title": group_name, "parent": git_url, "git_url": git_url, "children": [], "data_type": 'group_name' } for tmp_group in tmp_tree["group_name"].values(): tmp_tree["git_url"][tmp_group["parent"]]["children"].append( tmp_group) for tmp_git in tmp_tree["git_url"].values(): _tree[0]["children"].append(tmp_git) return self.write(dict(code=0, msg='获取项目Tree成功', data=_tree)) else: return self.write(dict(code=-1, msg='获取项目Tree失败', data=_tree))
def get(self, *args, **kwargs): log_list = [] with DBContext('r') as session: hooks_log_info = session.query(HooksLog).order_by( -HooksLog.id).limit(200).all() for msg in hooks_log_info: data_dict = model_to_dict(msg) data_dict['create_time'] = str(data_dict['create_time']) log_list.append(data_dict) return self.write(dict(code=0, msg='获取成功', data=log_list))
def get(self, *args, **kwargs): repo_list = [] with DBContext('r') as session: repo_info = session.query(GitRepo).all() for msg in repo_info: data_dict = model_to_dict(msg) if self.is_superuser: repo_list.append(data_dict) else: if data_dict['user_info'] and self.get_current_email() in data_dict['user_info'].split(','): repo_list.append(data_dict) _tree = [{"label": "all", "children": []}] if repo_list: tmp_tree = {"git_url": {}, "group_name": {}, "project_name": {}} for t in repo_list: git_url, group_name, project_name, gid = t["git_url"], t['group_name'], t['project_name'], t['id'] ssh_url_to_repo = t['ssh_url_to_repo'] # 因为是第一层所以没有parent tmp_tree["git_url"][git_url] = {"label": git_url, "parent": "all", "children": [], "id": shortuuid.uuid()} tmp_tree["group_name"][git_url + "|" + group_name] = { "label": group_name, "parent": git_url, "children": [], "id": shortuuid.uuid() } tmp_tree["project_name"][git_url + "|" + group_name + "|" + project_name] = { "label": ssh_url_to_repo, "parent": git_url + "|" + group_name, "id": gid } for tmp_repo in tmp_tree["project_name"].values(): tmp_tree["group_name"][tmp_repo["parent"]]["children"].append(tmp_repo) for tmp_group in tmp_tree["group_name"].values(): tmp_tree["git_url"][tmp_group["parent"]]["children"].append(tmp_group) for tmp_git in tmp_tree["git_url"].values(): _tree[0]["children"].append(tmp_git) return self.write(dict(code=0, msg='获取项目Tree成功', data=_tree[0]["children"])) else: return self.write(dict(code=-2, msg='获取项目Tree失败', data=_tree[0]["children"]))
def post(self, *args, **kwargs): git_list = [] with DBContext('r') as session: git_conf = session.query(GitConf).all() for msg in git_conf: data_dict = model_to_dict(msg) git_list.append(data_dict) try: # 超过60s 返回Timeout res = yield gen.with_timeout(datetime.timedelta(seconds=60), self.sync_git_info(git_list), quiet_exceptions=gen.TimeoutError) return self.write(dict(code=0, msg=res)) except gen.TimeoutError: return self.write(dict(code=-1, msg='TimeOut'))
def get(self, *args, **kwargs): git_url = self.get_argument('git_url', default=None, strip=True) group_name = self.get_argument('group_name', default=None, strip=True) search_val = self.get_argument('search_val', default=None, strip=True) repo_list = [] if search_val: with DBContext('r') as session: git_repo_info = session.query(GitRepo).filter( or_( GitRepo.group_name.like('%{}%'.format(search_val)), GitRepo.project_name.like('%{}%'.format(search_val)), GitRepo.relative_path.like('%{}%'.format(search_val)), GitRepo.ssh_url_to_repo.like( '%{}%'.format(search_val)), GitRepo.git_url.like( '%{}%'.format(search_val)))).order_by( GitRepo.git_url, GitRepo.group_name).all() elif git_url and group_name: with DBContext('r') as session: git_repo_info = session.query(GitRepo).filter( GitRepo.git_url == git_url, GitRepo.group_name == group_name).order_by( GitRepo.git_url, GitRepo.group_name).all() else: with DBContext('r') as session: git_repo_info = session.query(GitRepo).order_by( GitRepo.git_url, GitRepo.group_name).all() for msg in git_repo_info: data_dict = model_to_dict(msg) data_dict['user_info'] = data_dict['user_info'].split(',') hook_list = [] if data_dict['git_hooks']: git_hooks = json.loads(data_dict['git_hooks']) for k, v in git_hooks.items(): v['tag'] = k hook_list.append(v) data_dict['hook_list'] = hook_list repo_list.append(data_dict) return self.write(dict(code=0, msg='获取成功', data=repo_list))