Move to using a set instead of a dict when computing e-mail recipients
Updated 10 months ago
| Christian Hammond | Reviewers | ||
| trunk | reviewboard | ||
| None | Review Board SVN | ||
This is some cleanup code from Jonathan Ellis's e-mail patch (http://reviews.review-board.org/r/208/) that moves our e-mail recipient code to using a set instead of a dict.
Unit tests pass.
| /trunk/reviewboard/reviews/email.py | |||
|---|---|---|---|
| Revision 1208 | New Change | ||
| ... | 54 lines hidden [Expand] | ||
| 55 | """ |
55 | """ |
| 56 | current_site = Site.objects.get(pk=settings.SITE_ID) |
56 | current_site = Site.objects.get(pk=settings.SITE_ID) |
| 57 | 57 | ||
| 58 | from_email = get_email_address_for_user(user) |
58 | from_email = get_email_address_for_user(user) |
| 59 | 59 | ||
| 60 | recipient_table = { |
60 | recipients = set([from_email]) |
| 61 | from_email: 1, |
||
| 62 | } |
||
| 63 | 61 | ||
| 64 | if review_request.submitter.is_active: |
62 | if review_request.submitter.is_active: |
| 65 | recipient_table[get_email_address_for_user(review_request.submitter)] = 1 |
63 | recipients.add(get_email_address_for_user(review_request.submitter)) |
| 66 | 64 | ||
| 67 | for u in review_request.target_people.filter(is_active=True): |
65 | for u in review_request.target_people.filter(is_active=True): |
| 68 | recipient_table[get_email_address_for_user(u)] = 1 |
66 | recipients.add(get_email_address_for_user(u)) |
| 69 | 67 | ||
| 70 | for group in review_request.target_groups.all(): |
68 | for group in review_request.target_groups.all(): |
| 71 | for address in get_email_addresses_for_group(group): |
69 | for address in get_email_addresses_for_group(group): |
| 72 | recipient_table[address] = 1 |
70 | recipients.add(address) |
| 73 | 71 | ||
| 74 | for profile in review_request.starred_by.all(): |
72 | for profile in review_request.starred_by.all(): |
| 75 | if profile.user.is_active: |
73 | if profile.user.is_active: |
| 76 | recipient_table[get_email_address_for_user(profile.user)] = 1 |
74 | recipients.add(get_email_address_for_user(profile.user)) |
| 77 | 75 | ||
| 78 | if extra_recipients: |
76 | if extra_recipients: |
| 79 | for recipient in extra_recipients: |
77 | for recipient in extra_recipients: |
| 80 | if recipient.is_active: |
78 | if recipient.is_active: |
| 81 | recipient_table[get_email_address_for_user(recipient)] = 1 |
79 | recipients.add(get_email_address_for_user(recipient)) |
| 82 | 80 | ||
| 83 | recipient_list = recipient_table.keys() |
81 | context['user'] = user |
| 84 | context['domain'] = current_site.domain |
82 | context['domain'] = current_site.domain |
| 85 | context['domain_method'] = settings.DOMAIN_METHOD |
83 | context['domain_method'] = settings.DOMAIN_METHOD |
| 86 | context['review_request'] = review_request |
84 | context['review_request'] = review_request |
| 87 | body = render_to_string(template_name, context) |
85 | body = render_to_string(template_name, context) |
| 88 | 86 | ||
| 89 | message = SpiffyEmailMessage(subject.strip(), body, from_email, |
87 | message = SpiffyEmailMessage(subject.strip(), body, from_email, |
| 90 | recipient_list, in_reply_to) |
88 | recipients, in_reply_to) |
| 91 | message.send() |
89 | message.send() |
| 92 | 90 | ||
| 93 | return message.message_id |
91 | return message.message_id |
| 94 | 92 | ||
| 95 | 93 | ||
| ... | 60 lines hidden [Expand] | ||
| 156 | review_request.save() |
154 | review_request.save() |
| 157 | 155 | ||
| 158 | 156 | ||
| 159 | def mail_review(user, review): |
157 | def mail_review(user, review): |
| 160 | """Sends an e-mail representing the supplied review.""" |
158 | """Sends an e-mail representing the supplied review.""" |
| 161 | if not review.review_request.public: |
159 | review_request = review.review_request |
| 160 | |||
| 161 | if not review_request.public: |
||
| 162 | return |
162 | return |
| 163 | 163 | ||
| 164 | review.ordered_comments = \ |
164 | review.ordered_comments = \ |
| 165 | review.comments.order_by('filediff', 'first_line') |
165 | review.comments.order_by('filediff', 'first_line') |
| 166 | 166 | ||
| 167 | review.email_message_id = \ |
167 | review.email_message_id = \ |
| 168 | send_review_mail(user, |
168 | send_review_mail(user, |
| 169 | review.review_request, |
169 | review_request, |
| 170 | u"Re: Review Request: %s" % |
170 | u"Re: Review Request: %s" % review_request.summary, |
| 171 | review.review_request.summary, |
171 | review_request.email_message_id, |
| 172 | review.review_request.email_message_id, |
||
| 173 | None, |
172 | None, |
| 174 | 'reviews/review_email.txt', |
173 | 'reviews/review_email.txt', |
| 175 | {'review': review}) |
174 | {'review': review}) |
| 176 | review.time_emailed = datetime.now() |
175 | review.time_emailed = datetime.now() |
| 177 | review.save() |
176 | review.save() |
| 178 | 177 | ||
| 179 | 178 | ||
| 180 | def mail_reply(user, reply): |
179 | def mail_reply(user, reply): |
| 181 | """ |
180 | """ |
| 182 | Sends an e-mail representing the supplied reply to a review. |
181 | Sends an e-mail representing the supplied reply to a review. |
| 183 | """ |
182 | """ |
| 184 | review = reply.base_reply_to |
183 | review = reply.base_reply_to |
| 184 | review_request = review.review_request |
||
| 185 | 185 | ||
| 186 | if not review.review_request.public: |
186 | if not review_request.public: |
| 187 | return |
187 | return |
| 188 | 188 | ||
| 189 | reply.email_message_id = \ |
189 | reply.email_message_id = \ |
| 190 | send_review_mail(user, |
190 | send_review_mail(user, |
| 191 | review.review_request, |
191 | review_request, |
| 192 | u"Re: Review Request: %s" % |
192 | u"Re: Review Request: %s" % review_request.summary, |
| 193 | review.review_request.summary, |
||
| 194 | review.email_message_id, |
193 | review.email_message_id, |
| 195 | harvest_people_from_review(review), |
194 | harvest_people_from_review(review), |
| 196 | 'reviews/reply_email.txt', |
195 | 'reviews/reply_email.txt', |
| 197 | {'review': review, |
196 | {'review': review, |
| 198 | 'reply': reply}) |
197 | 'reply': reply}) |
| 199 | reply.time_emailed = datetime.now() |
198 | reply.time_emailed = datetime.now() |
| 200 | reply.save() |
199 | reply.save() |
Other reviews