From 7e193d830aba83ad875387b2f953011d893c5042 Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Tue, 6 Aug 2019 18:27:17 -0400 Subject: [PATCH 1/5] Fixing edge cases --- packet/commands.py | 29 +++++++++++++++-------------- packet/ldap.py | 10 +++++----- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/packet/commands.py b/packet/commands.py index 3339e87c..fdccf818 100644 --- a/packet/commands.py +++ b/packet/commands.py @@ -9,8 +9,8 @@ from . import app, db from .models import Freshman, Packet, FreshSignature, UpperSignature, MiscSignature -from .ldap import ldap_get_eboard_role, ldap_get_active_rtp, ldap_get_3da, ldap_get_webmaster, ldap_get_drink_admin, \ - ldap_get_constitutional_maintainer, ldap_is_intromember, ldap_get_active_members, ldap_is_on_coop +from .ldap import ldap_get_eboard_role, ldap_get_active_rtps, ldap_get_3das, ldap_get_webmasters, ldap_get_drink_admins, \ + ldap_get_constitutional_maintainers, ldap_is_intromember, ldap_get_active_members, ldap_is_on_coop @app.cli.command("create-secret") @@ -117,11 +117,11 @@ def create_packets(freshmen_csv): all_upper = list(filter(lambda member: not ldap_is_intromember(member), ldap_get_active_members())) on_coop = list(filter(lambda member: ldap_is_on_coop(member), ldap_get_active_members())) - rtp = ldap_get_active_rtp() - three_da = ldap_get_3da() - webmaster = ldap_get_webmaster() - c_m = ldap_get_constitutional_maintainer() - drink = ldap_get_drink_admin() + rtp = ldap_get_active_rtps() + three_da = ldap_get_3das() + webmaster = ldap_get_webmasters() + c_m = ldap_get_constitutional_maintainers() + drink = ldap_get_drink_admins() # Create the new packets and the signatures for each freshman in the given CSV freshmen_in_csv = parse_csv(freshmen_csv) @@ -159,16 +159,16 @@ def ldap_sync(): on_coop = {member.uid: member for member in filter(lambda member: ldap_is_on_coop(member), ldap_get_active_members())} - rtp = ldap_get_active_rtp() - three_da = ldap_get_3da() - webmaster = ldap_get_webmaster() - c_m = ldap_get_constitutional_maintainer() - drink = ldap_get_drink_admin() + rtp = ldap_get_active_rtps() + three_da = ldap_get_3das() + webmaster = ldap_get_webmasters() + c_m = ldap_get_constitutional_maintainers() + drink = ldap_get_drink_admins() print("Applying updates to the DB...") for packet in Packet.query.filter(Packet.end > datetime.now()).all(): # Update the role state of all UpperSignatures - for sig in filter(lambda sig: sig.member in all_upper, packet.upper_signatures): + for sig in filter(lambda sig: sig.member in all_upper and not on_coop, packet.upper_signatures): sig.eboard = ldap_get_eboard_role(all_upper[sig.member]) sig.active_rtp = sig.member in rtp sig.three_da = sig.member in three_da @@ -205,7 +205,8 @@ def ldap_sync(): # Create UpperSignatures for any new active members # pylint: disable=cell-var-from-loop upper_sigs = set(map(lambda sig: sig.member, packet.upper_signatures)) - for member in filter(lambda member: member not in upper_sigs, all_upper): + co_op = set(map(lambda member: member, on_coop)) + for member in filter(lambda member: member not in upper_sigs or co_op, all_upper): UpperSignature(packet=packet, member=member) sig.eboard = ldap_get_eboard_role(all_upper[sig.member]) sig.active_rtp = sig.member in rtp diff --git a/packet/ldap.py b/packet/ldap.py index 627b219a..79a1abfd 100644 --- a/packet/ldap.py +++ b/packet/ldap.py @@ -80,7 +80,7 @@ def ldap_get_live_onfloor(): return members -def ldap_get_active_rtp(): +def ldap_get_active_rtps(): """ All active RTPs :return: A list of CSHMember instances @@ -88,7 +88,7 @@ def ldap_get_active_rtp(): return [member.uid for member in _ldap_get_group_members("active_rtp")] -def ldap_get_3da(): +def ldap_get_3das(): """ All 3das :return: A list of CSHMember instances @@ -96,7 +96,7 @@ def ldap_get_3da(): return [member.uid for member in _ldap_get_group_members("3da")] -def ldap_get_webmaster(): +def ldap_get_webmasters(): """ All webmasters :return: A list of CSHMember instances @@ -104,7 +104,7 @@ def ldap_get_webmaster(): return [member.uid for member in _ldap_get_group_members("webmaster")] -def ldap_get_constitutional_maintainer(): +def ldap_get_constitutional_maintainers(): """ All constitutional maintainers :return: A list of CSHMember instances @@ -112,7 +112,7 @@ def ldap_get_constitutional_maintainer(): return [member.uid for member in _ldap_get_group_members("constitutional_maintainers")] -def ldap_get_drink_admin(): +def ldap_get_drink_admins(): """ All drink admins :return: A list of CSHMember instances From 8df5310a67177b5de6b3f60c15bc3a70f65396af Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Tue, 6 Aug 2019 18:37:39 -0400 Subject: [PATCH 2/5] Fixing line length issue --- packet/commands.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packet/commands.py b/packet/commands.py index fdccf818..a301b455 100644 --- a/packet/commands.py +++ b/packet/commands.py @@ -9,8 +9,9 @@ from . import app, db from .models import Freshman, Packet, FreshSignature, UpperSignature, MiscSignature -from .ldap import ldap_get_eboard_role, ldap_get_active_rtps, ldap_get_3das, ldap_get_webmasters, ldap_get_drink_admins, \ - ldap_get_constitutional_maintainers, ldap_is_intromember, ldap_get_active_members, ldap_is_on_coop +from .ldap import ldap_get_eboard_role, ldap_get_active_rtps, ldap_get_3das, ldap_get_webmasters, \ + ldap_get_drink_admins, ldap_get_constitutional_maintainers, ldap_is_intromember, ldap_get_active_members, \ + ldap_is_on_coop @app.cli.command("create-secret") From e86c5f2e9b49d69fe0e91c5ba1117ac81621cd35 Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Tue, 6 Aug 2019 18:39:59 -0400 Subject: [PATCH 3/5] Removing unnecessary co_op var --- packet/commands.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packet/commands.py b/packet/commands.py index a301b455..cb89ab48 100644 --- a/packet/commands.py +++ b/packet/commands.py @@ -206,8 +206,7 @@ def ldap_sync(): # Create UpperSignatures for any new active members # pylint: disable=cell-var-from-loop upper_sigs = set(map(lambda sig: sig.member, packet.upper_signatures)) - co_op = set(map(lambda member: member, on_coop)) - for member in filter(lambda member: member not in upper_sigs or co_op, all_upper): + for member in filter(lambda member: member not in upper_sigs or on_coop, all_upper): UpperSignature(packet=packet, member=member) sig.eboard = ldap_get_eboard_role(all_upper[sig.member]) sig.active_rtp = sig.member in rtp From ef5af156c9a3bdf17cd487bd747d06bb942b7e6d Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Tue, 6 Aug 2019 18:49:51 -0400 Subject: [PATCH 4/5] Removing co-op from all_upper --- packet/commands.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packet/commands.py b/packet/commands.py index cb89ab48..04025208 100644 --- a/packet/commands.py +++ b/packet/commands.py @@ -155,10 +155,10 @@ def ldap_sync(): Updates the upper and misc sigs in the DB to match ldap. """ print("Fetching data from LDAP...") - all_upper = {member.uid: member for member in filter(lambda member: not ldap_is_intromember(member), - ldap_get_active_members())} - on_coop = {member.uid: member for member in filter(lambda member: ldap_is_on_coop(member), - ldap_get_active_members())} + all_upper = {member.uid: member for member in filter( + lambda member: not ldap_is_intromember(member) and not ldap_is_on_coop(member), ldap_get_active_members())} + on_coop = {member.uid: member for member in filter( + lambda member: ldap_is_on_coop(member), ldap_get_active_members())} rtp = ldap_get_active_rtps() three_da = ldap_get_3das() @@ -169,7 +169,7 @@ def ldap_sync(): print("Applying updates to the DB...") for packet in Packet.query.filter(Packet.end > datetime.now()).all(): # Update the role state of all UpperSignatures - for sig in filter(lambda sig: sig.member in all_upper and not on_coop, packet.upper_signatures): + for sig in filter(lambda sig: sig.member in all_upper, packet.upper_signatures): sig.eboard = ldap_get_eboard_role(all_upper[sig.member]) sig.active_rtp = sig.member in rtp sig.three_da = sig.member in three_da @@ -192,7 +192,7 @@ def ldap_sync(): db.session.add(sig) # Migrate MiscSignatures that are from accounts that are now active members - for sig in filter(lambda sig: sig.member in all_upper and not on_coop, packet.misc_signatures): + for sig in filter(lambda sig: sig.member in all_upper, packet.misc_signatures): MiscSignature.query.filter_by(packet_id=packet.id, member=sig.member).delete() sig = UpperSignature(packet=packet, member=sig.member, signed=True) sig.eboard = ldap_get_eboard_role(all_upper[sig.member]) @@ -206,7 +206,7 @@ def ldap_sync(): # Create UpperSignatures for any new active members # pylint: disable=cell-var-from-loop upper_sigs = set(map(lambda sig: sig.member, packet.upper_signatures)) - for member in filter(lambda member: member not in upper_sigs or on_coop, all_upper): + for member in filter(lambda member: member not in upper_sigs, all_upper): UpperSignature(packet=packet, member=member) sig.eboard = ldap_get_eboard_role(all_upper[sig.member]) sig.active_rtp = sig.member in rtp From 6685c09d3453049a2917cec40864ec4c4e904c14 Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Tue, 6 Aug 2019 18:55:20 -0400 Subject: [PATCH 5/5] Removing co-op case --- packet/commands.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/packet/commands.py b/packet/commands.py index 04025208..47a03dfc 100644 --- a/packet/commands.py +++ b/packet/commands.py @@ -157,8 +157,6 @@ def ldap_sync(): print("Fetching data from LDAP...") all_upper = {member.uid: member for member in filter( lambda member: not ldap_is_intromember(member) and not ldap_is_on_coop(member), ldap_get_active_members())} - on_coop = {member.uid: member for member in filter( - lambda member: ldap_is_on_coop(member), ldap_get_active_members())} rtp = ldap_get_active_rtps() three_da = ldap_get_3das() @@ -184,13 +182,6 @@ def ldap_sync(): sig = MiscSignature(packet=packet, member=sig.member) db.session.add(sig) - # Migrate UpperSignatures that are from accounts that are on co-op currently - for sig in filter(lambda sig: sig.member in on_coop, packet.upper_signatures): - UpperSignature.query.filter_by(packet_id=packet.id, member=sig.member).delete() - if sig.signed: - sig = MiscSignature(packet=packet, member=sig.member) - db.session.add(sig) - # Migrate MiscSignatures that are from accounts that are now active members for sig in filter(lambda sig: sig.member in all_upper, packet.misc_signatures): MiscSignature.query.filter_by(packet_id=packet.id, member=sig.member).delete()