Skip to content

Commit

Permalink
feat(cli): add command for group creation
Browse files Browse the repository at this point in the history
* add opensearch, necessary for the invenio-users-resources package
  • Loading branch information
utnapischtim committed Jul 30, 2024
1 parent 4eb1a16 commit f9a8a85
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 2 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ jobs:
requirements-level: [pypi]
cache-service: [redis]
db-service: [postgresql14, mysql8]
search-service: [opensearch2]

include:
- db-service: postgresql14
Expand All @@ -41,7 +42,8 @@ jobs:
env:
CACHE: ${{ matrix.cache-service }}
DB: ${{ matrix.db-service }}
EXTRAS: tests,admin,${{ matrix.DB_EXTRAS }}
SEARCH: ${{ matrix.search-service }}
EXTRAS: tests,admin,${{ matrix.DB_EXTRAS }},${{ matrix.search-service }}
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down
18 changes: 18 additions & 0 deletions invenio_accounts/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@
from flask.cli import with_appcontext
from flask_security.forms import ConfirmRegisterForm
from flask_security.utils import hash_password
from invenio_access.permissions import system_identity
from invenio_db import db
from invenio_users_resources.proxies import current_groups_service
from werkzeug.datastructures import MultiDict
from werkzeug.local import LocalProxy

Expand Down Expand Up @@ -53,6 +55,11 @@ def domains():
"""Domain commands."""


@click.group()
def groups():
"""Group commands."""


@users.command("create")
@click.argument("email")
@click.password_option()
Expand Down Expand Up @@ -178,3 +185,14 @@ def domains_create(domain):
click.secho(f"Domain {domain} creating failed with {error}", fg="red")
else:
click.secho(f"Domain {domain} created successfully", fg="green")


@groups.command("create")
@click.argument("name")
@with_appcontext
@commit
def groups_create(name):
"""Create group."""
_datastore.create_role(id=name, name=name, is_managed=False)
current_groups_service.rebuild_index(system_identity)
click.secho(f'Role "({name})s" created successfully.', fg="green")
2 changes: 1 addition & 1 deletion run-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ fi
python -m check_manifest
python -m setup extract_messages --output-file /dev/null
python -m sphinx.cmd.build -qnN docs docs/_build/html
eval "$(docker-services-cli up --db ${DB:-postgresql} --cache ${CACHE:-redis} --env)"
eval "$(docker-services-cli up --db ${DB:-postgresql} --search ${SEARCH:-opensearch} --cache ${CACHE:-redis} --env)"
# Note: expansion of pytest_args looks like below to not cause an unbound
# variable error when 1) "nounset" and 2) the array is empty.
python -m pytest ${pytest_args[@]+"${pytest_args[@]}"}
Expand Down
8 changes: 8 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,13 @@ install_requires =
cryptography>=3.0.0
Flask-KVSession-Invenio>=0.6.3
Flask-Security-Invenio>=3.2.0
invenio_access>=2.0.0
invenio-celery>=1.2.3
invenio-i18n>=2.0.0
invenio-mail>=1.0.2
invenio-rest>=1.2.4
invenio-theme>=2.0.0
invenio_users_resources>=5.0.0
maxminddb-geolite2>=2017.404
pyjwt>=1.5.0
simplekv>=0.11.2
Expand All @@ -50,6 +52,10 @@ mysql =
invenio-db[mysql]>=1.0.14
sqlite =
invenio-db>=1.0.14
opensearch1 =
invenio-search[opensearch1]>=2.1.0,<3.0.0
opensearch2 =
invenio-search[opensearch2]>=2.1.0,<3.0.0
tests =
mock>=1.3.0
invenio-app>=1.4.0
Expand All @@ -62,6 +68,8 @@ flask.commands =
roles = invenio_accounts.cli:roles
users = invenio_accounts.cli:users
domains = invenio_accounts.cli:domains
groups = invenio_accounts.cli:groups

invenio_admin.views =
invenio_accounts_user = invenio_accounts.admin:user_adminview
invenio_accounts_role = invenio_accounts.admin:role_adminview
Expand Down

0 comments on commit f9a8a85

Please sign in to comment.