##// END OF EJS Templates
fix(caching): fixed problems with Cache query for users....
fix(caching): fixed problems with Cache query for users. The old way of querying caused the user get query to be always cached, and returning old results even in 2fa forms. The new limited query doesn't cache the user object resolving issues

File last commit:

r5137:f3cd5ebe default
r5365:ae8a165b default
Show More
pullrequest.py
206 lines | 7.4 KiB | text/x-python | PythonLexer
copyrights: updated for 2023
r5088 # Copyright (C) 2016-2023 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
comments: added new events for comment editing to handle them in integrations.
r4444 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 """
core: revamp of automation/scheduler/artifacts EE functionality
r5137 name = 'pullrequest-event'
display_name = lazy_ugettext('pullrequest generic event')
description = lazy_ugettext('All events within a context of a pull request')
dan
events: add serialization .to_dict() to events based on marshmallow
r379
dan
events: add pull request events
r378 def __init__(self, pullrequest):
modernize: updates for python3
r5095 super().__init__(pullrequest.target_repo)
dan
events: add pull request events
r378 self.pullrequest = pullrequest
dan
integrations: add integration support...
r411 def as_dict(self):
pull-request-events: expose pr title and uid for commits inside....
r2588 from rhodecode.lib.utils2 import md5_safe
dan
integrations: add integration support...
r411 from rhodecode.model.pull_request import PullRequestModel
modernize: updates for python3
r5095 data = super().as_dict()
dan
integrations: add integration support...
r411
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)
pull-request-events: expose pr title and uid for commits inside....
r2588 # calculate hashes of all commits for unique identifier of commits
# inside that pull request
commits_hash = md5_safe(':'.join(x.get('raw_id', '') for x in 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),
events: expose shadow repo build url.
r2582 'shadow_url': PullRequestModel().get_shadow_clone_url(
self.pullrequest, request=self.request),
dan
events: add an event for pull request comments with review status
r443 'status': self.pullrequest.calculated_review_status(),
pull-request-events: expose pr title and uid for commits inside....
r2588 'commits_uid': commits_hash,
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')
events: added support for pull-request-comment and commit-comment events....
r4314 description = lazy_ugettext('Event triggered after pull request was 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')
events: added support for pull-request-comment and commit-comment events....
r4314 description = lazy_ugettext('Event triggered after pull request was 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')
events: added support for pull-request-comment and commit-comment events....
r4314 description = lazy_ugettext('Event triggered after pull requests was updated')
dan
events: add an event for pull request comments with review status
r443
class PullRequestReviewEvent(PullRequestEvent):
"""
An instance of this class is emitted as an :term:`event` after a pull
events: trigger 'review_status_change' when reviewers are updated....
r3415 request review has changed. A status defines new status of review.
dan
events: add an event for pull request comments with review status
r443 """
name = 'pullrequest-review'
display_name = lazy_ugettext('pullrequest review changed')
events: added support for pull-request-comment and commit-comment events....
r4314 description = lazy_ugettext('Event triggered after a review status of a '
'pull requests has changed to other.')
dan
events: add pull request events
r378
events: trigger 'review_status_change' when reviewers are updated....
r3415 def __init__(self, pullrequest, status):
modernize: updates for python3
r5095 super().__init__(pullrequest)
events: trigger 'review_status_change' when reviewers are updated....
r3415 self.status = status
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')
events: added support for pull-request-comment and commit-comment events....
r4314 description = lazy_ugettext('Event triggered after a successful merge operation '
'was executed on a pull request')
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')
events: added support for pull-request-comment and commit-comment events....
r4314 description = lazy_ugettext('Event triggered after a comment was made on a code '
'in the pull request')
dan
events: add an event for pull request comments with review status
r443
def __init__(self, pullrequest, comment):
modernize: updates for python3
r5095 super().__init__(pullrequest)
dan
events: add an event for pull request comments with review status
r443 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
modernize: updates for python3
r5095 data = super().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:
sidebar: expose status indicator for general comments which changed review status.
r4490 status = self.comment.review_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,
comments: added new events for comment editing to handle them in integrations.
r4444 'version': self.comment.last_version,
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
comments: added new events for comment editing to handle them in integrations.
r4444
class PullRequestCommentEditEvent(PullRequestEvent):
"""
An instance of this class is emitted as an :term:`event` after a pull
request comment is edited.
"""
name = 'pullrequest-comment-edit'
display_name = lazy_ugettext('pullrequest comment edited')
description = lazy_ugettext('Event triggered after a comment was edited on a code '
'in the pull request')
def __init__(self, pullrequest, comment):
modernize: updates for python3
r5095 super().__init__(pullrequest)
comments: added new events for comment editing to handle them in integrations.
r4444 self.comment = comment
def as_dict(self):
from rhodecode.model.comment import CommentsModel
modernize: updates for python3
r5095 data = super().as_dict()
comments: added new events for comment editing to handle them in integrations.
r4444
status = None
if self.comment.status_change:
sidebar: expose status indicator for general comments which changed review status.
r4490 status = self.comment.review_status
comments: added new events for comment editing to handle them in integrations.
r4444
data.update({
'comment': {
'status': status,
'text': self.comment.text,
'type': self.comment.comment_type,
'file': self.comment.f_path,
'line': self.comment.line_no,
'version': self.comment.last_version,
'url': CommentsModel().get_url(
self.comment, request=self.request),
'permalink_url': CommentsModel().get_url(
self.comment, request=self.request, permalink=True),
}
})
return data