Fix #492 -- Force deterministic ordering of some signals

This commit is contained in:
Raphael Michel
2017-05-15 13:09:23 +02:00
parent 5ff6d0b014
commit 7769aaccea
6 changed files with 8 additions and 7 deletions

View File

@@ -45,12 +45,12 @@ def contextprocessor(request):
if not hasattr(request, 'event'):
for receiver, response in nav_global.send(request, request=request):
_nav_global += response
ctx['nav_global'] = _nav_global
ctx['nav_global'] = sorted(_nav_global, key=lambda n: n['label'])
_nav_topbar = []
for receiver, response in nav_topbar.send(request, request=request):
_nav_topbar += response
ctx['nav_topbar'] = _nav_topbar
ctx['nav_topbar'] = sorted(_nav_topbar, key=lambda n: n['label'])
ctx['js_datetime_format'] = get_javascript_format('DATETIME_INPUT_FORMATS')
ctx['js_date_format'] = get_javascript_format('DATE_INPUT_FORMATS')

View File

@@ -29,7 +29,7 @@ class GlobalSettingsForm(SettingsForm):
))
])
responses = register_global_settings.send(self)
for r, response in responses:
for r, response in sorted(responses, key=lambda r: str(r[0])):
for key, value in response.items():
# We need to be this explicit, since OrderedDict.update does not retain ordering
self.fields[key] = value

View File

@@ -674,7 +674,7 @@ class EventLive(EventPermissionRequiredMixin, TemplateView):
issues.append(_('You need to configure at least one quota to sell anything.'))
responses = event_live_issues.send(self.request.event)
for receiver, response in responses:
for receiver, response in sorted(responses, key=lambda r: str(r[0])):
if response:
issues.append(response)

View File

@@ -48,6 +48,7 @@ class OrganizerDetailViewMixin:
for recv, retv in nav_organizer.send(sender=self.request.organizer, request=self.request,
organizer=self.request.organizer):
ctx['nav_organizer'] += retv
ctx['nav_organizer'].sort(key=lambda n: n['label'])
return ctx
def get_object(self, queryset=None) -> Organizer: