def build_example_form(is_admin=False,
                       user_editable_groups=None,
                       **kwargs):
    """Customise the core CKAN dataset editing form by adding a new
    field "temporal coverage", and changing the layout of the core
    fields.
    """
    # Restrict fields
    builder = package.build_package_form(
        user_editable_groups=user_editable_groups)

    # Extra fields
    builder.add_field(common.DateRangeExtraField('temporal_coverage'))

    # Layout
    field_groups = OrderedDict([
        (_('Customised Basic information'), ['title', 'name', 'url',
                                  'notes', 'tags']),
        (_('Details'), ['author', 'author_email', 'groups',
                        'maintainer', 'maintainer_email',
                        'license_id', 'temporal_coverage' ]),
        (_('Resources'), ['resources']),
        ])
    builder.set_displayed_fields(field_groups)
    return builder
def build_example_form(is_admin=False, user_editable_groups=None, **kwargs):
    """Customise the core CKAN dataset editing form by adding a new
    field "temporal coverage", and changing the layout of the core
    fields.
    """
    # Restrict fields
    builder = package.build_package_form(
        user_editable_groups=user_editable_groups)

    # Extra fields
    builder.add_field(common.DateRangeExtraField('temporal_coverage'))

    # Layout
    field_groups = OrderedDict([
        (_('Customised Basic information'),
         ['title', 'name', 'url', 'notes', 'tags']),
        (_('Details'), [
            'author', 'author_email', 'groups', 'maintainer',
            'maintainer_email', 'license_id', 'temporal_coverage'
        ]),
        (_('Resources'), ['resources']),
    ])
    builder.set_displayed_fields(field_groups)
    return builder
def build_package_no_form(is_admin=False, user_editable_groups=None, **kwargs):
    # Restrict fields
    restrict = str(kwargs.get('restrict', False)).lower() not in \
               ('0', 'no', 'false', 0, False)

    builder = package.build_package_form(user_editable_groups=user_editable_groups)

    # Extra fields
    builder.add_field(common.TextExtraField('external_reference'))
    builder.add_field(common.DateExtraField('date_released'))
    builder.add_field(common.DateExtraField('date_updated'))
    builder.add_field(common.TextExtraField('update_frequency'))
    builder.add_field(common.SuggestedTextExtraField('geographic_granularity', options=schema_datano.geographic_granularity_options))
    builder.add_field(GeoCoverageExtraField('geographic_coverage'))
    builder.add_field(common.SuggestedTextExtraField('temporal_granularity', options=schema_datano.temporal_granularity_options))
    builder.add_field(common.DateRangeExtraField('temporal_coverage'))
    builder.add_field(common.SuggestedTextExtraField('categories', options=schema_datano.category_options))
    builder.add_field(common.CheckboxExtraField('national_statistic'))
    builder.add_field(common.TextExtraField('precision'))
    builder.add_field(common.SuggestedTextExtraField('department', options=schema_datano.government_depts))
    builder.add_field(common.TextExtraField('agency'))
    builder.add_field(common.TextExtraField('taxonomy_url'))
    builder.add_field(common.TextExtraField('title_en'))
    builder.add_field(common.TextExtraField('notes_en'))
    builder.add_field(common.TextExtraField('external_rss'))
    builder.add_field(common.TextExtraField('example_data'))


    # Labels and instructions
    builder.set_field_text('national_statistic', _('National Statistic'))
    builder.set_field_text('external_rss', _('External RSS'), instructions=_('Link to the data owner\'s external RSS feed.'))
    builder.set_field_text('title_en', _('Title EN'), instructions=_('Title in English. Translate what you wrote in the previous field to English.'))
    builder.set_field_text('notes_en', _('Notes EN'), instructions=_('Description in English. Translate what you wrote in the previous field to English.'))
    builder.set_field_text('date_released', _('Date released'), instructions=_('Date when data source was made available.'), hints=_('Format: DD/MM/YYYY'))
    builder.set_field_text('update_frequency', _('Update frequency'), instructions=_('How often will the data be updated.'), hints=_('e.g. annually, monthly'))
    builder.set_field_text('geographic_coverage', _('Geographic coverage'), instructions=_('Select geographic coverage for your data set.'))
    builder.set_field_text('temporal_coverage', _('Temporal coverage'), instructions=_('Temporal coverage for the data set.'), hints=_('Format: DD/MM/YYYY'))
    builder.set_field_text('author_email', _('Author email'), instructions=_('Email of the main contact for this data source.'))
    builder.set_field_text('maintainer_email', _('Maintainer email'), instructions=_('Email of a person that can be contacted for questions regarding this data source.'))
    builder.set_field_text('example_data', _('Data package example'), instructions=_('Example preview of the data available in this package.'))


    # Options/settings
    builder.set_field_option('tags', 'with_renderer', SuggestTagRenderer)
    builder.set_field_option('notes_en', 'textarea', {'size':'60x15'})
    builder.set_field_option('title', 'validate', required)
    builder.set_field_option('notes', 'validate', required)
    builder.set_field_option('example_data', 'textarea', {'size':'60x15'})

    
    if restrict:
        for field_name in ('name', 'department', 'national_statistic'):
            builder.set_field_option(field_name, 'readonly', True)

    # Layout
    field_groups = OrderedDict([
        (_('Basic information'), ['title', 'title_en', 'name', 'version',
                                  'notes', 'notes_en', 'tags']),
        (_('Details'), ['date_released', 'update_frequency',
                        'geographic_coverage',
                        'temporal_coverage',
                        'author', 'author_email',
                        'maintainer', 'maintainer_email',
                        'license_id',
                        'url', 'external_rss', 'example_data']),
        (_('Resources'), ['resources']),
        (_('More details'), []),
        ])
    if is_admin:
        field_groups[gettext('More details')].append('state')
    builder.set_displayed_fields(field_groups)
    return builder
    # Strings for i18n
    [_('External reference'),  _('Date released'), _('Date updated'),
     _('Update frequency'), _('Geographic granularity'),
     _('Geographic coverage'), _('Temporal granularity'),
     _('Temporal coverage'), _('Categories'), _('National Statistic'),
     _('Precision'), _('Taxonomy URL'), _('Department'), _('Agency'), 
     _('External RSS'), _('Data package example'),
     ]