Description
Represents an entry point where subscribers will be related to. It can be a website, mobile app, or any other source of subscribers.
Structure
class Channel(SafeModelWithSignalSwitcher, WithArchivation, DjangoCachedModelMixin):
name = models.CharField(max_length=255, null=False)
owner = models.ForeignKey(User, null=True, blank=True, default=None, related_name='my_channels',
on_delete=models.SET_NULL)
website = models.CharField(max_length=255, null=True)
service_worker_root = models.CharField(max_length=100, null=False, blank=True, default='/')
protocol = models.CharField(max_length=5, default=ChannelProtocols.default, choices=ChannelProtocols.choices)
icon = models.ForeignKey(Image, on_delete=models.SET_NULL, null=True, blank=True)
custom_attributes = models.ManyToManyField('ChannelCustomAttribute', related_name='attached_channels', blank=True)
subscribers_count = models.IntegerField(default=0, null=False)
custom_data = models.TextField(null=True)
state = models.CharField(
max_length=100, choices=ChannelsStatuses.choices, default=ChannelsStatuses.default,
db_index=True
)
newborn = models.NullBooleanField(null=True, default=True)
create_date = models.DateField(auto_now_add=True, null=True)
start_date = models.DateField(null=True, blank=True)
source_link_params = models.TextField(null=True, blank=True)
firebase_app = models.UUIDField(null=True, default=None, blank=True)
push_service_group = models.CharField(max_length=25, null=True, blank=True, choices=PushServiceGroups.choices)
channel_token = models.CharField(max_length=255, null=True, default=None, blank=True)
platform = models.CharField(
max_length=10, null=True, choices=ChannelPlatforms.choices, db_index=True, default=ChannelPlatforms.WEB
)
window_appearance_timeout = models.IntegerField(null=True, default=None)
window_show_after_cancel = models.IntegerField(null=True, default=None)
disable_window = models.NullBooleanField(null=True)
# Deprecated fields
android = models.NullBooleanField(default=False)
ios = models.NullBooleanField(default=False)