Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/homeworkprod/elcuestionario
El Cuestionario (formerly known as Rate Yourself) is a tiny web application to display and evaluate single-page questionnaires.
https://github.com/homeworkprod/elcuestionario
flask python question-answering questionnaire rating
Last synced: 2 months ago
JSON representation
El Cuestionario (formerly known as Rate Yourself) is a tiny web application to display and evaluate single-page questionnaires.
- Host: GitHub
- URL: https://github.com/homeworkprod/elcuestionario
- Owner: homeworkprod
- License: gpl-2.0
- Created: 2013-09-03T22:54:17.000Z (over 11 years ago)
- Default Branch: main
- Last Pushed: 2023-02-16T11:44:18.000Z (almost 2 years ago)
- Last Synced: 2023-03-23T03:26:47.437Z (almost 2 years ago)
- Topics: flask, python, question-answering, questionnaire, rating
- Language: Python
- Homepage: https://homework.nwsnet.de/releases/8909/#el-cuestionario
- Size: 208 KB
- Stars: 6
- Watchers: 3
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
El Cuestionario
===============**El Cuestionario** (formerly known as **Rate Yourself**) is a tiny web
application to display and evaluate single-page questionnaires.A questionnaire (questions, their answers, and score ratings) is
defined as JSON_ in a single file.The questions are presented in the order they are defined in the data
file while the answers are shown in random order.Once all questions are answered, the user's score is calculated based
on the answers' weight (as defined) and is presented with a suitable
comment.:Copyright: 2005-2021 `Jochen Kupperschmidt `_
:License: GNU General Public License version 2, see LICENSE for details.Requirements
------------- Python_ 3.7+
- Flask_Installation
------------Install dependencies:
.. code:: sh
$ pip install -r requirements.txt
Make the script to run the application executable:
.. code:: sh
$ chmod +x runserver.py
This script (which uses the built-in web server) is fine to get up and
running quickly. However, to actually serve the application on the
Internet, please consider the other `deployment options`_ described in
Flask's excellent documentation.Configuration
-------------Take a look at ``data/example.json`` regarding how a questionnaire is
defined. Just copy the file, adjust its content and update the value of
the ``SURVEY_FILENAME`` variable in the main script accordingly.Title
+++++A questionnaire has a title:
.. code:: json
"title": "A Bunch of Questions",
Questions and Answers
+++++++++++++++++++++Each question should have multiple answers.
Each answer must have weighting, defined as a float number between
``0.0`` and ``1.0``.Exception: I sometimes use a value of ``1.1`` for "bonus answers" which
allows for an overall score of more than 100%.To calculate the overall score, the weighting of each question's answer
will be used.Example:
.. code:: json
"questions": [
{
"text": "What's your favorite color?",
"answers": [
{ "text": "blue", "weighting": 0.7 },
{ "text": "green", "weighting": 0.5 },
{ "text": "yellow", "weighting": 0.1 },
{ "text": "red", "weighting": 0.25 },
{ "text": "none", "weighting": 1.0 },
{ "text": "checkered", "weighting": 1.1 }
]
}
]Ratings
+++++++Ratings can be defined to add a text to the result based on the
achieved overall score. Each is bound to a score range.The `minimum_score` value sets the threshold for each rating. The
adequate rating will be chosen by finding the one with the highest
`minimum_score` value that is lower than the score. For example, with a
score of 53 % and ratings with `minimum_score` values of
`[10, 20, ..., 90, 100]`, the selected rating will be the one with a
`minimum_score` value of ``50`` since it is lower than ``53`` and the
next higher `minimum_score` value, ``60``, is not lower than the score
of ``53``.Therefore, a rating's `minimum_score` value defines the minimum score
one has to gain to be given that rating, as long as no other rating is
more suitable considering its `minimum_score` minimum.Example:
.. code:: json
"rating_levels": [
{ "minimum_score": 0, "text": "OMG, please waste time with something else!" },
{ "minimum_score": 40, "text": "Not bad." },
{ "minimum_score": 70, "text": "Looking good." },
{ "minimum_score": 90, "text": "Yeah, great result!" }
]Rating levels are optional. If none are defined in the data file, to
rating text is shown on the result page.Usage
-----Start the application with the example configuration:
.. code:: sh
$ ./runserver.py data/example.json
It will spawn a web server on port 5000.
To access the questionnaire, point a web browser to
http://localhost:5000/.You can also specify a custom port to listen on as well as enable debug
mode:.. code:: sh
$ ./runserver.py --debug --port 8080 data/example.json
This will make the questionnaire available on http://localhost:8080/ and
provide an in-browser debugger in case an exception is raised by the
application.Changes
-------First released on 2006-04-26.
Notable changes since the first release:
- The data format for a questionnaire changed from XML to JSON_.
- WSGI_ (via Werkzeug_) has replaced CGI as the interface to the web
server to support more `deployment options`_.- Jinja_ has replaced Kid as the template engine.
- The original script evolved into a Flask_ application with separate
modules and templates.- Tests have been added.
- Naming has been adjusted to follow `PEP 8`_ more closely.
- Added support for Python 3. Dropped support for Python 2.
.. _JSON: http://www.json.com/
.. _Python: https://www.python.org/
.. _Flask: https://flask.palletsprojects.com/en/1.1.x/
.. _deployment options: https://flask.palletsprojects.com/en/1.1.x/deploying/
.. _WSGI: http://www.wsgi.org/
.. _Werkzeug: https://werkzeug.palletsprojects.com/en/1.0.x/
.. _Jinja: https://jinja.palletsprojects.com/en/2.11.x/
.. _PEP 8: https://www.python.org/dev/peps/pep-0008/