##// END OF EJS Templates
diffs: use whole chunk diff to calculate if it's oversized or not....
diffs: use whole chunk diff to calculate if it's oversized or not. - This fixes an issue if a file is added that has very large number of small lines. In this case the time to detect if the diff should be limited was very very long and CPU intensive.

File last commit:

r1959:b0de121b default
r2070:7939c6bf default
Show More
pullrequest.py
144 lines | 4.7 KiB | text/x-python | PythonLexer
license: updated copyright year to 2017
r1271 # Copyright (C) 2016-2017 RhodeCode GmbH
dan
events: add pull request events
r378 #
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3
# (only), as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This program is dual-licensed. If you wish to learn more about the
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/
events: make the System URL extraction safer....
r1424 import logging
dan
events: add serialization .to_dict() to events based on marshmallow
r379
dan
integrations: add integration support...
r411 from rhodecode.translation import lazy_ugettext
dan
events: change target to source repo for pull request events...
r514 from rhodecode.events.repo import (
RepoEvent, _commits_as_dict, _issues_as_dict)
dan
events: add pull request events
r378
events: make the System URL extraction safer....
r1424 log = logging.getLogger(__name__)
dan
events: add pull request events
r378
class PullRequestEvent(RepoEvent):
"""
dan
events: add serialization .to_dict() to events based on marshmallow
r379 Base class for pull request events.
dan
events: add pull request events
r378
dan
events: add serialization .to_dict() to events based on marshmallow
r379 :param pullrequest: a :class:`PullRequest` instance
dan
events: add pull request events
r378 """
dan
events: add serialization .to_dict() to events based on marshmallow
r379
dan
events: add pull request events
r378 def __init__(self, pullrequest):
super(PullRequestEvent, self).__init__(pullrequest.target_repo)
self.pullrequest = pullrequest
dan
integrations: add integration support...
r411 def as_dict(self):
from rhodecode.model.pull_request import PullRequestModel
data = super(PullRequestEvent, self).as_dict()
dan
events: change target to source repo for pull request events...
r514 commits = _commits_as_dict(
events: re-organizate events handling....
r1789 self,
dan
events: change target to source repo for pull request events...
r514 commit_ids=self.pullrequest.revisions,
repos=[self.pullrequest.source_repo]
)
issues = _issues_as_dict(commits)
dan
integrations: add integration support...
r411
data.update({
'pullrequest': {
'title': self.pullrequest.title,
'issues': issues,
'pull_request_id': self.pullrequest.pull_request_id,
events: ported pylons part to pyramid....
r1959 'url': PullRequestModel().get_url(
self.pullrequest, request=self.request),
events: expose permalink urls for different set of object....
r1788 'permalink_url': PullRequestModel().get_url(
events: ported pylons part to pyramid....
r1959 self.pullrequest, request=self.request, permalink=True),
dan
events: add an event for pull request comments with review status
r443 'status': self.pullrequest.calculated_review_status(),
dan
events: change target to source repo for pull request events...
r514 'commits': commits,
dan
integrations: add integration support...
r411 }
})
return data
dan
events: add pull request events
r378
class PullRequestCreateEvent(PullRequestEvent):
"""
An instance of this class is emitted as an :term:`event` after a pull
request is created.
"""
name = 'pullrequest-create'
dan
integrations: add integration support...
r411 display_name = lazy_ugettext('pullrequest created')
dan
events: add pull request events
r378
class PullRequestCloseEvent(PullRequestEvent):
"""
An instance of this class is emitted as an :term:`event` after a pull
request is closed.
"""
name = 'pullrequest-close'
dan
integrations: add integration support...
r411 display_name = lazy_ugettext('pullrequest closed')
dan
events: add pull request events
r378
class PullRequestUpdateEvent(PullRequestEvent):
"""
An instance of this class is emitted as an :term:`event` after a pull
dan
events: add an event for pull request comments with review status
r443 request's commits have been updated.
dan
events: add pull request events
r378 """
name = 'pullrequest-update'
dan
events: add an event for pull request comments with review status
r443 display_name = lazy_ugettext('pullrequest commits updated')
class PullRequestReviewEvent(PullRequestEvent):
"""
An instance of this class is emitted as an :term:`event` after a pull
request review has changed.
"""
name = 'pullrequest-review'
display_name = lazy_ugettext('pullrequest review changed')
dan
events: add pull request events
r378
class PullRequestMergeEvent(PullRequestEvent):
"""
An instance of this class is emitted as an :term:`event` after a pull
request is merged.
"""
name = 'pullrequest-merge'
dan
integrations: add integration support...
r411 display_name = lazy_ugettext('pullrequest merged')
dan
events: add pull request events
r378
dan
events: add an event for pull request comments with review status
r443 class PullRequestCommentEvent(PullRequestEvent):
dan
events: add pull request events
r378 """
An instance of this class is emitted as an :term:`event` after a pull
dan
events: add an event for pull request comments with review status
r443 request comment is created.
dan
events: add pull request events
r378 """
dan
events: add an event for pull request comments with review status
r443 name = 'pullrequest-comment'
display_name = lazy_ugettext('pullrequest commented')
def __init__(self, pullrequest, comment):
super(PullRequestCommentEvent, self).__init__(pullrequest)
self.comment = comment
def as_dict(self):
comments: renamed ChangesetCommentsModel to CommentsModel to reflect what it actually does....
r1323 from rhodecode.model.comment import CommentsModel
dan
events: add an event for pull request comments with review status
r443 data = super(PullRequestCommentEvent, self).as_dict()
dan
events: add pull request events
r378
dan
events: add an event for pull request comments with review status
r443 status = None
if self.comment.status_change:
status = self.comment.status_change[0].status
dan
events: add pull request events
r378
dan
events: add an event for pull request comments with review status
r443 data.update({
'comment': {
'status': status,
'text': self.comment.text,
slack: updated slack integration to use the attachements for nicer formatting.
r1467 'type': self.comment.comment_type,
'file': self.comment.f_path,
'line': self.comment.line_no,
events: ported pylons part to pyramid....
r1959 'url': CommentsModel().get_url(
self.comment, request=self.request),
events: expose permalink urls for different set of object....
r1788 'permalink_url': CommentsModel().get_url(
events: ported pylons part to pyramid....
r1959 self.comment, request=self.request, permalink=True),
dan
events: add an event for pull request comments with review status
r443 }
})
return data