def handle_register(self, action):
     data, errors = self.extractData()
     if not errors:
         email = data['email']
         reg = findRegistrationObject(self.context, email)
         if reg is not None:
             widget = self.widgets['email']
             view = getMultiAdapter(
                 (schema.ValidationError(),
                  self.request, widget, widget.field,
                  self, self.context), IErrorViewSnippet)
             view.update()
             view.message = u"Duplicate Registration"
             widget.error = view
             errors += (view,)
     if errors:
         self.status = self.formErrorsMessage
         return
     # when creating a new registration, the no-show value should always
     # be False, but hiding the widget makes it come out True. This just
     # make sure it's set correctly
     data['noshow'] = False
     obj = self.createAndAdd(data)
     if obj is not None:
         # mark only as finished if we get the new object
         self._finishedAdd = True
         if data.get('new_user', False):
             msg = u'Registration submitted'
         else:
             msg = u'Registered user'
         IStatusMessage(self.request).addStatusMessage(msg, "info")
 def makePayment(self, action, data):
     reg = findRegistrationObject(self.context, self.wizard.data_manager.get("form.email"))
     if reg is None:
         raise Exception("oops, there was an error.")
     super(CheckoutReviewAndPay, self).makePayment.success_handler(self, action, data)
     reg = reg._unrestrictedGetObject()
     reg.paid_fee = True
     reg.reindexObject()
    def handle_register(self, action):
        data, errors = self.extractData()
        if not errors:
            email = data['email']
            reg = findRegistrationObject(self.context, email)
            if reg is not None:
                widget = self.widgets['email']
                view = getMultiAdapter(
                    (schema.ValidationError(),
                     self.request, widget, widget.field,
                     self, self.context), IErrorViewSnippet)
                view.update()
                view.message = u"Duplicate Registration"
                widget.error = view
                errors += (view,)
        if errors:
            self.status = self.formErrorsMessage
            return

        # avoid security checks and add a registration to the
        # registraitons folder of the event
        pt = getToolByName(self, 'portal_types')
        type_info = pt.getTypeInfo('collective.eventmanager.Registration')
        normalizer = getUtility(IIDNormalizer)
        orignewid = newid = normalizer.normalize(data['title'])
        registrations = self.context['registrations']
        count = 1
        while newid in registrations:
            newid = orignewid + '-' + str(count)
            count += 1
        obj = type_info._constructInstance(
                registrations,
                type_name='collective.eventmanager.Registration',
                id=newid,
                **data)
        if hasattr(type_info, '_finishConstruction'):
            finobj = type_info._finishConstruction(obj)
        else:
            finobj = obj

        if finobj is not None:
            # mark only as finished if we get the new object
            self._finishedAdd = True
            msg = "Registration Complete"
            IStatusMessage(self.request).addStatusMessage(msg, "info")

            self.request.response.redirect(self.context.absolute_url()
                                            + '/@@pay-for-registration')
 def validate(self, action, data):
     errors = super(CheckoutAddress, self).validate(action, data)
     reg = findRegistrationObject(self.context, data.get("email"))
     if reg is None:
         widget = self.widgets.get("email")
         error = WidgetInputError(field_name="email", widget_title=_(u"Email"), errors=_(u"Not registered email."))
         widget._error = error
         errors += (error,)
     elif reg.paid_fee:
         widget = self.widgets.get("email")
         error = WidgetInputError(
             field_name="email", widget_title=_(u"Email"), errors=_(u"This attendee has already paid.")
         )
         widget._error = error
         errors += (error,)
     return errors