Change ElectionCycle class to Election. Change ElectionCycle column in database to ElectionName. Update some variables for clarification.
This commit is contained in:
@@ -31,9 +31,9 @@ from utils import (
|
||||
REQUIRED_VOTES_TO_BE_ELECTED = 3
|
||||
|
||||
|
||||
class ElectionCycle:
|
||||
class Election:
|
||||
"""
|
||||
ElectionCycle class.
|
||||
Election class.
|
||||
|
||||
This class represents all the dates required for an election cycle along with all the functions needed to operate
|
||||
the cycle.
|
||||
@@ -183,7 +183,7 @@ class ElectionCycle:
|
||||
# create new entry into database.
|
||||
with Session(engine) as session:
|
||||
new_cycle = ElectionInformation(
|
||||
ElectionCycle=quarter_name,
|
||||
ElectionName=quarter_name,
|
||||
ThreadId=thread.id,
|
||||
CouncilNominationMsgId=nominate_msg.id,
|
||||
)
|
||||
@@ -206,9 +206,7 @@ class ElectionCycle:
|
||||
)
|
||||
|
||||
with Session(engine) as session:
|
||||
stmt = select(ElectionInformation).where(
|
||||
ElectionInformation.ElectionCycle == get_election_name(self.config)
|
||||
)
|
||||
stmt = select(ElectionInformation).where(ElectionInformation.ElectionName == get_election_name(self.config))
|
||||
info = session.scalar(stmt)
|
||||
info.CouncilVoteMsgId = vote_msg.id
|
||||
session.commit()
|
||||
@@ -231,7 +229,7 @@ class ElectionCycle:
|
||||
|
||||
with Session(engine) as session:
|
||||
# remove vote button from vote message
|
||||
stmt = select(ElectionInformation).where(ElectionInformation.ElectionCycle == election_name)
|
||||
stmt = select(ElectionInformation).where(ElectionInformation.ElectionName == election_name)
|
||||
info = session.scalar(stmt)
|
||||
vote_msg: nextcord.Message = await election_thread.fetch_message(info.CouncilVoteMsgId)
|
||||
await vote_msg.edit(view=None)
|
||||
@@ -243,7 +241,7 @@ class ElectionCycle:
|
||||
# add the highcouncil role to everyone with 3 or more votes. set elected to true in database
|
||||
stmt = (
|
||||
select(Votes.VotedForId)
|
||||
.where(Votes.ElectionCycle == election_name)
|
||||
.where(Votes.ElectionName == election_name)
|
||||
.where(Votes.Type == VoteType.COUNCIL)
|
||||
)
|
||||
vote_count = collections.Counter(session.scalars(stmt))
|
||||
@@ -252,7 +250,7 @@ class ElectionCycle:
|
||||
if votes >= REQUIRED_VOTES_TO_BE_ELECTED:
|
||||
stmt = (
|
||||
select(CouncilMembers)
|
||||
.where(CouncilMembers.ElectionCycle == election_name)
|
||||
.where(CouncilMembers.ElectionName == election_name)
|
||||
.where(CouncilMembers.MemberId == user_id)
|
||||
)
|
||||
council_member = session.scalar(stmt)
|
||||
@@ -277,9 +275,7 @@ class ElectionCycle:
|
||||
)
|
||||
|
||||
with Session(engine) as session:
|
||||
stmt = select(ElectionInformation).where(
|
||||
ElectionInformation.ElectionCycle == get_election_name(self.config)
|
||||
)
|
||||
stmt = select(ElectionInformation).where(ElectionInformation.ElectionName == get_election_name(self.config))
|
||||
info = session.scalar(stmt)
|
||||
info.HighCouncilVoteMsgId = vote_msg.id
|
||||
session.commit()
|
||||
@@ -295,13 +291,13 @@ class ElectionCycle:
|
||||
elect_role: nextcord.Role = self.guild.get_role(self.config.params.clan_council_elect_role_id)
|
||||
council_role: nextcord.Role = self.guild.get_role(self.config.params.clan_council_role_id)
|
||||
|
||||
election_cycle = get_election_name(self.config)
|
||||
election_name = get_election_name(self.config)
|
||||
|
||||
with Session(engine) as session:
|
||||
# role management
|
||||
stmt = (
|
||||
select(CouncilMembers.MemberId)
|
||||
.where(CouncilMembers.ElectionCycle == election_cycle)
|
||||
.where(CouncilMembers.ElectionName == election_name)
|
||||
.where(CouncilMembers.Elected == true())
|
||||
)
|
||||
|
||||
@@ -320,13 +316,13 @@ class ElectionCycle:
|
||||
# ties are undefined behavior.
|
||||
stmt = (
|
||||
select(Votes.VotedForId)
|
||||
.where(Votes.ElectionCycle == election_cycle)
|
||||
.where(Votes.ElectionName == election_name)
|
||||
.where(Votes.Type == VoteType.DISCORDMANAGER)
|
||||
)
|
||||
dm_votes = collections.Counter(session.scalars(stmt))
|
||||
stmt = (
|
||||
select(Votes.VotedForId)
|
||||
.where(Votes.ElectionCycle == election_cycle)
|
||||
.where(Votes.ElectionName == election_name)
|
||||
.where(Votes.Type == VoteType.CLANLEADER)
|
||||
)
|
||||
cl_votes = collections.Counter(session.scalars(stmt))
|
||||
@@ -335,7 +331,7 @@ class ElectionCycle:
|
||||
dm_winner = max(dm_votes, key=dm_votes.get)
|
||||
stmt = (
|
||||
update(CouncilMembers)
|
||||
.where(CouncilMembers.ElectionCycle == election_cycle)
|
||||
.where(CouncilMembers.ElectionName == election_name)
|
||||
.where(CouncilMembers.MemberId == dm_winner)
|
||||
.values(DiscordManager=True)
|
||||
)
|
||||
@@ -346,7 +342,7 @@ class ElectionCycle:
|
||||
cl_winner = max(cl_votes, key=cl_votes.get)
|
||||
stmt = (
|
||||
update(CouncilMembers)
|
||||
.where(CouncilMembers.ElectionCycle == election_cycle)
|
||||
.where(CouncilMembers.ElectionName == election_name)
|
||||
.where(CouncilMembers.MemberId == cl_winner)
|
||||
.values(ClanLeader=True)
|
||||
)
|
||||
@@ -360,7 +356,7 @@ class ElectionCycle:
|
||||
|
||||
# clear view from vote message
|
||||
stmt = select(ElectionInformation.HighCouncilVoteMsgId).where(
|
||||
ElectionInformation.ElectionCycle == get_election_name(self.config)
|
||||
ElectionInformation.ElectionName == get_election_name(self.config)
|
||||
)
|
||||
vote_msg_id = session.scalar(stmt)
|
||||
vote_msg: nextcord.Message = await election_thread.fetch_message(vote_msg_id)
|
||||
@@ -383,9 +379,7 @@ class ElectionCycle:
|
||||
ElectionInformation: The information from the database about the current election.
|
||||
"""
|
||||
with Session(engine) as session:
|
||||
stmt = select(ElectionInformation).where(
|
||||
ElectionInformation.ElectionCycle == get_election_name(self.config)
|
||||
)
|
||||
stmt = select(ElectionInformation).where(ElectionInformation.ElectionName == get_election_name(self.config))
|
||||
return session.scalar(stmt)
|
||||
|
||||
async def election_reminder(self) -> None:
|
||||
@@ -58,10 +58,10 @@ class NominateDMModal(nextcord.ui.Modal):
|
||||
|
||||
with Session(engine) as session:
|
||||
# user already in table
|
||||
cycle = get_election_name(self.config)
|
||||
election_name = get_election_name(self.config)
|
||||
stmt = (
|
||||
select(CouncilMembers)
|
||||
.where(CouncilMembers.ElectionCycle == cycle)
|
||||
.where(CouncilMembers.ElectionName == election_name)
|
||||
.where(CouncilMembers.MemberId == self.usr_id)
|
||||
)
|
||||
council_elect = session.scalar(stmt)
|
||||
@@ -120,10 +120,10 @@ class NominateCLModal(nextcord.ui.Modal):
|
||||
|
||||
with Session(engine) as session:
|
||||
# user already in table
|
||||
cycle = get_election_name(self.config)
|
||||
election_name = get_election_name(self.config)
|
||||
stmt = (
|
||||
select(CouncilMembers)
|
||||
.where(CouncilMembers.ElectionCycle == cycle)
|
||||
.where(CouncilMembers.ElectionName == election_name)
|
||||
.where(CouncilMembers.MemberId == self.usr_id)
|
||||
)
|
||||
council_elect = session.scalar(stmt)
|
||||
@@ -170,13 +170,13 @@ class NominateHighCouncilView(nextcord.ui.View):
|
||||
)
|
||||
return
|
||||
|
||||
cycle = get_election_name(self.config)
|
||||
election_name = get_election_name(self.config)
|
||||
usr_nominated = False
|
||||
speech_content = ""
|
||||
with Session(engine) as session:
|
||||
stmt = (
|
||||
select(CouncilMembers)
|
||||
.where(CouncilMembers.ElectionCycle == cycle)
|
||||
.where(CouncilMembers.ElectionName == election_name)
|
||||
.where(CouncilMembers.MemberId == interaction.user.id)
|
||||
)
|
||||
obj = session.scalar(stmt)
|
||||
@@ -215,13 +215,13 @@ class NominateHighCouncilView(nextcord.ui.View):
|
||||
)
|
||||
return
|
||||
|
||||
cycle = get_election_name(self.config)
|
||||
election_name = get_election_name(self.config)
|
||||
usr_nominated = False
|
||||
speech_content = ""
|
||||
with Session(engine) as session:
|
||||
stmt = (
|
||||
select(CouncilMembers)
|
||||
.where(CouncilMembers.ElectionCycle == cycle)
|
||||
.where(CouncilMembers.ElectionName == election_name)
|
||||
.where(CouncilMembers.MemberId == interaction.user.id)
|
||||
)
|
||||
obj = session.scalar(stmt)
|
||||
|
||||
@@ -50,13 +50,14 @@ class NominateModal(nextcord.ui.Modal):
|
||||
|
||||
"""
|
||||
speech = decorate_nomination(interaction.user.id, self.speech.value)
|
||||
election_name = get_election_name(self.config)
|
||||
|
||||
with Session(engine) as session:
|
||||
if not self.usr_nominated:
|
||||
msg = await interaction.channel.send(speech)
|
||||
|
||||
council_member = CouncilMembers(
|
||||
ElectionCycle=get_election_name(self.config),
|
||||
ElectionName=election_name,
|
||||
MemberId=interaction.user.id,
|
||||
SpeechMsgId=msg.id,
|
||||
)
|
||||
@@ -64,10 +65,9 @@ class NominateModal(nextcord.ui.Modal):
|
||||
session.commit()
|
||||
else:
|
||||
# user already nominated, just need to update the election speech
|
||||
cycle = get_election_name(self.config)
|
||||
stmt = (
|
||||
select(CouncilMembers)
|
||||
.where(CouncilMembers.ElectionCycle == cycle)
|
||||
.where(CouncilMembers.ElectionName == election_name)
|
||||
.where(CouncilMembers.MemberId == self.usr_id)
|
||||
)
|
||||
obj = session.scalar(stmt)
|
||||
@@ -91,7 +91,7 @@ class NominateView(nextcord.ui.View):
|
||||
)
|
||||
async def nominate(self, button: nextcord.ui.Button, interaction: nextcord.Interaction) -> None: # noqa: ARG002
|
||||
"""
|
||||
Button to nominate onself for Clan Council.
|
||||
Button to nominate oneself for Clan Council.
|
||||
|
||||
Gathers previous information about the user if they have already nominated themselves, then launches
|
||||
the nomination modal to get their speech.
|
||||
@@ -108,13 +108,13 @@ class NominateView(nextcord.ui.View):
|
||||
)
|
||||
return
|
||||
|
||||
cycle = get_election_name(self.config)
|
||||
election_name = get_election_name(self.config)
|
||||
usr_nominated = False
|
||||
speech_content = ""
|
||||
with Session(engine) as session:
|
||||
stmt = (
|
||||
select(CouncilMembers)
|
||||
.where(CouncilMembers.ElectionCycle == cycle)
|
||||
.where(CouncilMembers.ElectionName == election_name)
|
||||
.where(CouncilMembers.MemberId == interaction.user.id)
|
||||
)
|
||||
obj = session.scalar(stmt)
|
||||
|
||||
@@ -41,14 +41,14 @@ class VoteSelect(nextcord.ui.StringSelect):
|
||||
election_name: str = get_election_name(self.config)
|
||||
with Session(engine) as session:
|
||||
stmt = select(ElectionInformation.HighCouncilVoteMsgId).where(
|
||||
ElectionInformation.ElectionCycle == election_name
|
||||
ElectionInformation.ElectionName == election_name
|
||||
)
|
||||
vote_msg_id = session.scalar(stmt)
|
||||
|
||||
voted_for = None if self.values[0] == "Abstain" else int(self.values[0])
|
||||
|
||||
new_vote = Votes(
|
||||
ElectionCycle=election_name,
|
||||
ElectionName=election_name,
|
||||
VoterId=interaction.user.id,
|
||||
VotedForId=voted_for,
|
||||
Type=self.election_type,
|
||||
@@ -63,7 +63,7 @@ class VoteSelect(nextcord.ui.StringSelect):
|
||||
session.rollback()
|
||||
stmt = (
|
||||
update(Votes)
|
||||
.where(Votes.ElectionCycle == election_name)
|
||||
.where(Votes.ElectionName == election_name)
|
||||
.where(Votes.VoterId == interaction.user.id)
|
||||
.where(Votes.Type == self.election_type)
|
||||
.values(VotedForId=voted_for)
|
||||
@@ -118,7 +118,7 @@ class VoteHighcouncilView(nextcord.ui.View):
|
||||
with Session(engine) as session:
|
||||
stmt = (
|
||||
select(Votes.VotedForId)
|
||||
.where(Votes.ElectionCycle == election_name)
|
||||
.where(Votes.ElectionName == election_name)
|
||||
.where(Votes.VoterId == interaction.user.id)
|
||||
.where(Votes.Type == VoteType.CLANLEADER)
|
||||
)
|
||||
@@ -126,7 +126,7 @@ class VoteHighcouncilView(nextcord.ui.View):
|
||||
|
||||
stmt = (
|
||||
select(CouncilMembers.MemberId)
|
||||
.where(CouncilMembers.ElectionCycle == election_name)
|
||||
.where(CouncilMembers.ElectionName == election_name)
|
||||
.filter(CouncilMembers.ClanLeaderSpeechId.is_not(None))
|
||||
)
|
||||
|
||||
@@ -190,7 +190,7 @@ class VoteHighcouncilView(nextcord.ui.View):
|
||||
with Session(engine) as session:
|
||||
stmt = (
|
||||
select(Votes.VotedForId)
|
||||
.where(Votes.ElectionCycle == election_name)
|
||||
.where(Votes.ElectionName == election_name)
|
||||
.where(Votes.VoterId == interaction.user.id)
|
||||
.where(Votes.Type == VoteType.DISCORDMANAGER)
|
||||
)
|
||||
@@ -198,7 +198,7 @@ class VoteHighcouncilView(nextcord.ui.View):
|
||||
|
||||
stmt = (
|
||||
select(CouncilMembers.MemberId)
|
||||
.where(CouncilMembers.ElectionCycle == election_name)
|
||||
.where(CouncilMembers.ElectionName == election_name)
|
||||
.filter(CouncilMembers.DiscordManagerSpeechId.is_not(None))
|
||||
)
|
||||
|
||||
|
||||
@@ -39,15 +39,13 @@ class VoteSelect(nextcord.ui.StringSelect):
|
||||
"""
|
||||
election_name = get_election_name(self.config)
|
||||
with Session(engine) as session:
|
||||
stmt = select(ElectionInformation.CouncilVoteMsgId).where(
|
||||
ElectionInformation.ElectionCycle == election_name
|
||||
)
|
||||
stmt = select(ElectionInformation.CouncilVoteMsgId).where(ElectionInformation.ElectionName == election_name)
|
||||
vote_msg_id = session.scalar(stmt)
|
||||
|
||||
voted_for = None if self.values[0] == "Abstain" else int(self.values[0])
|
||||
|
||||
new_vote = Votes(
|
||||
ElectionCycle=election_name,
|
||||
ElectionName=election_name,
|
||||
VoterId=interaction.user.id,
|
||||
VotedForId=voted_for,
|
||||
Type=VoteType.COUNCIL,
|
||||
@@ -61,7 +59,7 @@ class VoteSelect(nextcord.ui.StringSelect):
|
||||
session.rollback()
|
||||
stmt = (
|
||||
update(Votes)
|
||||
.where(Votes.ElectionCycle == election_name)
|
||||
.where(Votes.ElectionName == election_name)
|
||||
.where(Votes.VoterId == interaction.user.id)
|
||||
.where(Votes.Type == VoteType.COUNCIL)
|
||||
.values(VotedForId=voted_for)
|
||||
@@ -106,18 +104,18 @@ class VoteView(nextcord.ui.View):
|
||||
)
|
||||
return
|
||||
|
||||
election: str = get_election_name(self.config)
|
||||
election_name: str = get_election_name(self.config)
|
||||
|
||||
with Session(engine) as session:
|
||||
stmt = (
|
||||
select(Votes.VotedForId)
|
||||
.where(Votes.ElectionCycle == election)
|
||||
.where(Votes.ElectionName == election_name)
|
||||
.where(Votes.VoterId == interaction.user.id)
|
||||
.where(Votes.Type == VoteType.COUNCIL)
|
||||
)
|
||||
voted_for = session.scalar(stmt)
|
||||
|
||||
stmt = select(CouncilMembers.MemberId).where(CouncilMembers.ElectionCycle == election)
|
||||
stmt = select(CouncilMembers.MemberId).where(CouncilMembers.ElectionName == election_name)
|
||||
|
||||
options = [
|
||||
SelectOption(
|
||||
|
||||
Reference in New Issue
Block a user