Skip to content
Switch branches/tags
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Admin panel of the E-Repair system

This repository hosts the Admin Panel component of the E-Repair system. E-Repair is a project developed during the E-Government Frameworks course taught at the University of Neuchâtel. It is a system tailored for swiss municipalities. It will enable swiss residents to report objects that need to be repaired to the responsible municipality.

This Admin Panel is used by municipality employees to receive and update repairment requests.

As of the time of writing, a live demo is available at


The application is designed to run on Python 2.7. The easiest way to install the dependencies is by using virtualenv and pip. To do so, install pip and virtualenv if needed (use your favorite search engine for further guidance), and then execute the following commands in the folder where this readme is located:

$ virtualenv venv
$ source venv/bin/activate
$ pip install -r requirements.txt
$ python

You will then be able to access the application by using the address provided in the console output.

For subsequent launches, only the following commands need to be issued:

$ source venv/bin/activate
$ python


The admin panel is a Flask application. It connects to the backend service with the WSDL protocol using the Flask-Spyne library.

The application code is primarily concentrated in the file. Each form that can be sent by a user is created using WTForms, and has a dedicated file ending in The LoginManager is a collection of functions related to login concerns. The static directory hosts the static files (CSS/JS/Images). The templates directory hosts the HTML templates.

The template engine is provided by Flask, and is jinja2. The base.html file is extended by every other template file and contains the basic structure of the UI. We use the Bootstrap 3 framework through the Flask-Bootstrap library.


i18n capabilities are provided by Flask-Babel. To mark a string for translation, it has to be surrounded by _() like that:

_('String to translate')

In a jinja2 template file, the following construct can be used:

{% trans %}String to translate{% endtrans %}

When a string is marked as translatable or is changed, the messages.pot file and all per-language .po files have to be updated. The following commands will generate them:

$ pybabel extract -F babel.cfg -k lazy_gettext -o messages.pot .
$ pybabel update -i messages.pot -d translations

After that, translators can add their translations to .po files. For example, a French translator will modify translations/fr/LC_MESSAGES/messages.po. When the translations are ready, they need to be compiled to .mo files:

$ pybabel compile -d translations


Login page

Index page for logged in user

Map of pending interventions

Employee management

Password change


Admin panel of the E-Repair system



No releases published


No packages published