2020-10-15 10:40:53 +00:00
|
|
|
# Flaschengeist
|
2021-12-14 14:36:08 +00:00
|
|
|
![status-badge](https://ci.os-sc.org/api/badges/Flaschengeist/flaschengeist/status.svg)
|
|
|
|
|
2021-05-20 15:37:17 +00:00
|
|
|
This is the backend of the Flaschengeist.
|
2020-10-15 10:40:53 +00:00
|
|
|
|
|
|
|
## Installation
|
|
|
|
### Requirements
|
2021-05-26 23:52:45 +00:00
|
|
|
- `mysql` or `mariadb`
|
|
|
|
- maybe `libmariadb` development files[1]
|
|
|
|
- python 3.7+
|
|
|
|
|
|
|
|
[1] By default Flaschengeist uses mysql as database backend, if you are on Windows Flaschengeist uses `PyMySQL`, but on
|
|
|
|
Linux / Mac the faster `mysqlclient` is used, if it is not already installed installing from pypi requires the
|
|
|
|
development files for `libmariadb` to be present on your system.
|
|
|
|
|
2020-10-15 10:40:53 +00:00
|
|
|
### Install python files
|
|
|
|
pip3 install --user .
|
|
|
|
or with ldap support
|
|
|
|
|
|
|
|
pip3 install --user ".[ldap]"
|
2021-01-24 15:19:46 +00:00
|
|
|
or if you want to also run the tests:
|
2020-10-28 13:21:54 +00:00
|
|
|
|
2021-01-24 15:19:46 +00:00
|
|
|
pip3 install --user ".[ldap,test]"
|
2020-10-28 13:21:54 +00:00
|
|
|
|
2021-01-25 12:09:20 +00:00
|
|
|
You will also need a MySQL driver, recommended drivers are
|
|
|
|
- `mysqlclient`
|
|
|
|
- `PyMySQL`
|
|
|
|
|
2021-03-18 13:05:28 +00:00
|
|
|
`setup.py` will try to install a matching driver.
|
|
|
|
|
2020-10-27 12:43:01 +00:00
|
|
|
#### Windows
|
2021-03-18 13:05:28 +00:00
|
|
|
Same as above, but if you want to use `mysqlclient` instead of `PyMySQL` (performance?) you have to follow this guide:
|
2020-10-27 12:43:01 +00:00
|
|
|
|
|
|
|
https://www.radishlogic.com/coding/python-3/installing-mysqldb-for-python-3-in-windows/
|
2020-10-15 10:40:53 +00:00
|
|
|
|
|
|
|
### Configuration
|
2021-01-25 12:09:20 +00:00
|
|
|
Configuration is done within the a `flaschengeist.toml`file, you can copy the one located inside the module path
|
|
|
|
(where flaschegeist is installed) or create an empty one and place it inside either:
|
|
|
|
1. `~/.config/`
|
|
|
|
2. A custom path and set environment variable `FLASCHENGEIST_CONF`
|
|
|
|
|
2021-05-20 15:37:17 +00:00
|
|
|
Uncomment and change at least all the database parameters!
|
2020-10-15 10:40:53 +00:00
|
|
|
|
2021-12-06 22:48:05 +00:00
|
|
|
#### CRON
|
|
|
|
Some functionality used by some plugins rely on regular updates,
|
|
|
|
but as flaschengeists works as an WSGI app it can not controll when it gets called.
|
|
|
|
|
|
|
|
So you have to configure one of the following options to call flaschengeists CRON tasks:
|
|
|
|
|
|
|
|
1. Passive Web-CRON: Every time an users calls flaschengeist a task is scheduled (**NOT RECOMMENDED**)
|
|
|
|
- Pros: No external configuration needed
|
|
|
|
- Cons: Slower user experience, no guaranteed execution time of tasks
|
|
|
|
2. Active Web-CRON: You configure a webworker to call `<flaschengeist>/cron`
|
|
|
|
- Pros: Guaranteed execution interval, no impact on user experience (at least if you do not limit wsgi worker threads)
|
|
|
|
- Cons: Uses one of the webserver threads while executing
|
|
|
|
|
2020-10-15 10:40:53 +00:00
|
|
|
### Database installation
|
2021-05-20 15:37:17 +00:00
|
|
|
The user needs to have full permissions to the database.
|
|
|
|
If not you need to create user and database manually do (or similar on Windows):
|
|
|
|
|
|
|
|
(
|
|
|
|
echo "CREATE DATABASE flaschengeist;"
|
|
|
|
echo "CREATE USER 'flaschengeist'@'localhost' IDENTIFIED BY 'flaschengeist';"
|
2021-11-12 10:34:42 +00:00
|
|
|
echo "GRANT ALL PRIVILEGES ON flaschengeist.* TO 'flaschengeist'@'localhost';"
|
2021-05-20 15:37:17 +00:00
|
|
|
echo "FLUSH PRIVILEGES;"
|
|
|
|
) | sudo mysql
|
|
|
|
|
|
|
|
Then you can install the database tables and initial entries:
|
|
|
|
|
2021-01-24 15:19:46 +00:00
|
|
|
run_flaschengeist install
|
2020-10-15 10:40:53 +00:00
|
|
|
|
|
|
|
### Run
|
2021-01-24 15:19:46 +00:00
|
|
|
run_flaschengeist run
|
2020-10-15 10:40:53 +00:00
|
|
|
or with debug messages:
|
|
|
|
|
2021-01-24 15:19:46 +00:00
|
|
|
run_flaschengeist run --debug
|
|
|
|
|
2021-05-20 15:37:17 +00:00
|
|
|
This will run the backend on http://localhost:5000
|
|
|
|
|
2021-01-24 15:19:46 +00:00
|
|
|
## Tests
|
|
|
|
$ pip install '.[test]'
|
|
|
|
$ pytest
|
|
|
|
Run with coverage report:
|
|
|
|
|
|
|
|
$ coverage run -m pytest
|
|
|
|
$ coverage report
|
|
|
|
Or with html output (open `htmlcov/index.html` in a browser):
|
|
|
|
|
|
|
|
$ coverage html
|
2020-10-15 12:44:58 +00:00
|
|
|
|
2020-10-15 20:16:26 +00:00
|
|
|
## Development
|
2021-12-14 14:36:08 +00:00
|
|
|
Please refer to our [development wiki](https://flaschengeist.dev/Flaschengeist/flaschengeist/wiki/Development).
|