* refactor: replace datetime.now with timezone.now * refactor: migrate model fields to use timezone.now as default * refactor: replace datetime.today with timezone.now datetime.datetime.today() is equivalent to datetime.datetime.now(); both return a naive datetime with the current local time. * refactor: rephrase datetime.now(tz) as timezone.now().astimezone(tz) This is effectively the same, but is less likely to encourage accidental use of naive datetimes. * refactor: revert datetime.today() change to old migrations * refactor: change a missed datetime.now to timezone.now * chore: renumber timezone_now migration * chore: renumber migrations
47 lines
1.9 KiB
Python
47 lines
1.9 KiB
Python
# Copyright The IETF Trust 2017-2019, All Rights Reserved
|
|
# Copyright 2016 IETF Trust
|
|
|
|
import syslog
|
|
|
|
from django.core.management.base import BaseCommand, CommandError
|
|
from django.utils import timezone
|
|
|
|
import debug # pyflakes:ignore
|
|
|
|
from ietf.meeting.models import Meeting
|
|
from ietf.stats.utils import get_meeting_registration_data
|
|
|
|
logtag = __name__.split('.')[-1]
|
|
logname = "user.log"
|
|
syslog.openlog(str(logtag), syslog.LOG_PID, syslog.LOG_USER)
|
|
|
|
class Command(BaseCommand):
|
|
help = "Fetch meeting attendee figures from ietf.org/registration/attendees."
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument("--meeting", help="meeting to fetch data for")
|
|
parser.add_argument("--all", action="store_true", help="fetch data for all meetings")
|
|
parser.add_argument("--latest", type=int, help="fetch data for latest N meetings")
|
|
|
|
def handle(self, *args, **options):
|
|
self.verbosity = options['verbosity']
|
|
|
|
meetings = Meeting.objects.none()
|
|
if options['meeting']:
|
|
meetings = Meeting.objects.filter(number=options['meeting'], type="ietf")
|
|
elif options['all']:
|
|
meetings = Meeting.objects.filter(type="ietf").order_by("date")
|
|
elif options['latest']:
|
|
meetings = Meeting.objects.filter(type="ietf", date__lte=timezone.now()).order_by("-date")[:options['latest']]
|
|
else:
|
|
raise CommandError("Please use one of --meeting, --all or --latest")
|
|
|
|
for meeting in meetings:
|
|
added, processed, total = get_meeting_registration_data(meeting)
|
|
msg = "Fetched data for meeting %3s: %4d processed, %4d added, %4d in table" % (meeting.number, processed, added, total)
|
|
if self.stdout.isatty():
|
|
self.stdout.write(msg+'\n') # make debugging a bit easier
|
|
else:
|
|
syslog.syslog(msg)
|
|
|