#6903: Go back to old change_list view after hitting save
-------------------------------+------------------------------------
     Reporter:  jarrow         |                    Owner:
         Type:  New feature    |                   Status:  new
    Component:  contrib.admin  |                  Version:  master
     Severity:  Normal         |               Resolution:
     Keywords:  admin          |             Triage Stage:  Accepted
    Has patch:  1              |      Needs documentation:  1
  Needs tests:  0              |  Patch needs improvement:  1
Easy pickings:  0              |                    UI/UX:  1
-------------------------------+------------------------------------
Changes (by julien):

 * easy:  1 => 0


Comment:

 Thanks for all your work on the patch so far. I think that overall the
 redirections work pretty well and quite intuitively.

 However, I have some concerns regarding the continuous passing-around of
 the querystring parameter. Firstly, it makes the implementation more
 complex as we have to check for the existence of that parameter in many
 places in the code — not only does this already require a lot of new code
 in the current implementation, but as we continue to extend the admin's
 functionality we'll have to continue to add lots of similar code just to
 ensure that this querystring parameter is correctly taken care of.
 Secondly, it makes the admin urls really long and ugly — this would have a
 negative impact on the user experience. Thirdly, while introducing a
 querystring parameter could be seen as a nice new feature, I fear it might
 be abused and exploited for too many different things outside of the
 original use case.

 Besides, while I agree that using explicit urls is generally a good thing
 on the web, in this case I think it is purely a convenient way of
 navigating the site by one given user. How the changelist was previously
 filtered by user A before accessing an object is most likely not going to
 be interesting or useful to any other user B. So there's no reason for
 user A to provide this information when sharing an object's url with user
 B.

 For all these reasons, my strong preference would be to use sessions
 instead of a querystring parameter. 1) Each time the changelist is
 rendered: if any filters are used then store them in the session otherwise
 clear the session; and 2) When comes the time to redirect to the
 changelist (i.e. after an object gets saved), then use the filters saved
 in the session, if any.

 The session would be used to save the state of the changelist as it was
 last seen by the user. If the user opens multiple browser tabs for the
 changelist and operates multiple different filterings in each tab, then
 only the last filtering that is operated would be kept in the session.

 Also, to be clear, we do not want to have situations where the
 changelist's filtering doesn't match what is displayed in the browser's
 address bar. So the filtering saved in the session should only be
 retrieved when there is a redirection, and the redirection's url should
 include all the corresponding querystring parameters. This means for
 example that if you directly click on model name on the admin index page,
 then you should be sent to the changelist's "clean" url (i.e. without any
 querystring parameters) and the session's filtering should be cleared.

 I hope this is clear. While I personally would prefer using sessions, I
 don't want my opinion to be too authoritative at this point and I'm happy
 to hear counter-opinions from other core-devs and any one else.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/6903#comment:56>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to