-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathcron.py
More file actions
77 lines (69 loc) · 2.4 KB
/
cron.py
File metadata and controls
77 lines (69 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from lionhearted import settings
import os
import django
import sys
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lionhearted.settings")
django.setup()
from forum.models import Comment, Post, partial_update_objs, Community, Person
from datetime import datetime, timedelta
from django.utils import timezone
from newsletter import send_digest
from postmark.core import PMMail
def rescore_posts():
STOP_SCORING = 30
scored_objects = list(
Post.objects.filter(posted__gte=timezone.now() - timedelta(days=STOP_SCORING))
)
scored_objects += list(
Comment.objects.filter(
posted__gte=timezone.now() - timedelta(days=STOP_SCORING)
)
)
for so in scored_objects:
if so.should_rescore:
so.rescore()
def send_newsletter_digests():
day = timezone.now().today().weekday()
for c in Community.objects.all():
if c.digest_frequency == Community.DAILY or (
c.digest_frequency == Community.WEEKLY and c.digest_day_of_week == day
):
if c.digest_frequency == Community.DAILY:
filter_days = 1
else:
filter_days = 7
posts = (
c.post_set.all()
.order_by("-posted")
.filter(posted__gte=timezone.now() - timedelta(days=filter_days))
)
emails = [person.email for person in c.people.filter(digest_frequency=None)]
send_digest(c, posts, emails)
for p in Person.objects.exclude(digest_frequency=None):
print(p.email)
if p.digest_frequency == Community.DAILY or (
p.digest_frequency == Community.WEEKLY and day == 5
):
if p.digest_frequency == Community.DAILY:
filter_days = 1
else:
filter_days = 7
posts = (
p.community.post_set.all()
.order_by("-posted")
.filter(posted__gte=timezone.now() - timedelta(days=filter_days))
)
emails = [
p.email,
]
c = p.community
print(posts)
send_digest(c, posts, emails)
if __name__ == "__main__":
if len(sys.argv) > 1:
if sys.argv[1] == "--rescore-posts":
rescore_posts()
elif sys.argv[1] == "--send-newsletter-digests":
send_newsletter_digests()
else:
print("Typo?")