Esempio n. 1
0
def check_for_sending(request):
    """ TODO: UT needed."""
    one_week_ago = now()  - datetime.timedelta(days=7)
    news_list = HackerNews.objects.filter(added__gt=one_week_ago, sent=False)
    count_file = 0
    count_email = 0
    for news in news_list:
        sr_list = SendRecord.objects.filter(news=news, sent=False)[:EMAIL_COUNT_LIMIT]
        if len(sr_list) == 0:
            news.sent = True
            news.save()
            continue

        receivers = [x.email for x in sr_list]
        try:
            send_files_to([news.file_path], receivers, subject=news.title)
            count_file += 1
            count_email += len(receivers)
        except Exception, e:
            info = ("send mail failed. Exception: %s File: %s" %
                    (e, news.file_path))
            logger.error(info)
        else:
            for sr in sr_list:
                sr.sent = True
                sr.save()
            time.sleep(0.3)
Esempio n. 2
0
def weekly_sending(request):
    info = ""
    date_now = now()
    week_number = date_now.isocalendar()[1] - 1
    try:
        weekly = Weekly.objects.get(week_number=week_number)
    except Weekly.DoesNotExist:
        info = "This Weekly Does not exist"
        return HttpResponse(info + "\n")

    if not weekly.file_path:
        info = "No file for this Weekly"
        return HttpResponse(info + "\n")

    receivers = WeeklySendRecord.objects.filter(weekly=weekly, sent=False)[:EMAIL_COUNT_LIMIT]
    emails = [x.email for x in receivers]
    if len(emails) == 0:
        info = "Weekly sent complete."
        return HttpResponse(info + "\n")

    try:
        subject = "Hacker News Weekly %s" % week_number
        send_files_to([weekly.file_path], emails, subject=subject)
        for item in receivers:
            item.sent = True
            item.save()
    except Exception, e:
        info = "send weekly mail failed. Exception: %s Emails: %s" % (e, emails)
        logger.error(info)