diff --git a/memberPlumbing/sqlExport.py b/memberPlumbing/sqlExport.py index 8f14874..59dc6ff 100755 --- a/memberPlumbing/sqlExport.py +++ b/memberPlumbing/sqlExport.py @@ -22,6 +22,12 @@ def do_import(config): ] ).on_conflict(action="update", preserve=[Flag.name, Flag.type]).execute() + print("Getting folder membership...") + folders = { + folder_id: membershipworks.get_member_ids([folder_name]) + for folder_name, folder_id in membershipworks._parse_flags()["folders"].items() + } + print("Getting/Updating members...") members = membershipworks.get_all_members() for m in members: @@ -44,13 +50,14 @@ def do_import(config): # update member's flags for type, flags in membershipworks._parse_flags().items(): - if type != "folders": # currently no way to retrieve this info - for flag, id in flags.items(): - ml = MemberFlag(uid=member["Account ID"], flag_id=id) - if member[flag]: - ml.magic_save() - else: - ml.delete_instance() + for flag, id in flags.items(): + ml = MemberFlag(uid=member["Account ID"], flag_id=id) + if (type == "folders" and member["Account ID"] in folders[id]) or ( + type != "folders" and member[flag] + ): + ml.magic_save() + else: + ml.delete_instance() print("Getting/Updating transactions...") # Deduping these is hard, so just recreate the data every time diff --git a/memberPlumbing/ucsAccounts.py b/memberPlumbing/ucsAccounts.py index 310ea64..48ea239 100755 --- a/memberPlumbing/ucsAccounts.py +++ b/memberPlumbing/ucsAccounts.py @@ -29,7 +29,7 @@ def sanitize_group_name(name): # From an API error message: "Username must only contain numbers, letters and dots!" def sanitize_user_name(name): - return re.sub(r"[^0-9a-z.]", ".", name.lower()) + return re.sub(r"[^0-9a-z.]", ".", name.lower()).strip(".") async def make_groups(group_mod, members):