From 9e99211dda5154640fbe51304fb374e4342392ef Mon Sep 17 00:00:00 2001 From: "Nyeki.py" <84998222+Nekidev@users.noreply.github.com> Date: Sun, 27 Oct 2024 16:53:05 -0300 Subject: [PATCH] feat(bot): :sparkles: Keep track of who reviewed each report. --- payphone/cogs/mods/views.py | 2 ++ .../models/16_20241027161324_update.py | 21 +++++++++++++++ payphone/db/models.py | 3 +++ procs/flush_messages.py | 26 +++++++++---------- run.py | 2 +- 5 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 payphone/db/migrations/models/16_20241027161324_update.py diff --git a/payphone/cogs/mods/views.py b/payphone/cogs/mods/views.py index 671a172..5e09e6f 100644 --- a/payphone/cogs/mods/views.py +++ b/payphone/cogs/mods/views.py @@ -140,6 +140,7 @@ class ReportView(discord.ui.View): report = self.report report.status = models.ReportStatus.ACCEPTED + report.reviewed_by_id = interaction.user.id await report.save() next_report = ( @@ -205,6 +206,7 @@ class ReportView(discord.ui.View): report = self.report report.status = models.ReportStatus.DECLINED + report.reviewed_by_id = interaction.user.id await report.save() report = ( diff --git a/payphone/db/migrations/models/16_20241027161324_update.py b/payphone/db/migrations/models/16_20241027161324_update.py new file mode 100644 index 0000000..124e8a3 --- /dev/null +++ b/payphone/db/migrations/models/16_20241027161324_update.py @@ -0,0 +1,21 @@ +from tortoise import BaseDBAsyncClient + + +async def upgrade(db: BaseDBAsyncClient) -> str: + return """ + DROP INDEX "idx_report_status_d6b157"; + DROP INDEX "idx_ban_user_id_37a9cf"; + ALTER TABLE "report" ADD "reviewed_by_id" BIGINT; + CREATE INDEX "idx_ban_user_id_37a9cf" ON "ban" ("user_id", "expires_at");; + CREATE INDEX "idx_report_status_d6b157" ON "report" ("status", "priority");; + ALTER TABLE "report" ADD CONSTRAINT "fk_report_user_67e68360" FOREIGN KEY ("reviewed_by_id") REFERENCES "user" ("id") ON DELETE SET NULL;""" + + +async def downgrade(db: BaseDBAsyncClient) -> str: + return """ + ALTER TABLE "report" DROP CONSTRAINT "fk_report_user_67e68360"; + DROP INDEX "idx_report_status_d6b157"; + DROP INDEX "idx_ban_user_id_37a9cf"; + ALTER TABLE "report" DROP COLUMN "reviewed_by_id"; + CREATE INDEX "idx_ban_user_id_37a9cf" ON "ban" ("user_id", "expires_at");; + CREATE INDEX "idx_report_status_d6b157" ON "report" ("status", "priority");;""" diff --git a/payphone/db/models.py b/payphone/db/models.py index 60c8179..0375ab0 100644 --- a/payphone/db/models.py +++ b/payphone/db/models.py @@ -368,6 +368,9 @@ class Report(models.Model): reported_by: fields.ForeignKeyNullableRelation["User"] = fields.ForeignKeyField( "models.User", null=True, on_delete=fields.OnDelete.CASCADE ) + reviewed_by: fields.ForeignKeyNullableRelation["User"] = fields.ForeignKeyField( + "models.User", null=True, on_delete=fields.OnDelete.SET_NULL, related_name="reports_reviewed" + ) reason: str = fields.CharField(max_length=500) priority: float = fields.FloatField() status: ReportStatus = fields.IntEnumField( diff --git a/procs/flush_messages.py b/procs/flush_messages.py index 3016d03..e067605 100644 --- a/procs/flush_messages.py +++ b/procs/flush_messages.py @@ -1,5 +1,3 @@ -import asyncio - from payphone.core import logging @@ -30,10 +28,10 @@ async def flush(): call_ids = [int(call_id) for call_id in call_ids] if len(call_ids) == 0: - log.info("Skipping flushing. No calls to flush.") + log.debug("Skipping flushing. No calls to flush.") return - log.info("Flushing messages for %s calls." % len(call_ids)) + log.info("Flushing messages for %s calls." , len(call_ids)) pipe = redis.pipeline() @@ -81,8 +79,8 @@ async def flush(): asyncpg.exceptions.InterfaceError, ): log.exception( - "[Call ID: %s] An error occured trying to flush messages for call ID." - % call_id + "[Call ID: %s] An error occured trying to flush messages for call ID.", + call_id, ) continue @@ -98,14 +96,16 @@ async def flush(): asyncpg.exceptions.InterfaceError, ): log.exception( - "[Call ID: %s] An error occured trying to flush message contents." - % call_id + "[Call ID: %s] An error occured trying to flush message contents.", + call_id, ) continue - log.info( - "[Call ID: %s] Flushed %s messages and %s message contents." - % (call_id, len(messages), len(message_contents)) + log.debug( + "[Call ID: %s] Flushed %s messages and %s message contents.", + call_id, + len(messages), + len(message_contents), ) log.info("Finished flushing messages.") @@ -126,5 +126,5 @@ async def loop() -> None: await flush() - except (KeyboardInterrupt, asyncio.exceptions.CancelledError) as e: - log.exception('') + except (KeyboardInterrupt, asyncio.exceptions.CancelledError): + log.exception("") diff --git a/run.py b/run.py index 18d5d9a..844d37e 100644 --- a/run.py +++ b/run.py @@ -86,7 +86,7 @@ if __name__ == "__main__": await redis.flushall() - log.info("Cleanup done! Loading recommended shard amount...") + log.info("Initializing DB and running Redis cleanup...") run_async(init())