Exemple #1
0
    def tag_as_public(self):
        """Set the core actions on new opened issues.

        When a new issue is opened, we set a couple of things.

        - Browser label
        - Priority label
        - Issue milestone
        - Any "extra" labels, set from GET params

        Then Send a GitHub PATCH to set labels and milestone for the issue.

        PATCH /repos/:owner/:repo/issues/:number
        {
            "milestone": 2,
            "labels": ['Label1', 'Label2']
        }
        """
        # Grabs the labels already set so they will not be erased
        # Gets the labels from the body
        labels = get_issue_labels(self.body)
        labels.extend(self.original_labels)
        self.milestone = app.config['STATUSES']['needstriage']['id']
        # Preparing the proxy request to the public repo
        path = f'repos/{PUBLIC_REPO}/{self.number}'
        payload_request = {'labels': labels, 'milestone': self.milestone}
        make_request('patch', path, payload_request)
Exemple #2
0
    def prepare_accepted_issue(self, milestone=None):
        """Create the payload for the accepted moderated issue.

        When the issue has been moderated as accepted,
        we need to change a couple of things in the public space

        - Title
        - Body
        - Any labels from the private issue
        """
        # Gets the labels from the body
        labels = get_issue_labels(self.body)
        labels.extend(self.original_labels)
        # Let's remove action-needsmoderation in case it's here
        if 'action-needsmoderation' in labels:
            labels.remove('action-needsmoderation')
        # Prepares the payload
        payload_request = {
            'labels': labels,
            'title': self.title,
            'body': self.body
        }
        if milestone:
            milestone_id = app.config['STATUSES'][f'{milestone}']['id']
            payload_request['milestone'] = milestone_id
            payload_request['state'] = 'closed'
        return payload_request
Exemple #3
0
 def test_get_issue_labels(self):
     """Extract list of labels from an issue body."""
     labels_tests = [(self.issue_body,
                      ['browser-firefox', 'type-media', 'type-stylo']),
                     (self.issue_body2, ['browser-fixme', 'type-foobar']),
                     (self.issue_body3, ['browser-firefox-tablet'])]
     for issue_body, expected in labels_tests:
         actual = helpers.get_issue_labels(issue_body)
         self.assertEqual(sorted(expected), sorted(actual))
 def test_get_issue_labels(self):
     """Extract list of labels from an issue body."""
     labels_tests = [
         (self.issue_body, ['browser-firefox', 'type-media', 'type-stylo',
                            'engine-gecko']),
         (self.issue_body2, ['browser-fixme', 'type-foobar']),
         (self.issue_body3, ['browser-firefox-tablet', 'engine-gecko']),
         (self.issue_body5, ['browser-firefox-reality', 'engine-gecko',
                             'type-media']),
         (self.issue_body6, ['browser-safari']),
     ]
     for issue_body, expected in labels_tests:
         actual = helpers.get_issue_labels(issue_body)
         self.assertEqual(sorted(expected), sorted(actual))
 def test_get_issue_labels(self):
     """Extract list of labels from an issue body."""
     labels_tests = [
         (self.issue_body, ['browser-firefox', 'type-media', 'type-stylo',
                            'engine-gecko']),
         (self.issue_body2, ['browser-fixme', 'type-foobar']),
         (self.issue_body3, ['browser-firefox-tablet', 'engine-gecko']),
         (self.issue_body5, ['browser-firefox-reality', 'engine-gecko',
                             'type-media']),
         (self.issue_body6, ['browser-safari']),
         (self.issue_body8, ['browser-firefox-ios', 'os-ios']),
     ]
     for issue_body, expected in labels_tests:
         actual = helpers.get_issue_labels(issue_body)
         self.assertEqual(sorted(expected), sorted(actual))