def notify_registration_confirmation(event, registrant): reg_form = registrant.getRegistrationForm() from_address = reg_form.getNotificationSender() reg_details = _get_reg_details(reg_form, registrant) # Send email to organizers notification = reg_form.getNotification() to_list = notification.getToList() cc_list = notification.getCCList() if to_list or cc_list: reg_page = url_for('event_mgmt.confModifRegistrants-modification', registrant, _external=True, _secure=True) tpl = get_template_module('events/registration/emails/registration_confirmation_organizers.html', event=event, registrant=registrant, reg_page=reg_page, reg_details=reg_details) yield make_email(to_list, cc_list, from_address=from_address, subject=tpl.get_subject(), body=tpl.get_body(), html=True) # Send email to the registrant if reg_form.isSendRegEmail(): needs_to_pay = registrant.doPay() and payment_event_settings.get(event, 'enabled') registration_email_msg = payment_event_settings.get(event, 'register_email') params = {} if not registrant.getAvatar(): params = {'registrantId': registrant.getId(), 'authkey': registrant.getRandomId()} reg_page = url_for('event.confRegistrationFormDisplay', event, _external=True, _secure=True, **params) tpl = get_template_module('events/registration/emails/registration_confirmation_registrant.html', event=event, registrant=registrant, payment_enabled=payment_event_settings.get(event, 'enabled'), reg_page=reg_page, needs_to_pay=needs_to_pay, reg_details=reg_details, registration_email_msg=registration_email_msg) ticket = reg_form.getETicket() attachments = [] if ticket.isEnabled() and ticket.isAttachedToEmail(): attachments.append({ 'name': 'Ticket.pdf', 'binary': TicketToPDF(event, registrant).getPDFBin() }) yield make_email(registrant.getEmail(), from_address=from_address, subject=tpl.get_subject(), body=tpl.get_body(), attachments=attachments, html=True)
def _process(self): set_best_lang() # prevents from having a _LazyString when generating a pdf without session.lang set filename = "{0}-Ticket.pdf".format(self._target.getTitle()) pdf = TicketToPDF(self._target, self._registrant) return send_file(filename, StringIO(pdf.getPDFBin()), 'PDF')
def generate_ticket(registration): pdf = TicketToPDF(registration.registration_form.event, registration) return BytesIO(pdf.getPDFBin())
def _process(self): filename = "{0}-Ticket.pdf".format(self._target.getTitle()) pdf = TicketToPDF(self._target, self._registrant) return send_file(filename, StringIO(pdf.getPDFBin()), 'PDF')
def _process(self): canManageRegistration = self._conf.canManageRegistration( self._getUser()) if not canManageRegistration and not self._regForm.isActivated(): p = registrationForm.WPRegFormInactive(self, self._conf) return p.display() params = self._getRequestParams() email = self._regForm.getPersonalData().getValueFromParams( params, 'email') if email is None: raise FormValuesError( _("An email address has to be set in order to make the registration in the event." )) elif not validMail(email, False): raise FormValuesError(_("The given email address is not valid.")) matchedUsers = AvatarHolder().match({"email": email}, exact=1) if matchedUsers: user = matchedUsers[0] else: user = None # Check if the user can register if not canManageRegistration: # normal user registering. Managers can. if self._conf.getRegistrationForm().isFull(): self._redirect( urlHandlers.UHConfRegistrationFormDisplay.getURL( self._conf)) return elif not self._conf.getRegistrationForm().inRegistrationPeriod(): p = registrationForm.WPRegistrationFormClosed(self, self._conf) return p.display() if user is None: if self._conf.hasRegistrantByEmail(email): raise FormValuesError( "There is already a user with the email \"%s\". Please choose another one" % email) else: if user.isRegisteredInConf( self._conf) or self._conf.hasRegistrantByEmail(email): if canManageRegistration: raise FormValuesError( "There is already a user with the email \"%s\". Please choose another one" % email) else: raise FormValuesError( "You have already registered with the email address \"%s\". If you need to modify your registration, please contact the managers of the conference." % email) rp = registration.Registrant() self._conf.addRegistrant(rp, user) rp.setValues(self._getRequestParams(), user) if user is not None: user.addRegistrant(rp) rp.setAvatar(user) # This creates the email to the new registrant and SENDS the email to the organizers if necessary... WTF. email = self._regForm.getNotification().createEmailNewRegistrant( self._regForm, rp) if self._regForm.isSendRegEmail() and rp.getEmail().strip(): modEticket = self._conf.getRegistrationForm().getETicket() if modEticket.isEnabled() and modEticket.isAttachedToEmail(): attachment = { 'name': "{0}-Ticket.pdf".format(self._target.getTitle()), 'binary': TicketToPDF(self._target, rp).getPDFBin(), } email["attachments"] = [attachment] GenericMailer.send(email) if canManageRegistration and user != self._getUser(): self._redirect(RHRegistrantListModif._uh.getURL(self._conf)) else: self._redirect( urlHandlers.UHConfRegistrationFormCreationDone.getURL(rp))
def _process(self): canManageRegistration = self._conf.canManageRegistration(self._getUser()) if not canManageRegistration and not self._regForm.isActivated(): p = registrationForm.WPRegFormInactive(self, self._conf) return p.display() params = self._getRequestParams() email = self._regForm.getPersonalData().getValueFromParams(params, 'email') if email is None: raise FormValuesError(_("An email address has to be set in order to make the registration in the event.")) elif not validMail(email, False): raise FormValuesError(_("The given email address is not valid.")) matchedUsers = AvatarHolder().match({"email": email}, exact=1) if matchedUsers: user = matchedUsers[0] else: user = None # Check if the user can register if not canManageRegistration: # normal user registering. Managers can. if self._conf.getRegistrationForm().isFull(): self._redirect(urlHandlers.UHConfRegistrationFormDisplay.getURL(self._conf)) return elif not self._conf.getRegistrationForm().inRegistrationPeriod(): p = registrationForm.WPRegistrationFormClosed(self, self._conf) return p.display() if user is None: if self._conf.hasRegistrantByEmail(email): raise FormValuesError("There is already a user with the email \"%s\". Please choose another one" % email) else: if user.isRegisteredInConf(self._conf) or self._conf.hasRegistrantByEmail(email): if canManageRegistration: raise FormValuesError("There is already a user with the email \"%s\". Please choose another one" % email) else: raise FormValuesError("You have already registered with the email address \"%s\". If you need to modify your registration, please contact the managers of the conference." % email) rp = registration.Registrant() self._conf.addRegistrant(rp, user) rp.setValues(self._getRequestParams(), user) rp.setSessionBillingEnabled(self._regForm.getSessionsForm().getType() != "2priorities") if user is not None: user.addRegistrant(rp) rp.setAvatar(user) # avoid multiple sending in case of db conflict email = self._regForm.getNotification()\ .createEmailNewRegistrant(self._regForm, rp) modEticket = self._conf.getRegistrationForm().getETicket() if modEticket.isEnabled() and modEticket.isAttachedToEmail(): attachment = {} filename = "{0}-Ticket.pdf".format(self._target.getTitle()) attachment["name"] = filename pdf = TicketToPDF(self._target, rp) attachment["binary"] = pdf.getPDFBin() email["attachments"] = [attachment] if email: GenericMailer.send(email) if canManageRegistration and user != self._getUser(): self._redirect(RHRegistrantListModif._uh.getURL(self._conf)) else: self._redirect(urlHandlers.UHConfRegistrationFormCreationDone.getURL(rp))