ThisAuthorTrailingSchema[
    'editor_flag'].widget.description_msgid = 'help_editor_flag_checked'
ThisAuthorTrailingSchema['editor_flag'].mode = 'r'

SourceSchema = Schema((
    publisherField,
    addressField,
    volumeField,
    numberField,
    organizationField,
    seriesField,
    isbnField,
))

ProceedingsSchema = HeaderSchema.copy() + AuthorSchema.copy() + ThisAuthorTrailingSchema.copy() + \
                    CoreSchema.copy() + SourceSchema.copy() + TrailingSchema.copy()
ProceedingsSchema.get('authors').required = 0
ProceedingsSchema.get('publication_year').required = 1

# the default AT 'description' field shall be invisible, it is kept in sync with the 'abstract' field
ProceedingsSchema.get('description').widget.visible = {
    'view': 'invisible',
    'edit': 'invisible',
}

finalizeATCTSchema(ProceedingsSchema)


class ProceedingsReference(BaseEntry):
    """ content type to make reference to a book.
    """
ThisAuthorTrailingSchema['editor_flag'].widget.description='Leave this checked unless the people specified above are not the editors of this proceedings volume.'
ThisAuthorTrailingSchema['editor_flag'].widget.description_msgid='help_editor_flag_checked'
ThisAuthorTrailingSchema['editor_flag'].mode='r'

SourceSchema = Schema((
    publisherField,
    addressField,
    volumeField,
    numberField,
    organizationField,
    seriesField,
    isbnField,
    ))

ProceedingsSchema = HeaderSchema.copy() + AuthorSchema.copy() + ThisAuthorTrailingSchema.copy() + \
                    CoreSchema.copy() + SourceSchema.copy() + TrailingSchema.copy()
ProceedingsSchema.get('authors').required = 0
ProceedingsSchema.get('publication_year').required = 1

# the default AT 'description' field shall be invisible, it is kept in sync with the 'abstract' field
ProceedingsSchema.get('description').widget.visible = {'view': 'invisible', 'edit': 'invisible', }

finalizeATCTSchema(ProceedingsSchema)

class ProceedingsReference(BaseEntry):
    """ content type to make reference to a book.
    """

    implements(IProceedingsReference)

            searchable=1,
            required=0,
            vocabulary="PreprintServers",
            widget=SelectionWidget(
                label="Preprint server",
                label_msgid="label_preprint_server",
                description="If the preprint is available from one of the following preprint servers, you can indicate that here. Contact the site's admin if you want a server to be added to the list.",
                description_msgid="help_preprint_server",
                i18n_domain="cmfbibliographyat",
            ),
        ),
    )
)

PreprintSchema = (
    HeaderSchema.copy() + AuthorSchema.copy() + CoreSchema.copy() + SourceSchema.copy() + TrailingSchema.copy()
)

# the default AT 'description' field shall be invisible, it is kept in sync with the 'abstract' field
PreprintSchema.get("description").widget.visible = {"view": "invisible", "edit": "invisible"}

finalizeATCTSchema(PreprintSchema)


class PreprintReference(BaseEntry):
    """ content type to make reference to a preprint
    """

    implements(IPreprintReference)

    security = ClassSecurityInfo()