Admin panel of the E-Repair system
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
static
templates
translations
.gitignore
AdminPanel.py
ChangePasswordForm.py
LoginForm.py
LoginManager.py
NewEmployeeForm.py
README.md
UpdateStatusForm.py
babel.cfg
messages.pot
requirements.txt

README.md

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 https://erepair.herokuapp.com

Usage

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 AdminPanel.py

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 AdminPanel.py

Architecture

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 AdminPanel.py file. Each form that can be sent by a user is created using WTForms, and has a dedicated file ending in ...Form.py. 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.

Internationalization

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

Screenshots

Login page

Index page for logged in user

Map of pending interventions

Employee management

Password change