From 4f001707358244681e8a57d71b79eb3967cd71bb Mon Sep 17 00:00:00 2001 From: Vishnu Ks Date: Thu, 12 Oct 2017 17:35:14 +0000 Subject: [PATCH] models: Create DefaultStreamGroup. --- .../migrations/0113_default_stream_group.py | 29 +++++++++++++++++++ zerver/models.py | 17 +++++++++++ 2 files changed, 46 insertions(+) create mode 100644 zerver/migrations/0113_default_stream_group.py diff --git a/zerver/migrations/0113_default_stream_group.py b/zerver/migrations/0113_default_stream_group.py new file mode 100644 index 0000000000..8cc13bcabc --- /dev/null +++ b/zerver/migrations/0113_default_stream_group.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2017-10-14 15:12 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('zerver', '0112_index_muted_topics'), + ] + + operations = [ + migrations.CreateModel( + name='DefaultStreamGroup', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(db_index=True, max_length=60)), + ('realm', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm')), + ('streams', models.ManyToManyField(to='zerver.Stream')), + ], + ), + migrations.AlterUniqueTogether( + name='defaultstreamgroup', + unique_together=set([('realm', 'name')]), + ), + ] diff --git a/zerver/models.py b/zerver/models.py index 467ff6e34f..b0252e57c7 100644 --- a/zerver/models.py +++ b/zerver/models.py @@ -1743,6 +1743,23 @@ class DefaultStream(models.Model): class Meta(object): unique_together = ("realm", "stream") +class DefaultStreamGroup(models.Model): + MAX_NAME_LENGTH = 60 + name = models.CharField(max_length=MAX_NAME_LENGTH, db_index=True) # type: Text + realm = models.ForeignKey(Realm, on_delete=CASCADE) # type: Realm + streams = models.ManyToManyField('Stream') # type: Manager + + class Meta(object): + unique_together = ("realm", "name") + + def to_dict(self): + # type: () -> Dict[str, Any] + return dict(name=self.name, streams=[stream.to_dict() for stream in self.streams.all()]) + +def get_default_stream_groups(realm): + # type: (Realm) -> List[DefaultStreamGroup] + return DefaultStreamGroup.objects.filter(realm=realm) + class AbstractScheduledJob(models.Model): scheduled_timestamp = models.DateTimeField(db_index=True) # type: datetime.datetime # JSON representation of arguments to consumer