diff options
-rw-r--r-- | alembic/versions/25f3b8fb9961_add_pending_column_to_user.py | 28 | ||||
-rw-r--r-- | metricity/bot.py | 12 | ||||
-rw-r--r-- | metricity/models.py | 4 | ||||
-rw-r--r-- | poetry.lock | 20 | ||||
-rw-r--r-- | pyproject.toml | 2 |
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" |