Skip to content

Commit 35939cc

Browse files
committed
Remove references to old announcement models and remove the model definitions
- Legacy-Id: 6767
1 parent 2cf72aa commit 35939cc

8 files changed

Lines changed: 16 additions & 209 deletions

File tree

ietf/announcements/models.py

Lines changed: 0 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,88 +1 @@
1-
# Copyright The IETF Trust 2007, All Rights Reserved
2-
31
from django.db import models
4-
from django.conf import settings
5-
from ietf.idtracker.models import PersonOrOrgInfo, ChairsHistory
6-
#from django.contrib.auth.models import Permission
7-
8-
# I don't know why the IETF database mostly stores times
9-
# as char(N) instead of TIME. Until it's important, let's
10-
# keep them as char here too.
11-
12-
# email is not used; the announced_from text is Foo Bar <foo@bar.com>
13-
class AnnouncedFrom(models.Model):
14-
announced_from_id = models.AutoField(primary_key=True)
15-
announced_from = models.CharField(blank=True, max_length=255, db_column='announced_from_value')
16-
email = models.CharField(blank=True, max_length=255, db_column='announced_from_email', editable=False)
17-
#permission = models.ManyToManyField(Permission, limit_choices_to={'codename__endswith':'announcedfromperm'}, verbose_name='Permission Required', blank=True)
18-
def __str__(self):
19-
return self.announced_from
20-
class Meta:
21-
db_table = 'announced_from'
22-
#permissions = (
23-
# ("ietf_chair_announcedfromperm", "Can send messages from IETF Chair"),
24-
# ("iab_chair_announcedfromperm", "Can send messages from IAB Chair"),
25-
# ("iad_announcedfromperm", "Can send messages from IAD"),
26-
# ("ietf_execdir_announcedfromperm", "Can send messages from IETF Executive Director"),
27-
# ("other_announcedfromperm", "Can send announcements from others"),
28-
#)
29-
30-
class AnnouncedTo(models.Model):
31-
announced_to_id = models.AutoField(primary_key=True)
32-
announced_to = models.CharField(blank=True, max_length=255, db_column='announced_to_value')
33-
email = models.CharField(blank=True, max_length=255, db_column='announced_to_email')
34-
def __str__(self):
35-
return self.announced_to
36-
class Meta:
37-
db_table = 'announced_to'
38-
39-
class Announcement(models.Model):
40-
announcement_id = models.AutoField(primary_key=True)
41-
announced_by = models.ForeignKey(PersonOrOrgInfo, db_column='announced_by')
42-
announced_date = models.DateField(null=True, blank=True)
43-
announced_time = models.CharField(blank=True, max_length=20)
44-
text = models.TextField(blank=True, db_column='announcement_text')
45-
announced_from = models.ForeignKey(AnnouncedFrom)
46-
cc = models.CharField(blank=True, null=True, max_length=255)
47-
subject = models.CharField(blank=True, max_length=255)
48-
extra = models.TextField(blank=True,null=True)
49-
announced_to = models.ForeignKey(AnnouncedTo)
50-
nomcom = models.NullBooleanField()
51-
nomcom_chair = models.ForeignKey(ChairsHistory, null=True, blank=True)
52-
manually_added = models.BooleanField(db_column='manualy_added')
53-
other_val = models.CharField(blank=True, null=True, max_length=255)
54-
def __str__(self):
55-
return "Announcement from %s to %s on %s %s" % (self.announced_from, self.announced_to, self.announced_date, self.announced_time)
56-
def from_name(self):
57-
if self.announced_from_id == 99:
58-
return self.other_val
59-
if self.announced_from_id == 18: # sigh hardcoding
60-
return self.nomcom_chair.person
61-
return self.announced_from
62-
class Meta:
63-
db_table = 'announcements'
64-
65-
class ScheduledAnnouncement(models.Model):
66-
mail_sent = models.BooleanField()
67-
to_be_sent_date = models.DateField(null=True, blank=True)
68-
to_be_sent_time = models.CharField(blank=True, null=True, max_length=50)
69-
scheduled_by = models.CharField(blank=True, max_length=100)
70-
scheduled_date = models.DateField(null=True, blank=True)
71-
scheduled_time = models.CharField(blank=True, max_length=50)
72-
subject = models.CharField(blank=True, max_length=255)
73-
to_val = models.CharField(blank=True, max_length=255)
74-
from_val = models.CharField(blank=True, max_length=255)
75-
cc_val = models.TextField(blank=True,null=True)
76-
body = models.TextField(blank=True)
77-
actual_sent_date = models.DateField(null=True, blank=True)
78-
actual_sent_time = models.CharField(blank=True, max_length=50) # should be time, but database contains oddities
79-
first_q = models.IntegerField(null=True, blank=True)
80-
second_q = models.IntegerField(null=True, blank=True)
81-
note = models.TextField(blank=True,null=True)
82-
content_type = models.CharField(blank=True, max_length=255)
83-
replyto = models.CharField(blank=True, null=True, max_length=255)
84-
bcc_val = models.CharField(blank=True, null=True, max_length=255)
85-
def __str__(self):
86-
return "Scheduled Announcement from %s to %s on %s %s" % (self.from_val, self.to_val, self.to_be_sent_date, self.to_be_sent_time)
87-
class Meta:
88-
db_table = 'scheduled_announcements'

