Changeset e8550be for remit/vouchers
- Timestamp:
- Mar 20, 2010, 5:31:07 AM (15 years ago)
- Branches:
- master, client
- Children:
- c020a3b
- Parents:
- 14adb6b
- git-author:
- Alex Dehnert <adehnert@…> (03/20/10 05:31:07)
- git-committer:
- Alex Dehnert <adehnert@…> (03/20/10 05:31:07)
- Location:
- remit/vouchers
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
remit/vouchers/models.py
r6054f18 re8550be 36 36 ('can_list', 'Can list requests',), 37 37 ('can_approve', 'Can approve requests',), 38 ('can_email', 'Can send mail about requests',), 38 39 ) 39 40 … … 107 108 ) 108 109 110 111 class StockEmail: 112 def __init__(self, name, label, recipients, template, subject_template, context, ): 113 """ 114 Initialize a stock email object. 115 116 Each argument is required. 117 118 name: Short name. Letters, numbers, and hyphens only. 119 label: User-readable label. Briefly describe what the email says 120 recipients: Who receives the email. List of "recipient" (check recipient), "area" (area owner), "admins" (site admins) 121 template: Django template filename with the actual text 122 subject_template: Django template string with the subject 123 context: Type of context the email needs. Must be 'request' currently. 124 """ 125 126 self.name = name 127 self.label = label 128 self.recipients = recipients 129 self.template = template 130 self.subject_template = subject_template 131 self.context = context 132 133 def send_email_request(self, request,): 134 """ 135 Send an email that requires context "request". 136 """ 137 138 assert self.context == 'request' 139 140 # Generate text 141 from django.template import Context, Template 142 from django.template.loader import get_template 143 ctx = Context({ 144 'prefix': settings.EMAIL_SUBJECT_PREFIX, 145 'request': request, 146 'sender': settings.USER_EMAIL_SIGNATURE, 147 }) 148 tmpl = get_template(self.template) 149 body = tmpl.render(ctx) 150 subject_tmpl = Template(self.subject_template) 151 subject = subject_tmpl.render(ctx) 152 153 # Generate recipients 154 recipients = [] 155 for rt in self.recipients: 156 if rt == 'recipient': 157 recipients.append(request.check_to_email) 158 elif rt == 'area': 159 recipients.append(request.budget_area.owner_address()) 160 elif rt == 'admins': 161 pass # you don't *actually* have a choice... 162 for name, addr in settings.ADMINS: 163 recipients.append(addr) 164 165 # Send mail! 166 from django.core.mail import send_mail 167 send_mail( 168 subject, 169 body, 170 settings.SERVER_EMAIL, 171 recipients, 172 ) 173 174 stock_emails = { 175 'nodoc': StockEmail( 176 name='nodoc', 177 label='No documentation', 178 recipients=['recipient', 'area',], 179 template='vouchers/emails/no_docs_user.txt', 180 subject_template='{{prefix}}Missing documentation for reimbursement', 181 context = 'request', 182 ), 183 'voucher-sao': StockEmail( 184 name='voucher-sao', 185 label='Voucher submitted to SAO', 186 recipients=['recipient', ], 187 template='vouchers/emails/voucher_sao_user.txt', 188 subject_template='{{prefix}}Reimbursement sent to SAO for processing', 189 context = 'request', 190 ), 191 } -
remit/vouchers/views.py
r14adb6b re8550be 173 173 new = False 174 174 175 show_email = http_request.user.has_perm('vouchers.can_email') 176 if show_email: 177 email_message = '' 178 if http_request.method == 'POST' and 'send_email' in http_request.REQUEST: 179 mail = vouchers.models.stock_emails[http_request.REQUEST['email_name']] 180 assert mail.context == 'request' 181 mail.send_email_request(request_obj) 182 email_message = 'Sent email "%s".' % (mail.label, ) 183 email_options = [] 184 for mail in vouchers.models.stock_emails.values(): 185 if mail.context == 'request': 186 email_options.append({ 187 'label': mail.label, 188 'name' : mail.name, 189 }) 190 175 191 show_approve = (http_request.user.has_perm('vouchers.can_approve') 176 192 and request_obj.approval_status == vouchers.models.APPROVAL_STATE_PENDING) … … 232 248 context['approve_form'] = approve_form 233 249 context['approve_message'] = approve_message 250 if show_email: 251 context['email_options'] = email_options 252 context['email_message'] = email_message 234 253 return render_to_response('vouchers/ReimbursementRequest_review.html', context, context_instance=RequestContext(http_request), ) 235 254
Note: See TracChangeset
for help on using the changeset viewer.