Ejemplo n.º 1
0
    def handle(self, *args, **options):
        users = period_models.User.objects.filter(
            is_active=True, flow_events__isnull=False, statistics__isnull=False).exclude(
            send_emails=False).distinct()
        for user in users:
            today = period_models.today()
            upcoming_events = user.statistics.predicted_events
            if not upcoming_events:
                continue
            # The upcoming events are in date order, ovulation/period/ovulation/...
            expected_date = upcoming_events[1]['timestamp']
            calendar_start_date = expected_date - datetime.timedelta(days=7)
            expected_in = (expected_date - today.date()).days
            expected_abs = abs(expected_in)
            if expected_abs == 1:
                day = 'day'
            else:
                day = 'days'

            context = Context({
                'full_name': user.get_full_name(),
                'today': self._format_date(today),
                'expected_in': expected_abs,
                'day': day,
                'expected_date': self._format_date(expected_date),
                'calendar_start_date': self._format_date(calendar_start_date),
                'admin_name': settings.ADMINS[0][0],
                'full_domain': helpers.get_full_domain(),
            })

            subject = ''
            if expected_in < 0:
                subject = "Period was expected %s %s ago" % (expected_abs, day)
                template_name = 'expected_ago'
            elif expected_in == 0:
                subject = "Period today!"
                template_name = 'expected_now'
            elif expected_in < 4:
                subject = "Period starting"
                template_name = 'expected_in'
            elif expected_in == user.luteal_phase_length:
                subject = "Ovulation today!"
                template_name = 'ovulating'
            if subject:
                plaintext = get_template('periods/email/%s.txt' % template_name)
                html = get_template('periods/email/%s.html' % template_name)
                email_sender.send(user, subject, plaintext.render(context), html.render(context))
    def handle(self, *args, **options):
        users = period_models.User.objects.filter(
            is_active=True, flow_events__isnull=False, statistics__isnull=False).exclude(
            send_emails=False).distinct()
        for user in users:
            today = period_models.today()
            upcoming_events = user.statistics.predicted_events
            if not upcoming_events:
                continue
            # The upcoming events are in date order, ovulation/period/ovulation/...
            expected_date = upcoming_events[1]['timestamp']
            calendar_start_date = expected_date - datetime.timedelta(days=7)
            expected_in = (expected_date - today.date()).days
            expected_abs = abs(expected_in)
            if expected_abs == 1:
                day = 'day'
            else:
                day = 'days'

            context = {
                'full_name': user.get_full_name(),
                'today': self._format_date(today),
                'expected_in': expected_abs,
                'day': day,
                'expected_date': self._format_date(expected_date),
                'calendar_start_date': self._format_date(calendar_start_date),
                'admin_name': settings.ADMINS[0][0],
                'full_domain': helpers.get_full_domain(),
            }

            subject = ''
            if expected_in < 0:
                subject = "Period was expected %s %s ago" % (expected_abs, day)
                template_name = 'expected_ago'
            elif expected_in == 0:
                subject = "Period today!"
                template_name = 'expected_now'
            elif expected_in < 4:
                subject = "Period starting"
                template_name = 'expected_in'
            elif expected_in == user.luteal_phase_length:
                subject = "Ovulation today!"
                template_name = 'ovulating'
            if subject:
                plaintext = get_template('periods/email/%s.txt' % template_name)
                html = get_template('periods/email/%s.html' % template_name)
                email_sender.send(user, subject, plaintext.render(context), html.render(context))
Ejemplo n.º 3
0
 def test_http(self):
     result = helpers.get_full_domain()
     self.assertEqual('http://example.com', result)
Ejemplo n.º 4
0
 def test_https(self):
     with self.settings(SECURE_SSL_REDIRECT=True):
         result = helpers.get_full_domain()
         self.assertEqual('https://example.com', result)
Ejemplo n.º 5
0
 def test_http(self):
     result = helpers.get_full_domain()
     self.assertEqual('http://example.com', result)
Ejemplo n.º 6
0
 def test_https(self):
     with self.settings(SECURE_SSL_REDIRECT=True):
         result = helpers.get_full_domain()
         self.assertEqual('https://example.com', result)