не отправились грамоты за рисовальный лагерь

remotes/origin/hotfix/send-camp-cert-9-07-19
gzbender 7 years ago
parent 59f93ad997
commit e2a1a839df
  1. 66
      apps/notification/management/commands/animail_logs.py

@ -1,6 +1,35 @@
from email.utils import format_datetime
import requests
from datetime import datetime
from django.core.management.base import BaseCommand
from django.conf import settings
import requests
def get_logs(limit, date, subject):
r = requests.get(
"https://api.mailgun.net/v3/%s/events" % settings.ANYMAIL['MAILGUN_SENDER_DOMAIN'],
auth=("api", settings.ANYMAIL['MAILGUN_API_KEY']),
params={"begin": format_datetime(date),
"ascending": "yes",
"limit": limit,
"pretty": "yes", })
print(r)
if r.status_code != 200:
print('r.content', r.content)
return
messages = r.json()
try:
print("len(messages['items'])", len(messages['items']))
no_attach = list(filter(
lambda i: 'message' in i and i['message']['headers']['subject'] == subject and not len(
i['message']['attachments']), messages['items']))
print("len(no_attach)", len(no_attach))
emails = [m['message']['headers']['to'] for m in no_attach]
return emails, datetime.utcfromtimestamp(sorted(no_attach, key=lambda i: i['timestamp'], reverse=True)[0]['timestamp'])
except Exception as e:
print('r.content', r.content)
print(e)
class Command(BaseCommand):
help = 'Get animail logs'
@ -13,7 +42,7 @@ class Command(BaseCommand):
dest='limit',
help='Limit',
)
'''parser.add_argument(
parser.add_argument(
'--date',
dest='date',
help='Date',
@ -22,30 +51,15 @@ class Command(BaseCommand):
'--subject',
dest='subject',
help='Subject',
)'''
)
def handle(self, *args, **options):
print('MAILGUN_API_KEY', settings.ANYMAIL['MAILGUN_API_KEY'])
print('MAILGUN_SENDER_DOMAIN', settings.ANYMAIL['MAILGUN_SENDER_DOMAIN'])
r = requests.get(
"https://api.mailgun.net/v3/%s/events" % settings.ANYMAIL['MAILGUN_SENDER_DOMAIN'],
auth=("api", settings.ANYMAIL['MAILGUN_API_KEY']),
params={"begin": "Wed, 10 Jul 19 00:00:00 +0000", #options.get('date')
"ascending": "yes",
"limit": options.get('limit'),
"pretty": "yes", })
print(r)
if r.status_code != 200:
print('r.content', r.content)
return
messages = r.json()
try:
print("len(messages['items'])", len(messages['items']))
no_attach = list(filter(lambda i: i['message']['headers']['subject'] == 'Грамота от Lil School' and not len( #options.get('subject')
i['message']['attachments']), messages['items']))
print("len(no_attach)", len(no_attach))
print([m['message']['headers']['to'] for m in no_attach])
except Exception as e:
print('r.content', r.content)
raise e
emails = []
end_dt = datetime(2019, 7, 11)
current_dt = options.get('date')
while current_dt <= end_dt:
e, current_dt = get_logs(options.get('limit'), current_dt, options.get('subject'))
emails += e
print(set(emails))
print(current_dt)

Loading…
Cancel
Save