Skip to content

Commit 66a2c83

Browse files
committed
Wire pending publisher forms to IProjectService
1 parent f1f0333 commit 66a2c83

File tree

6 files changed

+41
-20
lines changed

6 files changed

+41
-20
lines changed

warehouse/accounts/views.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1477,24 +1477,24 @@ def reauthenticate(request, _form_class=ReAuthenticateForm):
14771477
class ManageAccountPublishingViews:
14781478
def __init__(self, request):
14791479
self.request = request
1480-
self.project_factory = ProjectFactory(request)
14811480
self.metrics = self.request.find_service(IMetricsService, context=None)
1481+
self.project_service = self.request.find_service(IProjectService, context=None)
14821482
self.pending_github_publisher_form = PendingGitHubPublisherForm(
14831483
self.request.POST,
14841484
api_token=self.request.registry.settings.get("github.token"),
1485-
project_factory=self.project_factory,
1485+
project_service=self.project_service,
14861486
)
14871487
self.pending_gitlab_publisher_form = PendingGitLabPublisherForm(
14881488
self.request.POST,
1489-
project_factory=self.project_factory,
1489+
project_service=self.project_service,
14901490
)
14911491
self.pending_google_publisher_form = PendingGooglePublisherForm(
14921492
self.request.POST,
1493-
project_factory=self.project_factory,
1493+
project_service=self.project_service,
14941494
)
14951495
self.pending_activestate_publisher_form = PendingActiveStatePublisherForm(
14961496
self.request.POST,
1497-
project_factory=self.project_factory,
1497+
project_service=self.project_service,
14981498
)
14991499

15001500
@property

warehouse/oidc/forms/_core.py

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,35 @@ class PendingPublisherMixin:
3030
def validate_project_name(self, field):
3131
project_name = field.data
3232

33-
if project_name in self._project_factory:
34-
raise wtforms.validators.ValidationError(
35-
_(
36-
"This project already exists, create an ordinary Trusted "
37-
"Publisher instead"
33+
match self._project_service.check_project_name(project_name):
34+
case ProjectNameUnavailableReason.Invalid:
35+
raise wtforms.validators.ValidationError(
36+
_("Invalid project name")
3837
)
39-
)
40-
38+
case ProjectNameUnavailableReason.AlreadyExists:
39+
raise wtforms.validators.ValidationError(
40+
_(
41+
"This project already exists; create an ordinary Trusted "
42+
"Publisher instead"
43+
)
44+
)
45+
case ProjectNameUnavailableReason.Prohibited:
46+
raise wtforms.validators.ValidationError(
47+
_("This project name isn't allowed")
48+
)
49+
case ProjectNameUnavailableReason.TooSimilar:
50+
raise wtforms.validators.ValidationError(
51+
_("This project name is too similar to an existing project")
52+
)
53+
case ProjectNameUnavailableReason.Stlib:
54+
raise wtforms.validators.ValidationError(
55+
_(
56+
"This project name isn't allowed (conflict with the Python"
57+
" standard library module name)"
58+
)
59+
)
60+
case None:
61+
return
4162

4263
class DeletePublisherForm(forms.Form):
4364
__params__ = ["publisher_id"]

warehouse/oidc/forms/activestate.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,9 @@ def validate_actor(self, field):
192192
class PendingActiveStatePublisherForm(ActiveStatePublisherBase, PendingPublisherMixin):
193193
__params__ = ActiveStatePublisherBase.__params__ + ["project_name"]
194194

195-
def __init__(self, *args, project_factory, **kwargs):
195+
def __init__(self, *args, project_service, **kwargs):
196196
super().__init__(*args, **kwargs)
197-
self._project_factory = project_factory
197+
self._project_service = project_service
198198

199199

200200
class ActiveStatePublisherForm(ActiveStatePublisherBase):

warehouse/oidc/forms/github.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,9 +169,9 @@ def normalized_environment(self):
169169
class PendingGitHubPublisherForm(GitHubPublisherBase, PendingPublisherMixin):
170170
__params__ = GitHubPublisherBase.__params__ + ["project_name"]
171171

172-
def __init__(self, *args, project_factory, **kwargs):
172+
def __init__(self, *args, project_service, **kwargs):
173173
super().__init__(*args, **kwargs)
174-
self._project_factory = project_factory
174+
self._project_service = project_service
175175

176176

177177
class GitHubPublisherForm(GitHubPublisherBase):

warehouse/oidc/forms/gitlab.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,9 @@ def normalized_environment(self):
9797
class PendingGitLabPublisherForm(GitLabPublisherBase, PendingPublisherMixin):
9898
__params__ = GitLabPublisherBase.__params__ + ["project_name"]
9999

100-
def __init__(self, *args, project_factory, **kwargs):
100+
def __init__(self, *args, project_service, **kwargs):
101101
super().__init__(*args, **kwargs)
102-
self._project_factory = project_factory
102+
self._project_service = project_service
103103

104104

105105
class GitLabPublisherForm(GitLabPublisherBase):

warehouse/oidc/forms/google.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ def __init__(self, *args, **kwargs):
4040
class PendingGooglePublisherForm(GooglePublisherBase, PendingPublisherMixin):
4141
__params__ = GooglePublisherBase.__params__ + ["project_name"]
4242

43-
def __init__(self, *args, project_factory, **kwargs):
43+
def __init__(self, *args, project_service, **kwargs):
4444
super().__init__(*args, **kwargs)
45-
self._project_factory = project_factory
45+
self._project_service = project_service
4646

4747

4848
class GooglePublisherForm(GooglePublisherBase):

0 commit comments

Comments
 (0)