Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions weblate/vcs/git.py
Original file line number Diff line number Diff line change
Expand Up @@ -962,7 +962,7 @@
self, repo: str | None = None
) -> tuple[str | None, str | None, str | None, str, str, str]:
if repo is None:
repo = self.component.push or self.component.repo

Check failure on line 965 in weblate/vcs/git.py

View workflow job for this annotation

GitHub Actions / mypy

Item "None" of "Component | None" has no attribute "repo"

Check failure on line 965 in weblate/vcs/git.py

View workflow job for this annotation

GitHub Actions / mypy

Item "None" of "Component | None" has no attribute "push"
parsed = urlparse(repo)
host = parsed.hostname
scheme: str | None = parsed.scheme
Expand Down Expand Up @@ -1199,7 +1199,7 @@

def get_merge_message(self):
lines = render_template(
self.component.pull_message.strip(), component=self.component

Check failure on line 1202 in weblate/vcs/git.py

View workflow job for this annotation

GitHub Actions / mypy

Item "None" of "Component | None" has no attribute "pull_message"
).splitlines()
return lines[0], "\n".join(lines[1:]).strip()

Expand Down Expand Up @@ -1429,7 +1429,7 @@
self, repo: str | None = None
) -> tuple[str | None, str | None, str | None, str, str, str]:
if repo is None:
repo = self.component.repo

Check failure on line 1432 in weblate/vcs/git.py

View workflow job for this annotation

GitHub Actions / mypy

Item "None" of "Component | None" has no attribute "repo"

scheme_regex = r"^[a-z]+:\/\/.*" # matches for example ssh://* and https://*

Expand Down Expand Up @@ -2409,15 +2409,20 @@

def get_default_reviewers_uuids(self, credentials: GitCredentials) -> list[str]:
"""Get a list of uuids of default reviewers for a repository."""
list_reviewers_url = f"{credentials['url']}/default-reviewers"
list_reviewers_url = f"{credentials['url']}/effective-default-reviewers"
try:
reviewers = self.build_full_paginated_result(
credentials, list_reviewers_url, "Reviewers listing error: "
)
except RepositoryError:
return []

return [reviewer["uuid"] for reviewer in reviewers]
result = []
for reviewer in reviewers:
reviewer_uuid: str | None = reviewer.get("user", {}).get("uuid")
if reviewer_uuid and reviewer_uuid not in result:
result.append(reviewer_uuid)
return result

def build_full_paginated_result(
self,
Expand Down
31 changes: 20 additions & 11 deletions weblate/vcs/tests/test_vcs.py
Original file line number Diff line number Diff line change
Expand Up @@ -717,7 +717,7 @@
self._mock_push_to_fork.return_value = ""

def tearDown(self) -> None:
self._mock_push_to_fork.stop()

Check failure on line 720 in weblate/vcs/tests/test_vcs.py

View workflow job for this annotation

GitHub Actions / mypy

Item "None" of "MagicMock | AsyncMock | None" has no attribute "stop"
super().tearDown()

def mock_responses(self, pr_response, pr_status=200) -> None:
Expand Down Expand Up @@ -2372,13 +2372,16 @@

responses.add(
responses.GET,
"https://api.bitbucket.org/2.0/repositories/WeblateOrg/test/default-reviewers",
"https://api.bitbucket.org/2.0/repositories/WeblateOrg/test/effective-default-reviewers",
json={
"values": [
{
"type": "default_reviewer",
"display_name": "reviewer_1",
"uuid": "reviewer-uuid",
"reviewer_type": "project",
"user": {
"display_name": "reviewer_1",
"uuid": "reviewer-uuid",
},
}
],
"pagelen": 10,
Expand Down Expand Up @@ -2447,7 +2450,7 @@

responses.replace(
responses.GET,
"https://api.bitbucket.org/2.0/repositories/WeblateOrg/test/default-reviewers",
"https://api.bitbucket.org/2.0/repositories/WeblateOrg/test/effective-default-reviewers",
json={
"type": "error",
"error": {
Expand All @@ -2470,31 +2473,37 @@

responses.replace(
responses.GET,
"https://api.bitbucket.org/2.0/repositories/WeblateOrg/test/default-reviewers",
"https://api.bitbucket.org/2.0/repositories/WeblateOrg/test/effective-default-reviewers",
json={
"values": [
{
"type": "default_reviewer",
"display_name": "reviewer_1",
"uuid": "reviewer-uuid-1",
"reviewer_type": "project",
"user": {
"display_name": "reviewer_1",
"uuid": "reviewer-uuid-1",
},
}
],
"pagelen": 1,
"page": 1,
"next": "https://api.bitbucket.org/2.0/repositories/WeblateOrg/test/default-reviewers?page=2",
"next": "https://api.bitbucket.org/2.0/repositories/WeblateOrg/test/effective-default-reviewers?page=2",
},
status=200,
)

responses.add(
responses.GET,
"https://api.bitbucket.org/2.0/repositories/WeblateOrg/test/default-reviewers?page=2",
"https://api.bitbucket.org/2.0/repositories/WeblateOrg/test/effective-default-reviewers?page=2",
json={
"values": [
{
"type": "default_reviewer",
"display_name": "reviewer_2",
"uuid": "reviewer-uuid-2",
"reviewer_type": "repository",
"user": {
"display_name": "reviewer_2",
"uuid": "reviewer-uuid-2",
},
}
],
"pagelen": 1,
Expand Down
Loading