From 78da9fd3ab2833a0749614d1f21d377b0d771e66 Mon Sep 17 00:00:00 2001 From: sahil839 Date: Thu, 11 Jun 2020 00:14:56 +0530 Subject: [PATCH] subscription: Add role field to Subscription class. This commit adds role field to the Subscription class. Currently, there are two option of roles - STREAM_ADMINISTRATOR and MEMBER. We also add a property 'is_stream_admin' for checking whether the user is stream admin or not. --- zerver/migrations/0299_subscription_role.py | 18 ++++++++++++++++++ zerver/models.py | 9 +++++++++ 2 files changed, 27 insertions(+) create mode 100644 zerver/migrations/0299_subscription_role.py diff --git a/zerver/migrations/0299_subscription_role.py b/zerver/migrations/0299_subscription_role.py new file mode 100644 index 0000000000..5f9b5a9d07 --- /dev/null +++ b/zerver/migrations/0299_subscription_role.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.13 on 2020-06-10 18:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('zerver', '0298_fix_realmauditlog_format'), + ] + + operations = [ + migrations.AddField( + model_name='subscription', + name='role', + field=models.PositiveSmallIntegerField(db_index=True, default=50), + ), + ] diff --git a/zerver/models.py b/zerver/models.py index bfd424fd84..b472841763 100644 --- a/zerver/models.py +++ b/zerver/models.py @@ -2243,6 +2243,11 @@ class Subscription(models.Model): # resubscribes. active: bool = models.BooleanField(default=True) + ROLE_STREAM_ADMINISTRATOR = 20 + ROLE_MEMBER = 50 + + role: int = models.PositiveSmallIntegerField(default=ROLE_MEMBER, db_index=True) + # Whether this user had muted this stream. is_muted: Optional[bool] = models.BooleanField(null=True, default=False) @@ -2265,6 +2270,10 @@ class Subscription(models.Model): def __str__(self) -> str: return f" {self.recipient}>" + @property + def is_stream_admin(self) -> bool: + return self.role == Subscription.ROLE_STREAM_ADMINISTRATOR + # Subscription fields included whenever a Subscription object is provided to # Zulip clients via the API. A few details worth noting: # * These fields will generally be merged with Stream.API_FIELDS