예제 #1
0
def get_event_section_data(regform, management=False, registration=None):
    data = []
    if not registration:
        return [
            s.view_data for s in regform.sections
            if not s.is_deleted and (management or not s.is_manager_only)
        ]

    registration_data = {r.field_data.field.id: r for r in registration.data}
    for section in regform.sections:
        if section.is_deleted or (not management and section.is_manager_only):
            continue

        section_data = section.own_data
        section_data['items'] = []

        for child in section.fields:
            if child.is_deleted:
                continue
            if isinstance(child.field_impl, ChoiceBaseField) or isinstance(
                    child.field_impl, AccommodationField):
                field_data = get_field_merged_options(child, registration_data)
            else:
                field_data = child.view_data
            section_data['items'].append(field_data)
        data.append(section_data)
    return data
예제 #2
0
파일: util.py 프로젝트: javfg/indico
def get_flat_section_submission_data(regform,
                                     *,
                                     management=False,
                                     registration=None):
    section_data = {
        s.id: camelize_keys(s.own_data)
        for s in regform.active_sections if management or not s.is_manager_only
    }

    item_data = {}
    registration_data = {r.field_data.field.id: r
                         for r in registration.data} if registration else None
    for item in regform.active_fields:
        can_modify = management or not item.parent.is_manager_only
        if not can_modify:
            continue
        if registration and isinstance(item.field_impl,
                                       (ChoiceBaseField, AccommodationField)):
            field_data = get_field_merged_options(item, registration_data)
        elif registration and isinstance(item.field_impl,
                                         AccompanyingPersonsField):
            field_data = item.view_data
            field_data[
                'availablePlaces'] = item.field_impl.get_available_places(
                    registration)
        else:
            field_data = item.view_data
        item_data[item.id] = field_data
    for item in regform.active_labels:
        item_data[item.id] = item.view_data
    return {'sections': section_data, 'items': item_data}
예제 #3
0
파일: util.py 프로젝트: belokop/indico_bare
def get_event_section_data(regform, management=False, registration=None):
    data = []
    if not registration:
        return [s.view_data for s in regform.sections if not s.is_deleted and (management or not s.is_manager_only)]

    registration_data = {r.field_data.field.id: r for r in registration.data}
    for section in regform.sections:
        if section.is_deleted or (not management and section.is_manager_only):
            continue

        section_data = section.own_data
        section_data['items'] = []

        for child in section.fields:
            if child.is_deleted:
                continue
            if isinstance(child.field_impl, ChoiceBaseField) or isinstance(child.field_impl, AccommodationField):
                field_data = get_field_merged_options(child, registration_data)
            else:
                field_data = child.view_data
            section_data['items'].append(field_data)
        data.append(section_data)
    return data