Esempio n. 1
0
    def create_issue(self):
        """
        Creates a new issue in bitbucket issue tracker from report group
        """
        report = ReportGroupService.by_id(self.request.unsafe_json_body["group_id"])
        form_data = {
            "title": self.request.unsafe_json_body.get("title", "Unknown Title"),
            "content": self.request.unsafe_json_body.get("content", ""),
            "kind": "bug",
            "priority": self.request.unsafe_json_body["priority"],
            "responsible": self.request.unsafe_json_body["responsible"]["user"],
        }

        try:
            client = BitbucketIntegration.create_client(
                self.request,
                self.integration.config["user_name"],
                self.integration.config["repo_name"],
            )
            issue = client.create_issue(form_data)
        except IntegrationException as e:
            self.request.response.status_code = 503
            return {"error_messages": [str(e)]}

        comment_body = "Bitbucket issue created: %s " % issue["web_url"]
        comment = ReportComment(
            owner_id=self.request.user.id,
            report_time=report.first_timestamp,
            body=comment_body,
        )
        report.comments.append(comment)
        return True
Esempio n. 2
0
 def setup(self):
     """
     Validates and creates integration between application and bitbucket
     """
     resource = self.request.context.resource
     form = forms.IntegrationBitbucketForm(
         MultiDict(self.request.safe_json_body or {}),
         csrf_context=self.request,
         **self.integration_config
     )
     if self.request.method == "POST" and form.validate():
         integration_config = {
             "repo_name": form.repo_name.data,
             "user_name": form.user_name.data,
             "host_name": "https://bitbucket.org",
         }
         if not self.integration:
             # add new integration
             self.integration = BitbucketIntegration(modified_date=datetime.utcnow())
             self.request.session.flash("Integration added")
             resource.integrations.append(self.integration)
         else:
             self.request.session.flash("Integration updated")
         self.integration.config = integration_config
         return integration_config
     elif self.request.method == "POST":
         return HTTPUnprocessableEntity(body=form.errors_json)
     return self.integration_config
Esempio n. 3
0
    def create_issue(self):
        """
        Creates a new issue in bitbucket issue tracker from report group
        """
        report = ReportGroupService.by_id(
            self.request.unsafe_json_body['group_id'])
        form_data = {
            'title': self.request.unsafe_json_body.get('title',
                                                       'Unknown Title'),
            'content': self.request.unsafe_json_body.get('content', ''),
            'kind': 'bug',
            'priority': self.request.unsafe_json_body['priority'],
            'responsible': self.request.unsafe_json_body['responsible']['user']
        }

        try:
            client = BitbucketIntegration.create_client(
                self.request, self.integration.config['user_name'],
                self.integration.config['repo_name'])
            issue = client.create_issue(form_data)
        except IntegrationException as e:
            self.request.response.status_code = 503
            return {'error_messages': [str(e)]}

        comment_body = 'Bitbucket issue created: %s ' % issue['web_url']
        comment = ReportComment(owner_id=self.request.user.id,
                                report_time=report.first_timestamp,
                                body=comment_body)
        report.comments.append(comment)
        return True
Esempio n. 4
0
 def validate_user_name(self, field):
     try:
         request = pyramid.threadlocal.get_current_request()
         client = BitbucketIntegration.create_client(
             request, self.user_name.data, self.repo_name.data)
         client.get_assignees()
     except IntegrationException as e:
         raise wtforms.validators.ValidationError(str(e))
Esempio n. 5
0
 def get_bitbucket_info(self):
     """
     Grab information about possible priority levels and assignable users
     """
     try:
         client = BitbucketIntegration.create_client(
             self.request, self.integration.config['user_name'],
             self.integration.config['repo_name'])
     except IntegrationException as e:
         self.request.response.status_code = 503
         return {'error_messages': [str(e)]}
     assignees = client.get_assignees()
     priorities = client.get_priorities()
     return {'assignees': assignees, 'priorities': priorities}