def wrapped_function(*args, **kwargs): git_revision = subprocess.check_output( ['git', 'rev-parse', '--short', 'HEAD']).decode('utf-8').rstrip() uuid = str(session["userinfo"].get("sub", "")) uid = str(session["userinfo"].get("preferred_username", "")) user_obj = _ldap.get_member(uid, uid=True) info = { "git_revision": git_revision, "uuid": uuid, "uid": uid, "user_obj": user_obj, "member_info": get_member_info(uid), "color": requests.get( 'https://themeswitcher.csh.rit.edu/api/colour').content, "current_year": parse_account_year(str(datetime.datetime.now().strftime("%Y%m"))), "rtp": ldap_is_rtp(user_obj) } kwargs["info"] = info return func(*args, **kwargs)
def ldap_update_profile(form_dict, uid): account = _ldap.get_member(uid, uid=True) form_input = form_dict.to_dict(flat=True) for key, value in form_input.items(): if value == "None" or value == "": form_input[key] = None if not form_input["name"] == account.cn: account.cn = form_input["name"] if not form_input["birthday"] == account.birthday: account.birthday = form_input["birthday"] if not form_input["phone"] == account.mobile: account.mobile = form_input["phone"] if not form_input["plex"] == account.plex: account.plex = form_input["plex"] if "major" in form_input.keys(): if not form_input["major"] == account.major: account.major = form_input["major"] if "minor" in form_input.keys(): if not form_input["minor"] == account.minor: account.minor = form_input["minor"] if "ritYear" in form_input.keys(): if not form_input["ritYear"] == account.ritYear: account.ritYear = form_input["ritYear"] if not form_input["website"] == account.homepageURL: account.homepageURL = form_input["website"] if not form_input["github"] == account.github: account.github = form_input["github"] if not form_input["twitter"] == account.twitterName: account.twitterName = form_input["twitter"] if not form_input["blog"] == account.blogURL: account.blogURL = form_input["blog"] if not form_input["google"] == account.googleScreenName: account.googleScreenName = form_input["google"] if not form_input["mail"] == account.mail: account.mail = form_input["mail"] if not form_input["nickname"] == account.nickname: account.nickname = form_input["nickname"] if not form_input["shell"] == account.shell: account.loginShell = form_input["shell"]
def wrapped_function(*args, **kwargs): git_revision = subprocess.check_output( ['git', 'rev-parse', '--short', 'HEAD']).decode('utf-8').rstrip() uuid = str(session["userinfo"].get("sub", "")) uid = str(session["userinfo"].get("preferred_username", "")) user_obj = _ldap.get_member(uid, uid=True) info = { "git_revision": git_revision, "uuid": uuid, "uid": uid, "user_obj": user_obj, "member_info": get_member_info(uid) } kwargs["info"] = info return func(*args, **kwargs)
def ldap_multi_update(uid, attribute, value): dn = "uid={},cn=users,cn=accounts,dc=csh,dc=rit,dc=edu".format(uid) try: current = _ldap.get_member(uid, uid=True).get(attribute) except KeyError: current = [] remove = list(set(current) - set(value)) add = list(set(value) - set(current)) conn = _ldap.get_con() mod_list = [] for entry in remove: mod = (ldap.MOD_DELETE, attribute, entry.encode('utf-8')) mod_list.append(mod) for entry in add: if entry: mod = (ldap.MOD_ADD, attribute, entry.encode('utf-8')) mod_list.append(mod) conn.modify_s(dn, mod_list)
def ldap_get_member(username): return _ldap.get_member(username, uid=True)
def ldap_update_profile(form_input, uid): account = _ldap.get_member(uid, uid=True) empty = ["None", ""] for key, value in form_input.items(): if value in empty: form_input[key] = None if not form_input["name"] == account.cn: account.cn = form_input["name"] if not form_input["birthday"] == account.birthday: date = form_input["birthday"].split('/') account.birthday = date[2] + date[0] + date[1] try: if not form_input["phone"] == account.get("mobile"): ldap_multi_update(uid, "mobile", form_input["phone"]) except KeyError: ldap_multi_update(uid, "mobile", form_input["phone"]) if not form_input["plex"] == account.plex: account.plex = form_input["plex"] if "major" in form_input.keys(): if not form_input["major"] == account.major: account.major = form_input["major"] if "minor" in form_input.keys(): if not form_input["minor"] == account.minor: account.minor = form_input["minor"] if "ritYear" in form_input.keys(): if not form_input["ritYear"] == account.ritYear: account.ritYear = form_input["ritYear"] if not form_input["website"] == account.homepageURL: account.homepageURL = form_input["website"] if not form_input["twitter"] == account.twitterName: account.twitterName = form_input["twitter"] if not form_input["blog"] == account.blogURL: account.blogURL = form_input["blog"] if not form_input["resume"] == account.resumeURL: account.resumeURL = form_input["resume"] if not form_input["google"] == account.googleScreenName: account.googleScreenName = form_input["google"] try: if not form_input["mail"] == account.mail: ldap_multi_update(uid, "mail", form_input["mail"]) except KeyError: ldap_multi_update(uid, "mail", form_input["mail"]) try: if not form_input["nickname"] == account.nickname: ldap_multi_update(uid, "nickname", form_input["nickname"]) except KeyError: ldap_multi_update(uid, "nickname", form_input["nickname"]) if not form_input["shell"] == account.shell: account.loginShell = form_input["shell"]
def ldap_get_member(username): try: return _ldap.get_member(username, uid=True) except KeyError as kerr: raise BadQueryError("invalid user") from kerr