Contributor Invite: Implement wizard step for suggesting router configuration

About this Contributor Invite:

  • Task Area: Coding
  • Effort rating: 4/5
  • Skills required: Python, Django forms/views/urls/templates

Description of the Problem:

Currently, when users set up FreedomBox, they are not given guidance for how to setup their domains or how to configure their router. This is a problem because it leaves our users under-informed. We have a UX design plan for changing this. One of the parts of this plan is to ask the user for how their FreedomBox is connected to the Internet. We store this information and use it to suggest various setup options during the setup process and also later on when setting up apps. But the plan has not be implemented yet. To learn about the plan, please see page number 17 of reachability UX (#1531).

What we ask of you:

Implement the UI feature which guides users in configuring their routers. Please follow these steps:

  • Implement a form in networks/forms.py for configuring a router. The three options provided and their descriptions should be show in the UX design.
  • Implement a simple page view to show this in networks/views.py and add the view to networks/urls.py. This page should be independent and should not contain distractions like app header etc. See Gitweb’s create repro view as an example. Ignore showing the diagrams from the UX design for the purpose of this task.
  • If task to add page 1 of reachability UX is implemented, then ensure that selecting ‘connected to router’ will lead showing this page next. This is for the update button in ‘FreedomBox Internet Connectivity’ section in networks app. If that task is not yet implemented, then add a new section in the Networks main page with section title ‘FreedomBox Internet Connectivity’ and a button to link to the newly created page. See page 18 of the reachability UX (#1531). Again, ignore the diagram.
  • Create another view that reuses the form created earlier but appears like a wizard step. See page 17 of the reachability UX (#1531). See users/views.py::FirstBootView as an example. ‘Skip’ and ‘Next’ need to be implemented. Ignore the ‘Back’ button for now.
  • Declare a first boot step that will show up as part of the first boot wizard that appears during initial FreedomBox setup. See users/ init .py::first_boot_steps for example on how to do this. We currently have to wizard three wizard steps Welcome (order 0), User Account Creation (order 1) and Finish (order 10). Insert our first boot wizard step with order 4.
  • When the form is submitted in both cases (from networks app or from first boot wizard), Store this information in sqlite database against a key named ‘networks_router_configuration_type’ in FreedomBox’s key/value store. Values can be one of ‘dmz’, ‘port_forwarding’ and ‘not_configured’. See config/ init .py::set_advanced_mode() for example on how to store the key.

Link to the issue in GitLab: https://salsa.debian.org/freedombox-team/plinth/issues/1695

How to claim this Contributor Invite :

Do you want to accept this invitation to contribute? If so, follow these steps:

  1. Comment on this forum post indicating that you would like to claim the invite. This will prevent multiple people from working on the same issue at the same time.
  2. Register an account with our GitLab instance and begin making your contributions on the GitLab issue page for this task. You can use the comment section of this forum post to ask questions, but the bulk of the development discussion should happen on GitLab.

Resources:

If you need help with this issue, please feel free to ask for it from members of our core team:

  • Sunil Mohan Adapa (@sunil): Lead Developer & Code Reviewer
  • Joseph Nuthalapati (@njoseph): DevOps Engineer, Developer, & Code Reviewer
  • James Valleroy (@jvalleroy) : Release Manager, Developer, & Code Reviewer