Change modal to a view. Still need to fill out functionality.

Funtionality needed: put into database, check on view creation of the user has voted already.
If so, then change the content to show they already voted and who they voted for.
Alert that they can change their vote.
This commit is contained in:
2023-11-02 19:52:20 -04:00
parent 626cca8b81
commit 5b1b4cfecb
+18 -8
View File
@@ -2,8 +2,12 @@
Contains various views to be used while voting. Controls the logic when performing the vote. Contains various views to be used while voting. Controls the logic when performing the vote.
""" """
from typing import List, Optional
import nextcord import nextcord
from nextcord import SelectOption from nextcord import SelectOption
from nextcord.interactions import Interaction
from nextcord.utils import MISSING
from sqlalchemy import select from sqlalchemy import select
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
@@ -12,23 +16,27 @@ from database_setup.sql_data_classes import CouncilMembers, engine
from utils import get_election_cycle_name from utils import get_election_cycle_name
class VoteModal(nextcord.ui.Modal): class VoteActionView(nextcord.ui.View):
""" """
Modal for nominating oneself. User writes a speech and then the callback sends the speech into the correct channel. Modal for nominating oneself. User writes a speech and then the callback sends the speech into the correct channel.
""" """
def __init__(self): def __init__(self):
super().__init__( super().__init__(timeout=300)
"Nomination", self.add_item(VoteSelect())
timeout=5 * 60, # 5 minutes
)
self.list = nextcord.ui.StringSelect(
class VoteSelect(nextcord.ui.StringSelect):
def __init__(self) -> None:
super().__init__(
placeholder="Choose 1",
min_values=1, min_values=1,
max_values=1, max_values=1,
options=[SelectOption(label="one"), SelectOption(label="two"), SelectOption(label="three")], options=[SelectOption(label="one"), SelectOption(label="two"), SelectOption(label="three")],
) )
self.add_item(self.list)
async def callback(self, interaction: Interaction):
await interaction.edit(content=self.values[0], view=None)
class VoteView(nextcord.ui.View): class VoteView(nextcord.ui.View):
@@ -49,4 +57,6 @@ class VoteView(nextcord.ui.View):
interaction (nextcord.Interaction): Interaction of user who pressed the button interaction (nextcord.Interaction): Interaction of user who pressed the button
""" """
await interaction.response.send_modal(VoteModal()) await interaction.response.send_message(
content="Please vote for a clan member!", view=VoteActionView(), ephemeral=True
)