aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--alembic/versions/25f3b8fb9961_add_pending_column_to_user.py28
-rw-r--r--metricity/bot.py12
-rw-r--r--metricity/models.py4
-rw-r--r--poetry.lock20
-rw-r--r--pyproject.toml2
5 files changed, 53 insertions, 13 deletions
diff --git a/alembic/versions/25f3b8fb9961_add_pending_column_to_user.py b/alembic/versions/25f3b8fb9961_add_pending_column_to_user.py
new file mode 100644
index 0000000..5b3b6f6
--- /dev/null
+++ b/alembic/versions/25f3b8fb9961_add_pending_column_to_user.py
@@ -0,0 +1,28 @@
+"""add pending column to user
+
+Revision ID: 25f3b8fb9961
+Revises: a259ab5efcec
+Create Date: 2020-12-21 17:42:04.566930
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = '25f3b8fb9961'
+down_revision = 'a259ab5efcec'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('users', sa.Column('pending', sa.Boolean(), nullable=True))
+ # ### end Alembic commands ###
+
+
+def downgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_column('users', 'pending')
+ # ### end Alembic commands ###
diff --git a/metricity/bot.py b/metricity/bot.py
index 28c0646..defc240 100644
--- a/metricity/bot.py
+++ b/metricity/bot.py
@@ -164,7 +164,8 @@ async def on_guild_available(guild: Guild) -> None:
"is_staff": BotConfig.staff_role_id in [role.id for role in user.roles],
"bot": user.bot,
"in_guild": True,
- "public_flags": dict(user.public_flags)
+ "public_flags": dict(user.public_flags),
+ "pending": user.pending
})
log.info(f"Performing bulk upsert of {len(users)} rows")
@@ -197,7 +198,8 @@ async def on_member_join(member: Member) -> None:
joined_at=member.joined_at,
created_at=member.created_at,
is_staff=BotConfig.staff_role_id in [role.id for role in member.roles],
- public_flags=dict(member.public_flags)
+ public_flags=dict(member.public_flags),
+ pending=member.pending
).apply()
else:
try:
@@ -208,7 +210,8 @@ async def on_member_join(member: Member) -> None:
joined_at=member.joined_at,
created_at=member.created_at,
is_staff=BotConfig.staff_role_id in [role.id for role in member.roles],
- public_flags=dict(member.public_flags)
+ public_flags=dict(member.public_flags),
+ pending=member.pending
)
except UniqueViolationError:
pass
@@ -249,6 +252,7 @@ async def on_member_update(before: Member, member: Member) -> None:
db_user.avatar_hash != member.avatar or
BotConfig.staff_role_id in
[role.id for role in member.roles] != db_user.is_staff
+ or db_user.pending is not member.pending
):
await db_user.update(
id=str(member.id),
@@ -258,6 +262,7 @@ async def on_member_update(before: Member, member: Member) -> None:
created_at=member.created_at,
is_staff=BotConfig.staff_role_id in roles,
public_flags=dict(member.public_flags),
+ pending=member.pending
).apply()
else:
try:
@@ -269,6 +274,7 @@ async def on_member_update(before: Member, member: Member) -> None:
created_at=member.created_at,
is_staff=BotConfig.staff_role_id in roles,
public_flags=dict(member.public_flags),
+ pending=member.pending
)
except UniqueViolationError:
pass
diff --git a/metricity/models.py b/metricity/models.py
index 348debc..046198c 100644
--- a/metricity/models.py
+++ b/metricity/models.py
@@ -47,6 +47,7 @@ class User(db.Model):
bot = db.Column(db.Boolean, default=False)
in_guild = db.Column(db.Boolean, default=True)
public_flags = db.Column(db.JSON, default={})
+ pending = db.Column(db.Boolean, default=False)
@classmethod
def bulk_upsert(cls: type, users: List[Dict[str, Any]]) -> Any:
@@ -60,7 +61,8 @@ class User(db.Model):
"is_staff",
"bot",
"in_guild",
- "public_flags"
+ "public_flags",
+ "pending"
]
return qs.on_conflict_do_update(
diff --git a/poetry.lock b/poetry.lock
index f8503fa..7d72b43 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -97,18 +97,25 @@ python-versions = "*"
[[package]]
name = "discord.py"
-version = "1.5.1"
+version = "1.6.0a2618+g93f102c"
description = "A Python wrapper for the Discord API"
category = "main"
optional = false
python-versions = ">=3.5.3"
+develop = false
[package.dependencies]
-aiohttp = ">=3.6.0,<3.7.0"
+aiohttp = ">=3.6.0,<3.8.0"
[package.extras]
docs = ["sphinx (==1.8.5)", "sphinxcontrib-trio (==1.1.1)", "sphinxcontrib-websupport"]
-voice = ["PyNaCl (==1.3.0)"]
+voice = ["PyNaCl (>=1.3.0,<1.5)"]
+
+[package.source]
+type = "git"
+url = "https://github.com/Rapptz/discord.py.git"
+reference = "93f102ca907af6722ee03638766afd53dfe93a7f"
+resolved_reference = "93f102ca907af6722ee03638766afd53dfe93a7f"
[[package]]
name = "flake8"
@@ -366,7 +373,7 @@ multidict = ">=4.0"
[metadata]
lock-version = "1.1"
python-versions = "^3.8"
-content-hash = "9459617c91962254bf1536a9770105e5023c411f4fea81b20ad183565fc1f129"
+content-hash = "2cce90bee261b8e69f409e5e893d261031d3f2b122701898d1f1f61fafd0a4c6"
[metadata.files]
aiohttp = [
@@ -435,10 +442,7 @@ deepmerge = [
{file = "deepmerge-0.1.1-py2.py3-none-any.whl", hash = "sha256:190e133a6657303db37f9bb302aa853d8d2b15a0e055d41b99a362598e79206a"},
{file = "deepmerge-0.1.1.tar.gz", hash = "sha256:fa1d44269786bcc12d30a7471b0b39478aa37a43703b134d7f12649792f92c1f"},
]
-"discord.py" = [
- {file = "discord.py-1.5.1-py3-none-any.whl", hash = "sha256:2367359e31f6527f8a936751fc20b09d7495dd6a76b28c8fb13d4ca6c55b7563"},
- {file = "discord.py-1.5.1.tar.gz", hash = "sha256:def00dc50cf36d21346d71bc89f0cad8f18f9a3522978dc18c7796287d47de8b"},
-]
+"discord.py" = []
flake8 = [
{file = "flake8-3.8.4-py2.py3-none-any.whl", hash = "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839"},
{file = "flake8-3.8.4.tar.gz", hash = "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b"},
diff --git a/pyproject.toml b/pyproject.toml
index 6f79b27..297021c 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -7,7 +7,7 @@ license = "MIT"
[tool.poetry.dependencies]
python = "^3.8"
-"discord.py" = "^1.4.1"
+"discord.py" = {git = "https://github.com/Rapptz/discord.py.git", rev = "93f102ca907af6722ee03638766afd53dfe93a7f"}
deepmerge = "^0.1.0"
toml = "^0.10.1"
coloredlogs = "^14.0"