Пример #1
0
    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))
Пример #2
0
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
Пример #3
0
    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))
Пример #4
0
    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))
Пример #5
0
    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))
Пример #6
0
    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))
Пример #7
0
    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"]))
Пример #8
0
    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'))
Пример #9
0
    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))