36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
import click
|
|
|
|
from ..utils import http_post
|
|
from .utils import handle_sync_response, print_colon_kv
|
|
|
|
|
|
@click.command(short_help="Sync the 'program' attribute with UWLDAP")
|
|
@click.option('--dry-run', is_flag=True, default=False)
|
|
@click.option('--members', required=False)
|
|
def updateprograms(dry_run, members):
|
|
body = {}
|
|
if dry_run:
|
|
body['dry_run'] = True
|
|
if members is not None:
|
|
body['members'] = ','.split(members)
|
|
|
|
if not dry_run:
|
|
click.confirm('Are you sure that you want to sync programs with UWLDAP?', abort=True)
|
|
|
|
resp = http_post('/api/uwldap/updateprograms', json=body)
|
|
result = handle_sync_response(resp)
|
|
if len(result) == 0:
|
|
click.echo('All programs are up-to-date.')
|
|
return
|
|
if dry_run:
|
|
click.echo('Members whose program would be changed:')
|
|
else:
|
|
click.echo('Members whose program was changed:')
|
|
lines = []
|
|
for uid, csc_program, uw_program in result:
|
|
csc_program = csc_program or 'Unknown'
|
|
csc_program = click.style(csc_program, fg='yellow')
|
|
uw_program = click.style(uw_program, fg='green')
|
|
lines.append((uid, csc_program + ' -> ' + uw_program))
|
|
print_colon_kv(lines)
|