move functions to get election cycle index and name into utils.
build_develop / build (push) Successful in 1m52s
build_develop / build (push) Successful in 1m52s
This commit is contained in:
@@ -152,7 +152,7 @@ class ElectionCycle:
|
||||
"""
|
||||
# create new channel for election
|
||||
category: nextcord.CategoryChannel = self.guild.get_channel(self.config.params.active_category_id)
|
||||
quarter_name: str = get_election_cycle_name()
|
||||
quarter_name: str = get_election_cycle_name(self.config)
|
||||
|
||||
# create new entry into database.
|
||||
election_channel: nextcord.TextChannel = await category.create_text_channel(quarter_name)
|
||||
@@ -226,5 +226,7 @@ class ElectionCycle:
|
||||
"""
|
||||
|
||||
with Session(engine) as session:
|
||||
stmt = select(ElectionInformation).where(ElectionInformation.ElectionCycle == get_election_cycle_name())
|
||||
stmt = select(ElectionInformation).where(
|
||||
ElectionInformation.ElectionCycle == get_election_cycle_name(self.config)
|
||||
)
|
||||
return session.scalar(stmt)
|
||||
|
||||
@@ -15,7 +15,7 @@ from classes.election_cycle import ElectionCycle
|
||||
from config import DakinyConfig
|
||||
from dakiny_bot import birthday_list
|
||||
from database_setup.sql_data_classes import UserBirthday, engine
|
||||
from utils import get_datetime
|
||||
from utils import get_current_cycle
|
||||
|
||||
|
||||
class DailyLoop(commands.Cog, name="Daily Loop"):
|
||||
@@ -40,7 +40,7 @@ class DailyLoop(commands.Cog, name="Daily Loop"):
|
||||
"""
|
||||
|
||||
if self.current_election is None:
|
||||
self.current_election = self.get_current_cycle()
|
||||
self.current_election = self.get_election_cycle()
|
||||
|
||||
if self.current_election is not None:
|
||||
await self.current_election.check_date()
|
||||
@@ -65,9 +65,9 @@ class DailyLoop(commands.Cog, name="Daily Loop"):
|
||||
await self.bot.wait_until_ready()
|
||||
|
||||
# Bot needs to know guilds to get the current cycle.
|
||||
self.current_election = self.get_current_cycle()
|
||||
self.current_election = self.get_election_cycle()
|
||||
|
||||
def get_current_cycle(self) -> ElectionCycle:
|
||||
def get_election_cycle(self) -> ElectionCycle:
|
||||
"""
|
||||
Creates an object for the current election cycle if one is active. An election is considered active
|
||||
between the election start and the term start.
|
||||
@@ -76,18 +76,10 @@ class DailyLoop(commands.Cog, name="Daily Loop"):
|
||||
ElectionCycle: Current election cycle, None if there is no election happening.
|
||||
"""
|
||||
|
||||
today = datetime.today()
|
||||
config: DakinyConfig = self.bot.config
|
||||
current_election = None
|
||||
cycle = get_current_cycle(config)
|
||||
|
||||
for cycle, election in enumerate(config.election_cycles):
|
||||
if (
|
||||
today.date() >= get_datetime(election.election_start).date()
|
||||
and today.date() <= get_datetime(election.term_start).date()
|
||||
):
|
||||
current_election = ElectionCycle(cycle, config, self.bot.get_guild(config.params.guild_id))
|
||||
|
||||
return current_election
|
||||
return ElectionCycle(cycle, config, self.bot.get_guild(config.params.guild_id))
|
||||
|
||||
def update_birthdays(self) -> None:
|
||||
"""
|
||||
|
||||
@@ -35,6 +35,30 @@ def get_election_cycle_name(config: DakinyConfig) -> str:
|
||||
Returns:
|
||||
str: the name of the election cycle
|
||||
"""
|
||||
# TODO finish
|
||||
cycle = get_current_cycle(config)
|
||||
current_cycle = config.election_cycles[cycle]
|
||||
|
||||
return f"vote-{election_start.year}-{election_cycle.name}"
|
||||
return f"vote-{get_datetime(current_cycle.election_start).year}-{current_cycle.name}"
|
||||
|
||||
|
||||
def get_current_cycle(config: DakinyConfig) -> int:
|
||||
"""
|
||||
Returns index for active election. An election is considered active between the election start and the term start.
|
||||
|
||||
Args:
|
||||
config (DakinyConfig): Config object to use
|
||||
|
||||
Returns:
|
||||
int: cycle index for active election. -1 for no active cycle
|
||||
"""
|
||||
|
||||
today = datetime.today()
|
||||
|
||||
for cycle, election in enumerate(config.election_cycles):
|
||||
if (
|
||||
today.date() >= get_datetime(election.election_start).date()
|
||||
and today.date() <= get_datetime(election.term_start).date()
|
||||
):
|
||||
return cycle
|
||||
|
||||
return -1
|
||||
|
||||
Reference in New Issue
Block a user