def prune(self): """ Do an exclude for all Users who have a SentDrip already. """ target_user_ids = self.get_queryset().values_list('id', flat=True) frequency = self.drip_model.frequency sent_drips = SentDrip.objects.filter(drip=self.drip_model, user__id__in=target_user_ids) if frequency > 0: sent_drips = sent_drips.filter(date__gt=conditional_now() - timedelta(days=frequency)) else: sent_drips = sent_drips.filter(date__lt=conditional_now()) exclude_user_ids = sent_drips.values_list('user_id', flat=True) self._queryset = self.get_queryset().exclude(id__in=exclude_user_ids)
def prune(self): """ Do an exclude for all Users who have a SentDrip already. """ target_user_ids = self.get_queryset().values_list("id", flat=True) exclude_user_ids = SentDrip.objects.filter( date__lt=conditional_now(), drip=self.drip_model, user__id__in=target_user_ids ).values_list("user_id", flat=True) self._queryset = self.get_queryset().exclude(id__in=exclude_user_ids)
def prune(self): """Do an exclude for all Users who have a SentDrip already. """ target_user_ids = self.get_queryset().values_list('id', flat=True) exclude_user_ids = SentDrip.objects.filter( date__lt=conditional_now(), drip=self.drip_model, user__id__in=target_user_ids).values_list('user_id', flat=True) self._queryset = self.get_queryset().exclude(id__in=exclude_user_ids)
def prune(self): """ Do an exclude for all Users who have a SentDrip already. """ target_user_ids = self.get_queryset().values_list('id', flat=True) exclude_user_ids = SentDrip.objects.filter( date__lt=conditional_now(), drip_content_type=ContentType.objects.get_for_model(self.drip_model), drip_object_id=self.drip_model.pk, user__id__in=target_user_ids ).values_list('user_id', flat=True) self._queryset = self.get_queryset().exclude(id__in=exclude_user_ids)
def prune(self, count='all'): """ Do an exclude for all Users who have a SentDrip already. """ from espresso.models import SentDrip item_ids = self.get_queryset().values_list('pk', flat=True) exclude_ids = SentDrip.objects.filter(created__lt=conditional_now(), drip=self.drip_model, item_id__in=item_ids)\ .values_list('item_id', flat=True) self._queryset = self.get_queryset().exclude(pk__in=exclude_ids) if count != 'all': self._queryset = self._queryset[0]
def prune(self): """ Do an exclude for all Users who have a SentDrip already or who have unsubscribed (if this is a marketing drip). """ target_user_ids = self.get_queryset().values_list('id', flat=True) exclude_user_ids = SentDrip.objects.filter(date__lt=conditional_now(), drip=self.drip_model, user__id__in=target_user_ids)\ .values_list('user_id', flat=True) # If this is a marketing drip, exclude users who have # already unsubscribed from these emails. if self.drip_model.marketing: qs = Subscription.objects.filter(user__id__in=target_user_ids, unsubscribed=True) unsub_ids = qs.values_list('user_id', flat=True) exclude_user_ids = list(set(exclude_user_ids).union(unsub_ids)) self._queryset = self.get_queryset().exclude(id__in=exclude_user_ids)
def prune(self): """ Do an exclude for all Users who have a SentDrip already. """ if self.drip_model.user_field: target_user_ids = self.get_queryset().values_list('%s__id' % self.drip_model.user_field, flat=True) else: target_user_ids = self.get_queryset().values_list('id', flat=True) exclude_user_ids = SentDrip.objects.filter(date__lt=conditional_now(), drip=self.drip_model, user__id__in=target_user_ids)\ .values_list('user_id', flat=True) self._queryset = self.get_queryset().exclude(id__in=exclude_user_ids) # convert linked field back to user model if self.drip_model.user_field: self._queryset = get_user_model().objects.filter(id__in=self.get_queryset().values_list(self.drip_model.user_field, flat=True))
def now(self): """ This allows us to override what we consider "now", making it easy to build timelines of who gets what when. """ return conditional_now() + self.timedelta(**self.now_shift_kwargs)