import os
import sys
import traceback

BASE_DIR = "/opt/rbta/ad/mgmtportal/api/core"

if BASE_DIR not in sys.path:
    sys.path.insert(0, BASE_DIR)
os.environ["DJANGO_SETTINGS_MODULE"] = "project.settings"

from aldpro.ROCO.role.logic import RoleLogic
from aldpro_core.ldap_om.auth.vanilla_auth.auth import PasswordAuth
from aldpro_core.utils.logger import Logger
from django.conf import settings

logger = Logger('process-pending-roles')

BASE_DN = settings.BASE_DN
LDAP_SERVER = settings.LDAP_SERVER
ROLESERVICE_USERNAME = settings.ROLESERVICE_USERNAME
ROLESERVICE_PASSWORD = settings.ROLESERVICE_PASSWORD

def process_pending_roles():
    pass_auth = PasswordAuth(
        server=LDAP_SERVER,
        base_dn=BASE_DN,
        ldap_login=f"uid={ROLESERVICE_USERNAME},cn=sysaccounts,cn=etc,{BASE_DN}",
        ldap_password=ROLESERVICE_PASSWORD,
    )
    role = RoleLogic(auth_class=pass_auth)
    role.process_pending()

if __name__ == "__main__":
    try:
        process_pending_roles()
    except Exception:
        error_message = traceback.format_exc()
        logger.error(error_message)
