Skip to content

Commit e5f41e6

Browse files
authored
Merge commit from fork
1 parent e92e090 commit e5f41e6

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
@@ -255,8 +255,6 @@ def __init__(self, attrs=None, choices=(), **kwargs):
255255
"""
256256
super().__init__(attrs, choices)
257257

258-
self.uuid = str(uuid.uuid4())
259-
self.field_id = signing.dumps(self.uuid)
260258
self.data_view = kwargs.pop("data_view", self.data_view)
261259
self.data_url = kwargs.pop("data_url", self.data_url)
262260

@@ -275,6 +273,8 @@ def get_url(self):
275273

276274
def build_attrs(self, base_attrs, extra_attrs=None):
277275
"""Set select2's AJAX attributes."""
276+
self.uuid = str(uuid.uuid4())
277+
self.field_id = signing.dumps(self.uuid)
278278
default_attrs = {
279279
"data-ajax--url": self.get_url(),
280280
"data-ajax--cache": "true",

tests/test_forms.py

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

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

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

0 commit comments

Comments
 (0)