mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-21 07:55:00 +00:00
first_boot: Allow the next steps page to be revisited
- Currently, after the user arrives the 'next steps' page after completing the first setup, trying to refresh the page takes us away from the page to the index page. - Since this page lists a lot of steps, user can't be expected to memorize the contents of the page and perform them one after the another. Opening the links in popups instead of navigating away from page helps but not full solve the problem. - If the page is a regular page and not part of the first step wizard, this page is a simple Django page. It can be refreshed. Back button can be used to view the page after navigating from it again. Tests: - On stable and testing containers, remove the sqlite3 file and start the service. This will trigger the first setup wizard. As a last step of the wizard, the 'setup complete! Next steps:' page is shown. - Refreshing the page works. - Navigating away from the page and using the back button to return to it works. Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: Veiko Aasa <veiko17@disroot.org>
This commit is contained in:
parent
7033b7cf1e
commit
35312bd672
@ -19,12 +19,6 @@ first_boot_steps = [
|
||||
'url': 'first_boot:welcome',
|
||||
'order': 0
|
||||
},
|
||||
{
|
||||
# TODO: Rename this, or merge with 'firstboot_completed'.
|
||||
'id': 'firstboot_complete',
|
||||
'url': 'first_boot:complete',
|
||||
'order': 10
|
||||
}
|
||||
]
|
||||
|
||||
_all_first_boot_steps = None
|
||||
@ -96,9 +90,9 @@ def _get_steps():
|
||||
def next_step():
|
||||
"""Return the resolved next first boot step URL required to go to.
|
||||
|
||||
If there are no more step remaining, return index page.
|
||||
If there are no more step remaining, return 'complete' page.
|
||||
"""
|
||||
return next_step_or_none() or 'index'
|
||||
return next_step_or_none() or 'first_boot:complete'
|
||||
|
||||
|
||||
def next_step_or_none():
|
||||
|
||||
@ -20,6 +20,7 @@ LOGGER = logging.getLogger(__name__)
|
||||
|
||||
class FirstBootMiddleware(MiddlewareMixin):
|
||||
"""Forward to firstboot page if firstboot isn't finished yet."""
|
||||
|
||||
@staticmethod
|
||||
def process_request(request):
|
||||
"""Handle a request as Django middleware request handler."""
|
||||
@ -46,11 +47,11 @@ class FirstBootMiddleware(MiddlewareMixin):
|
||||
|
||||
# If user requests a step other than the welcome step, verify that they
|
||||
# indeed completed the secret verification by looking at the session.
|
||||
if (user_requests_firstboot and
|
||||
not request.path.startswith(reverse('first_boot:welcome')) and
|
||||
first_boot.firstboot_wizard_secret_exists() and
|
||||
not request.session.get('firstboot_secret_provided', False) and
|
||||
not is_user_admin(request)):
|
||||
if (user_requests_firstboot
|
||||
and not request.path.startswith(reverse('first_boot:welcome'))
|
||||
and first_boot.firstboot_wizard_secret_exists()
|
||||
and not request.session.get('firstboot_secret_provided', False)
|
||||
and not is_user_admin(request)):
|
||||
return HttpResponseRedirect(reverse('first_boot:welcome'))
|
||||
|
||||
# Redirect to first boot if requesting normal page and first
|
||||
@ -63,7 +64,7 @@ class FirstBootMiddleware(MiddlewareMixin):
|
||||
# No more steps in first boot
|
||||
first_boot.set_completed()
|
||||
|
||||
# Redirect to index page if request firstboot after it is
|
||||
# Redirect to 'complete' page if user requested firstboot after it is
|
||||
# finished.
|
||||
if firstboot_completed and user_requests_firstboot:
|
||||
return HttpResponseRedirect(reverse('index'))
|
||||
return HttpResponseRedirect(reverse('first_boot:complete'))
|
||||
|
||||
@ -31,22 +31,12 @@ class WelcomeView(FormView):
|
||||
|
||||
|
||||
class CompleteView(TemplateView):
|
||||
"""Show summary after all firstboot setup is done.
|
||||
|
||||
After viewing this page the firstboot module can't be accessed anymore.
|
||||
"""
|
||||
"""Show next steps after all firstboot wizard steps are done."""
|
||||
|
||||
template_name = 'firstboot_complete.html'
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
"""Mark as done as soon as page is served."""
|
||||
response = super().get(self, request, *args, **kwargs)
|
||||
first_boot.mark_step_done('firstboot_complete')
|
||||
return response
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
"""Add network connections to context list."""
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['title'] = _('Setup Complete')
|
||||
context['firstboot_complete'] = True
|
||||
return context
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user