Skip to content

Commit 07a068f

Browse files
committed
Merge commit from fork
1 parent 94c70dc commit 07a068f

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

django_select2/forms.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,6 @@ def __init__(self, attrs=None, choices=(), **kwargs):
268268
"""
269269
super().__init__(attrs, choices)
270270

271-
self.uuid = str(uuid.uuid4())
272-
self.field_id = signing.dumps(self.uuid)
273271
self.data_view = kwargs.pop("data_view", self.data_view)
274272
self.data_url = kwargs.pop("data_url", self.data_url)
275273

@@ -288,6 +286,8 @@ def get_url(self):
288286

289287
def build_attrs(self, base_attrs, extra_attrs=None):
290288
"""Set select2's AJAX attributes."""
289+
self.uuid = str(uuid.uuid4())
290+
self.field_id = signing.dumps(self.uuid)
291291
default_attrs = {
292292
"data-ajax--url": self.get_url(),
293293
"data-ajax--cache": "true",

tests/test_forms.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,17 @@ def test_theme_setting(self, settings):
360360
widget = self.widget_cls(data_view="heavy_data_1")
361361
assert 'data-theme="classic"' in widget.render("name", None)
362362

363+
def test_cache_key_leak(self):
364+
bob = self.widget_cls(data_url="/test/")
365+
alice = self.widget_cls(data_url="/test/")
366+
bob.render("name", "value")
367+
bob_key_request_1 = bob._get_cache_key()
368+
alice.render("name", "value")
369+
assert bob._get_cache_key() != alice._get_cache_key()
370+
bob.render("name", "value")
371+
bob_key_request_2 = bob._get_cache_key()
372+
assert bob_key_request_1 != bob_key_request_2
373+
363374

364375
class TestModelSelect2Mixin(TestHeavySelect2Mixin):
365376
form = forms.AlbumModelSelect2WidgetForm(initial={"primary_genre": 1})

0 commit comments

Comments
 (0)