mirror of https://github.com/stijndcl/didier
47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
import traceback
|
|
|
|
import discord.ui
|
|
from discord import Interaction
|
|
from overrides import overrides
|
|
|
|
from database.crud.deadlines import add_deadline
|
|
from database.schemas.relational import UforaCourse
|
|
|
|
__all__ = ["AddDeadline"]
|
|
|
|
from didier import Didier
|
|
|
|
|
|
class AddDeadline(discord.ui.Modal, title="Add Deadline"):
|
|
"""Modal to add a new deadline"""
|
|
|
|
client: Didier
|
|
ufora_course: UforaCourse
|
|
|
|
name: discord.ui.TextInput = discord.ui.TextInput(
|
|
label="Name", placeholder="Project 9001", required=True, style=discord.TextStyle.short
|
|
)
|
|
deadline: discord.ui.TextInput = discord.ui.TextInput(
|
|
label="Deadline", placeholder="DD/MM/YYYY HH:MM:SS*", required=True, style=discord.TextStyle.short
|
|
)
|
|
|
|
def __init__(self, client: Didier, ufora_course: UforaCourse, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
self.client = client
|
|
self.ufora_course = ufora_course
|
|
|
|
@overrides
|
|
async def on_submit(self, interaction: Interaction):
|
|
if not self.name.value or not self.deadline.value:
|
|
return await interaction.response.send_message("Required fields cannot be empty.", ephemeral=True)
|
|
|
|
async with self.client.postgres_session as session:
|
|
await add_deadline(session, self.ufora_course.course_id, self.name.value, self.deadline.value)
|
|
|
|
await interaction.response.send_message("Successfully added new deadline.", ephemeral=True)
|
|
|
|
@overrides
|
|
async def on_error(self, interaction: Interaction, error: Exception): # type: ignore
|
|
await interaction.response.send_message("Something went wrong.", ephemeral=True)
|
|
traceback.print_tb(error.__traceback__)
|