diff --git a/tests/unit/admin/views/test_organizations.py b/tests/unit/admin/views/test_organizations.py
index 3c7dcf772243..7e93e8d532bd 100644
--- a/tests/unit/admin/views/test_organizations.py
+++ b/tests/unit/admin/views/test_organizations.py
@@ -617,6 +617,7 @@ def test_detail(self, db_request):
assert result["user"] == organization_application.submitted_by
assert result["form"].name.data == organization_application.name
assert result["conflicting_applications"] == []
+ assert result["conflicting_namespace_prefixes"] == []
assert result["organization_application"] == organization_application
@pytest.mark.usefixtures("_enable_organizations")
@@ -669,6 +670,7 @@ def test_detail_edit_invalid(self, db_request):
assert result["form"].name.data == existing_organization.name
assert result["form"].name.errors != []
assert result["conflicting_applications"] == []
+ assert result["conflicting_namespace_prefixes"] == []
assert result["organization_application"] == organization_application
@pytest.mark.usefixtures("_enable_organizations")
@@ -683,6 +685,7 @@ def test_detail_is_approved_true(self, db_request):
assert result["user"] == organization_application.submitted_by
assert result["form"].name.data == organization_application.name
assert result["conflicting_applications"] == []
+ assert result["conflicting_namespace_prefixes"] == []
assert result["organization_application"] == organization_application
@pytest.mark.usefixtures("_enable_organizations")
@@ -697,17 +700,25 @@ def test_detail_is_approved_false(self, db_request):
assert result["user"] == organization_application.submitted_by
assert result["form"].name.data == organization_application.name
assert result["conflicting_applications"] == []
+ assert result["conflicting_namespace_prefixes"] == []
assert result["organization_application"] == organization_application
@pytest.mark.usefixtures("_enable_organizations")
@pytest.mark.parametrize(
- ("name", "conflicts"),
+ ("name", "conflicts", "conflicting_prefixes", "not_conflicting"),
[
- ("pypi", ["PyPI", "pypi"]),
- ("py-pi", ["Py-PI", "PY-PI"]),
+ (
+ "pypi",
+ ["PyPI", "pypi"],
+ ["pypi-common", "PyPi_rocks", "pypi-team-garbage"],
+ ["py-pi"],
+ ),
+ ("py-pi", ["Py-PI", "PY-PI"], ["py", "py-pi_dot-com"], ["pypi"]),
],
)
- def test_detail_conflicting_applications(self, db_request, name, conflicts):
+ def test_detail_conflicting_applications(
+ self, db_request, name, conflicts, conflicting_prefixes, not_conflicting
+ ):
organization_application = OrganizationApplicationFactory.create(
name=name, status=OrganizationApplicationStatus.Declined
)
@@ -718,6 +729,14 @@ def test_detail_conflicting_applications(self, db_request, name, conflicts):
],
key=lambda o: o.submitted,
)
+ conflicting_prefix_applications = sorted(
+ [
+ OrganizationApplicationFactory.create(name=conflict)
+ for conflict in conflicting_prefixes
+ ],
+ key=lambda o: o.submitted,
+ )
+ [OrganizationApplicationFactory.create(name=name) for name in not_conflicting]
db_request.matchdict["organization_application_id"] = (
organization_application.id
)
@@ -725,6 +744,13 @@ def test_detail_conflicting_applications(self, db_request, name, conflicts):
assert result["user"] == organization_application.submitted_by
assert result["form"].name.data == organization_application.name
assert result["conflicting_applications"] == conflicting_applications
+ assert result["conflicting_namespace_prefixes"] == [
+ conflict
+ for conflict in sorted(
+ conflicting_applications + conflicting_prefix_applications,
+ key=lambda o: o.submitted,
+ )
+ ]
assert result["organization_application"] == organization_application
@pytest.mark.usefixtures("_enable_organizations")
diff --git a/warehouse/admin/templates/admin/organization_applications/detail.html b/warehouse/admin/templates/admin/organization_applications/detail.html
index a73e8416b50d..ffe55600d1f4 100644
--- a/warehouse/admin/templates/admin/organization_applications/detail.html
+++ b/warehouse/admin/templates/admin/organization_applications/detail.html
@@ -388,10 +388,31 @@
Organization Request{% if information_requests %}{% if ou
+
+ {% endif %}
+ {% if conflicting_namespace_prefixes %}
+