diff --git a/classes/submission.py b/classes/submission.py index 05c2c1d..638b3bf 100644 --- a/classes/submission.py +++ b/classes/submission.py @@ -5,6 +5,10 @@ Contains classes and enum for tracking data on submissions. from enum import Enum from nextcord import Embed +from sqlalchemy import select + +# pylint: disable=import-error +from utilities.sql_alchemy_connection import Category, CategoryGroup, session class SubmissionState(Enum): @@ -190,9 +194,19 @@ class Submission: embed = Embed(title="Highscores Submission", description=description) embed.add_field(name="User Name", value=self.username, inline=False) - embed.add_field(name="GroupId", value=self.group_id, inline=False) + stmt = ( + select(CategoryGroup.GroupName) + .where(CategoryGroup.GuildId == self.guild_id) + .where(CategoryGroup.GroupId == self.group_id) + ) + embed.add_field(name="Group", value=session.scalar(stmt), inline=False) if self.category_id: - embed.add_field(name="CategoryId", value=self.category_id, inline=False) + stmt = ( + select(Category.CategoryName) + .where(Category.GroupId == self.group_id) + .where(Category.CategoryId == self.category_id) + ) + embed.add_field(name="Category", value=session.scalar(stmt), inline=False) if self.score: embed.add_field(name="Score", value=self.score, inline=False) return embed diff --git a/cogs/commands/data_management.py b/cogs/commands/data_management.py index a9252db..3936729 100644 --- a/cogs/commands/data_management.py +++ b/cogs/commands/data_management.py @@ -9,7 +9,7 @@ from nextcord.ext import commands from sqlalchemy import distinct, select # pylint: disable=import-error -from highscores import Category, CategoryGroup, Guild, Score, session +from utilities.sql_alchemy_connection import Category, CategoryGroup, Guild, Score, session from utilities.utils import ( autofill_categories, autofill_groups, diff --git a/cogs/commands/message_management.py b/cogs/commands/message_management.py index 5c38a76..32e86c2 100644 --- a/cogs/commands/message_management.py +++ b/cogs/commands/message_management.py @@ -10,7 +10,7 @@ from sqlalchemy import select # pylint: disable=import-error from cogs.submission.submission_views import SubmissionCreateButton -from highscores import CategoryGroup, session +from utilities.sql_alchemy_connection import CategoryGroup, session from utilities.utils import autofill_groups, send_highscore_message diff --git a/cogs/commands/settings_management.py b/cogs/commands/settings_management.py index cf241f3..0dfc46c 100644 --- a/cogs/commands/settings_management.py +++ b/cogs/commands/settings_management.py @@ -9,7 +9,7 @@ from nextcord.ext import commands from sqlalchemy import select # pylint: disable=import-error -from highscores import CategoryGroup, Guild, session +from utilities.sql_alchemy_connection import CategoryGroup, Guild, session from utilities.utils import autofill_groups diff --git a/cogs/commands/views/update_username_verify.py b/cogs/commands/views/update_username_verify.py index 96da09d..64abd14 100644 --- a/cogs/commands/views/update_username_verify.py +++ b/cogs/commands/views/update_username_verify.py @@ -4,7 +4,7 @@ import nextcord from sqlalchemy import distinct, select # pylint: disable=import-error -from highscores import Category, CategoryGroup, Score, session +from utilities.sql_alchemy_connection import Category, CategoryGroup, Score, session from utilities.utils import send_highscore_message diff --git a/cogs/guild_listener/__init__.py b/cogs/guild_listener/__init__.py index e11aa0c..de87bc4 100644 --- a/cogs/guild_listener/__init__.py +++ b/cogs/guild_listener/__init__.py @@ -6,7 +6,7 @@ import nextcord from nextcord.ext import commands # pylint: disable=import-error -from highscores import Guild, session +from utilities.sql_alchemy_connection import Guild, session from utilities.utils import add_preset_configuration diff --git a/cogs/message_listener/__init__.py b/cogs/message_listener/__init__.py index ffebe98..b9a230d 100644 --- a/cogs/message_listener/__init__.py +++ b/cogs/message_listener/__init__.py @@ -11,7 +11,8 @@ from sqlalchemy.orm import aliased # pylint: disable=import-error from classes.submission import SubmissionState -from highscores import Category, CategoryGroup, Guild, session, submission_objects +from highscores import submission_objects +from utilities.sql_alchemy_connection import Category, CategoryGroup, Guild, session class SubmissionListener(commands.Cog, name="Message Listener"): diff --git a/cogs/submission/submission_views.py b/cogs/submission/submission_views.py index 1a35136..8f6189d 100644 --- a/cogs/submission/submission_views.py +++ b/cogs/submission/submission_views.py @@ -9,7 +9,8 @@ from sqlalchemy.orm import aliased # pylint: disable=import-error from classes.submission import Submission, SubmissionState -from highscores import Category, Guild, CategoryGroup, session, submission_objects +from utilities.sql_alchemy_connection import Category, Guild, CategoryGroup, session +from highscores import submission_objects from .verification_view import VerificationView diff --git a/highscores.py b/highscores.py index 3b7c0f7..ad1e56b 100644 --- a/highscores.py +++ b/highscores.py @@ -8,9 +8,6 @@ import sys import nextcord from nextcord.ext import commands -from sqlalchemy import create_engine -from sqlalchemy.ext.automap import automap_base -from sqlalchemy.orm import Session import config from classes.submission import SubmissionMap @@ -21,20 +18,6 @@ handler = logging.FileHandler(filename="nextcord.log", encoding="utf-8", mode="w handler.setFormatter(logging.Formatter("%(asctime)s:%(levelname)s:%(name)s: %(message)s")) logger.addHandler(handler) -# connect with sql alchemy and autoload schema -url = f"mysql://{config.SQL_USER}:{config.SQL_PASS}@{config.SQL_HOST}/{config.SQL_DB}" -engine = create_engine(url) -connection = engine.connect() -Base = automap_base() -Base.prepare(autoload_with=engine) -session = Session(engine) - -# define the classes -Guild = Base.classes.Guilds -CategoryGroup = Base.classes.CategoryGroups -Category = Base.classes.Categories -Score = Base.classes.Scores - submission_objects: SubmissionMap = SubmissionMap() diff --git a/utilities/sql_alchemy_connection.py b/utilities/sql_alchemy_connection.py new file mode 100644 index 0000000..1eacfda --- /dev/null +++ b/utilities/sql_alchemy_connection.py @@ -0,0 +1,22 @@ +""" +Simple file to set up the sqlalchemy connection to database. +""" +from sqlalchemy import create_engine +from sqlalchemy.ext.automap import automap_base +from sqlalchemy.orm import Session + +import config + +# connect with sql alchemy and autoload schema +url = f"mysql://{config.SQL_USER}:{config.SQL_PASS}@{config.SQL_HOST}/{config.SQL_DB}" +engine = create_engine(url) +connection = engine.connect() +Base = automap_base() +Base.prepare(autoload_with=engine) +session = Session(engine) + +# define the classes +Guild = Base.classes.Guilds +CategoryGroup = Base.classes.CategoryGroups +Category = Base.classes.Categories +Score = Base.classes.Scores diff --git a/utilities/utils.py b/utilities/utils.py index 5eeae46..0823792 100644 --- a/utilities/utils.py +++ b/utilities/utils.py @@ -10,7 +10,8 @@ import pandas as pd from sqlalchemy import distinct, select from sqlalchemy.orm import aliased -from highscores import Category, CategoryGroup, Guild, Score, engine, session +# pylint: disable=import-error +from utilities.sql_alchemy_connection import Category, CategoryGroup, Guild, Score, engine, session MAX_LINE_LENGTH = 142 @@ -336,7 +337,6 @@ async def submit_score( group = session.scalar(stmt) # edit message - print(f"Editting message {group.MessageId}") channel = interaction.guild.get_channel(group.ChannelId) error_response = "Registered Highscores channel does not exist or was never registered."