ietf/announcements/sitemaps.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@
22

33
from django.conf import settings
44
from django.contrib.sitemaps import Sitemap
5-
from ietf.announcements.models import Announcement
65
from ietf.message.models import Message
76

87
class NOMCOMAnnouncementsMap(Sitemap):
98
changefreq = "never"
109
def items(self):
11-
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
12-
return Message.objects.filter(related_groups__acronym__startswith="nomcom").exclude(related_groups__acronym="nomcom").order_by('-time')
13-
return Announcement.objects.all().filter(nomcom=True)
10+
return Message.objects.filter(related_groups__acronym__startswith="nomcom").exclude(related_groups__acronym="nomcom").order_by('-time')
1411
def location(self, obj):
1512
return "/ann/nomcom/%d/" % obj.id
1613
def lastmod(self, obj):

ietf/announcements/tests.py

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
from ietf.utils.mail import outbox
88
from ietf.utils import TestCase
99

10-
from ietf.announcements.models import ScheduledAnnouncement
11-
1210
from ietf.message.models import Message, SendQueue
1311
from ietf.person.models import Person
1412

@@ -22,54 +20,6 @@ def doCanonicalize(self, url, content):
2220
return content
2321

2422
class SendScheduledAnnouncementsTestCase(TestCase):
25-
def test_send_plain_announcement(self):
26-
a = ScheduledAnnouncement.objects.create(
27-
mail_sent=False,
28-
subject="This is a test",
29-
to_val="test@example.com",
30-
from_val="testmonkey@example.com",
31-
cc_val="cc.a@example.com, cc.b@example.com",
32-
bcc_val="bcc@example.com",
33-
body="Hello World!",
34-
content_type="",
35-
)
36-
37-
mailbox_before = len(outbox)
38-
39-
from ietf.announcements.send_scheduled import send_scheduled_announcement
40-
send_scheduled_announcement(a)
41-
42-
self.assertEquals(len(outbox), mailbox_before + 1)
43-
self.assertTrue("This is a test" in outbox[-1]["Subject"])
44-
self.assertTrue(ScheduledAnnouncement.objects.get(id=a.id).mail_sent)
45-
46-
def test_send_mime_announcement(self):
47-
a = ScheduledAnnouncement.objects.create(
48-
mail_sent=False,
49-
subject="This is a test",
50-
to_val="test@example.com",
51-
from_val="testmonkey@example.com",
52-
cc_val="cc.a@example.com, cc.b@example.com",
53-
bcc_val="bcc@example.com",
54-
body='--NextPart\r\n\r\nA New Internet-Draft is available from the on-line Internet-Drafts directories.\r\n--NextPart\r\nContent-Type: Message/External-body;\r\n\tname="draft-huang-behave-bih-01.txt";\r\n\tsite="ftp.ietf.org";\r\n\taccess-type="anon-ftp";\r\n\tdirectory="internet-drafts"\r\n\r\nContent-Type: text/plain\r\nContent-ID: <2010-07-30001541.I-D@ietf.org>\r\n\r\n--NextPart--',
55-
content_type='Multipart/Mixed; Boundary="NextPart"',
56-
)
57-
58-
mailbox_before = len(outbox)
59-
60-
from ietf.announcements.send_scheduled import send_scheduled_announcement
61-
send_scheduled_announcement(a)
62-
63-
self.assertEquals(len(outbox), mailbox_before + 1)
64-
self.assertTrue("This is a test" in outbox[-1]["Subject"])
65-
self.assertTrue("--NextPart" in outbox[-1].as_string())
66-
self.assertTrue(ScheduledAnnouncement.objects.get(id=a.id).mail_sent)
67-
68-
69-
class SendScheduledAnnouncementsTestCaseREDESIGN(TestCase):
70-
# See ietf.utils.test_utils.TestCase for the use of perma_fixtures vs. fixtures
71-
perma_fixtures = ["names"]
72-
7323
def test_send_plain_announcement(self):
7424
make_test_data()
7525

