from flask import Blueprint, request from flask.json import jsonify from zope import component from .utils import authz_restrict_to_syscom from ceo_common.interfaces import IUWLDAPService, ILDAPService bp = Blueprint('uwldap', __name__) @bp.route('/') def get_user(username: str): uwldap_srv = component.getUtility(IUWLDAPService) record = uwldap_srv.get_user(username) if record is None: return { 'error': 'user not found', }, 404 return record.to_dict() @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') kwargs = {'members': members} if body.get('dry_run'): members['dry_run'] = True return jsonify( ldap_srv.update_programs(**kwargs) )