call update_commands from positions() group

This commit is contained in:
Max Erenberg 2021-09-08 13:03:52 +00:00
parent 36fd303433
commit 9f549ee58b
4 changed files with 13 additions and 20 deletions

View File

@ -24,12 +24,10 @@ def register_services():
else:
config_file = os.environ.get('CEO_CONFIG', '/etc/csc/ceo.ini')
cfg = Config(config_file)
component.provideUtility(cfg, IConfig)
baseComponent.registerUtility(cfg, IConfig)
# HTTPService
http_client = HTTPClient()
component.provideUtility(http_client, IHTTPClient)
baseComponent.registerUtility(http_client, IHTTPClient)

View File

@ -1,19 +1,15 @@
import click
from zope import component
from zope.interface.interfaces import IRegistered, IUtilityRegistration
import zope.component.event # noqa: F401
from ..utils import http_get, http_post
from .utils import handle_sync_response, handle_stream_response, print_colon_kv
from ceo_common.interfaces import IConfig
from ceod.transactions.members import UpdateMemberPositionsTransaction
from .utils import handle_sync_response, handle_stream_response, print_colon_kv
from ..utils import http_get, http_post
@click.group(short_help='List or change exec positions')
def positions():
pass
update_commands()
@positions.command(short_help='Get current positions')
@ -25,24 +21,21 @@ def get():
@positions.command(short_help='Update positions')
def set(**kwargs):
body = {k.replace('_', '-'): v for k, v in kwargs.items()}
print_body = {k: v or '' for k, v in body.items()}
click.echo('The positions will be updated:')
print_colon_kv(kwargs.items())
print_colon_kv(print_body.items())
click.confirm('Do you want to continue?', abort=True)
resp = http_post('/api/positions', json={k.replace('_', '-'): v for k, v in kwargs.items()})
resp = http_post('/api/positions', json=body)
handle_stream_response(resp, UpdateMemberPositionsTransaction.operations)
# Provides dynamic parameter for update command using config file
@component.provideHandler
@component.adapter(IRegistered)
def _handler(event):
# Provides dynamic parameters for `set' command using config file
def update_commands():
global set
if not (IUtilityRegistration.providedBy(event.object) and IConfig.providedBy(event.object.component)):
return
cfg = event.object.component
cfg = component.getUtility(IConfig)
avail = cfg.get('positions_available')
required = cfg.get('positions_required')

View File

@ -69,6 +69,8 @@ def space_colon_kv(pairs: List[Tuple[str, str]]) -> List[str]:
key1000: val3
val4
"""
if not pairs:
return []
lines = []
maxlen = max(len(key) for key, val in pairs)
for key, val in pairs:

View File

@ -23,7 +23,7 @@ def test_positions(cli_setup):
assert result.output == '''
The positions will be updated:
president: test_0
vice_president: test_1
vice-president: test_1
sysadmin: test_2
secretary: test_3
webmaster: test_4