##// END OF EJS Templates
vcs: Use a thread scoped cache invalidation context to cache repository objects....
vcs: Use a thread scoped cache invalidation context to cache repository objects. Without this change the cache is on a process scope. If running with multiple threads this leads to sharing the cached object between threads. This will cause exceptions if multiple threads are trying to access the same curl object. Even worse it allows multiple threads to operate on the same repository object concurrently.

File last commit:

r514:b4f9553f default
r614:cbe55781 default
Show More
pullrequest.py
131 lines | 4.2 KiB | text/x-python | PythonLexer
dan
events: add pull request events
r378 # Copyright (C) 2016-2016 RhodeCode GmbH
#
# 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/
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
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(
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,
dan
events: add an event for pull request comments with review status
r443 'url': PullRequestModel().get_url(self.pullrequest),
'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):
from rhodecode.model.comment import ChangesetCommentsModel
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,
'url': ChangesetCommentsModel().get_url(self.comment)
}
})
return data