BryanDavis has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/373708 )
Change subject: Break in-process cache of model choice fields
......................................................................
Break in-process cache of model choice fields
ChoiceFields which are initial as class variables will (may?) cache
results for the lifetime of the python execution environment. To break
this cache, use the __init__ method of the form instance to reset the
queryset used for validation.
Bug: T173963
Change-Id: Ia795114642328e8958f18c79c3d7c0dbfd9348af
---
M striker/tools/forms.py
1 file changed, 13 insertions(+), 5 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/labs/striker
refs/changes/08/373708/1
diff --git a/striker/tools/forms.py b/striker/tools/forms.py
index 3e7d496..97c946f 100644
--- a/striker/tools/forms.py
+++ b/striker/tools/forms.py
@@ -266,8 +266,7 @@
),
)
license = forms.ModelChoiceField(
- queryset=SoftwareLicense.objects.filter(
- osi_approved=True).order_by('-recommended', 'slug'),
+ queryset=SoftwareLicense.objects.none(),
empty_label=_('-- Choose your software license --'),
label=_('Default software license'),
help_text=_(
@@ -276,12 +275,19 @@
).format(choose_a_license='https://choosealicense.com/'),
)
tags = forms.ModelMultipleChoiceField(
- queryset=ToolInfoTag.objects.all().order_by('name'),
+ queryset=ToolInfoTag.objects.none(),
widget=autocomplete.ModelSelect2Multiple(
url='tools:tags_autocomplete',
),
required=False,
)
+
+ def __init__(self, *args, **kwargs):
+ super(ToolCreateForm, self).__init__(*args, **kwargs)
+ self.fields['license'].queryset = SoftwareLicense.objects.filter(
+ osi_approved=True).order_by('-recommended', 'slug')
+ self.fields['tags'].queryset = ToolInfoTag.objects.all().order_by(
+ 'name')
def clean_name(self):
"""Validate that name is available."""
@@ -305,13 +311,13 @@
@parsleyfy
class MaintainersForm(forms.Form):
maintainers = MaintainerChoiceField(
- queryset=Maintainer.objects.all(),
+ queryset=Maintainer.objects.none(),
widget=autocomplete.ModelSelect2Multiple(
url='tools:api:maintainer',
),
)
tools = forms.ModelMultipleChoiceField(
- queryset=ToolUser.objects.all(),
+ queryset=ToolUser.objects.none(),
widget=autocomplete.ModelSelect2Multiple(
url='tools:api:tooluser',
),
@@ -332,3 +338,5 @@
initial['tools'] = tool.tool_member_ids()
kwargs['initial'] = initial
super(MaintainersForm, self).__init__(*args, **kwargs)
+ self.fields['maintainers'].queryset = Maintainer.objects.all()
+ self.fields['tools'].queryset = ToolUser.objects.all()
--
To view, visit https://gerrit.wikimedia.org/r/373708
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia795114642328e8958f18c79c3d7c0dbfd9348af
Gerrit-PatchSet: 1
Gerrit-Project: labs/striker
Gerrit-Branch: master
Gerrit-Owner: BryanDavis <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits