def auto_update_paid_object(self, request, payment): """ Update the object after online payment is received. """ from datetime import datetime try: from notification import models as notification except: notification = None from perms.utils import get_notice_recipients from events.utils import email_admins site_label = get_setting('site', 'global', 'sitedisplayname') site_url = get_setting('site', 'global', 'siteurl') self_reg8n = get_setting('module', 'users', 'selfregistration') payment_attempts = self.invoice.payment_set.count() registrants = self.registrant_set.all().order_by('id') for registrant in registrants: #registrant.assign_mapped_fields() if registrant.custom_reg_form_entry: registrant.name = registrant.custom_reg_form_entry.__unicode__() else: registrant.name = ' '.join([registrant.first_name, registrant.last_name]) # only send email on success! or first fail if payment.is_paid or payment_attempts <= 1: notification.send_emails( [self.registrant.email], # recipient(s) 'event_registration_confirmation', # template { 'site_label': site_label, 'site_url': site_url, 'self_reg8n': self_reg8n, 'reg8n': self, 'registrants': registrants, 'event': self.event, 'price': self.invoice.total, 'is_paid': payment.is_paid, }, True, # notice saved in db ) #notify the admins too email_admins(self.event, self.invoice.total, self_reg8n, self, registrants)