From: Alex Sadleir Date: Mon, 12 May 2014 01:00:56 +0000 Subject: related auth func X-Git-Url: https://maxious.lambdacomplex.org/git/?p=ckanext-datagovau.git&a=commitdiff&h=0c359c5cf4f96321d5758623e3882b64b9227c18 --- related auth func --- --- a/README.rst +++ b/README.rst @@ -2,13 +2,12 @@ It comprises: -* A CKAN Extension "plugin" at ``ckanext/datagovau/plugin.py`` which, when - loaded, overrides various settings in the core ``ini``-file to provide: - * A path to local customisations of the core templates - * A custom Package edit form that defaults to cc-by licence - * A custom n3/rdf output format +* A custom Package edit form that defaults to cc-by licence +* Replaces links with http/https protocol independent versions +* Provides HTML to users to embed data previews on their own website +* A cut down licenses.json file -* A cut down licenses.json file +This extension is complemented by ckanext-agls for AGLS metadata, ckanext-googleanalytics for Google Analytics tracking of API usage and ckanext-dga-stats for the customised site statistics page. Installation ============ --- a/admin/default.vcl +++ b/admin/default.vcl @@ -8,45 +8,117 @@ .host = "127.0.0.1"; .port = "8080"; } +backend geoserver { + .host = "172.31.18.207"; + .port = "8983"; +} sub vcl_fetch { set beresp.grace = 1h; - - if (beresp.http.content-type ~ "(text|application)") { + unset beresp.http.Server; + # These status codes should always pass through and never cache. + if ( beresp.status >= 500 ) { + set beresp.ttl = 0s; + } + if (beresp.http.content-type ~ "(text|javascript|json|xml|html)") { set beresp.do_gzip = true; } + # CKAN cache headers are used by Varnish cache, but should not be propagated to + # the Internet. Tell browsers and proxies not to cache. This means Varnish always + # gets the responsibility to server the right content at all times. + if (beresp.http.Cache-Control ~ "max-age") { + unset beresp.http.set-cookie; + set beresp.http.Cache-Control = "no-cache"; + } + + # Encourage assets to be cached by proxies and browsers + # JS and CSS may be gzipped depending on headers + # see https://developers.google.com/speed/docs/best-practices/caching + if (req.url ~ "\.(css|js)") { + set beresp.http.Vary = "Accept-Encoding"; + } + + # Encourage assets to be cached by proxies and browsers for 1 day + if (req.url ~ "\.(png|gif|jpg|swf|css|js)") { + unset beresp.http.set-cookie; + set beresp.http.Cache-Control = "public, max-age=86400"; + set beresp.ttl = 1d; + } + + # Encourage CKAN vendor assets (which are versioned) to be cached by + # by proxies and browsers for 1 year + if (req.url ~ "^/scripts/vendor/") { + unset beresp.http.set-cookie; + set beresp.http.Cache-Control = "public, max-age=31536000"; + set beresp.ttl = 12m; + } +} +sub vcl_recv { + if (req.http.user-agent ~ "Ezooms" || req.http.user-agent ~ "Ahrefs") { + error 403; + } +if (req.url ~ "^/geoserver/") { + set req.backend = geoserver; + } else { + set req.backend = default; + #redirect secure traffic to https + if ( (req.http.Cookie ~ "auth_tkt" || req.http.Cookie ~ "ckan" || req.url ~ "user/(reset|login)") && req.http.X-Forwarded-Proto !~ "(?i)https") { + set req.http.x-Redir-Url = "https://data.gov.au" + req.url; + error 753 req.http.x-Redir-Url; + } + # remove locale links + if (req.url ~ "/((?!js)..|.._..|sr_Latn)/") { + set req.http.x-Redir-Url = regsub(req.url, "/((?!js)..|.._..|sr_Latn)/", "/"); + error 751 req.http.x-Redir-Url; + } + # rewrite broken resources + if (req.url ~ "leaflet") { + set req.url = regsub(req.url, "fanstatic/ckanext-spatial/:version:2013-09-13T02:32:17.87/:bundle:js/vendor/leaflet/images", "js/vendor/leaflet/images"); + } + # remove old hostnames + if (req.http.host ~ "data.australia.gov.au") { + set req.http.x-Redir-Url = "http://data.gov.au" + req.url; + error 751 req.http.x-Redir-Url; + } + + if (req.url ~ "^/_tracking") { + // exclude web spiders from statistics + if (req.http.user-agent ~ "Googlebot" || req.http.user-agent ~ "baidu" || req.http.user-agent ~ "bing") { + error 200; + } else { + return (pass); + } + } if (req.url ~ "\.(png|gif|jpg|jpeg|swf|css|js|woff|eot)$") { - unset beresp.http.set-cookie; + //Varnish to deliver content from cache even if the request othervise indicates that the request should be passed + return(lookup); } } -sub vcl_recv { - if (req.url ~ "^/_tracking") { - return (pass); - } - if (req.url ~ "\.(png|gif|jpg|jpeg|swf|css|js|woff|eot)$") { - return(lookup); - } -if (req.url ~ "/(..|.._..)/") { - set req.url = regsub(req.url, "/((?!js)..|.._..)/", "/"); -} - if (req.http.Cookie) { - set req.http.Cookie = regsuball(req.http.Cookie, "(^|; ) *__utm.=[^;]+;? *", "\1"); # removes all cookies named __utm? (utma, utmb...) - tracking thing - - if (req.http.Cookie == "") { - remove req.http.Cookie; - } - } + // Remove has_js and Google Analytics cookies. Evan added sharethis cookies + set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(__[a-z]+|has_js|cookie-agreed-en|_csoot|_csuid|_chartbeat2)=[^;]*", ""); + + // Remove a ";" prefix, if present. + set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", ""); + // Remove empty cookies. + if (req.http.Cookie ~ "^\s*$") { + unset req.http.Cookie; + } + + remove req.http.X-Forwarded-For; + set req.http.X-Forwarded-For = req.http.X-Real-IP; } sub vcl_hash { # http://serverfault.com/questions/112531/ignoring-get-parameters-in-varnish-vcl - set req.url = regsub(req.url, "(?:(.com|.au))/((?!js)..|.._..)/", "/"); + set req.url = regsub(req.url, "(?:(.com|.au))/((?!js)..|.._..|sr_Latn)/", "/"); hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } - return (hash); + if (req.http.Cookie) { + hash_data(req.http.Cookie); +} } sub vcl_deliver { if (!resp.http.Vary) { @@ -54,13 +126,29 @@ } else if (resp.http.Vary !~ "(?i)Accept-Encoding") { set resp.http.Vary = resp.http.Vary + ",Accept-Encoding"; } - if (obj.hits > 0) { - set resp.http.X-Cache = "HIT"; - } else { - set resp.http.X-Cache = "MISS"; - } + remove resp.http.X-Varnish; + remove resp.http.Via; + remove resp.http.Age; + remove resp.http.X-Powered-By; +if (req.url ~ "^/geoserver/") { + set resp.http.Access-Control-Allow-Origin = "*"; + set resp.http.Access-Control-Allow-Methods = "GET, POST, PUT, DELETE"; + set resp.http.Access-Control-Allow-Headers = "Origin, X-Requested-With, Content-Type, Accept"; +} } - +sub vcl_error { + remove obj.http.Server; + if (obj.status == 751) { + set obj.http.Location = obj.response; + set obj.status = 301; + return (deliver); + } + if (obj.status == 753) { + set obj.http.Location = obj.response; + set obj.status = 301; + return (deliver); + } +} # # Below is a commented-out copy of the default VCL logic. If you # redefine any of these subroutines, the built-in logic will be --- /dev/null +++ b/admin/reset.sh @@ -1,1 +1,17 @@ +paster --plugin=ckan db clean --config=development.ini +echo "drop extension postgis cascade;" | psql -d ckantest +paster --plugin=ckan db clean --config=development.ini +#to initiate for first time instead of load from dump +#paster --plugin=ckan db init --config=development.in +#paster --plugin=ckan user add maxious password=snmc email=maxious@gmail.com +#paster --plugin=ckan sysadmin add maxious +#paster --plugin=ckan db dump dump.db + +#paster --plugin=ckan db load --config=development.ini dump.db +paster --plugin=ckan db load --config=development.ini dump.harvest.db +echo "create extension postgis;" | psql -d ckantest +#sleep 2 +paster --plugin=ckan search-index rebuild --config=development.ini +#rm -r /tmp/pairtree_* + --- /dev/null +++ b/admin/start.sh @@ -1,1 +1,6 @@ +export NEW_RELIC_CONFIG_FILE="newrelic.ini" +export VIRTUAL_ENV="/var/lib/ckan/dga/pyenv" +export PATH="/var/lib/ckan/dga/pyenv:/var/lib/ckan/dga/pyenv/bin:$PATH" +cd /var/lib/ckan/dga/pyenv/src/ckan +newrelic-admin run-program paster serve development.ini --- a/ckanext/datagovau/plugin.py +++ b/ckanext/datagovau/plugin.py @@ -7,24 +7,23 @@ import ckan.model as model from pylons import config -#parse the activity feed for last active non-system user -def get_last_active_user(id): - system_user = lib.helpers.get_action('user_show',{'id': config.get('ckan.site_id', 'ckan_site_user')}) - user_list = [x for x in lib.helpers.get_action('package_activity_list',{'id':id}) if x['user_id'] != system_user['id']] - user = None - if len(user_list) > 0: - user = user_list[0].get('user_id', None) - if user is None: - return system_user - else: - return lib.helpers.get_action('user_show',{'id':user}) +from sqlalchemy import orm +import ckan.model # get user created datasets and those they have edited def get_user_datasets(user_dict): created_datasets_list = user_dict['datasets'] active_datasets_list = [x['data']['package'] for x in lib.helpers.get_action('user_activity_list',{'id':user_dict['id']}) if x['data'].get('package')] - return created_datasets_list + active_datasets_list + raw_list = created_datasets_list + active_datasets_list + filtered_dict = {} + for dataset in raw_list: + if dataset['id'] not in filtered_dict.keys(): + filtered_dict[dataset['id']] = dataset + return filtered_dict.values() + +def related_create(context, data_dict=None): + return {'success': False, 'msg': 'No one is allowed to create related items'} class DataGovAuPlugin(plugins.SingletonPlugin, tk.DefaultDatasetForm): @@ -34,8 +33,11 @@ ''' plugins.implements(plugins.IConfigurer, inherit=False) - plugins.implements(plugins.IDatasetForm, inherit=False) plugins.implements(plugins.ITemplateHelpers, inherit=False) + plugins.implements(plugins.IAuthFunctions) + + def get_auth_functions(self): + return {'rekated_create': related_create} def update_config(self, config): # Add this plugin's templates dir to CKAN's extra_template_paths, so @@ -49,112 +51,6 @@ # config['licenses_group_url'] = 'http://%(ckan.site_url)/licenses.json' def get_helpers(self): - return {'get_last_active_user': get_last_active_user, 'get_user_datasets': get_user_datasets} - - def is_fallback(self): - # Return True to register this plugin as the default handler for - # package types not handled by any other IDatasetForm plugin. - return True - - def package_types(self): - # This plugin doesn't handle any special package types, it just - # registers itself as the default (above). - return [] + return {'get_user_datasets': get_user_datasets} - def create_package_schema(self): - schema = super(DataGovAuPlugin, self).create_package_schema() - schema = self._modify_package_schema(schema) - return schema - - def update_package_schema(self): - schema = super(DataGovAuPlugin, self).update_package_schema() - schema = self._modify_package_schema(schema) - return schema - - def show_package_schema(self): - schema = super(DataGovAuPlugin, self).show_package_schema() - - # Don't show vocab tags mixed in with normal 'free' tags - # (e.g. on dataset pages, or on the search page) - schema['tags']['__extras'].append(tk.get_converter('free_tags_only')) - - # Add our custom_text field to the dataset schema. - # ignore_missing == optional - # ignore_empty == mandatory but not for viewing - # !!! always convert_from_extras first - schema.update({ - 'agency_program': [tk.get_converter('convert_from_extras'), - tk.get_validator('ignore_missing')], - 'contact_point': [tk.get_converter('convert_from_extras'), - tk.get_validator('ignore_empty')], - 'spatial_coverage': [tk.get_converter('convert_from_extras'), - tk.get_validator('ignore_empty')], - 'granularity': [tk.get_converter('convert_from_extras'), - tk.get_validator('ignore_empty')], - 'jurisdiction': [tk.get_converter('convert_from_extras'), - tk.get_validator('ignore_empty')], - 'temporal_coverage': [tk.get_converter('convert_from_extras'), - tk.get_validator('ignore_empty')], - 'data_state': [tk.get_converter('convert_from_extras'), - tk.get_validator('ignore_empty')], - 'update_freq': [tk.get_converter('convert_from_extras'), - tk.get_validator('ignore_empty')] - }) - return schema - - def _modify_package_schema(self, schema): - # Add our custom_test metadata field to the schema, this one will use - # convert_to_extras instead of convert_to_tags. - # ignore_missing == optional - # not_empty == mandatory, enforced here while modifying - - schema.update({ - 'agency_program': [tk.get_validator('ignore_missing'), - tk.get_converter('convert_to_extras')], - 'contact_point': [tk.get_converter('convert_to_extras'), - tk.get_validator('not_empty')], - 'spatial_coverage': [tk.get_converter('convert_to_extras'), - tk.get_validator('not_empty')], - 'granularity': [tk.get_converter('convert_to_extras'), - tk.get_validator('not_empty')], - 'jurisdiction': [tk.get_converter('convert_to_extras'), - tk.get_validator('not_empty')], - 'temporal_coverage': [tk.get_converter('convert_to_extras'), - tk.get_validator('not_empty')], - 'data_state': [tk.get_converter('convert_to_extras'), - tk.get_validator('not_empty')], - 'update_freq': [tk.get_converter('convert_to_extras'), - tk.get_validator('not_empty')] - }) - return schema - - # These methods just record how many times they're called, for testing - # purposes. - # TODO: It might be better to test that custom templates returned by - # these methods are actually used, not just that the methods get - # called. - - def setup_template_variables(self, context, data_dict): - return super(DataGovAuPlugin, self).setup_template_variables( - context, data_dict) - - def new_template(self): - return super(DataGovAuPlugin, self).new_template() - - def read_template(self): - return super(DataGovAuPlugin, self).read_template() - - def edit_template(self): - return super(DataGovAuPlugin, self).edit_template() - - def search_template(self): - return super(DataGovAuPlugin, self).search_template() - - def history_template(self): - return super(DataGovAuPlugin, self).history_template() - - def package_form(self): - return super(DataGovAuPlugin, self).package_form() - - --- /dev/null +++ b/ckanext/datagovau/templates/base.html @@ -1,1 +1,7 @@ +{% ckan_extends %} + {% block meta %} + {{ super() }} + + {% endblock %} + --- /dev/null +++ b/ckanext/datagovau/templates/dataviewer/base.html @@ -1,1 +1,11 @@ +{% ckan_extends %} +{% block scripts %} + {{ super() }} + +{% endblock %} + + --- /dev/null +++ b/ckanext/datagovau/templates/dataviewer/snippets/data_preview.html @@ -1,1 +1,32 @@ +
+ {% if embed %} + {# images can be embedded directly #} + + {% else %} +
+

+ + {{ _('This resource can not be previewed at the moment.') }} + + {{ _('Click here for more information.') }} + +

+

+

+ + + {{ _('Download resource') }} + +

+
+ + {% endif %} +
+
+

Embed this visualisation in your own website...

+Copy the HTML in the box below and you can display this visualisation on your own website.
+ +
--- /dev/null +++ b/ckanext/datagovau/templates/header.html @@ -1,1 +1,18 @@ +{% ckan_extends %} +{% block header_site_navigation %} + +{% endblock %} + --- /dev/null +++ b/ckanext/datagovau/templates/home/index.html @@ -1,1 +1,47 @@ +{% ckan_extends %} +{% block home_secondary_content %} + + +
+ + + +{{ super() }} + {% endblock %} + --- /dev/null +++ b/ckanext/datagovau/templates/home/snippets/promoted.html @@ -1,1 +1,17 @@ +{% set intro = g.site_intro_text %} +
+
+ {% if intro %} + {{ h.render_markdown(intro) }} + {% else %} +

{{ _("Welcome to CKAN") }}

+

+ {% trans %}This is a nice introductory paragraph about CKAN or the site + in general. We don't have any copy to go here yet but soon we will + {% endtrans %} +

+ {% endif %} +
+
+ --- /dev/null +++ b/ckanext/datagovau/templates/home/snippets/stats.html @@ -1,1 +1,78 @@ +{% set stats = h.get_site_statistics() %} + +
+ +
+ +
+
+ + + + + + --- a/ckanext/datagovau/templates/package/read.html +++ b/ckanext/datagovau/templates/package/read.html @@ -1,130 +1,18 @@ {% ckan_extends %} {% block primary_content_inner %} {{ super() }} -
{{ h.disqus_comments() }}
{% endblock %} -{% block package_additional_info %} -
-

{{ _('Additional Info') }}

- - - - - - - - +{% block secondary_content %} + {{ super() }} - {# Add our custom field to the dataset read page. #} - {% if pkg.get('metadata_created') %} - - - - - {% endif %} - {% if pkg.get('metadata_updated') %} - - - - - {% endif %} - {% if pkg.get('agency_program') %} - - - - - {% endif %} - {% if pkg.get('url') %} - - - - - {% endif %} - - {% if pkg.get('contact_point') %} - - - - - {% endif %} - {% if pkg.get('spatial_coverage') %} - - - - - - {% endif %} - {% if pkg.get('granularity') %} - - - - - - {% endif %} - {% if pkg.get('jurisdiction') %} - - - - - {% endif %} - {% if pkg.get('temporal_coverage') %} - - - - - {% endif %} - {% if pkg.get('data_state') %} - - - - - {% endif %} - {% if pkg.get('update_freq') %} - - - - - - {% endif %} - -{% set email =h.get_last_active_user(c.pkg_dict['id']).get('email','') %} - - - - - - - - - - - - - - - - - - -
{{ _('Field') }}{{ _('Value') }}
Date Published{{ pkg.metadata_created.split("T")[0] }}
Date Updated{{ pkg.metadata_updated.split("T")[0] }}
Agency Program {{ pkg.agency_program }}
{{ _('Source') }}{{ h.link_to(pkg.get('url'), - pkg.get('url'), rel='dct:source', target='_blank') }} -
Contact Point {{ h.mail_to(email_address=pkg.contact_point, - name=pkg.contact_point) }}
Geospatial Coverage {{ pkg.spatial_coverage }}
Data Granularity {{ pkg.granularity }}
Government Jurisdiction {{ pkg.jurisdiction }}
Temporal Coverage {{ pkg.temporal_coverage }}
Data State {{ pkg.data_state }}
Update Frequency {{ pkg.update_freq }}
{{ _('Maintainer') }}{{ - h.mail_to(email_address=(email or ' '), name=h.get_last_active_user(c.pkg_dict['id']).get("display_name",'')) }} -
Publisher/Agency{{ c.pkg_dict['organization']['title']}} -
TypeDataset
LanguageEnglish
-
- + {% set dataset_extent = h.get_pkg_dict_extra(c.pkg_dict, 'spatial', '') %} + {% if dataset_extent %} + {% snippet "spatial/snippets/dataset_map_sidebar.html", extent=dataset_extent %} + {% endif %} {% endblock %} --- a/ckanext/datagovau/templates/package/read.n3 +++ /dev/null @@ -1,45 +1,1 @@ -@prefix : . -@prefix dcat: . -@prefix dct: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -<${ h.url_for(controller='package',action='read',id=c.pkg_dict['name'], qualified=True)}> -a dcat:Dataset; - dct:description "${c.pkg_dict['notes']}"; - dct:identifier "${c.pkg_dict['name']}"; - dct:relation [ - rdf:value ""; - :label "change_note" ], - [ - rdf:value ""; - :label "definition_note" ], - [ - rdf:value ""; - :label "editorial_note" ], - [ - rdf:value ""; - :label "example_note" ], - [ - rdf:value ""; - :label "history_note" ], - [ - rdf:value ""; - :label "scope_note" ], - [ - rdf:value ""; - :label "skos_note" ], - [ - rdf:value ""; - :label "temporal_granularity" ], - [ - rdf:value ""; - :label "type_of_dataset" ], - [ - rdf:value ""; - :label "update_frequency" ]; - dct:title "${c.pkg_dict['title']}"; - :label "${c.pkg_dict['name']}"; - = ; - foaf:homepage . --- a/ckanext/datagovau/templates/package/read.rdf +++ /dev/null @@ -1,133 +1,1 @@ - - - - ${c.pkg_dict['name']} - ${c.pkg_dict['title']} - - - Dataset - ${c.pkg_dict['notes']} - ${c.pkg_dict['metadata_created']} - ${c.pkg_dict['metadata_modified']} - - - - - - - ${c.pkg_dict['license_id']} - "${c.pkg_dict['license_id']}" - - - - ${ tag_dict["name"] } - - - - - - - ${rsc_dict.get('name')} - - ${rsc_dict.get('description')} - - ${rsc_dict.get('created')} - ${rsc_dict.get('revision_timestamp')} - ${rsc_dict.get('size')} - ${rsc_dict.get('mimetype')} - ${rsc_dict.get('size')} bytes - - - ${rsc_dict.get('format')} - ${rsc_dict.get('format')} - - - ${rsc_dict.get('name')} - - - - - - - - - ${ c.pkg_dict['organization']['title'] } - - - - - ${ c.pkg_dict['organization']['title'] } - - - - - ${h.get_last_active_user(c.pkg_dict['id'])["display_name"]} - - - - - - - - ${extra_dict.get('key','')} - ${extra_dict.get('value','')} - - - - en - - ${c.pkg_dict.contact_point } - - - ${ c.pkg_dict.spatial } - - - ${ c.pkg_dict.spatial_coverage } - - - ${ c.pkg_dict.jurisdiction } - ${ c.pkg_dict.get('temporal_coverage') } - - - Data State - ${ c.pkg_dict.get('data_state') } - - - - - Update Frequency - ${ c.pkg_dict.get('update_freq') } - - - - - Agency Program - ${ c.pkg_dict.get('agency_program') } - - - - - Data Granularity - ${ c.pkg_dict.get('granularity') } - - - - - --- a/ckanext/datagovau/templates/package/read_base.html +++ /dev/null @@ -1,47 +1,1 @@ -{% ckan_extends %} -{% block links -%} -{{ super() }} - - - -{% endblock -%} - -{% block head_extras -%} -{{ super() }} - - - - - - - - - - - - - - - - -{% endblock -%} - -{% block package_info %} -
-
-

{{ pkg.title or pkg.name }}

-
-
-
{{ _('Followers') }}
-
{{ h.SI_number_span(h.get_action('dataset_follower_count', {'id': pkg.id})) }}
-
-
- -
-
-{% endblock %} - - --- a/ckanext/datagovau/templates/package/resource_read.html +++ /dev/null @@ -1,35 +1,1 @@ -{% ckan_extends %} -{% block links -%} -{{ super() }} - - - -{% endblock -%} - -{% block head_extras -%} -{{ super() }} - - - - - - - - - - - - - - - - - - - - -{% endblock -%} - - - --- /dev/null +++ b/ckanext/datagovau/templates/package/search.html @@ -1,1 +1,7 @@ +{% ckan_extends %} +{% block secondary_content %} +{{ super() }} + {% snippet "spatial/snippets/spatial_query.html", default_extent="[[-11, 114], [-42, 154]]" %} +{% endblock %} + --- a/ckanext/datagovau/templates/package/snippets/package_basic_fields.html +++ b/ckanext/datagovau/templates/package/snippets/package_basic_fields.html @@ -1,42 +1,4 @@ {% ckan_extends %} - -{% block package_basic_fields_org %} - -{{ super() }} - - -{{ form.input('agency_program', label=_('Agency Program'), id='field-agency_program', -placeholder=_('Name of the Agency Program that generated the data if relevant'), -value=data.agency_program, error=errors.agency_program, classes=['control-medium']) }} - -{{ form.input('contact_point', label=_('Contact Point'), id='field-contact_point', -placeholder=_('Email address for questions about content of dataset'), -value=data.contact_point, error=errors.contact_point, classes=['control-medium']) }} - -{{ form.input('spatial_coverage', label=_('Geospatial Coverage'), id='field-spatial_coverage', -placeholder=_('The geographical area covered by the data. Eg: Whole of Australia, New South Wales, Canberra'), -value=data.spatial_coverage, error=errors.spatial_coverage, classes=['control-medium']) }} - -{{ form.input('granularity', label=_('Data Granularity'), id='field-granularity', -placeholder=_('Granularity in time, place etc. Eg: incidents reports on daily basis by location.'), -value=data.granularity, error=errors.granularity, classes=['control-medium']) }} - -{{ form.input('jurisdiction', label=_('Government Jurisdiction'), id='field-jurisdiction', -placeholder=_('New South Wales, Glenorchy City Council, Federal'), -value=data.jurisdiction, error=errors.jurisdiction, classes=['control-medium']) }} - -{{ form.input('temporal_coverage', label=_('Temporal Coverage'), id='field-temporal_coverage', -placeholder=_('The timespan the dataset relates to: Current, 2008, 2008-2012, Jan 2012'), -value=data.temporal_coverage, error=errors.temporal_coverage, classes=['control-medium']) }} - -{{ form.select('data_state', label=_('Data State'), options= [{'value': 'active', 'text': 'Active'}, {'value': 'inactive', 'text': 'Inactive'}], -selected='Active', error=errors.data_state) }} - -{{ form.input('update_freq', label=_('Update Frequency'), id='field-update_freq', -placeholder=_('How often the dataset is updated. Eg: Daily, Weekly, Never'), -value=data.update_freq, error=errors.update_freq, classes=['control-medium']) }} - -{% endblock %} {% block package_basic_fields_license %} @@ -61,3 +23,4 @@ {% endblock %} + --- a/ckanext/datagovau/templates/package/snippets/package_metadata_fields.html +++ b/ckanext/datagovau/templates/package/snippets/package_metadata_fields.html @@ -8,20 +8,6 @@ {% endblock %} {# https://github.com/okfn/ckan/blob/master/ckan/templates/macros/form.html documents the macros for fields #} - -{% block package_metadata_fields %} -{{ form.input('url', label=_('Source URL'), id='field-url', -placeholder=_('URL where dataset came from or more information can be obtained'), -value=data.url, error=errors.url, classes=['control-medium']) }} -{{ super() }} - -{% endblock %} - -{% block package_metadata_author %} -{% endblock %} - -{% block package_metadata_fields_maintainer %} -{% endblock %} {% block dataset_fields %} {% if data.groups %} @@ -41,3 +27,4 @@ {% set group_attrs = {'data-module': 'autocomplete', 'data-module-source': '/api/2/util/group/autocomplete?q=?', 'data-module-key': 'id', 'data-module-label': 'title'} %} {{ form.input(group_name, label=_('Add Group/Theme'), id="field-group", value=data[group_name], classes=['control-medium'], attrs=group_attrs) }} {% endblock %} + --- a/ckanext/datagovau/templates/package/snippets/resource_item.html +++ /dev/null @@ -1,54 +1,1 @@ -{% ckan_extends %} -{% set url = h.url_for(controller='package', action='resource_read', id=pkg.name, resource_id=res.id) %} -
  • - {% block resource_item_title %} - - {{ h.resource_display_name(res) | truncate(50) }}{{ res.format }} - {{ h.popular('views', res.tracking_summary.total, min=10) }} - - {% endblock %} -

    - {% if res.description %} - {{ h.markdown_extract(res.description, extract_length=80) }} - {% else %} - {{ _('No description for this resource') }} - {% endif %} -

    - {% block resource_item_explore %} - - {% endblock %} -