|
| 1 | +# Copyright The IETF Trust 2018, All Rights Reserved |
| 2 | +from __future__ import unicode_literals |
| 3 | + |
| 4 | +import sys |
| 5 | +import datetime |
| 6 | + |
| 7 | +from django.core.management.base import BaseCommand, CommandError |
| 8 | +from django.core import serializers |
| 9 | + |
| 10 | +import debug # pyflakes:ignore |
| 11 | + |
| 12 | +from ietf.name.models import ImportantDateName |
| 13 | +from ietf.meeting.helpers import get_meeting, update_important_dates |
| 14 | +from ietf.meeting.models import Meeting, ImportantDate |
| 15 | + |
| 16 | +class Command(BaseCommand): |
| 17 | + |
| 18 | + help = 'Updates the important dates for the given meeting' |
| 19 | + |
| 20 | + def add_arguments(self, parser): |
| 21 | + parser.add_argument('meeting', nargs='+', type=int) |
| 22 | + |
| 23 | + def handle(self, *args, **options): |
| 24 | + datenames = ImportantDateName.objects.all() |
| 25 | + slugs = list(datenames.values_list('slug', flat=True)) |
| 26 | + max_offset = - min(list(datenames.values_list('default_offset_days', flat=True))) |
| 27 | + # |
| 28 | + for m in options['meeting']: |
| 29 | + meeting = Meeting.objects.filter(number=m).first() |
| 30 | + if not meeting: |
| 31 | + self.stderr.write("\nMeeting not found: %s\n" % (m, )) |
| 32 | + continue |
| 33 | + if meeting.date < datetime.date.today() + datetime.timedelta(days=max_offset): |
| 34 | + self.stderr.write("\nMeeting %s: Won't change dates for meetings in the past or close future\n" % (meeting, )) |
| 35 | + continue |
| 36 | + self.stdout.write('\n%s\n\n' % (meeting, )) |
| 37 | + pre_dates = dict( (d.name_id, d) for d in ImportantDate.objects.filter(meeting=meeting) ) |
| 38 | + update_important_dates(meeting) |
| 39 | + post_dates = dict( (d.name_id, d) for d in ImportantDate.objects.filter(meeting=meeting) ) |
| 40 | + for slug in slugs: |
| 41 | + if slug in pre_dates: |
| 42 | + if pre_dates[slug].date == post_dates[slug].date: |
| 43 | + self.stdout.write('%-16s %s unchanged\n' % (slug, pre_dates[slug].date )) |
| 44 | + else: |
| 45 | + self.stdout.write('%-16s %s > %s\n' % (slug, pre_dates[slug].date, post_dates[slug].date)) |
0 commit comments