2021-08-03 10:09:07 -04:00
|
|
|
from flask import Blueprint, request
|
|
|
|
from flask.json import jsonify
|
2021-08-02 23:20:11 -04:00
|
|
|
from zope import component
|
|
|
|
|
2021-08-03 10:09:07 -04:00
|
|
|
from .utils import create_sync_response, authz_restrict_to_syscom
|
|
|
|
from ceo_common.interfaces import IUWLDAPService, ILDAPService
|
|
|
|
from ceod.transactions.uwldap import UpdateProgramsTransaction
|
2021-08-02 23:20:11 -04:00
|
|
|
|
|
|
|
bp = Blueprint('uwldap', __name__)
|
|
|
|
|
|
|
|
|
|
|
|
@bp.route('/<username>')
|
|
|
|
def get_user(username: str):
|
|
|
|
uwldap_srv = component.getUtility(IUWLDAPService)
|
2021-08-03 10:09:07 -04:00
|
|
|
record = uwldap_srv.get_user(username)
|
2021-08-02 23:20:11 -04:00
|
|
|
if record is None:
|
|
|
|
return {
|
|
|
|
'error': 'user not found',
|
|
|
|
}, 404
|
|
|
|
return record.to_dict()
|
2021-08-03 10:09:07 -04:00
|
|
|
|
|
|
|
|
|
|
|
@bp.route('/updateprograms', methods=['POST'])
|
|
|
|
@authz_restrict_to_syscom
|
|
|
|
def update_programs():
|
|
|
|
ldap_srv = component.getUtility(ILDAPService)
|
|
|
|
body = request.get_json(force=True)
|
|
|
|
members = body.get('members')
|
|
|
|
if body.get('dry_run'):
|
|
|
|
return jsonify(
|
|
|
|
ldap_srv.update_programs(dry_run=True, members=members)
|
|
|
|
)
|
|
|
|
txn = UpdateProgramsTransaction(members=members)
|
|
|
|
return create_sync_response(txn)
|