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