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)