[fix] make BooleanChoices only set cookies that vary from the default

The bug was inadvertently introduced by the refactor in
180d4d068b.

Fixes #746.
This commit is contained in:
Martin Fischer 2022-01-13 19:39:18 +01:00
parent 687bdef410
commit d9709df740

View file

@ -205,6 +205,7 @@ class BooleanChoices:
self.name = name self.name = name
self.choices = choices self.choices = choices
self.locked = locked self.locked = locked
self.default_choices = dict(choices)
def transform_form_items(self, items): def transform_form_items(self, items):
# pylint: disable=no-self-use # pylint: disable=no-self-use
@ -241,8 +242,10 @@ class BooleanChoices:
def save(self, resp: flask.Response): def save(self, resp: flask.Response):
"""Save cookie in the HTTP reponse obect""" """Save cookie in the HTTP reponse obect"""
resp.set_cookie('disabled_{0}'.format(self.name), ','.join(self.disabled), max_age=COOKIE_MAX_AGE) disabled_changed = (k for k in self.disabled if self.default_choices[k])
resp.set_cookie('enabled_{0}'.format(self.name), ','.join(self.enabled), max_age=COOKIE_MAX_AGE) enabled_changed = (k for k in self.enabled if not self.default_choices[k])
resp.set_cookie('disabled_{0}'.format(self.name), ','.join(disabled_changed), max_age=COOKIE_MAX_AGE)
resp.set_cookie('enabled_{0}'.format(self.name), ','.join(enabled_changed), max_age=COOKIE_MAX_AGE)
def get_disabled(self): def get_disabled(self):
return self.transform_values(list(self.disabled)) return self.transform_values(list(self.disabled))