@@ -128,6 +78,3 @@ def test_send_mime_announcement(self):
12878
self.assertTrue("This is a test" in outbox[-1]["Subject"])
12979
self.assertTrue("--NextPart" in outbox[-1].as_string())
13080
self.assertTrue(SendQueue.objects.get(id=q.id).sent_at)
131-
132-
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
133-
SendScheduledAnnouncementsTestCase = SendScheduledAnnouncementsTestCaseREDESIGN

ietf/announcements/urls.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
11
# Copyright The IETF Trust 2007, All Rights Reserved
22

33
from django.conf.urls.defaults import patterns
4-
from ietf.announcements.models import Announcement
54

65
from django.conf import settings
76

8-
nomcom_dict = {
9-
'queryset': Announcement.objects.all().filter(nomcom=True)
10-
}
11-
127
urlpatterns = patterns('',
13-
# (r'^nomcom/$', 'django.views.generic.simple.redirect_to', {'url': 'http://www.ietf.org/nomcom/index.html'} ),
148
(r'^nomcom/$', 'ietf.announcements.views.nomcom'),
15-
(r'^nomcom/(?P<object_id>\d+)/$', 'ietf.announcements.views.message_detail') if settings.USE_DB_REDESIGN_PROXY_CLASSES else (r'^nomcom/(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', nomcom_dict)
9+
(r'^nomcom/(?P<object_id>\d+)/$', 'ietf.announcements.views.message_detail'))
1610
)

ietf/announcements/views.py

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,18 @@
11
# Copyright The IETF Trust 2007, All Rights Reserved
22

3+
import re
4+
35
from django.views.generic.simple import direct_to_template
46
from django.shortcuts import get_object_or_404
57
from django.conf import settings
68
from django.db.models import Q
79

8-
import re
9-
1010
from ietf.idtracker.models import ChairsHistory
1111
from ietf.idtracker.models import Role
12-
from ietf.announcements.models import Announcement
1312
from ietf.group.models import Group, GroupEvent
1413
from ietf.message.models import Message
1514

1615
def nomcom(request):
17-
curr_chair = (ChairsHistory.objects.
18-
get(chair_type=Role.NOMCOM_CHAIR, present_chair='1'))
19-
20-
all_chairs = (ChairsHistory.objects.all().
21-
filter(chair_type='3',start_year__gt = 2003).
22-
order_by('-start_year'))
23-
24-
nomcom_announcements = Announcement.objects.all().filter(nomcom=1)
25-
26-
regimes = []
27-
28-
for chair in all_chairs:
29-
chair_announcements = (nomcom_announcements.filter(nomcom_chair=chair).
30-
order_by('-announced_date','-announced_time'))
31-
regimes = regimes + [{'chair': chair,
32-
'announcements' : chair_announcements }]
33-
34-
return direct_to_template(request,
35-
"announcements/nomcom.html",
36-
{ 'curr_chair' : curr_chair,
37-
'regimes' : regimes })
38-
39-
def nomcomREDESIGN(request):
4016
address_re = re.compile("<.*>")
4117

