def validate_email(self, field): if RegistrationInvitation.find(email=field.data).with_parent( self.regform).count(): raise ValidationError( _("There is already an invitation with this email address.")) if Registration.find(email=field.data, is_active=True).with_parent(self.regform).count(): raise ValidationError( _("There is already a registration with this email address."))
def _checkParams(self): self.invitation = None try: token = request.args['invitation'] except KeyError: return try: UUID(hex=token) except ValueError: flash(_("Your invitation code is not valid."), 'warning') return self.invitation = RegistrationInvitation.find(uuid=token).with_parent(self.regform).first() if self.invitation is None: flash(_("This invitation does not exist or has been withdrawn."), 'warning')
def _checkParams(self): self.invitation = None try: token = request.args['invitation'] except KeyError: return try: UUID(hex=token) except ValueError: flash(_("Your invitation code is not valid."), 'warning') return self.invitation = RegistrationInvitation.find(uuid=token).with_parent(self.regform).first() if self.invitation is None: flash(_("This invitation does not exist or has been withdrawn."), 'warning')
def create_registration(regform, data, invitation=None, management=False, notify_user=True, skip_moderation=None): user = session.user if session else None registration = Registration(registration_form=regform, user=get_user_by_email(data['email']), base_price=regform.base_price, currency=regform.currency) if skip_moderation is None: skip_moderation = management for form_item in regform.active_fields: if form_item.parent.is_manager_only: value = form_item.field_impl.default_value else: value = data.get(form_item.html_field_name) data_entry = RegistrationData() registration.data.append(data_entry) for attr, value in form_item.field_impl.process_form_data( registration, value).iteritems(): setattr(data_entry, attr, value) if form_item.type == RegistrationFormItemType.field_pd and form_item.personal_data_type.column: setattr(registration, form_item.personal_data_type.column, value) if invitation is None: # Associate invitation based on email in case the user did not use the link invitation = (RegistrationInvitation.find( email=data['email'], registration_id=None).with_parent(regform).first()) if invitation: invitation.state = InvitationState.accepted invitation.registration = registration registration.sync_state(_skip_moderation=skip_moderation) db.session.flush() signals.event.registration_created.send(registration, management=management) notify_registration_creation(registration, notify_user) logger.info('New registration %s by %s', registration, user) regform.event.log( EventLogRealm.management if management else EventLogRealm.participants, EventLogKind.positive, 'Registration', 'New registration: {}'.format(registration.full_name), user, data={'Email': registration.email}, meta={'registration_id': registration.id}) return registration
def create_registration(regform, data, invitation=None, management=False, notify_user=True): registration = Registration(registration_form=regform, user=get_user_by_email(data['email']), base_price=regform.base_price, currency=regform.currency) for form_item in regform.active_fields: if form_item.parent.is_manager_only: with db.session.no_autoflush: value = form_item.field_impl.default_value else: value = data.get(form_item.html_field_name) with db.session.no_autoflush: data_entry = RegistrationData() registration.data.append(data_entry) for attr, value in form_item.field_impl.process_form_data( registration, value).iteritems(): setattr(data_entry, attr, value) if form_item.type == RegistrationFormItemType.field_pd and form_item.personal_data_type.column: setattr(registration, form_item.personal_data_type.column, value) if invitation is None: # Associate invitation based on email in case the user did not use the link with db.session.no_autoflush: invitation = (RegistrationInvitation.find( email=data['email'], registration_id=None).with_parent(regform).first()) if invitation: invitation.state = InvitationState.accepted invitation.registration = registration registration.sync_state(_skip_moderation=management) db.session.flush() notify_registration_creation(registration, notify_user) logger.info('New registration %s by %s', registration, session.user) return registration
def validate_email(self, field): if RegistrationInvitation.find(email=field.data).with_parent(self.regform).count(): raise ValidationError(_("There is already an invitation with this email address.")) if Registration.find(email=field.data, is_active=True).with_parent(self.regform).count(): raise ValidationError(_("There is already a registration with this email address."))