fix saving route options
This commit is contained in:
parent
9a95faa620
commit
e237b26464
1 changed files with 12 additions and 6 deletions
|
@ -89,9 +89,14 @@ class RouteOptions(models.Model):
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_for_request(cls, request):
|
def get_for_request(cls, request):
|
||||||
session_options = request.session.get('route_options', None)
|
session_options = request.session.get('route_options', None)
|
||||||
|
if session_options is not None:
|
||||||
|
session_options = cls(request=request)
|
||||||
|
session_options.update(session_options, ignore_errors=True)
|
||||||
|
|
||||||
user_options = None
|
user_options = None
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
user_options = cls.get_for_user(request.user)
|
user_options = cls.get_for_user(request.user)
|
||||||
|
user_options.clean_data()
|
||||||
|
|
||||||
if session_options and not user_options:
|
if session_options and not user_options:
|
||||||
user_options = session_options
|
user_options = session_options
|
||||||
|
@ -99,12 +104,9 @@ class RouteOptions(models.Model):
|
||||||
user_options.save()
|
user_options.save()
|
||||||
request.session.pop('session_options')
|
request.session.pop('session_options')
|
||||||
|
|
||||||
options = cls(request=request)
|
return user_options or session_options or cls(request=request)
|
||||||
options.update(user_options or session_options or {}, ignore_errors=True)
|
|
||||||
return options
|
|
||||||
|
|
||||||
def __init__(self, *args, request=None, **kwargs):
|
def clean_data(self):
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
new_data = OrderedDict()
|
new_data = OrderedDict()
|
||||||
for name, field in self.get_fields().items():
|
for name, field in self.get_fields().items():
|
||||||
value = self.data.get(name)
|
value = self.data.get(name)
|
||||||
|
@ -113,6 +115,10 @@ class RouteOptions(models.Model):
|
||||||
new_data[name] = value
|
new_data[name] = value
|
||||||
self.data = new_data
|
self.data = new_data
|
||||||
|
|
||||||
|
def __init__(self, *args, request=None, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.clean_data()
|
||||||
|
|
||||||
self.request = request
|
self.request = request
|
||||||
|
|
||||||
def __getitem__(self, key):
|
def __getitem__(self, key):
|
||||||
|
@ -175,7 +181,7 @@ class RouteOptions(models.Model):
|
||||||
self.user = self.request.user
|
self.user = self.request.user
|
||||||
return super().save(*args, **kwargs)
|
return super().save(*args, **kwargs)
|
||||||
|
|
||||||
self.request.session['route_options'] = self
|
self.request.session['route_options'] = self.data
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
yield from self.data.items()
|
yield from self.data.items()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue