|
16 | 16 | from redesign.group.models import * |
17 | 17 | from redesign.name.utils import name |
18 | 18 | from redesign.importing.utils import old_person_to_person |
19 | | -from ietf.announcements.models import Message |
20 | | -from ietf.announcements.models import Announcement, PersonOrOrgInfo, AnnouncedTo, AnnouncedFrom |
| 19 | +from ietf.announcements.models import Message, SendQueue |
| 20 | +from ietf.announcements.models import Announcement, PersonOrOrgInfo, AnnouncedTo, AnnouncedFrom, ScheduledAnnouncement |
| 21 | +from ietf.idtracker.models import IESGLogin |
21 | 22 |
|
22 | 23 | # assumptions: |
23 | 24 | # - nomcom groups have been imported |
24 | | -# - persons have been imported |
| 25 | +# - persons have been imported (Announcement originators and IESGLogins) |
25 | 26 |
|
26 | | -# imports Announcements |
27 | | - |
28 | | -# FIXME: should import ScheduledAnnouncements |
| 27 | +# imports Announcement, ScheduledAnnouncement |
29 | 28 |
|
30 | 29 | system = Person.objects.get(name="(System)") |
31 | 30 |
|
32 | 31 | # Announcement |
33 | 32 | for o in Announcement.objects.all().select_related('announced_to', 'announced_from').order_by('announcement_id').iterator(): |
| 33 | + print "importing Announcement", o.pk |
34 | 34 | try: |
35 | 35 | message = Message.objects.get(id=o.announcement_id) |
36 | 36 | except Message.DoesNotExist: |
|
74 | 74 | message.bcc = l[len("bcc:"):].strip() |
75 | 75 | elif l.lower().startswith("reply-to:"): |
76 | 76 | message.reply_to = l[len("reply-to:"):].strip() |
77 | | - message.text = o.text |
| 77 | + message.body = o.text |
78 | 78 | message.save() |
79 | 79 |
|
80 | 80 | message.related_groups.clear() |
|
86 | 86 |
|
87 | 87 | message.related_groups.add(nomcom) |
88 | 88 |
|
| 89 | + |
| 90 | +# precompute scheduled_by's to speed up the loop a bit |
| 91 | +scheduled_by_mapping = {} |
| 92 | +for by in ScheduledAnnouncement.objects.all().values_list("scheduled_by", flat=True).distinct(): |
| 93 | + logins = IESGLogin.objects.filter(login_name=by) |
| 94 | + if logins: |
| 95 | + l = logins[0] |
| 96 | + person = l.person |
| 97 | + if not person: |
| 98 | + person = PersonOrOrgInfo.objects.get(first_name=l.first_name, last_name=l.last_name) |
| 99 | + found = old_person_to_person(person) |
| 100 | + else: |
| 101 | + found = system |
| 102 | + |
| 103 | + print "mapping", by, "to", found |
| 104 | + scheduled_by_mapping[by] = found |
| 105 | + |
| 106 | +# ScheduledAnnouncement |
| 107 | +for o in ScheduledAnnouncement.objects.all().order_by('id').iterator(): |
| 108 | + print "importing ScheduledAnnouncement", o.pk |
| 109 | + try: |
| 110 | + q = SendQueue.objects.get(id=o.id) |
| 111 | + except SendQueue.DoesNotExist: |
| 112 | + q = SendQueue(id=o.id) |
| 113 | + # make sure there's no id overlap with ordinary already-imported announcements |
| 114 | + q.message = Message(id=o.id + 4000) |
| 115 | + |
| 116 | + time = datetime.datetime.combine(o.scheduled_date, |
| 117 | + datetime.time(*(int(x) for x in o.scheduled_time.split(":")))) |
| 118 | + by = scheduled_by_mapping[o.scheduled_by] |
| 119 | + |
| 120 | + q.message.time = time |
| 121 | + q.message.by = by |
| 122 | + |
| 123 | + q.message.subject = (o.subject or "").strip() |
| 124 | + q.message.to = (o.to_val or "").strip() |
| 125 | + q.message.frm = (o.from_val or "").strip() |
| 126 | + q.message.cc = (o.cc_val or "").strip() |
| 127 | + q.message.bcc = (o.bcc_val or "").strip() |
| 128 | + q.message.reply_to = (o.replyto or "").strip() |
| 129 | + q.message.body = o.body or "" |
| 130 | + q.message.content_type = o.content_type or "" |
| 131 | + q.message.save() |
| 132 | + |
| 133 | + q.time = time |
| 134 | + q.by = by |
| 135 | + |
| 136 | + d = None |
| 137 | + if o.to_be_sent_date: |
| 138 | + try: |
| 139 | + t = datetime.time(*(int(x) for x in o.to_be_sent_time.split(":"))) |
| 140 | + except ValueError: |
| 141 | + t = datetime.time(0, 0, 0) |
| 142 | + d = datetime.datetime.combine(o.to_be_sent_date, t) |
| 143 | + |
| 144 | + q.send_at = d |
| 145 | + |
| 146 | + d = None |
| 147 | + if o.actual_sent_date: |
| 148 | + try: |
| 149 | + t = datetime.time(*(int(x) for x in o.scheduled_time.split(":"))) |
| 150 | + except ValueError: |
| 151 | + t = datetime.time(0, 0, 0) |
| 152 | + |
| 153 | + d = datetime.datetime.combine(o.actual_sent_date, t) |
| 154 | + |
| 155 | + q.sent_at = d |
| 156 | + |
| 157 | + n = (o.note or "").strip() |
| 158 | + if n.startswith("<br>"): |
| 159 | + n = n[len("<br>"):] |
| 160 | + q.note = n |
| 161 | + |
| 162 | + q.save() |
0 commit comments