- adapted all modules to not use views.ConfigurationView anymore
- removed templates that are not needed anymore
- no more implicit 'enabled' and 'get_status' functions in __init__.py files
- (more coherent/explicit use of Django functionality)
- A lot of boiler plate code can be removed from Plinth if enabling and
disabling an application can be done using a common base form.
- This also allows to define a reusable method in an application for
enabling and disabling.
- This brings more structure to a application module and paves way for
having a different views such as dashboard.
- Plinth will become the home page for FreedomBox. So it has to serve
the purpose the directing users to available services. This will
happen most often and should also work when users are not logged in.
- Soon we will have a resigned 'front page'/'apps' section which is
expected to be shown to user who are not logged in too.
- Apps menus has been removed. Index page is now the only way to reach
Apps section.
- Refresh package list before trying to install packages. Also lookup
the ID of the package, including the version, using the newly fetched
package list.
- Call on_install() callback requested by modules only if the package
installation was successful. Handle any exception raised in the
callback itself.
- Handle exceptions raised during packagekit operations. Also check the
returned results for error code.
- Capture error/success status during a transaction. Don't destroy the
transaction object until the error/success status has been collected.
When a view is refreshed after completion of a transaction collect the
result of the transaction and show it to the user.
- Handle cases where package searches in the package list fails. Simply
show the package name without its description.
- Uses PackageKit dameon, Glib library wrapping packagekit DBUS API and
Python bindings for the Glib library.
- Implement a decorator to wrap views requiring packages.
- Framework allows for parallel operations. However, doing parallel
operations hangs because of what appears to be PackageKit backend
limitations.