Description
Contains the list of messages split by content (title, text) and media (icons, images) types. Messages pool may be configured in a way to use various combinations of content and media entries to create random or predefined messages for the campaigns.
Structure
class MessagePool(SafeModelWithSignalSwitcher, ModelWithJsonFields, WithArchivation):
_safedelete_policy = SOFT_DELETE_CASCADE
name = models.CharField(max_length=100, null=True, blank=True)
owner = models.ForeignKey(CustomUser, null=False, blank=False, on_delete=models.CASCADE, related_name='msg_pools')
content_mix = deprecate_field(models.NullBooleanField(blank=True))
media_mix = deprecate_field(models.NullBooleanField(blank=True))
content_media_mix = models.NullBooleanField(blank=True)
pairwise_content_media_mix = models.NullBooleanField(blank=True)
variations = models.CharField(choices=MessagePoolVariations.choices, max_length=100,
default=MessagePoolVariations.IMAGES_ICONS_AND_TITLES_TEXTS)
badge = models.ForeignKey(Image, on_delete=models.SET_NULL, null=True, blank=True, default=None)
media_package = models.ForeignKey(MessagePoolMediaPackage, on_delete=models.SET_NULL,
null=True, default=None, blank=True, related_name='media_package_pools')
content_package = models.ForeignKey(MessagePoolContentPackage, on_delete=models.SET_NULL,
null=True, default=None, blank=True, related_name='content_package_pools')
content_parts_json = models.TextField(null=True, blank=True, default=None)
content_parts = PoolContentPartsField(persistent_field_name='content_parts_json')
content_tracker = FieldTracker(fields=['content_parts_json', 'content_media_mix', 'messages_count'])
built = models.BooleanField(default=False)
finished = models.BooleanField(default=False)
status = models.CharField(max_length=100, choices=MessagePoolStatuses.choices, default=MessagePoolStatuses.default,
null=True)
created_date = models.DateTimeField(auto_now_add=True, null=True)
buttons = models.TextField(null=True, default=None, blank=True)
buttons_list = PoolButtonsField(persistent_field_name='buttons')
stateful_limit = models.IntegerField(null=True, default=0)
optimised = models.NullBooleanField(null=True, default=False)