flaschengeist/readme.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

140 lines
3.5 KiB
Markdown
Raw Permalink Normal View History

2020-10-15 10:40:53 +00:00
# Flaschengeist
## Installation
### Requirements
- mysql or mariadb
2020-10-28 13:21:54 +00:00
- python 3.6+
2020-10-15 10:40:53 +00:00
### Install python files
pip3 install --user .
or with ldap support
pip3 install --user ".[ldap]"
or if you want to also run the tests:
2020-10-28 13:21:54 +00:00
pip3 install --user ".[ldap,test]"
2020-10-28 13:21:54 +00:00
You will also need a MySQL driver, recommended drivers are
- `mysqlclient`
- `PyMySQL`
2020-10-27 12:43:01 +00:00
#### Windows
Same as above, but for mysql you have to follow this guide:
https://www.radishlogic.com/coding/python-3/installing-mysqldb-for-python-3-in-windows/
2020-10-15 10:40:53 +00:00
### Configuration
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`
Change at least the database parameters!
2020-10-15 10:40:53 +00:00
### Database installation
run_flaschengeist install
2020-10-15 10:40:53 +00:00
### Run
run_flaschengeist run
2020-10-15 10:40:53 +00:00
or with debug messages:
run_flaschengeist run --debug
## 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 20:16:26 +00:00
## Development
### Code Style
We enforce you to use PEP 8 code style with a line length of 120 as used by Black.
See also [Black Code Style](https://github.com/psf/black/blob/master/docs/the_black_code_style.md).
#### Code formatting
We use [Black](https://github.com/psf/black) as the code formatter.
Installation:
pip install black
Usage:
black -l 120 DIRECTORY_OR_FILE
2020-10-15 20:16:26 +00:00
### Misc
#### Git blame
2020-10-15 20:16:26 +00:00
When using `git blame` use this to ignore the code formatting commits:
$ git blame FILE.py --ignore-revs-file .git-blame-ignore-revs
Or if you just want to use `git blame`, configure git like this:
$ git config blame.ignoreRevsFile .git-blame-ignore-revs
2021-01-29 18:00:32 +00:00
#### Ignore changes on config
git update-index --assume-unchanged flaschengeist/flaschengeist.toml
2020-10-15 20:16:26 +00:00
## Plugin Development
### File Structure
flaschengeist-example-plugin
|> __init__.py
|> model.py
|> setup.py
### Files
#### \_\_init\_\_.py
from flask import Blueprint
from flaschengeist.modules import Plugin
example_bp = Blueprint("example", __name__, url_prefix="/example")
permissions = ["example_hello"]
class PluginExample(Plugin):
def __init__(self, conf):
super().__init__(blueprint=example_bp, permissions=permissions)
def install(self):
from flaschengeist.system.database import db
import .model
db.create_all()
db.session.commit()
@example_bp.route("/hello", methods=['GET'])
@login_required(roles=['example_hello'])
def __hello(id, **kwargs):
return "Hello"
#### model.py
Optional, only needed if you need your own models (database)
from flaschengeist.system.database import db
class ExampleModel(db.Model):
"""Example Model"""
__tablename__ = 'example'
id = db.Column(db.Integer, primary_key=True)
description = db.Column(db.String(240))
#### setup.py
from setuptools import setup, find_packages
setup(
name="flaschengeist-example-plugin",
version="0.0.0-dev",
packages=find_packages(),
install_requires=[
"flaschengeist >= 2",
],
entry_points={
"flaschengeist.plugin": [
"example = flaschengeist-example-plugin:ExampleModel"
]
},
)