Skip to content

Commit 934c752

Browse files
committed
Fix RelatedField rendering wrong domain in hrefs
closes #7835 Assisted By: Claude Opus 4.6
1 parent 16fddcd commit 934c752

3 files changed

Lines changed: 17 additions & 5 deletions

File tree

CHANGES/7835.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fixed `RelatedField` rendering wrong domain in hrefs when `DOMAIN_ENABLED=True`.

pulpcore/app/serializers/base.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,16 @@ def _patched_reverse(viewname, request=None, args=None, kwargs=None, **extra):
6767
class HrefPrnFieldMixin:
6868
"""A mixin to configure related fields to generate relative hrefs and accept PRNs."""
6969

70+
def use_pk_only_optimization(self):
71+
"""Disable DRF's PK-only optimization when domains are enabled.
72+
73+
DRF's optimization passes a PKOnlyObject (no pulp_domain) to get_url,
74+
causing _reverse to fall back to the default domain.
75+
"""
76+
if settings.DOMAIN_ENABLED:
77+
return False
78+
return super().use_pk_only_optimization()
79+
7080
def get_url(self, obj, view_name, request, *args, **kwargs):
7181
# Use the Pulp reverse method to display relative hrefs.
7282
self.reverse = _reverse(obj)

pulpcore/tests/functional/api/test_workers.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,11 +160,12 @@ def test_task_schedule_domain(domain_factory, pulpcore_bindings):
160160
break
161161

162162
assert task_schedules is not None and task_schedules.results[0].last_task is not None
163-
assert f"/{domain_name}/" in task_schedules.results[0].pulp_href
164-
tasks = pulpcore_bindings.TasksApi.list(name=task_name, pulp_domain=domain_name)
165-
assert tasks.count == 1
166-
assert tasks.results[0].state == "completed"
167-
assert f"/{domain_name}/" in tasks.results[0].pulp_href
163+
ts = task_schedules.results[0]
164+
assert f"/{domain_name}/" in ts.pulp_href
165+
assert f"/{domain_name}/" in ts.last_task
166+
task = pulpcore_bindings.TasksApi.read(ts.last_task)
167+
assert task.state == "completed"
168+
assert f"/{domain_name}/" in task.pulp_href
168169
finally:
169170
subprocess.run(
170171
[

0 commit comments

Comments
 (0)