feat(bot): ✨ Keep track of who reviewed each report.

This commit is contained in:
Nyeki.py
2024-10-27 16:53:05 -03:00
parent 6350f9db4f
commit 9e99211dda
5 changed files with 40 additions and 14 deletions
+2
View File
@@ -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 = (
@@ -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");;"""
+3
View File
@@ -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(
+13 -13
View File
@@ -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("")
+1 -1
View File
@@ -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())