def post(self, *args, **kwargs): """Create a new project by providing the details about the project. If the validation and saving are successful, it response with the project data and 201 status. Otherwise, it gives 4XX status and error messages. """ name = self.get_argument('name', None) description = self.get_argument('description', None) url = self.get_argument('url', None) leader = self.get_argument('leader', None) members = self.get_argument('members', None) teams = self.get_argument('teams', None) repos = self.get_argument('repos', None) tags = self.get_argument('tags', None) if 'user' not in kwargs: self.raise401() try: # todo - better arguments handler url = url.strip() url = url if url else None members_list = [] repos_list = [] teams_list = [] project_leader = kwargs['user'] if leader: project_leader = User.objects(username=leader).first() if repos: for repo in parse_listed_strs(repos): r = Repo.objects(name=repo).first() if not r: continue repos_list.append(r) if members: for member in parse_listed_strs(members): u = User.objects(username=member).first() if not u or u == project_leader: continue members_list.append(u) if teams: for team in parse_listed_strs(teams): t = Team.objects(name=team).first() if not t: continue teams_list.append(t) members_list.append(project_leader) tags_list = parse_listed_strs(tags) project = Project( name=name, description=description, url=url, repos=repos_list, leader=project_leader, members=members_list, teams=teams_list, tags=tags_list) project.save() project_data = document_to_json(project, filter_set=_FILTER) self.set_status(201) self.write(project_data) except Exception as e: reason = e.message self.raise400(reason=reason)
def put(self, *args, **kwargs): if 'user' not in kwargs or not args: self.raise401() update = {} user = kwargs['user'] task_id = parse_path(args[0])[0] task = Task.objects(id=task_id).first() project = task.project if not project or user not in project.members: self.raise401() category = self.get_argument('category', None) description = self.get_argument('description', None) project_name = self.get_argument('project', None) status = self.get_argument('status', None) priority = self.get_argument('priority', None) assign_to = self.get_argument('assign_to', None) due = self.get_argument('due', None) tags = self.get_argument('tags', None) if category: update['set__category'] = category if description: update['set__description'] = description if project_name: project = Project.objects(name=project_name).first() if not project or user not in project.members: self.raise401() update['set__project'] = project if assign_to: assign_to_list = [] for member in parse_listed_strs(assign_to): u = User.objects(username=member).first() if not u: continue assign_to_list.append(u) update['set__assign_to'] = assign_to_list if status: update['set__status'] = status if priority: update['set__priority'] = priority if due: try: due_day = int(due) except ValueError: due_day = 0 due_time = get_utc_time(due_day * 24 * 3600) update['set__due'] = due_time if tags: tags_list = parse_listed_strs(tags) update['set__tags'] = tags_list try: Task.objects(id=task_id).update_one(**update) task = Task.objects(id=task_id).first() task_data = document_to_json(task, filter_set=_FILTER) self.set_status(201) self.write(task_data) except Exception as e: reason = e.message self.raise400(reason=reason)
def put(self, *args, **kwargs): if 'user' not in kwargs or not args: self.raise401() name = self.get_argument('name', None) description = self.get_argument('description', None) path = self.get_argument('path', None) scm = self.get_argument('scm', None) team = self.get_argument('team', None) tags = self.get_argument('tags', None) user = kwargs['user'] update = {} if name: update['set__name'] = name if description: update['set__description'] = description if path: update['set__path'] = path if scm: update['set__scm'] = scm if team: update['set__team'] = team if tags: tags_list = parse_listed_strs(tags) update['set__tags'] = tags_list try: path = parse_path(args[0]) Repo.objects(owner=user, name=path[0]).update_one(**update) repo = Repo.objects(owner=user, name=name or path[0]).first() repo_data = document_to_json(repo, filter_set=_FILTER) self.set_status(201) self.write(repo_data) except Exception as e: reason = e.message self.raise400(reason=reason)
def post(self, *args, **kwargs): client_id = self.get_argument('client_id', None) user_id = self.get_argument('user_id', None) scopes = self.get_argument('scopes', []) try: base_uri, uri = self.get_uri() scopes_list = parse_listed_strs(scopes) client = Client.objects(client_id=client_id).first() user = User.objects(id=ObjectId(user_id)).first() cred = Credential.objects( client_id=client_id, user_id=user_id).first() if not client or not user or not cred: raise Exception('Authorization failed') credentials = { 'client_id': cred.client_id, 'response_type': cred.response_type, 'request': binary_to_request(cred.request), 'redirect_uri': cred.redirect_uri, 'state': cred.state, 'user': user, } content = self.endpoint.create_authorization_response( uri, 'GET', {}, {}, scopes_list, credentials) self.redirect(content[0]['Location']) except Exception as e: self.write(self.get_response(error=e))
def put(self, *args, **kwargs): if 'user' not in kwargs or not args: self.raise401() user = kwargs['user'] path = parse_path(args[0]) team = Team.objects(name=path[0]).first() if not team or user not in team.members: self.raise401() team_leader = team.leader update = {} name = self.get_argument('name', None) description = self.get_argument('description', None) url = self.get_argument('url', None) leader = self.get_argument('leader', None) members = self.get_argument('members', None) tags = self.get_argument('tags', None) if name: update['set__name'] = name if description: update['set__description'] = description if url: update['set__url'] = url if leader: team_leader = User.objects(username=leader).first() update['set__leader'] = team_leader if members: members_list = [] for member in parse_listed_strs(members): u = User.objects(username=member).first() if not u or u == team_leader: continue members_list.append(u) members_list.append(team_leader) update['set__members'] = members_list if tags: tags_list = parse_listed_strs(tags) update['set__tags'] = tags_list try: Team.objects(name=path[0]).update_one(**update) team = Team.objects(name=name or path[0]).first() team_data = document_to_json(team, filter_set=_FILTER) self.set_status(201) self.write(team_data) except Exception as e: reason = e.message self.raise400(reason=reason)
def post(self, *args, **kwargs): if 'user' not in kwargs or args: self.raise401() category = self.get_argument('category', None) description = self.get_argument('description', None) project_name = self.get_argument('project', None) status = self.get_argument('status', None) priority = self.get_argument('priority', None) assign_to = self.get_argument('assign_to', None) due = self.get_argument('due', None) # days or date tags = self.get_argument('tags', None) user = kwargs['user'] project = Project.objects(name=project_name).first() if not project or user not in project.members: self.raise401() try: due_day = int(due) except ValueError: due_day = 0 try: assign_to_list = [] if assign_to: for member in parse_listed_strs(assign_to): u = User.objects(username=member).first() if not u: continue assign_to_list.append(u) due_time = get_utc_time(due_day * 24 * 3600) tags_list = parse_listed_strs(tags) task = Task(category=category, description=description, project=project, status=status, priority=priority, assign_to=assign_to_list, due=due_time, tags=tags_list) task.save() task_data = document_to_json(task, filter_set=_FILTER) self.set_status(201) self.write(task_data) except Exception as e: reason = e.message self.raise400(reason=reason)
def post(self, *args, **kwargs): if 'user' not in kwargs or args: self.raise401() category = self.get_argument('category', None) description = self.get_argument('description', None) project_name = self.get_argument('project', None) status = self.get_argument('status', None) priority = self.get_argument('priority', None) assign_to = self.get_argument('assign_to', None) due = self.get_argument('due', None) # days or date tags = self.get_argument('tags', None) user = kwargs['user'] project = Project.objects(name=project_name).first() if not project or user not in project.members: self.raise401() try: due_day = int(due) except ValueError: due_day = 0 try: assign_to_list = [] if assign_to: for member in parse_listed_strs(assign_to): u = User.objects(username=member).first() if not u: continue assign_to_list.append(u) due_time = get_utc_time(due_day * 24 * 3600) tags_list = parse_listed_strs(tags) task = Task( category=category, description=description, project=project, status=status, priority=priority, assign_to=assign_to_list, due=due_time, tags=tags_list) task.save() task_data = document_to_json(task, filter_set=_FILTER) self.set_status(201) self.write(task_data) except Exception as e: reason = e.message self.raise400(reason=reason)
def post(self, *args, **kwargs): if 'user' not in kwargs or args: self.raise401() name = self.get_argument('name', None) description = self.get_argument('description', None) url = self.get_argument('url', None) leader = self.get_argument('leader', None) members = self.get_argument('members', None) tags = self.get_argument('tags', None) try: # todo - better arguments handler url = url.strip() url = url if url else None members_list = [] team_leader = kwargs['user'] if leader: team_leader = User.objects(username=leader).first() if members: for member in parse_listed_strs(members): u = User.objects(username=member).first() if not u or u == team_leader: continue members_list.append(u) members_list.append(team_leader) tags_list = parse_listed_strs(tags) team = Team( name=name, description=description, url=url, leader=team_leader, members=members_list, tags=tags_list) team.save() team_data = document_to_json(team, filter_set=_FILTER) self.set_status(201) self.write(team_data) except Exception as e: reason = e.message self.raise400(reason=reason)
def post(self, *args, **kwargs): if 'user' not in kwargs or args: self.raise401() grant_type = self.get_argument('grant_type', None) response_type = self.get_argument('response_type', None) redirect_uris = self.get_argument('redirect_uris', None) app_name = self.get_argument('app_name', None) description = self.get_argument('description', None) website = self.get_argument('website', None) try: user = kwargs['user'] client_id = create_id() client_secret = create_secret() grant_type = grant_type or 'authorization_code' response_type = response_type or 'code' # todo scopes default_scopes = ['tasks', 'projects', 'repos', 'users', 'teams'] scopes = default_scopes redirect_uris = parse_listed_strs(redirect_uris) # todo default default_redirect_uri = redirect_uris[0] if redirect_uris else '' client = Client( client_id=client_id, client_secret=client_secret, user=user, grant_type=grant_type, response_type=response_type, scopes=scopes, default_scopes=default_scopes, redirect_uris=redirect_uris, default_redirect_uri=default_redirect_uri, website=website, app_name=app_name, description=description) client.save() client_data = document_to_json(client, filter_set=_FILTER) self.set_status(201) self.write(client_data) except Exception as e: reason = e.message self.raise400(reason=reason)
def post(self, *args, **kwargs): name = self.get_argument('name', None) description = self.get_argument('description', None) path = self.get_argument('path', None) # verify scm = self.get_argument('scm', None) team = self.get_argument('team', None) # just for test tags = self.get_argument('tags', None) if 'user' not in kwargs: self.raise401() user = kwargs['user'] tags_list = parse_listed_strs(tags) try: name = name.strip() name = name if name else None repo = Repo(name=name, description=description, path=path, scm=scm, owner=user, team=team, tags=tags_list) repo.save() repo_data = document_to_json(repo, filter_set=_FILTER) self.set_status(201) self.write(repo_data) except Exception as e: reason = e.message self.raise400(reason=reason)
def put(self, *args, **kwargs): """Update a project by its name and other information. """ if 'user' not in kwargs or not args: self.raise401() name = self.get_argument('name', None) description = self.get_argument('description', None) url = self.get_argument('url', None) leader = self.get_argument('leader', None) members = self.get_argument('members', None) teams = self.get_argument('teams', None) repos = self.get_argument('repos', None) tags = self.get_argument('tags', None) user = kwargs['user'] path = parse_path(args[0]) project = Project.objects(name=path[0]).first() if not project or user not in project.members: self.raise401() project_leader = project.leader update = {} if name: update['set__name'] = name if description: update['set__description'] = description if url: update['set__url'] = url if leader: project_leader = User.objects(username=leader).first() update['set__leader'] = project_leader if members: members_list = [] for member in parse_listed_strs(members): u = User.objects(username=member).first() if not u or u == project_leader: continue members_list.append(u) members_list.append(project_leader) update['set__members'] = members_list if teams: teams_list = [] for team in parse_listed_strs(teams): t = Team.objects(name=team).first() if not t: continue teams_list.append(t) update['set__teams'] = teams_list if repos: repos_list = [] for repo in parse_listed_strs(repos): r = Repo.objects(name=repo).first() if not r: continue repos_list.append(r) update['set__repos'] = repos_list if tags: tags_list = parse_listed_strs(tags) update['set__tags'] = tags_list try: Project.objects(name=path[0]).update_one(**update) project = Repo.objects(name=name or path[0]).first() project_data = document_to_json(project, filter_set=_FILTER) self.set_status(201) self.write(project_data) except Exception as e: reason = e.message self.raise400(reason=reason)
def post(self, *args, **kwargs): """Create a new project by providing the details about the project. If the validation and saving are successful, it response with the project data and 201 status. Otherwise, it gives 4XX status and error messages. """ name = self.get_argument('name', None) description = self.get_argument('description', None) url = self.get_argument('url', None) leader = self.get_argument('leader', None) members = self.get_argument('members', None) teams = self.get_argument('teams', None) repos = self.get_argument('repos', None) tags = self.get_argument('tags', None) if 'user' not in kwargs: self.raise401() try: # todo - better arguments handler url = url.strip() url = url if url else None members_list = [] repos_list = [] teams_list = [] project_leader = kwargs['user'] if leader: project_leader = User.objects(username=leader).first() if repos: for repo in parse_listed_strs(repos): r = Repo.objects(name=repo).first() if not r: continue repos_list.append(r) if members: for member in parse_listed_strs(members): u = User.objects(username=member).first() if not u or u == project_leader: continue members_list.append(u) if teams: for team in parse_listed_strs(teams): t = Team.objects(name=team).first() if not t: continue teams_list.append(t) members_list.append(project_leader) tags_list = parse_listed_strs(tags) project = Project(name=name, description=description, url=url, repos=repos_list, leader=project_leader, members=members_list, teams=teams_list, tags=tags_list) project.save() project_data = document_to_json(project, filter_set=_FILTER) self.set_status(201) self.write(project_data) except Exception as e: reason = e.message self.raise400(reason=reason)