Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
 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