def _participant_list_table(self, regform): def _process_registration(reg, column_ids, active_fields): data_by_field = reg.data_by_field def _content(column_id): if column_id in data_by_field: return data_by_field[column_id].get_friendly_data(for_humans=True) elif column_id in active_fields and active_fields[column_id].personal_data_type is not None: # some legacy registrations have no data in the firstname/lastname/email field # so we need to get it from the registration object itself return getattr(reg, active_fields[column_id].personal_data_type.column) else: # no data available for the field return '' columns = [{'text': _content(column_id)} for column_id in column_ids] return {'checked_in': self._is_checkin_visible(reg), 'columns': columns} active_fields = {field.id: field for field in regform.active_fields} column_ids = [column_id for column_id in registration_settings.get_participant_list_columns(self.event, regform) if column_id in active_fields] headers = [active_fields[column_id].title.title() for column_id in column_ids] registrations = [_process_registration(reg, column_ids, active_fields) for reg in regform.active_registrations] table = {'headers': headers, 'rows': registrations, 'title': regform.title} table['show_checkin'] = any(registration['checked_in'] for registration in registrations) return table
def _process(self): form = ParticipantsDisplayFormColumnsForm() if form.validate_on_submit(): registration_settings.set_participant_list_columns( self.event, form.json.data['columns'], self.regform) flash( _('The settings for "{}" have been saved.').format( self.regform.title), 'success') return jsonify_data() available_fields = { field.id: field for field in self.regform.active_fields } enabled_fields = [] for field_id in registration_settings.get_participant_list_columns( self.event, self.regform): try: field = available_fields[field_id] except KeyError: continue enabled_fields.append(field) del available_fields[field_id] disabled_fields = available_fields.values() return jsonify_template( 'events/registration/management/regform_display_form_columns.html', form=form, enabled_columns=enabled_fields, disabled_columns=disabled_fields)
def _participant_list_table(self, regform): def _process_registration(reg, column_ids, active_fields): data_by_field = reg.data_by_field def _content(column_id): if column_id in data_by_field: return data_by_field[column_id].get_friendly_data(for_humans=True) elif column_id in active_fields and active_fields[column_id].personal_data_type is not None: # some legacy registrations have no data in the firstname/lastname/email field # so we need to get it from the registration object itself return getattr(reg, active_fields[column_id].personal_data_type.column) else: # no data available for the field return '' columns = [{'text': _content(column_id)} for column_id in column_ids] return {'checked_in': self._is_checkin_visible(reg), 'columns': columns} active_fields = {field.id: field for field in regform.active_fields} column_ids = [column_id for column_id in registration_settings.get_participant_list_columns(self.event_new, regform) if column_id in active_fields] headers = [active_fields[column_id].title.title() for column_id in column_ids] active_registrations = sorted(regform.active_registrations, key=attrgetter('last_name', 'first_name', 'id')) registrations = [_process_registration(reg, column_ids, active_fields) for reg in active_registrations] return {'headers': headers, 'rows': registrations, 'title': regform.title, 'show_checkin': any(registration['checked_in'] for registration in registrations)}
def _process(self): regforms = (self.event_new.registration_forms .filter_by(is_deleted=False) .order_by(db.func.lower(RegistrationForm.title)) .all()) form = ParticipantsDisplayForm() if form.validate_on_submit(): data = form.json.data registration_settings.set(self.event, 'merge_registration_forms', data['merge_forms']) registration_settings.set_participant_list_form_ids(self.event, data['participant_list_forms']) registration_settings.set_participant_list_columns(self.event, data['participant_list_columns']) for regform in regforms: regform.publish_registrations_enabled = regform.id in data['participant_list_forms'] flash(_("The participants display settings have been saved."), 'success') return redirect(url_for('.manage_regforms_display', self.event_new)) available_columns = {field[0].name: field[1]['title'] for field in PersonalDataType.FIELD_DATA} enabled_columns = [] disabled_columns = [] for column_name in registration_settings.get_participant_list_columns(self.event): if column_name in available_columns: enabled_columns.append({'id': column_name, 'title': available_columns[column_name]}) del available_columns[column_name] for column_name, column_title in available_columns.iteritems(): disabled_columns.append({'id': column_name, 'title': column_title}) disabled_columns.sort(key=itemgetter('title')) available_forms = {regform.id: regform for regform in regforms} enabled_forms = [] disabled_forms = [] # Handle forms that have already been sorted by the user. for form_id in registration_settings.get_participant_list_form_ids(self.event): try: regform = available_forms[form_id] except KeyError: continue # Make sure publication was not disabled since the display settings were modified. if regform.publish_registrations_enabled: enabled_forms.append(regform) del available_forms[form_id] for form_id, regform in available_forms.iteritems(): # There might be forms with publication enabled that haven't been sorted by the user yet. if regform.publish_registrations_enabled: enabled_forms.append(regform) else: disabled_forms.append(regform) disabled_forms.sort(key=attrgetter('title')) merge_forms = registration_settings.get(self.event, 'merge_registration_forms') return WPManageRegistration.render_template('management/regform_display.html', self.event, event=self.event, regforms=regforms, enabled_columns=enabled_columns, disabled_columns=disabled_columns, enabled_forms=enabled_forms, disabled_forms=disabled_forms, merge_forms=merge_forms, form=form)
def _process(self): regforms = sorted(self.event_new.registration_forms, key=lambda f: f.title.lower()) form = ParticipantsDisplayForm() if form.validate_on_submit(): data = form.json.data registration_settings.set(self.event_new, 'merge_registration_forms', data['merge_forms']) registration_settings.set_participant_list_form_ids(self.event_new, data['participant_list_forms']) registration_settings.set_participant_list_columns(self.event_new, data['participant_list_columns']) for regform in regforms: regform.publish_registrations_enabled = regform.id in data['participant_list_forms'] flash(_("The participants display settings have been saved."), 'success') return redirect(url_for('.manage_regforms_display', self.event_new)) available_columns = {field[0].name: field[1]['title'] for field in PersonalDataType.FIELD_DATA} enabled_columns = [] disabled_columns = [] for column_name in registration_settings.get_participant_list_columns(self.event_new): if column_name in available_columns: enabled_columns.append({'id': column_name, 'title': available_columns[column_name]}) del available_columns[column_name] for column_name, column_title in available_columns.iteritems(): disabled_columns.append({'id': column_name, 'title': column_title}) disabled_columns.sort(key=itemgetter('title')) available_forms = {regform.id: regform for regform in regforms} enabled_forms = [] disabled_forms = [] # Handle forms that have already been sorted by the user. for form_id in registration_settings.get_participant_list_form_ids(self.event_new): try: regform = available_forms[form_id] except KeyError: continue # Make sure publication was not disabled since the display settings were modified. if regform.publish_registrations_enabled: enabled_forms.append(regform) del available_forms[form_id] for form_id, regform in available_forms.iteritems(): # There might be forms with publication enabled that haven't been sorted by the user yet. if regform.publish_registrations_enabled: enabled_forms.append(regform) else: disabled_forms.append(regform) disabled_forms.sort(key=attrgetter('title')) merge_forms = registration_settings.get(self.event_new, 'merge_registration_forms') return WPManageRegistration.render_template('management/regform_display.html', self.event_new, regforms=regforms, enabled_columns=enabled_columns, disabled_columns=disabled_columns, enabled_forms=enabled_forms, disabled_forms=disabled_forms, merge_forms=merge_forms, form=form)
def _participant_list_table(self, regform): def _process_registration(reg, column_ids, active_fields): data_by_field = reg.data_by_field def _content(column_id): if column_id in data_by_field: return data_by_field[column_id].get_friendly_data(for_humans=True) elif (column_id in active_fields and active_fields[column_id].personal_data_type is not None and active_fields[column_id].personal_data_type.column is not None): # some legacy registrations have no data in the firstname/lastname/email field # so we need to get it from the registration object itself return getattr(reg, active_fields[column_id].personal_data_type.column) else: # no data available for the field return '' def _sort_key_date(column_id): data = data_by_field.get(column_id) if data and data.field_data.field.input_type == 'date': return data.data else: return None columns = [{'text': _content(column_id), 'sort_key': _sort_key_date(column_id)} for column_id in column_ids] return {'checked_in': self._is_checkin_visible(reg), 'columns': columns} active_fields = {field.id: field for field in regform.active_fields} column_ids = [column_id for column_id in registration_settings.get_participant_list_columns(self.event, regform) if column_id in active_fields] headers = [active_fields[column_id].title.title() for column_id in column_ids] query = (Registration.query.with_parent(regform) .filter(Registration.is_state_publishable) .options(subqueryload('data')) .order_by(db.func.lower(Registration.first_name), db.func.lower(Registration.last_name), Registration.friendly_id)) is_participant = self.event.is_user_registered(session.user) registrations = [_process_registration(reg, column_ids, active_fields) for reg in query if reg.is_publishable(is_participant)] return {'headers': headers, 'rows': registrations, 'title': regform.title, 'show_checkin': any(registration['checked_in'] for registration in registrations), 'num_participants': query.count()}
def _process(self): regforms = sorted(self.event.registration_forms, key=lambda f: f.title.lower()) form = ParticipantsDisplayForm(regforms=regforms) if form.validate_on_submit(): data = form.json.data registration_settings.set(self.event, 'merge_registration_forms', data['merge_forms']) registration_settings.set_participant_list_form_ids(self.event, data['participant_list_forms']) registration_settings.set_participant_list_columns(self.event, data['participant_list_columns']) flash(_('The participants display settings have been saved.'), 'success') return redirect(url_for('.manage_regforms_display', self.event)) elif form.is_submitted(): for error in form.error_list: flash(error, 'error') available_columns = {field[0].name: field[1]['title'] for field in PersonalDataType.FIELD_DATA} enabled_columns = [] disabled_columns = [] for column_name in registration_settings.get_participant_list_columns(self.event): if column_name in available_columns: enabled_columns.append({'id': column_name, 'title': available_columns[column_name]}) del available_columns[column_name] for column_name, column_title in available_columns.items(): disabled_columns.append({'id': column_name, 'title': column_title}) disabled_columns.sort(key=itemgetter('title')) available_forms = {regform.id: regform for regform in regforms} sorted_forms = [] # Handle forms that have already been sorted by the user. for form_id in registration_settings.get_participant_list_form_ids(self.event): try: regform = available_forms[form_id] except KeyError: continue sorted_forms.append(regform) del available_forms[form_id] for form_id, regform in available_forms.items(): sorted_forms.append(regform) merge_forms = registration_settings.get(self.event, 'merge_registration_forms') return WPManageRegistration.render_template('management/regform_display.html', self.event, regforms=regforms, enabled_columns=enabled_columns, disabled_columns=disabled_columns, sorted_forms=sorted_forms, merge_forms=merge_forms, form=form)
def _process(self): form = ParticipantsDisplayFormColumnsForm() if form.validate_on_submit(): registration_settings.set_participant_list_columns(self.event, form.json.data['columns'], self.regform) flash(_('The settings for "{}" have been saved.').format(self.regform.title), 'success') return jsonify_data() available_fields = {field.id: field for field in self.regform.active_fields} enabled_fields = [] for field_id in registration_settings.get_participant_list_columns(self.event, self.regform): try: field = available_fields[field_id] except KeyError: continue enabled_fields.append(field) del available_fields[field_id] disabled_fields = available_fields.values() return jsonify_template('events/registration/management/regform_display_form_columns.html', form=form, enabled_columns=enabled_fields, disabled_columns=disabled_fields)