Added a meeting helper function update_important_dates(), and a management command update_important_dates to update the important dates for a meeting if the offsets in the MeetingDateName table has been changed.
- Legacy-Id: 15160
This commit is contained in:
parent
50a39a2b12
commit
4aa987488d
|
@ -618,3 +618,14 @@ def populate_important_dates(meeting):
|
|||
assert meeting.type_id=='ietf'
|
||||
for datename in ImportantDateName.objects.filter(used=True):
|
||||
ImportantDate.objects.create(meeting=meeting,name=datename,date=meeting.date+datetime.timedelta(days=datename.default_offset_days))
|
||||
|
||||
def update_important_dates(meeting):
|
||||
assert meeting.type_id=='ietf'
|
||||
for datename in ImportantDateName.objects.filter(used=True):
|
||||
date = meeting.date+datetime.timedelta(days=datename.default_offset_days)
|
||||
d = ImportantDate.objects.filter(meeting=meeting, name=datename).first()
|
||||
if d:
|
||||
d.date = date
|
||||
d.save()
|
||||
else:
|
||||
ImportantDate.objects.create(meeting=meeting, name=datename, date=date)
|
||||
|
|
45
ietf/meeting/management/commands/update_important_dates.py
Normal file
45
ietf/meeting/management/commands/update_important_dates.py
Normal file
|
@ -0,0 +1,45 @@
|
|||
# Copyright The IETF Trust 2018, All Rights Reserved
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import sys
|
||||
import datetime
|
||||
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
from django.core import serializers
|
||||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.name.models import ImportantDateName
|
||||
from ietf.meeting.helpers import get_meeting, update_important_dates
|
||||
from ietf.meeting.models import Meeting, ImportantDate
|
||||
|
||||
class Command(BaseCommand):
|
||||
|
||||
help = 'Updates the important dates for the given meeting'
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument('meeting', nargs='+', type=int)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
datenames = ImportantDateName.objects.all()
|
||||
slugs = list(datenames.values_list('slug', flat=True))
|
||||
max_offset = - min(list(datenames.values_list('default_offset_days', flat=True)))
|
||||
#
|
||||
for m in options['meeting']:
|
||||
meeting = Meeting.objects.filter(number=m).first()
|
||||
if not meeting:
|
||||
self.stderr.write("\nMeeting not found: %s\n" % (m, ))
|
||||
continue
|
||||
if meeting.date < datetime.date.today() + datetime.timedelta(days=max_offset):
|
||||
self.stderr.write("\nMeeting %s: Won't change dates for meetings in the past or close future\n" % (meeting, ))
|
||||
continue
|
||||
self.stdout.write('\n%s\n\n' % (meeting, ))
|
||||
pre_dates = dict( (d.name_id, d) for d in ImportantDate.objects.filter(meeting=meeting) )
|
||||
update_important_dates(meeting)
|
||||
post_dates = dict( (d.name_id, d) for d in ImportantDate.objects.filter(meeting=meeting) )
|
||||
for slug in slugs:
|
||||
if slug in pre_dates:
|
||||
if pre_dates[slug].date == post_dates[slug].date:
|
||||
self.stdout.write('%-16s %s unchanged\n' % (slug, pre_dates[slug].date ))
|
||||
else:
|
||||
self.stdout.write('%-16s %s > %s\n' % (slug, pre_dates[slug].date, post_dates[slug].date))
|
Loading…
Reference in a new issue