Description

An entity that is responsible for push notifications delivery.

After being set with a proper content, time schedule, and target audience, it can be activated in order to start the delivery process.

Structure

class MessageCampaignAbstract(SafeModelWithSignalSwitcher, WithArchivation):
    owner = models.ForeignKey(
        CustomUser, null=True, blank=True, on_delete=models.SET_NULL,
        related_name='%(class)s_campaigns'
    )
    name = models.CharField(max_length=255, default='Unnamed', blank=True)
    segment = models.ForeignKey(
        Segment, null=True, blank=True, default=None, on_delete=models.SET_NULL,
        related_name='%(class)s_campaigns'
    )
    supervised_segment = models.ForeignKey(
        Segment, null=True, blank=True, default=None, on_delete=models.SET_NULL,
        related_name='supervised_%(class)s_campaigns'
    )
    channel = models.ForeignKey(Channel, on_delete=models.SET_NULL, null=True, blank=True)
    message_pool = models.ForeignKey(
        MessagePool, null=True, blank=False, on_delete=models.SET_NULL,
        related_name='%(class)s_message_campaigns'
    )
    pool_size_value = models.IntegerField(null=True, default=None, blank=True)
    auto_content_management = models.NullBooleanField(default=None)
    interval_updated = models.DateTimeField(null=True, blank=True, default=None)
    timezone = models.CharField(null=True, blank=True, max_length=200)
    created_date = models.DateTimeField(null=True, auto_now_add=True)
    start_time = models.DateTimeField(null=True, blank=True, default=None)
    is_active = models.NullBooleanField(default=False, null=True, blank=True)
    is_draft = models.NullBooleanField(default=True, null=True, blank=True)
    is_archive = models.BooleanField(default=False)
    journey = models.ForeignKey(Journey, on_delete=models.SET_NULL, null=True, blank=True)
    status = models.CharField(max_length=50, null=True, blank=True, choices=CampaignStatuses.choices())
 
    iter_cycle = models.IntegerField(null=True, blank=True)
    messages_per_user = models.IntegerField(null=True, blank=True)