Source code for zemfrog.commands.permission

import click
from flask.cli import with_appcontext

from ..helper import db_add, db_commit, db_delete, db_update, get_object_model


@click.group("permission")
[docs]def group():
""" Role permission manager. """ @group.command() @with_appcontext @click.argument("name") @click.option("-d", "--description", required=True, help="Permission description.")
[docs]def new(name, description): """ Create permission. """ model = get_object_model("permission") perm = model.query.filter_by(name=name).first() if not perm: perm = model(name=name, description=description) db_add(perm) print("Successfully added %r permission" % name) else: print("%r permission already exists" % name)
@group.command() @with_appcontext @click.argument("name")
[docs]def remove(name): """ Remove permission. """ model = get_object_model("permission") perm = model.query.filter_by(name=name).first() if perm: db_delete(perm) print("Successfully deleted %r permission" % name) else: print("%r permission doesn't exist" % name)
@group.command() @with_appcontext @click.argument("name")
[docs]def update(name): """ Update permission. """ model = get_object_model("permission") perm = model.query.filter_by(name=name).first() if perm: cols = {} new_name = input("Enter a new permission name: ").strip() description = input("Enter a new permission description: ").strip() if not new_name: new_name = perm.name cols["name"] = new_name if not description: description = perm.description cols["description"] = description db_update(perm, **cols) print("Successfully updated the %r permission to %r" % (name, new_name)) else: print("%r permission doesn't exist" % name)
@group.command() @with_appcontext
[docs]def list(): """ Show permissions. """ model = get_object_model("permission") perms = model.query.all() print("Total permissions: %d" % len(perms)) for perm in perms: print("* %s - %s" % (perm.name, perm.description))
@group.command() @with_appcontext
[docs]def drop(): """ Drop permissions. """ print("Dropping all permissions... ", end="") model = get_object_model("permission") model.query.delete() db_commit() print("(done)")
[docs]command = group