4218
nomcoms = list(Group.objects.filter(acronym__startswith="nomcom").exclude(name="nomcom"))
@@ -69,11 +45,6 @@ def nomcomREDESIGN(request):
6945
"announcements/nomcomREDESIGN.html",
7046
{ 'curr_chair' : regimes[0]["chair"],
7147
'regimes' : regimes })
72-
73-
74-
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
75-
nomcom = nomcomREDESIGN
76-
7748

7849
def message_detail(request, object_id):
7950
# restrict to nomcom announcements for the time being

ietf/bin/send-scheduled-mail

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ management.setup_environ(settings)
1010
syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_USER)
1111

1212

13-
from ietf.announcements.models import ScheduledAnnouncement
1413
from ietf.announcements.send_scheduled import *
1514
from django.db.models import Q
1615

@@ -25,27 +24,15 @@ mode = sys.argv[1]
2524

2625
now = datetime.datetime.now()
2726

28-
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
29-
from ietf.announcements.models import SendQueue
30-
announcements = SendQueue.objects.filter(sent_at=None)
31-
if mode == "rsync":
32-
announcements = announcements.filter(send_at=None)
33-
elif mode == "specific":
34-
announcements = announcements.exclude(send_at=None).filter(send_at__lte=now)
35-
else:
36-
announcements = ScheduledAnnouncement.objects.filter(mail_sent=False)
37-
if mode == "rsync":
38-
# include bogus 0000-00-00 entries
39-
announcements = announcements.filter(Q(to_be_sent_date=None) | Q(to_be_sent_date__lte=datetime.date.min))
40-
elif mode == "specific":
41-
# exclude null/bogus entries
42-
announcements = announcements.exclude(Q(to_be_sent_date=None) | Q(to_be_sent_date__lte=datetime.date.min))
43-
44-
announcements = announcements.filter(to_be_sent_date__lte=now.date(),
45-
to_be_sent_time__lte=now.time())
46-
47-
for announcement in announcements:
48-
send_scheduled_announcement(announcement)
49-
50-
subject = announcement.message.subject if settings.USE_DB_REDESIGN_PROXY_CLASSES else announcement.subject
51-
syslog.syslog(u'Sent scheduled announcement %s "%s"' % (announcement.id, subject))
27+
from ietf.message.models import SendQueue
28+
needs_sending = SendQueue.objects.filter(sent_at=None).select_related("message")
29+
if mode == "rsync":
30+
needs_sending = needs_sending.filter(send_at=None)
31+
elif mode == "specific":
32+
needs_sending = needs_sending.exclude(send_at=None).filter(send_at__lte=now)
33+
34+
for s in needs_sending:
35+
send_scheduled_announcement(s)
36+
37+
subject = s.message.subject
38+
syslog.syslog(u'Sent scheduled announcement %s "%s"' % (s.id, subject))

ietf/secr/announcement/forms.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,6 @@ def get_to_choices():
135135
# ---------------------------------------------
136136
# Select Choices
137137
# ---------------------------------------------
138-
#TO_CHOICES = tuple(AnnouncedTo.objects.values_list('announced_to_id','announced_to'))
139138
TO_CHOICES = get_to_choices()
140139
#FROM_CHOICES = get_from_choices()
141140

ietf/secr/announcement/models.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
from django.db import models
2-
from ietf.announcements.models import AnnouncedTo
32
#from ietf.message.models import Message
43
from ietf.group.models import Group, Role

0 commit comments

Comments
 (0)