def update_group_info_from_gitlab(group, access_token): # TODO handle better access # user = User.fetch_from_github_token(access_token) # if user is None or user.username != username: # return False # Get data from gitlab gl_repos = get_group_repos(group.id_gitlab, access_token) # Update repos and create it if not exists for repo in gl_repos: project = Project.fetch(group.username, repo['name']) if project is None: project = Project({ "name": repo['name'], "description": repo['description'], "username": group.username, "enabled": False, "gitlab_project_id": repo['id'], "url": repo['web_url'], }) project.create() # TODO get Project status (enable) from gitlab # Save project project.update() return True
def update_user_info_from_gitlab(username, access_token): user = User.fetch(username, with_password=False) # TODO handle better access # user = User.fetch_from_github_token(access_token) # if user is None or user.username != username: # return False # Get data from github gl_user = get_user(user.id_gitlab, access_token) gl_repos = get_user_repos(user.id_gitlab, access_token) gl_orgs = get_user_orgs(username, access_token) # Update user data user.email = gl_user.get('email') #user.github_url = gh_user['html_url'] user.name = gl_user['name'] user.orgs = [org['name'] for org in gl_orgs] # Update repos and create it if not exists for repo in gl_repos: project = Project.fetch(user.username, repo['name']) if project is None: project = Project({"name": repo['name'], "description": repo['description'], "username": user.username, "enabled": False, "gitlab_project_id": repo['id'], "url": repo['web_url'], }) project.create() # TODO get Project status (webhook) (enable) from gitlab # Save project project.update() # Update user orgs user._save() return True
def update_user_info_from_gitlab(username, access_token): user = User.fetch(username, with_password=False) # TODO handle better access # user = User.fetch_from_github_token(access_token) # if user is None or user.username != username: # return False # Get data from github gl_user = get_user(user.id_gitlab, access_token) gl_repos = get_user_repos(user.id_gitlab, access_token) gl_orgs = get_user_orgs(username, access_token) # Update user data user.email = gl_user.get('email') #user.github_url = gh_user['html_url'] user.name = gl_user['name'] user.orgs = [org['name'] for org in gl_orgs] # Update repos and create it if not exists for repo in gl_repos: project = Project.fetch(user.username, repo['name']) if project is None: project = Project({ "name": repo['name'], "description": repo['description'], "username": user.username, "enabled": False, "gitlab_project_id": repo['id'], "url": repo['web_url'], }) project.create() # TODO get Project status (webhook) (enable) from gitlab # Save project project.update() # Update user orgs user._save() return True
def post(self, send_build): """ launch build """ project_name = pecan.request.context['project_name'] user = User.fetch(pecan.request.context['username']) project = Project.fetch(user.username, project_name) if project is None: # The project doesn't exist # We have to create it # TODO Maybe it's better to force users to create project before # they can create builds sent_project = {"name": project_name, "username": user.username} project = Project(sent_project, sub_objects=False) if not project.create(): # Handle error return {"result": "Error creating %s project" % project_name} build = Build(send_build) build.username = user.username build.project_name = project.name build.create() carrier = Carrier( pecan.conf.rabbit_server, pecan.conf.rabbit_port, pecan.conf.rabbit_user, pecan.conf.rabbit_password, pecan.conf.rabbit_vhost, pecan.conf.rabbit_db ) carrier.declare_queue('builds.queue') # carrier.declare_builds() if not carrier.send_message(build.dumps(), 'builds.queue'): return None return {"result": {"build": int(build.id_)}}
def post(self, send_build): """ launch build """ project_name = pecan.request.context['project_name'] user = User.fetch(pecan.request.context['username']) project = Project.fetch(user.username, project_name) if project is None: # The project doesn't exist # We have to create it # TODO Maybe it's better to force users to create project before # they can create builds sent_project = {"name": project_name, "username": user.username} project = Project(sent_project, sub_objects=False) if not project.create(): # Handle error return {"result": "Error creating %s project" % project_name} build = Build(send_build) build.username = user.username build.project_name = project.name build.create() carrier = Carrier(pecan.conf.rabbit_server, pecan.conf.rabbit_port, pecan.conf.rabbit_user, pecan.conf.rabbit_password, pecan.conf.rabbit_vhost, pecan.conf.rabbit_db) carrier.declare_queue('builds.queue') # carrier.declare_builds() if not carrier.send_message(build.dumps(), 'builds.queue'): return None return {"result": {"build": int(build.id_)}}
def post(self, sent_project): """Create project""" projects = self.user.get_projects() if self.project_name not in [p.name for p in projects]: sent_project.name = self.project_name new_project = Project(sent_project.as_dict()) new_project.username = self.user.username if not new_project.create(): # Handle error return {"result": "Error creating %s with data %s" % (self.project_name, sent_project)} return {"result": "Project %s created" % self.project_name} else: return {"result": "Project %s exists" % self.project_name}
def update_group_info_from_gitlab(group, access_token): # TODO handle better access # user = User.fetch_from_github_token(access_token) # if user is None or user.username != username: # return False # Get data from gitlab gl_repos = get_group_repos(group.id_gitlab, access_token) # Update repos and create it if not exists for repo in gl_repos: project = Project.fetch(group.username, repo['name']) if project is None: project = Project({"name": repo['name'], "description": repo['description'], "username": group.username, "enabled": False, "gitlab_project_id": repo['id'], "url": repo['web_url'], }) project.create() # TODO get Project status (enable) from gitlab # Save project project.update() return True
def post(self, sent_project): """Create project""" projects = self.user.get_projects() if self.project_name not in [p.name for p in projects]: sent_project.name = self.project_name new_project = Project(sent_project.as_dict()) new_project.username = self.user.username if not new_project.create(): # Handle error return { "result": "Error creating %s with data %s" % (self.project_name, sent_project) } return {"result": "Project %s created" % self.project_name} else: return {"result": "Project %s exists" % self.project_name}