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).items(): 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.query .filter_by(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, data=data) notify_registration_creation(registration, notify_user) logger.info('New registration %s by %s', registration, user) registration.log(EventLogRealm.management if management else EventLogRealm.participants, EventLogKind.positive, 'Registration', f'New registration: {registration.full_name}', user, data={'Email': registration.email}) 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 _clone_registrations(self, old_form, new_form, field_data_map): registration_attrs = get_simple_column_attrs(Registration) - { 'uuid', 'ticket_uuid' } for old_registration in old_form.registrations: if old_registration.is_deleted: continue new_registration = Registration(user=old_registration.user, registration_form=new_form, **{ attr: getattr( old_registration, attr) for attr in registration_attrs }) reg_data_attrs = get_simple_column_attrs(RegistrationData) - { 'storage_file_id', 'storage_backend', 'size' } for old_registration_data in old_registration.data: new_registration_data = RegistrationData( registration=new_registration, **{ attr: getattr(old_registration_data, attr) for attr in reg_data_attrs }) new_registration_data.field_data = field_data_map[ old_registration_data.field_data] if old_registration_data.storage_file_id is not None: with old_registration_data.open() as fd: new_registration_data.save(fd) db.session.flush() signals.event.registration_state_updated.send(new_registration, previous_state=None)
def _create_registration(user, regform, **kwargs): return Registration(first_name='Guinea', last_name='Pig', checked_in=True, state=RegistrationState.complete, currency='USD', email=user.email, user=user, registration_form=regform, **kwargs)
def _create_registration(user_id): user = create_user(user_id) reg = Registration(first_name='Guinea', last_name='Pig', checked_in=True, state=RegistrationState.complete, currency='USD', email=user.email, user=user, registration_form=dummy_regform) dummy_event.registrations.append(reg) db.session.flush() return reg
def dummy_reg(db, dummy_event, dummy_regform, dummy_user): """Create a dummy registration for the dummy event.""" reg = Registration(registration_form_id=dummy_regform.id, first_name='Guinea', last_name='Pig', checked_in=True, state=RegistrationState.complete, currency='USD', email='*****@*****.**', user=dummy_user) dummy_event.registrations.append(reg) db.session.flush() return reg
def _migrate_participant(self, old_part): state = PARTICIPANT_STATUS_MAP.get(old_part._status, RegistrationState.complete) registration = Registration( first_name=convert_to_unicode(old_part._firstName), last_name=convert_to_unicode(old_part._familyName), email=self._fix_email(old_part._email), submitted_dt=self.event._creationDS, base_price=0, price_adjustment=0, checked_in=old_part._present, state=state) self.importer.print_info( cformat('%{yellow}Registration%{reset} - %{cyan}{}%{reset} [{}]'). format(registration.full_name, state.title)) self._migrate_participant_user(old_part, registration) self._migrate_participant_data(old_part, registration) self._migrate_participant_status(old_part, registration) return registration
def _migrate_participant(self, old_part): state = PARTICIPANT_STATUS_MAP.get(old_part._status, RegistrationState.complete) registration = Registration( first_name=convert_to_unicode(old_part._firstName), last_name=convert_to_unicode(old_part._familyName), email=self._fix_email(old_part._email), submitted_dt=self.event.created_dt, base_price=0, price_adjustment=0, checked_in=old_part._present, state=state, currency=payment_settings.get('currency')) self.print_info( '%[yellow]Registration%[reset] - %[cyan]{}%[reset] [{}]'.format( registration.full_name, state.title)) self._migrate_participant_user(old_part, registration) self._migrate_participant_data(old_part, registration) self._migrate_participant_status(old_part, registration) return registration