diff --git a/classes/election_cycle.py b/classes/election_cycle.py index 9080e7d..fe845d5 100644 --- a/classes/election_cycle.py +++ b/classes/election_cycle.py @@ -28,7 +28,7 @@ from utils import ( get_cl_election_name, get_datetime, get_dm_election_name, - get_election_cycle_name, + get_election_name, ) @@ -199,7 +199,7 @@ class ElectionCycle: parent: nextcord.TextChannel = self.guild.get_channel( self.config.params.voting_parent_id ) - quarter_name: str = get_election_cycle_name(self.config) + quarter_name: str = get_election_name(self.config) thread_msg: nextcord.Message = await parent.send(content=quarter_name) @@ -247,8 +247,7 @@ class ElectionCycle: with Session(engine) as session: stmt = select(ElectionInformation).where( - ElectionInformation.ElectionCycle - == get_election_cycle_name(self.config) + ElectionInformation.ElectionCycle == get_election_name(self.config) ) info = session.scalar(stmt) info.CouncilVoteMsgId = vote_msg.id @@ -277,7 +276,7 @@ class ElectionCycle: message, view=NominateHighCouncilView(self.config, self.guild) ) - election_name = get_election_cycle_name(self.config) + election_name = get_election_name(self.config) with Session(engine) as session: # remove vote button from vote message @@ -333,8 +332,7 @@ class ElectionCycle: with Session(engine) as session: stmt = select(ElectionInformation).where( - ElectionInformation.ElectionCycle - == get_election_cycle_name(self.config) + ElectionInformation.ElectionCycle == get_election_name(self.config) ) info = session.scalar(stmt) info.HighCouncilVoteMsgId = vote_msg.id @@ -364,9 +362,7 @@ class ElectionCycle: # role management stmt = ( select(CouncilMembers.MemberId) - .where( - CouncilMembers.ElectionCycle == get_election_cycle_name(self.config) - ) + .where(CouncilMembers.ElectionCycle == get_election_name(self.config)) .where(CouncilMembers.Elected == true()) ) @@ -390,7 +386,7 @@ class ElectionCycle: stmt = select(Votes.VotedForId).where(Votes.ElectionCycle == cl_election) cl_votes = collections.Counter(session.scalars(stmt)) - election_cycle = get_election_cycle_name(self.config) + election_cycle = get_election_name(self.config) try: dm_winner = max(dm_votes, key=dm_votes.get) stmt = ( @@ -422,7 +418,7 @@ class ElectionCycle: # clear view from vote message stmt = select(ElectionInformation.HighCouncilVoteMsgId).where( - ElectionInformation.ElectionCycle == get_election_cycle_name(self.config) + ElectionInformation.ElectionCycle == get_election_name(self.config) ) vote_msg_id = session.scalar(stmt) vote_msg: nextcord.Message = await election_thread.fetch_message(vote_msg_id) @@ -451,8 +447,7 @@ class ElectionCycle: with Session(engine) as session: stmt = select(ElectionInformation).where( - ElectionInformation.ElectionCycle - == get_election_cycle_name(self.config) + ElectionInformation.ElectionCycle == get_election_name(self.config) ) return session.scalar(stmt) diff --git a/classes/nominate_highcouncil_views.py b/classes/nominate_highcouncil_views.py index 98e841c..9a32fa8 100644 --- a/classes/nominate_highcouncil_views.py +++ b/classes/nominate_highcouncil_views.py @@ -13,7 +13,7 @@ from utils import ( NOMINEE_SPLITTER, decorate_cl_nomination, decorate_dm_nomination, - get_election_cycle_name, + get_election_name, ) @@ -60,7 +60,7 @@ class NominateDMModal(nextcord.ui.Modal): with Session(engine) as session: # user already in table - cycle = get_election_cycle_name(self.config) + cycle = get_election_name(self.config) stmt = ( select(CouncilMembers) .where(CouncilMembers.ElectionCycle == cycle) @@ -127,7 +127,7 @@ class NominateCLModal(nextcord.ui.Modal): with Session(engine) as session: # user already in table - cycle = get_election_cycle_name(self.config) + cycle = get_election_name(self.config) stmt = ( select(CouncilMembers) .where(CouncilMembers.ElectionCycle == cycle) @@ -189,7 +189,7 @@ class NominateHighCouncilView(nextcord.ui.View): ) return - cycle = get_election_cycle_name(self.config) + cycle = get_election_name(self.config) usr_nominated = False speech_content = "" with Session(engine) as session: @@ -242,7 +242,7 @@ class NominateHighCouncilView(nextcord.ui.View): ) return - cycle = get_election_cycle_name(self.config) + cycle = get_election_name(self.config) usr_nominated = False speech_content = "" with Session(engine) as session: diff --git a/classes/nominate_views.py b/classes/nominate_views.py index 177ae76..cc26bb6 100644 --- a/classes/nominate_views.py +++ b/classes/nominate_views.py @@ -9,7 +9,7 @@ from sqlalchemy.orm import Session from config import DakinyConfig from database_setup.sql_data_classes import CouncilMembers, engine -from utils import NOMINEE_SPLITTER, decorate_nomination, get_election_cycle_name +from utils import NOMINEE_SPLITTER, decorate_nomination, get_election_name class NominateModal(nextcord.ui.Modal): @@ -58,7 +58,7 @@ class NominateModal(nextcord.ui.Modal): msg = await interaction.channel.send(speech) council_member = CouncilMembers( - ElectionCycle=get_election_cycle_name(self.config), + ElectionCycle=get_election_name(self.config), MemberId=interaction.user.id, SpeechMsgId=msg.id, ) @@ -66,7 +66,7 @@ class NominateModal(nextcord.ui.Modal): session.commit() else: # user already nominated, just need to update the election speech - cycle = get_election_cycle_name(self.config) + cycle = get_election_name(self.config) stmt = ( select(CouncilMembers) .where(CouncilMembers.ElectionCycle == cycle) @@ -120,7 +120,7 @@ class NominateView(nextcord.ui.View): ) return - cycle = get_election_cycle_name(self.config) + cycle = get_election_name(self.config) usr_nominated = False speech_content = "" with Session(engine) as session: diff --git a/classes/voting_highcouncil_views.py b/classes/voting_highcouncil_views.py index 385ee7a..3899b57 100644 --- a/classes/voting_highcouncil_views.py +++ b/classes/voting_highcouncil_views.py @@ -21,7 +21,7 @@ from utils import ( build_highcouncil_votes_str, get_cl_election_name, get_dm_election_name, - get_election_cycle_name, + get_election_name, ) @@ -49,7 +49,7 @@ class VoteSelect(nextcord.ui.StringSelect): # should never happen raise ValueError('election type was not "cl" or "dm"') - cycle: str = get_election_cycle_name(self.config) + cycle: str = get_election_name(self.config) with Session(engine) as session: stmt = select(ElectionInformation.HighCouncilVoteMsgId).where( ElectionInformation.ElectionCycle == cycle @@ -135,7 +135,7 @@ class VoteHighcouncilView(nextcord.ui.View): ) return - cycle: str = get_election_cycle_name(self.config) + cycle: str = get_election_name(self.config) election: str = get_cl_election_name(self.config) with Session(engine) as session: @@ -154,9 +154,11 @@ class VoteHighcouncilView(nextcord.ui.View): options = [ SelectOption( - label=f"{self.guild.get_member(nominee).display_name} ☑️" - if voted_for == nominee - else f"{self.guild.get_member(nominee).display_name}", + label=( + f"{self.guild.get_member(nominee).display_name} ☑️" + if voted_for == nominee + else f"{self.guild.get_member(nominee).display_name}" + ), value=str(nominee), ) for nominee in sorted( @@ -211,7 +213,7 @@ class VoteHighcouncilView(nextcord.ui.View): ) return - cycle: str = get_election_cycle_name(self.config) + cycle: str = get_election_name(self.config) election: str = get_dm_election_name(self.config) with Session(engine) as session: @@ -230,9 +232,11 @@ class VoteHighcouncilView(nextcord.ui.View): options = [ SelectOption( - label=f"{self.guild.get_member(nominee).display_name} ☑️" - if voted_for == nominee - else f"{self.guild.get_member(nominee).display_name}", + label=( + f"{self.guild.get_member(nominee).display_name} ☑️" + if voted_for == nominee + else f"{self.guild.get_member(nominee).display_name}" + ), value=str(nominee), ) for nominee in sorted( diff --git a/classes/voting_views.py b/classes/voting_views.py index ef75720..6d1694d 100644 --- a/classes/voting_views.py +++ b/classes/voting_views.py @@ -17,7 +17,7 @@ from database_setup.sql_data_classes import ( Votes, engine, ) -from utils import build_votes_str, get_election_cycle_name +from utils import build_votes_str, get_election_name class VoteSelect(nextcord.ui.StringSelect): @@ -31,7 +31,7 @@ class VoteSelect(nextcord.ui.StringSelect): self.config = config async def callback(self, interaction: Interaction): - election_name = get_election_cycle_name(self.config) + election_name = get_election_name(self.config) with Session(engine) as session: stmt = select(ElectionInformation.CouncilVoteMsgId).where( ElectionInformation.ElectionCycle == election_name @@ -114,7 +114,7 @@ class VoteView(nextcord.ui.View): ) return - election: str = get_election_cycle_name(self.config) + election: str = get_election_name(self.config) with Session(engine) as session: stmt = ( @@ -130,9 +130,11 @@ class VoteView(nextcord.ui.View): options = [ SelectOption( - label=f"{self.guild.get_member(nominee).display_name} ☑️" - if voted_for == nominee - else f"{self.guild.get_member(nominee).display_name}", + label=( + f"{self.guild.get_member(nominee).display_name} ☑️" + if voted_for == nominee + else f"{self.guild.get_member(nominee).display_name}" + ), value=str(nominee), ) for nominee in sorted( diff --git a/utils.py b/utils.py index d42a605..75539cc 100644 --- a/utils.py +++ b/utils.py @@ -49,7 +49,7 @@ def get_datetime(day: str) -> datetime: return datetime(year, month, day) -def get_election_cycle_name(config: DakinyConfig) -> str: +def get_election_name(config: DakinyConfig) -> str: """ Builds the unique name of the current election cycle @@ -65,7 +65,7 @@ def get_election_cycle_name(config: DakinyConfig) -> str: return f"vote-{get_datetime(current_cycle.term_start).year}-{current_cycle.name}" -def get_cycle_name(config: DakinyConfig) -> str: +def get_quarter_name(config: DakinyConfig) -> str: """ Builds the name of the current cycle/quarter @@ -76,7 +76,7 @@ def get_cycle_name(config: DakinyConfig) -> str: str: the name of the cycle. """ - cycle = get_current_cycle(config) + cycle = get_quarter_cycle(config) current_cycle = config.election_cycles[cycle] return f"{get_datetime(current_cycle.term_start).year}-{current_cycle.name}" @@ -93,7 +93,7 @@ def get_dm_election_name(config: DakinyConfig) -> str: str: the name of the election """ - return f"{get_election_cycle_name(config)}-dm" + return f"{get_election_name(config)}-dm" def get_cl_election_name(config: DakinyConfig) -> str: @@ -107,7 +107,7 @@ def get_cl_election_name(config: DakinyConfig) -> str: str: the name of the election """ - return f"{get_election_cycle_name(config)}-cl" + return f"{get_election_name(config)}-cl" def get_current_election_cycle(config: DakinyConfig) -> int: @@ -130,10 +130,11 @@ def get_current_election_cycle(config: DakinyConfig) -> int: ): return cycle - return None + # It isn't a current election, get the quarter + return get_quarter_cycle(config) -def get_current_cycle(config: DakinyConfig) -> int: +def get_quarter_cycle(config: DakinyConfig) -> int: """ Returns the index for the current cycle/quarter. Defined as between term start and end. Shouldn't return none @@ -171,7 +172,7 @@ def build_votes_str(config: DakinyConfig, guild: nextcord.Guild) -> str: with Session(engine) as session: stmt = select(CouncilMembers).where( - CouncilMembers.ElectionCycle == get_election_cycle_name(config) + CouncilMembers.ElectionCycle == get_election_name(config) ) for nominee in sorted( @@ -180,9 +181,7 @@ def build_votes_str(config: DakinyConfig, guild: nextcord.Guild) -> str: ): votes[nominee.MemberId] = 0 - stmt = select(Votes).where( - Votes.ElectionCycle == get_election_cycle_name(config) - ) + stmt = select(Votes).where(Votes.ElectionCycle == get_election_name(config)) for vote in session.scalars(stmt): if vote.VotedForId is not None: @@ -212,7 +211,7 @@ def build_highcouncil_votes_str(config: DakinyConfig, guild: nextcord.Guild) -> with Session(engine) as session: stmt = ( select(CouncilMembers) - .where(CouncilMembers.ElectionCycle == get_election_cycle_name(config)) + .where(CouncilMembers.ElectionCycle == get_election_name(config)) .filter(CouncilMembers.ClanLeaderSpeechId.is_not(None)) ) @@ -230,7 +229,7 @@ def build_highcouncil_votes_str(config: DakinyConfig, guild: nextcord.Guild) -> stmt = ( select(CouncilMembers) - .where(CouncilMembers.ElectionCycle == get_election_cycle_name(config)) + .where(CouncilMembers.ElectionCycle == get_election_name(config)) .filter(CouncilMembers.DiscordManagerSpeechId.is_not(None)) ) @@ -338,7 +337,7 @@ def record_event_participation(config: DakinyConfig, users: list[str], is_member is_member (bool): whether the users are a discord member or not """ - cycle = get_cycle_name(config) + cycle = get_quarter_name(config) participation_point_value = config.params.event_participate_points with Session(engine) as session: for user in users: @@ -372,7 +371,7 @@ def record_event_host(config: DakinyConfig, user: int): config (DakinyConfig): Dakiny config for getting points user (int): Id of user that hosted. """ - cycle = get_cycle_name(config) + cycle = get_quarter_name(config) host_point_value = config.params.event_host_points with Session(engine) as session: stmt = ( @@ -545,7 +544,7 @@ async def edit_clan_council_info(guild: nextcord.Guild, config: DakinyConfig): config.params.clan_info_channel_id ) - election = get_election_cycle_name(config) + election = get_election_name(config) with Session(engine) as session: stmt = ( select(CouncilMembers.MemberId) @@ -571,7 +570,7 @@ async def edit_clan_council_info(guild: nextcord.Guild, config: DakinyConfig): if id not in (discord_manager, clan_leader) ] - quarter = get_cycle_name(config) + quarter = get_quarter_name(config) with open( f"{TEMPLATES_DIR}/council_members.txt", mode="r", encoding="utf8"