Merge branch 'master' into 219-missing-form

Conflicts:
	ckanext/harvest/templates_new/source/edit.html
	ckanext/harvest/templates_new/source/new.html
	test-core.ini
This commit is contained in:
amercader 2016-01-14 11:43:12 +00:00
commit b58cd8b38f
37 changed files with 607 additions and 986 deletions

View File

@ -1,4 +1,3 @@
recursive-include ckanext/harvest/templates * recursive-include ckanext/harvest/templates *
recursive-include ckanext/harvest/templates_new *
recursive-include ckanext/harvest/fanstatic_library/styles * recursive-include ckanext/harvest/fanstatic_library/styles *
recursive-include ckanext/harvest/public * recursive-include ckanext/harvest/public *

View File

@ -8,6 +8,9 @@ ckanext-harvest - Remote harvesting extension
This extension provides a common harvesting framework for ckan extensions This extension provides a common harvesting framework for ckan extensions
and adds a CLI and a WUI to CKAN to manage harvesting sources and jobs. and adds a CLI and a WUI to CKAN to manage harvesting sources and jobs.
Requires CKAN 2.0 or later.
Installation Installation
============ ============
@ -192,8 +195,7 @@ Authorization
Starting from CKAN 2.0, harvest sources behave exactly the same as datasets Starting from CKAN 2.0, harvest sources behave exactly the same as datasets
(they are actually internally implemented as a dataset type). That means they (they are actually internally implemented as a dataset type). That means they
can be searched and faceted, and that the same authorization rules can be can be searched and faceted, and that the same authorization rules can be
applied to them. The default authorization settings are based on organizations applied to them. The default authorization settings are based on organizations.
(equivalent to the `publisher profile` found in old versions).
Have a look at the `Authorization <http://docs.ckan.org/en/latest/authorization.html>`_ Have a look at the `Authorization <http://docs.ckan.org/en/latest/authorization.html>`_
documentation on CKAN core to see how to configure your instance depending on documentation on CKAN core to see how to configure your instance depending on
@ -231,7 +233,7 @@ field. The currently supported configuration options are:
* {dataset_id} * {dataset_id}
* {harvest_source_id} * {harvest_source_id}
* {harvest_source_url} # Will be stripped of trailing forward slashes (/) * {harvest_source_url} # Will be stripped of trailing forward slashes (/)
* {harvest_source_title} # Requires CKAN 1.6 * {harvest_source_title}
* {harvest_job_id} * {harvest_job_id}
* {harvest_object_id} * {harvest_object_id}

View File

@ -1,5 +1,4 @@
import logging import logging
import genshi
from urllib import urlencode from urllib import urlencode
from ckan import plugins as p from ckan import plugins as p
@ -60,21 +59,8 @@ class OrganizationController(GroupController):
else: else:
q += ' groups: "%s"' % c.group_dict.get('name') q += ' groups: "%s"' % c.group_dict.get('name')
try:
description_formatted = ckan.misc.MarkdownFormat().to_html(
c.group_dict.get('description', ''))
c.description_formatted = genshi.HTML(description_formatted)
except Exception, e:
error_msg = "<span class='inline-warning'>%s</span>" %\
p.toolkit._("Cannot render description")
c.description_formatted = genshi.HTML(error_msg)
context['return_query'] = True context['return_query'] = True
# c.group_admins is used by CKAN's legacy (Genshi) templates only,
# if we drop support for those then we can delete this line.
c.group_admins = ckan.new_authz.get_group_or_org_admin_ids(c.group.id)
try: try:
page = int(request.params.get('page', 1)) page = int(request.params.get('page', 1))
except ValueError, e: except ValueError, e:

View File

@ -9,98 +9,94 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ckanext-harvest 0.2\n" "Project-Id-Version: ckanext-harvest 0.2\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2015-06-10 12:12+0100\n" "POT-Creation-Date: 2015-12-11 15:21+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n" "Generated-By: Babel 2.1.1\n"
#: ckanext/harvest/helpers.py:70 #: ckanext/harvest/helpers.py:70
msgid "title" msgid "title"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/organization.py:41 #: ckanext/harvest/controllers/organization.py:40
msgid "Group not found" msgid "Group not found"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/organization.py:43 #: ckanext/harvest/controllers/organization.py:42
#, python-format #, python-format
msgid "Unauthorized to read group %s" msgid "Unauthorized to read group %s"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/organization.py:69 #: ckanext/harvest/controllers/organization.py:137
msgid "Cannot render description"
msgstr ""
#: ckanext/harvest/controllers/organization.py:151
msgid "Groups" msgid "Groups"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/organization.py:152 #: ckanext/harvest/controllers/organization.py:138
msgid "Tags" msgid "Tags"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/organization.py:153 #: ckanext/harvest/controllers/organization.py:139
msgid "Formats" msgid "Formats"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/organization.py:154 #: ckanext/harvest/controllers/organization.py:140
msgid "Licence" msgid "Licence"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/view.py:27 #: ckanext/harvest/controllers/view.py:28
msgid "Not authorized to see this page" msgid "Not authorized to see this page"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/view.py:44 #: ckanext/harvest/controllers/view.py:45
msgid "Harvesting source successfully cleared" msgid "Harvesting source successfully cleared"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/view.py:46 #: ckanext/harvest/controllers/view.py:47
msgid "Harvesting source successfully inactivated" msgid "Harvesting source successfully inactivated"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/view.py:50 ckanext/harvest/controllers/view.py:61 #: ckanext/harvest/controllers/view.py:51 ckanext/harvest/controllers/view.py:63
#: ckanext/harvest/controllers/view.py:82 ckanext/harvest/controllers/view.py:143 #: ckanext/harvest/controllers/view.py:85 ckanext/harvest/controllers/view.py:146
#: ckanext/harvest/controllers/view.py:181 ckanext/harvest/controllers/view.py:192 #: ckanext/harvest/controllers/view.py:184 ckanext/harvest/controllers/view.py:195
#: ckanext/harvest/controllers/view.py:218 ckanext/harvest/logic/auth/create.py:34 #: ckanext/harvest/controllers/view.py:221 ckanext/harvest/logic/auth/create.py:34
#: ckanext/harvest/logic/auth/delete.py:18 ckanext/harvest/logic/auth/get.py:33 #: ckanext/harvest/logic/auth/delete.py:18 ckanext/harvest/logic/auth/get.py:33
#: ckanext/harvest/logic/auth/update.py:19 #: ckanext/harvest/logic/auth/update.py:19
msgid "Harvest source not found" msgid "Harvest source not found"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/view.py:59 #: ckanext/harvest/controllers/view.py:61
msgid "Refresh requested, harvesting will take place within 15 minutes." msgid "Harvest will start shortly. Refresh this page for updates."
msgstr "" msgstr ""
#: ckanext/harvest/controllers/view.py:66 #: ckanext/harvest/controllers/view.py:67
msgid "" msgid ""
"Cannot create new harvest jobs on inactive sources. First, please change the " "Cannot create new harvest jobs on inactive sources. First, please change the "
"source status to 'active'." "source status to 'active'."
msgstr "" msgstr ""
#: ckanext/harvest/controllers/view.py:69 #: ckanext/harvest/controllers/view.py:71
msgid "A harvest job has already been scheduled for this source" msgid "A harvest job has already been scheduled for this source"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/view.py:80 #: ckanext/harvest/controllers/view.py:83
msgid "Harvest source cleared" msgid "Harvest source cleared"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/view.py:108 #: ckanext/harvest/controllers/view.py:111
msgid "No content found" msgid "No content found"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/view.py:168 #: ckanext/harvest/controllers/view.py:171
msgid "Harvest job not found" msgid "Harvest job not found"
msgstr "" msgstr ""
#: ckanext/harvest/controllers/view.py:201 #: ckanext/harvest/controllers/view.py:204
#: ckanext/harvest/templates_new/source/admin.html:15 #: ckanext/harvest/templates/source/admin.html:15
#: ckanext/harvest/templates_new/source/job/list.html:13 #: ckanext/harvest/templates/source/job/list.html:13
msgid "No jobs yet for this source" msgid "No jobs yet for this source"
msgstr "" msgstr ""
@ -148,120 +144,120 @@ msgstr ""
msgid "Only sysadmins can run the pending harvest jobs" msgid "Only sysadmins can run the pending harvest jobs"
msgstr "" msgstr ""
#: ckanext/harvest/logic/auth/update.py:68 #: ckanext/harvest/logic/auth/update.py:89
msgid "Only sysadmins can reindex all harvest sources" msgid "Only sysadmins can reindex all harvest sources"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/add_source_button.html:6 #: ckanext/harvest/templates/snippets/add_source_button.html:6
#: ckanext/harvest/templates_new/source/org_source_list.html:11 #: ckanext/harvest/templates/source/org_source_list.html:11
msgid "Add Harvest Source" msgid "Add Harvest Source"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/job_details.html:26 #: ckanext/harvest/templates/snippets/job_details.html:26
#: ckanext/harvest/templates_new/source/job/list.html:38 #: ckanext/harvest/templates/source/job/list.html:44
msgid "errors" msgid "errors"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/job_details.html:41 #: ckanext/harvest/templates/snippets/job_details.html:41
msgid "Details" msgid "Details"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/job_details.html:48 #: ckanext/harvest/templates/snippets/job_details.html:48
msgid "Id" msgid "Id"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/job_details.html:52 #: ckanext/harvest/templates/snippets/job_details.html:52
msgid "Created" msgid "Created"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/job_details.html:56 #: ckanext/harvest/templates/snippets/job_details.html:60
msgid "Started" msgid "Started"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/job_details.html:60 #: ckanext/harvest/templates/snippets/job_details.html:68
msgid "Finished" msgid "Finished"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/job_details.html:64 #: ckanext/harvest/templates/snippets/job_details.html:76
msgid "Status" msgid "Status"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/job_error_summary.html:18 #: ckanext/harvest/templates/snippets/job_error_summary.html:18
msgid "Count" msgid "Count"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/job_error_summary.html:19 #: ckanext/harvest/templates/snippets/job_error_summary.html:19
msgid "Message" msgid "Message"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/package_list_empty.html:1 #: ckanext/harvest/templates/snippets/package_list_empty.html:1
msgid "There are no datasets associated to this harvest source." msgid "There are no datasets associated to this harvest source."
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/search_result_text.html:4 #: ckanext/harvest/templates/snippets/search_result_text.html:4
msgid "{number} harvest source found for \"{query}\"" msgid "{number} harvest source found for \"{query}\""
msgid_plural "{number} harvest sources found for \"{query}\"" msgid_plural "{number} harvest sources found for \"{query}\""
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: ckanext/harvest/templates_new/snippets/search_result_text.html:5 #: ckanext/harvest/templates/snippets/search_result_text.html:5
#: ckanext/harvest/templates_new/source/org_source_list.html:17 #: ckanext/harvest/templates/source/org_source_list.html:17
#: ckanext/harvest/templates_new/source/search_2.0.html:27 #: ckanext/harvest/templates/source/search_2.0.html:27
msgid "Sorry no harvest sources found for \"{query}\"" msgid "Sorry no harvest sources found for \"{query}\""
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/search_result_text.html:6 #: ckanext/harvest/templates/snippets/search_result_text.html:6
msgid "{number} harvest source found" msgid "{number} harvest source found"
msgid_plural "{number} harvest sources found" msgid_plural "{number} harvest sources found"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: ckanext/harvest/templates_new/snippets/search_result_text.html:7 #: ckanext/harvest/templates/snippets/search_result_text.html:7
#: ckanext/harvest/templates_new/source/org_source_list.html:25 #: ckanext/harvest/templates/source/org_source_list.html:25
msgid "Sorry no harvest sources found" msgid "Sorry no harvest sources found"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/source_item.html:28 #: ckanext/harvest/templates/snippets/source_item.html:28
msgid "Draft" msgid "Draft"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/source_item.html:30 #: ckanext/harvest/templates/snippets/source_item.html:30
#: ckanext/harvest/templates_new/source/new_source_form.html:83 #: ckanext/harvest/templates/source/new_source_form.html:83
msgid "Deleted" msgid "Deleted"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/source_item.html:37 #: ckanext/harvest/templates/snippets/source_item.html:37
#: ckanext/harvest/templates_new/source/about.html:9 #: ckanext/harvest/templates/source/about.html:9
#: ckanext/harvest/templates_new/source/read_base.html:25 #: ckanext/harvest/templates/source/read_base.html:25
msgid "There is no description for this harvest source" msgid "There is no description for this harvest source"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/source_item.html:42 #: ckanext/harvest/templates/snippets/source_item.html:42
#: ckanext/harvest/templates_new/source/read.html:5 #: ckanext/harvest/templates/source/read.html:5
#: ckanext/harvest/templates_new/source/read_base.html:30 #: ckanext/harvest/templates/source/read_base.html:30
#: ckanext/harvest/templates_new/source/read_base.html:53 #: ckanext/harvest/templates/source/read_base.html:53
msgid "Datasets" msgid "Datasets"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/snippets/source_item.html:45 #: ckanext/harvest/templates/snippets/source_item.html:45
#: ckanext/harvest/templates_new/source/new_source_form.html:63 #: ckanext/harvest/templates/source/new_source_form.html:63
msgid "Organization" msgid "Organization"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/admin.html:5 #: ckanext/harvest/templates/source/admin.html:5
msgid "Last Harvest Job" msgid "Last Harvest Job"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/admin.html:11 #: ckanext/harvest/templates/source/admin.html:11
msgid "View full job report" msgid "View full job report"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/admin_base.html:7 #: ckanext/harvest/templates/source/admin_base.html:7
#: ckanext/harvest/templates_new/source/read_base.html:4 #: ckanext/harvest/templates/source/read_base.html:4
msgid "Admin" msgid "Admin"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/admin_base.html:15 #: ckanext/harvest/templates/source/admin_base.html:15
msgid "" msgid ""
"This will re-run the harvesting for this source. Any updates at the source " "This will re-run the harvesting for this source. Any updates at the source "
"will overwrite the local datasets. Sources with a large number of datasets " "will overwrite the local datasets. Sources with a large number of datasets "
@ -269,76 +265,76 @@ msgid ""
"you would like us to start reharvesting." "you would like us to start reharvesting."
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/admin_base.html:18 #: ckanext/harvest/templates/source/admin_base.html:18
msgid "Start a new harvesting job for this harvest source now" msgid "Start a new harvesting job for this harvest source now"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/admin_base.html:20 #: ckanext/harvest/templates/source/admin_base.html:20
msgid "Reharvest" msgid "Reharvest"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/admin_base.html:24 #: ckanext/harvest/templates/source/admin_base.html:24
msgid "" msgid ""
"Warning: This will remove all datasets for this source, as well as all " "Warning: This will remove all datasets for this source, as well as all "
"previous job reports. Are you sure you want to continue?" "previous job reports. Are you sure you want to continue?"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/admin_base.html:27 #: ckanext/harvest/templates/source/admin_base.html:27
msgid "Delete all harvest jobs and existing datasets from this source" msgid "Delete all harvest jobs and existing datasets from this source"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/admin_base.html:28 #: ckanext/harvest/templates/source/admin_base.html:28
msgid "Clear" msgid "Clear"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/admin_base.html:32 #: ckanext/harvest/templates/source/admin_base.html:32
msgid "View harvest source" msgid "View harvest source"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/admin_base.html:48 #: ckanext/harvest/templates/source/admin_base.html:48
msgid "Dashboard" msgid "Dashboard"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/admin_base.html:49 #: ckanext/harvest/templates/source/admin_base.html:49
msgid "Jobs" msgid "Jobs"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/admin_base.html:50 #: ckanext/harvest/templates/source/admin_base.html:50
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/base.html:17 #: ckanext/harvest/templates/source/base.html:17
msgid "Organizations" msgid "Organizations"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/base.html:19 #: ckanext/harvest/templates/source/base.html:19
#: ckanext/harvest/templates_new/source/base.html:22 #: ckanext/harvest/templates/source/base.html:22
#: ckanext/harvest/templates_new/source/new.html:4 #: ckanext/harvest/templates/source/new.html:4
#: ckanext/harvest/templates_new/source/org_source_list.html:3 #: ckanext/harvest/templates/source/org_source_list.html:3
#: ckanext/harvest/templates_new/source/org_source_list.html:7 #: ckanext/harvest/templates/source/org_source_list.html:7
#: ckanext/harvest/templates_new/source/org_source_list.html:19 #: ckanext/harvest/templates/source/org_source_list.html:19
#: ckanext/harvest/templates_new/source/search.html:7 #: ckanext/harvest/templates/source/search.html:7
msgid "Harvest Sources" msgid "Harvest Sources"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/edit.html:3 #: ckanext/harvest/templates/source/edit.html:3
msgid "Edit harvest source" msgid "Edit harvest source"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new.html:5 #: ckanext/harvest/templates/source/new.html:5
msgid "Create Harvest Source" msgid "Create Harvest Source"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new.html:11 #: ckanext/harvest/templates/source/new.html:11
msgid "Create harvest source" msgid "Create harvest source"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new.html:23 #: ckanext/harvest/templates/source/new.html:23
#: ckanext/harvest/templates_new/source/search.html:3 #: ckanext/harvest/templates/source/search.html:3
msgid "Harvest sources" msgid "Harvest sources"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new.html:26 #: ckanext/harvest/templates/source/new.html:26
msgid "" msgid ""
" Harvest sources allow importing remote metadata into this catalog. Remote " " Harvest sources allow importing remote metadata into this catalog. Remote "
"sources can be other catalogs such as other CKAN instances, CSW servers or " "sources can be other catalogs such as other CKAN instances, CSW servers or "
@ -346,222 +342,222 @@ msgid ""
"this instance). " "this instance). "
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:8 #: ckanext/harvest/templates/source/new_source_form.html:8
msgid "URL" msgid "URL"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:10 #: ckanext/harvest/templates/source/new_source_form.html:10
msgid "This should include the http:// part of the URL" msgid "This should include the http:// part of the URL"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:14 #: ckanext/harvest/templates/source/new_source_form.html:14
msgid "Title" msgid "Title"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:14 #: ckanext/harvest/templates/source/new_source_form.html:14
msgid "eg. A descriptive title" msgid "eg. A descriptive title"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:21 #: ckanext/harvest/templates/source/new_source_form.html:21
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:21 #: ckanext/harvest/templates/source/new_source_form.html:21
msgid "eg. my-dataset" msgid "eg. my-dataset"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:23 #: ckanext/harvest/templates/source/new_source_form.html:23
msgid "Description" msgid "Description"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:43 #: ckanext/harvest/templates/source/new_source_form.html:43
msgid "Update frequency" msgid "Update frequency"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:46 #: ckanext/harvest/templates/source/new_source_form.html:46
msgid "Configuration" msgid "Configuration"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:66 #: ckanext/harvest/templates/source/new_source_form.html:66
msgid "No organization" msgid "No organization"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:79 #: ckanext/harvest/templates/source/new_source_form.html:79
msgid "State" msgid "State"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:82 #: ckanext/harvest/templates/source/new_source_form.html:82
msgid "Active" msgid "Active"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:92 #: ckanext/harvest/templates/source/new_source_form.html:92
msgid "" msgid ""
"This will flag the source as deleted but keep all its datasets and previous " "This will flag the source as deleted but keep all its datasets and previous "
"jobs. Are you sure you want to delete this harvest source?" "jobs. Are you sure you want to delete this harvest source?"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:93 #: ckanext/harvest/templates/source/new_source_form.html:93
msgid "" msgid ""
"Warning: Apart from deleting this source, this command will remove all its " "Warning: Apart from deleting this source, this command will remove all its "
"datasets, as well as all previous job reports. Are you sure you want to " "datasets, as well as all previous job reports. Are you sure you want to "
"continue?" "continue?"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:96 #: ckanext/harvest/templates/source/new_source_form.html:96
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:102 #: ckanext/harvest/templates/source/new_source_form.html:102
msgid "Delete source" msgid "Delete source"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/new_source_form.html:107 #: ckanext/harvest/templates/source/new_source_form.html:107
msgid "Delete and clear source" msgid "Delete and clear source"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/old_new_source_form.html:5 #: ckanext/harvest/templates/source/old_new_source_form.html:5
msgid "Return to the harvest sources list" msgid "Return to the harvest sources list"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/org_source_list.html:15 #: ckanext/harvest/templates/source/org_source_list.html:15
#: ckanext/harvest/templates_new/source/search_2.0.html:25 #: ckanext/harvest/templates/source/search_2.0.html:25
msgid " found for \"{query}\"" msgid " found for \"{query}\""
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/org_source_list.html:31 #: ckanext/harvest/templates/source/org_source_list.html:31
msgid "Search sources..." msgid "Search sources..."
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/org_source_list.html:32 #: ckanext/harvest/templates/source/org_source_list.html:32
#: ckanext/harvest/templates_new/source/search_2.0.html:8 #: ckanext/harvest/templates/source/search_2.0.html:8
msgid "Search" msgid "Search"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/read_base.html:22 #: ckanext/harvest/templates/source/read_base.html:22
msgid "read more" msgid "read more"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/read_base.html:54 #: ckanext/harvest/templates/source/read_base.html:54
msgid "About" msgid "About"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/search.html:44 #: ckanext/harvest/templates/source/search.html:44
msgid "Relevance" msgid "Relevance"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/search.html:45 #: ckanext/harvest/templates/source/search.html:45
msgid "Name Ascending" msgid "Name Ascending"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/search.html:46 #: ckanext/harvest/templates/source/search.html:46
msgid "Name Descending" msgid "Name Descending"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/search.html:47 #: ckanext/harvest/templates/source/search.html:47
msgid "Last Modified" msgid "Last Modified"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/search.html:48 #: ckanext/harvest/templates/source/search.html:48
msgid "Popular" msgid "Popular"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/search.html:50 #: ckanext/harvest/templates/source/search.html:50
msgid "Search harvest sources..." msgid "Search harvest sources..."
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/search_2.0.html:7 #: ckanext/harvest/templates/source/search_2.0.html:7
msgid "Search..." msgid "Search..."
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/search_2.0.html:29 #: ckanext/harvest/templates/source/search_2.0.html:29
msgid "All harvest sources" msgid "All harvest sources"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/search_2.0.html:42 #: ckanext/harvest/templates/source/search_2.0.html:42
msgid "Remove" msgid "Remove"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/search_2.0.html:48 #: ckanext/harvest/templates/source/search_2.0.html:48
msgid "Try another search term, browse the sources below or " msgid "Try another search term, browse the sources below or "
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/search_2.0.html:49 #: ckanext/harvest/templates/source/search_2.0.html:49
msgid "add a new one" msgid "add a new one"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/search_2.0.html:55 #: ckanext/harvest/templates/source/search_2.0.html:55
msgid "" msgid ""
" <p><strong>There was an error while searching.</strong> Please try " " <p><strong>There was an error while searching.</strong> Please try "
"again.</p> " "again.</p> "
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/list.html:5 #: ckanext/harvest/templates/source/job/list.html:5
#: ckanext/harvest/templates_new/source/job/list.html:10 #: ckanext/harvest/templates/source/job/list.html:10
msgid "Harvest Jobs" msgid "Harvest Jobs"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/list.html:21 #: ckanext/harvest/templates/source/job/list.html:21
msgid "Job: " msgid "Job: "
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/list.html:28 #: ckanext/harvest/templates/source/job/list.html:28
msgid "Started:" msgid "Started:"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/list.html:28 #: ckanext/harvest/templates/source/job/list.html:30
#: ckanext/harvest/templates_new/source/job/list.html:30 #: ckanext/harvest/templates/source/job/list.html:35
msgid "Not yet" msgid "Not yet"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/list.html:30 #: ckanext/harvest/templates/source/job/list.html:33
msgid "Finished:" msgid "Finished:"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/read.html:3 #: ckanext/harvest/templates/source/job/read.html:3
#: ckanext/harvest/templates_new/source/job/read.html:12 #: ckanext/harvest/templates/source/job/read.html:12
msgid "Job Report" msgid "Job Report"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/read.html:9 #: ckanext/harvest/templates/source/job/read.html:9
msgid "Back to job list" msgid "Back to job list"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/read.html:18 #: ckanext/harvest/templates/source/job/read.html:18
#: ckanext/harvest/templates_new/source/job/read.html:22 #: ckanext/harvest/templates/source/job/read.html:22
msgid "Error Summary" msgid "Error Summary"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/read.html:19 #: ckanext/harvest/templates/source/job/read.html:19
msgid "No errors for this job" msgid "No errors for this job"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/read.html:23 #: ckanext/harvest/templates/source/job/read.html:23
msgid "Only the 20 most frequent errors are shown" msgid "Only the 20 most frequent errors are shown"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/read.html:26 #: ckanext/harvest/templates/source/job/read.html:26
#: ckanext/harvest/templates_new/source/job/read.html:40 #: ckanext/harvest/templates/source/job/read.html:40
msgid "Job Errors" msgid "Job Errors"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/read.html:30 #: ckanext/harvest/templates/source/job/read.html:30
#: ckanext/harvest/templates_new/source/job/read.html:57 #: ckanext/harvest/templates/source/job/read.html:57
msgid "Document Errors" msgid "Document Errors"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/read.html:37 #: ckanext/harvest/templates/source/job/read.html:37
msgid "Error Report" msgid "Error Report"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/read.html:58 #: ckanext/harvest/templates/source/job/read.html:58
msgid "documents with errors" msgid "documents with errors"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/read.html:69 #: ckanext/harvest/templates/source/job/read.html:69
msgid "Remote content" msgid "Remote content"
msgstr "" msgstr ""
#: ckanext/harvest/templates_new/source/job/read.html:73 #: ckanext/harvest/templates/source/job/read.html:73
msgid "Local content" msgid "Local content"
msgstr "" msgstr ""

View File

@ -1,113 +1,111 @@
# Translations template for ckanext-harvest. # Swedish translations for ckanext-harvest.
# Copyright (C) 2015 ORGANIZATION # Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the ckanext-harvest # This file is distributed under the same license as the ckanext-harvest
# project. # project.
# #
# Translators: # Translators:
# Börje Lewin <borjelewin@gmail.com>, 2015 # Börje Lewin <borjelewin@gmail.com>, 2015
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ckanext-harvest\n" "Project-Id-Version: ckanext-harvest\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2015-06-10 12:12+0100\n" "POT-Creation-Date: 2015-12-11 15:21+0000\n"
"PO-Revision-Date: 2015-06-11 17:28+0000\n" "PO-Revision-Date: 2015-06-11 17:28+0000\n"
"Last-Translator: Börje Lewin <borjelewin@gmail.com>\n" "Last-Translator: Börje Lewin <borjelewin@gmail.com>\n"
"Language-Team: Swedish (http://www.transifex.com/projects/p/ckanext-harvest/language/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
"Language: sv\n" "Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Language-Team: Swedish (http://www.transifex.com/projects/p/ckanext-"
"harvest/language/sv/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.1.1\n"
#: ckanext/harvest/helpers.py:70 #: ckanext/harvest/helpers.py:70
msgid "title" msgid "title"
msgstr "rubrik" msgstr "rubrik"
#: ckanext/harvest/controllers/organization.py:41 #: ckanext/harvest/controllers/organization.py:40
msgid "Group not found" msgid "Group not found"
msgstr "Hittar inte grupp" msgstr "Hittar inte grupp"
#: ckanext/harvest/controllers/organization.py:43 #: ckanext/harvest/controllers/organization.py:42
#, python-format #, python-format
msgid "Unauthorized to read group %s" msgid "Unauthorized to read group %s"
msgstr "Obehörig att läsa grupp %s" msgstr "Obehörig att läsa grupp %s"
#: ckanext/harvest/controllers/organization.py:69 #: ckanext/harvest/controllers/organization.py:137
msgid "Cannot render description"
msgstr "Kan inte generera beskrivning"
#: ckanext/harvest/controllers/organization.py:151
msgid "Groups" msgid "Groups"
msgstr "Grupper" msgstr "Grupper"
#: ckanext/harvest/controllers/organization.py:152 #: ckanext/harvest/controllers/organization.py:138
msgid "Tags" msgid "Tags"
msgstr "Taggar" msgstr "Taggar"
#: ckanext/harvest/controllers/organization.py:153 #: ckanext/harvest/controllers/organization.py:139
msgid "Formats" msgid "Formats"
msgstr "Format" msgstr "Format"
#: ckanext/harvest/controllers/organization.py:154 #: ckanext/harvest/controllers/organization.py:140
msgid "Licence" msgid "Licence"
msgstr "Licens" msgstr "Licens"
#: ckanext/harvest/controllers/view.py:27 #: ckanext/harvest/controllers/view.py:28
msgid "Not authorized to see this page" msgid "Not authorized to see this page"
msgstr "Obehörig att se denna sida" msgstr "Obehörig att se denna sida"
#: ckanext/harvest/controllers/view.py:44 #: ckanext/harvest/controllers/view.py:45
msgid "Harvesting source successfully cleared" msgid "Harvesting source successfully cleared"
msgstr "Källan för skördning har raderats" msgstr "Källan för skördning har raderats"
#: ckanext/harvest/controllers/view.py:46 #: ckanext/harvest/controllers/view.py:47
msgid "Harvesting source successfully inactivated" msgid "Harvesting source successfully inactivated"
msgstr "Källan för skördning har avaktiverats" msgstr "Källan för skördning har avaktiverats"
#: ckanext/harvest/controllers/view.py:50 #: ckanext/harvest/controllers/view.py:51
#: ckanext/harvest/controllers/view.py:61 #: ckanext/harvest/controllers/view.py:63
#: ckanext/harvest/controllers/view.py:82 #: ckanext/harvest/controllers/view.py:85
#: ckanext/harvest/controllers/view.py:143 #: ckanext/harvest/controllers/view.py:146
#: ckanext/harvest/controllers/view.py:181 #: ckanext/harvest/controllers/view.py:184
#: ckanext/harvest/controllers/view.py:192 #: ckanext/harvest/controllers/view.py:195
#: ckanext/harvest/controllers/view.py:218 #: ckanext/harvest/controllers/view.py:221
#: ckanext/harvest/logic/auth/create.py:34 #: ckanext/harvest/logic/auth/create.py:34
#: ckanext/harvest/logic/auth/delete.py:18 #: ckanext/harvest/logic/auth/delete.py:18 ckanext/harvest/logic/auth/get.py:33
#: ckanext/harvest/logic/auth/get.py:33
#: ckanext/harvest/logic/auth/update.py:19 #: ckanext/harvest/logic/auth/update.py:19
msgid "Harvest source not found" msgid "Harvest source not found"
msgstr "Hittar inte källan" msgstr "Hittar inte källan"
#: ckanext/harvest/controllers/view.py:59 #: ckanext/harvest/controllers/view.py:61
msgid "Refresh requested, harvesting will take place within 15 minutes." msgid "Harvest will start shortly. Refresh this page for updates."
msgstr "Uppdatering har begärts, skördning sker inom 15 minuter." msgstr ""
#: ckanext/harvest/controllers/view.py:66 #: ckanext/harvest/controllers/view.py:67
msgid "" msgid ""
"Cannot create new harvest jobs on inactive sources. First, please change the" "Cannot create new harvest jobs on inactive sources. First, please change "
" source status to 'active'." "the source status to 'active'."
msgstr "Kan inte skapa nya skördningsjobb för inaktiva källor. Ändra först källans status till 'aktiv'." msgstr ""
"Kan inte skapa nya skördningsjobb för inaktiva källor. Ändra först "
"källans status till 'aktiv'."
#: ckanext/harvest/controllers/view.py:69 #: ckanext/harvest/controllers/view.py:71
msgid "A harvest job has already been scheduled for this source" msgid "A harvest job has already been scheduled for this source"
msgstr "Ett skördningsjobb har redan schemalagts för denna källa" msgstr "Ett skördningsjobb har redan schemalagts för denna källa"
#: ckanext/harvest/controllers/view.py:80 #: ckanext/harvest/controllers/view.py:83
msgid "Harvest source cleared" msgid "Harvest source cleared"
msgstr "Skördningskällan har rensats" msgstr "Skördningskällan har rensats"
#: ckanext/harvest/controllers/view.py:108 #: ckanext/harvest/controllers/view.py:111
msgid "No content found" msgid "No content found"
msgstr "Hittar inget innehåll" msgstr "Hittar inget innehåll"
#: ckanext/harvest/controllers/view.py:168 #: ckanext/harvest/controllers/view.py:171
msgid "Harvest job not found" msgid "Harvest job not found"
msgstr "Hittar inte skördningsjobbet" msgstr "Hittar inte skördningsjobbet"
#: ckanext/harvest/controllers/view.py:201 #: ckanext/harvest/controllers/view.py:204
#: ckanext/harvest/templates_new/source/admin.html:15 #: ckanext/harvest/templates/source/admin.html:15
#: ckanext/harvest/templates_new/source/job/list.html:13 #: ckanext/harvest/templates/source/job/list.html:13
msgid "No jobs yet for this source" msgid "No jobs yet for this source"
msgstr "Det finns inga jobb för denna källa" msgstr "Det finns inga jobb för denna källa"
@ -155,419 +153,439 @@ msgstr "Endast systemadministratörer kan importera om skördningsobjekt"
msgid "Only sysadmins can run the pending harvest jobs" msgid "Only sysadmins can run the pending harvest jobs"
msgstr "Endast systemadministratörer kan köra väntande skördningsjobb" msgstr "Endast systemadministratörer kan köra väntande skördningsjobb"
#: ckanext/harvest/logic/auth/update.py:68 #: ckanext/harvest/logic/auth/update.py:89
msgid "Only sysadmins can reindex all harvest sources" msgid "Only sysadmins can reindex all harvest sources"
msgstr "Endast systemadministratörer kan omindexera skördningskällor" msgstr "Endast systemadministratörer kan omindexera skördningskällor"
#: ckanext/harvest/templates_new/snippets/add_source_button.html:6 #: ckanext/harvest/templates/snippets/add_source_button.html:6
#: ckanext/harvest/templates_new/source/org_source_list.html:11 #: ckanext/harvest/templates/source/org_source_list.html:11
msgid "Add Harvest Source" msgid "Add Harvest Source"
msgstr "Lägg till skördningskälla" msgstr "Lägg till skördningskälla"
#: ckanext/harvest/templates_new/snippets/job_details.html:26 #: ckanext/harvest/templates/snippets/job_details.html:26
#: ckanext/harvest/templates_new/source/job/list.html:38 #: ckanext/harvest/templates/source/job/list.html:44
msgid "errors" msgid "errors"
msgstr "fel" msgstr "fel"
#: ckanext/harvest/templates_new/snippets/job_details.html:41 #: ckanext/harvest/templates/snippets/job_details.html:41
msgid "Details" msgid "Details"
msgstr "Detaljer" msgstr "Detaljer"
#: ckanext/harvest/templates_new/snippets/job_details.html:48 #: ckanext/harvest/templates/snippets/job_details.html:48
msgid "Id" msgid "Id"
msgstr "Id" msgstr "Id"
#: ckanext/harvest/templates_new/snippets/job_details.html:52 #: ckanext/harvest/templates/snippets/job_details.html:52
msgid "Created" msgid "Created"
msgstr "Skapad" msgstr "Skapad"
#: ckanext/harvest/templates_new/snippets/job_details.html:56 #: ckanext/harvest/templates/snippets/job_details.html:60
msgid "Started" msgid "Started"
msgstr "Påbörjad" msgstr "Påbörjad"
#: ckanext/harvest/templates_new/snippets/job_details.html:60 #: ckanext/harvest/templates/snippets/job_details.html:68
msgid "Finished" msgid "Finished"
msgstr "Avslutad" msgstr "Avslutad"
#: ckanext/harvest/templates_new/snippets/job_details.html:64 #: ckanext/harvest/templates/snippets/job_details.html:76
msgid "Status" msgid "Status"
msgstr "Status" msgstr "Status"
#: ckanext/harvest/templates_new/snippets/job_error_summary.html:18 #: ckanext/harvest/templates/snippets/job_error_summary.html:18
msgid "Count" msgid "Count"
msgstr "Antal" msgstr "Antal"
#: ckanext/harvest/templates_new/snippets/job_error_summary.html:19 #: ckanext/harvest/templates/snippets/job_error_summary.html:19
msgid "Message" msgid "Message"
msgstr "Meddelande" msgstr "Meddelande"
#: ckanext/harvest/templates_new/snippets/package_list_empty.html:1 #: ckanext/harvest/templates/snippets/package_list_empty.html:1
msgid "There are no datasets associated to this harvest source." msgid "There are no datasets associated to this harvest source."
msgstr "Det finns inga dataset kopplade till denna skördningskälla" msgstr "Det finns inga dataset kopplade till denna skördningskälla"
#: ckanext/harvest/templates_new/snippets/search_result_text.html:4 #: ckanext/harvest/templates/snippets/search_result_text.html:4
msgid "{number} harvest source found for \"{query}\"" msgid "{number} harvest source found for \"{query}\""
msgid_plural "{number} harvest sources found for \"{query}\"" msgid_plural "{number} harvest sources found for \"{query}\""
msgstr[0] "{number} skördningskälla hittades för \"{query}\"" msgstr[0] "{number} skördningskälla hittades för \"{query}\""
msgstr[1] "{number} skördningskällor hittades för \"{query}\"" msgstr[1] "{number} skördningskällor hittades för \"{query}\""
#: ckanext/harvest/templates_new/snippets/search_result_text.html:5 #: ckanext/harvest/templates/snippets/search_result_text.html:5
#: ckanext/harvest/templates_new/source/org_source_list.html:17 #: ckanext/harvest/templates/source/org_source_list.html:17
#: ckanext/harvest/templates_new/source/search_2.0.html:27 #: ckanext/harvest/templates/source/search_2.0.html:27
msgid "Sorry no harvest sources found for \"{query}\"" msgid "Sorry no harvest sources found for \"{query}\""
msgstr "Hittar inga skördningskällor för \"{query}\"" msgstr "Hittar inga skördningskällor för \"{query}\""
#: ckanext/harvest/templates_new/snippets/search_result_text.html:6 #: ckanext/harvest/templates/snippets/search_result_text.html:6
msgid "{number} harvest source found" msgid "{number} harvest source found"
msgid_plural "{number} harvest sources found" msgid_plural "{number} harvest sources found"
msgstr[0] "{number} skördningskälla hittades" msgstr[0] "{number} skördningskälla hittades"
msgstr[1] "{number} skördningskällor hittades" msgstr[1] "{number} skördningskällor hittades"
#: ckanext/harvest/templates_new/snippets/search_result_text.html:7 #: ckanext/harvest/templates/snippets/search_result_text.html:7
#: ckanext/harvest/templates_new/source/org_source_list.html:25 #: ckanext/harvest/templates/source/org_source_list.html:25
msgid "Sorry no harvest sources found" msgid "Sorry no harvest sources found"
msgstr "Hittade inga skördningskällor" msgstr "Hittade inga skördningskällor"
#: ckanext/harvest/templates_new/snippets/source_item.html:28 #: ckanext/harvest/templates/snippets/source_item.html:28
msgid "Draft" msgid "Draft"
msgstr "Utkast" msgstr "Utkast"
#: ckanext/harvest/templates_new/snippets/source_item.html:30 #: ckanext/harvest/templates/snippets/source_item.html:30
#: ckanext/harvest/templates_new/source/new_source_form.html:83 #: ckanext/harvest/templates/source/new_source_form.html:83
msgid "Deleted" msgid "Deleted"
msgstr "Borttagen" msgstr "Borttagen"
#: ckanext/harvest/templates_new/snippets/source_item.html:37 #: ckanext/harvest/templates/snippets/source_item.html:37
#: ckanext/harvest/templates_new/source/about.html:9 #: ckanext/harvest/templates/source/about.html:9
#: ckanext/harvest/templates_new/source/read_base.html:25 #: ckanext/harvest/templates/source/read_base.html:25
msgid "There is no description for this harvest source" msgid "There is no description for this harvest source"
msgstr "Det finns ingen beskrivning för denna skördningskälla" msgstr "Det finns ingen beskrivning för denna skördningskälla"
#: ckanext/harvest/templates_new/snippets/source_item.html:42 #: ckanext/harvest/templates/snippets/source_item.html:42
#: ckanext/harvest/templates_new/source/read.html:5 #: ckanext/harvest/templates/source/read.html:5
#: ckanext/harvest/templates_new/source/read_base.html:30 #: ckanext/harvest/templates/source/read_base.html:30
#: ckanext/harvest/templates_new/source/read_base.html:53 #: ckanext/harvest/templates/source/read_base.html:53
msgid "Datasets" msgid "Datasets"
msgstr "Dataset" msgstr "Dataset"
#: ckanext/harvest/templates_new/snippets/source_item.html:45 #: ckanext/harvest/templates/snippets/source_item.html:45
#: ckanext/harvest/templates_new/source/new_source_form.html:63 #: ckanext/harvest/templates/source/new_source_form.html:63
msgid "Organization" msgid "Organization"
msgstr "Organisation" msgstr "Organisation"
#: ckanext/harvest/templates_new/source/admin.html:5 #: ckanext/harvest/templates/source/admin.html:5
msgid "Last Harvest Job" msgid "Last Harvest Job"
msgstr "Sista skördningsjobb" msgstr "Sista skördningsjobb"
#: ckanext/harvest/templates_new/source/admin.html:11 #: ckanext/harvest/templates/source/admin.html:11
msgid "View full job report" msgid "View full job report"
msgstr "Visa fullständig jobbrapport" msgstr "Visa fullständig jobbrapport"
#: ckanext/harvest/templates_new/source/admin_base.html:7 #: ckanext/harvest/templates/source/admin_base.html:7
#: ckanext/harvest/templates_new/source/read_base.html:4 #: ckanext/harvest/templates/source/read_base.html:4
msgid "Admin" msgid "Admin"
msgstr "Admin" msgstr "Admin"
#: ckanext/harvest/templates_new/source/admin_base.html:15 #: ckanext/harvest/templates/source/admin_base.html:15
msgid "" msgid ""
"This will re-run the harvesting for this source. Any updates at the source " "This will re-run the harvesting for this source. Any updates at the "
"will overwrite the local datasets. Sources with a large number of datasets " "source will overwrite the local datasets. Sources with a large number of "
"may take a significant amount of time to finish harvesting. Please confirm " "datasets may take a significant amount of time to finish harvesting. "
"you would like us to start reharvesting." "Please confirm you would like us to start reharvesting."
msgstr "Skördningen kommer att köras igen för denna källa. Alla uppdateringar från källan kommer att ersätta lokala dataset. Källor med många dataset kan ta lång tid att skörda. Bekräfta om du vill starta en omskördning." msgstr ""
"Skördningen kommer att köras igen för denna källa. Alla uppdateringar "
"från källan kommer att ersätta lokala dataset. Källor med många dataset "
"kan ta lång tid att skörda. Bekräfta om du vill starta en omskördning."
#: ckanext/harvest/templates_new/source/admin_base.html:18 #: ckanext/harvest/templates/source/admin_base.html:18
msgid "Start a new harvesting job for this harvest source now" msgid "Start a new harvesting job for this harvest source now"
msgstr "Starta ett nytt skördningsjobb för denna skördningskälla nu." msgstr "Starta ett nytt skördningsjobb för denna skördningskälla nu."
#: ckanext/harvest/templates_new/source/admin_base.html:20 #: ckanext/harvest/templates/source/admin_base.html:20
msgid "Reharvest" msgid "Reharvest"
msgstr "Skörda om" msgstr "Skörda om"
#: ckanext/harvest/templates_new/source/admin_base.html:24 #: ckanext/harvest/templates/source/admin_base.html:24
msgid "" msgid ""
"Warning: This will remove all datasets for this source, as well as all " "Warning: This will remove all datasets for this source, as well as all "
"previous job reports. Are you sure you want to continue?" "previous job reports. Are you sure you want to continue?"
msgstr "Varning: Alla dataset för denna källa tas bort, liksom tidigare jobbrapporter. Vill du fortsätta?" msgstr ""
"Varning: Alla dataset för denna källa tas bort, liksom tidigare "
"jobbrapporter. Vill du fortsätta?"
#: ckanext/harvest/templates_new/source/admin_base.html:27 #: ckanext/harvest/templates/source/admin_base.html:27
msgid "Delete all harvest jobs and existing datasets from this source" msgid "Delete all harvest jobs and existing datasets from this source"
msgstr "Ta bort alla skördningsjobb och befintliga dataset från denna källa" msgstr "Ta bort alla skördningsjobb och befintliga dataset från denna källa"
#: ckanext/harvest/templates_new/source/admin_base.html:28 #: ckanext/harvest/templates/source/admin_base.html:28
msgid "Clear" msgid "Clear"
msgstr "Rensa" msgstr "Rensa"
#: ckanext/harvest/templates_new/source/admin_base.html:32 #: ckanext/harvest/templates/source/admin_base.html:32
msgid "View harvest source" msgid "View harvest source"
msgstr "Visa skördningskälla" msgstr "Visa skördningskälla"
#: ckanext/harvest/templates_new/source/admin_base.html:48 #: ckanext/harvest/templates/source/admin_base.html:48
msgid "Dashboard" msgid "Dashboard"
msgstr "Kontrollpanel" msgstr "Kontrollpanel"
#: ckanext/harvest/templates_new/source/admin_base.html:49 #: ckanext/harvest/templates/source/admin_base.html:49
msgid "Jobs" msgid "Jobs"
msgstr "Jobb" msgstr "Jobb"
#: ckanext/harvest/templates_new/source/admin_base.html:50 #: ckanext/harvest/templates/source/admin_base.html:50
msgid "Edit" msgid "Edit"
msgstr "Redigera" msgstr "Redigera"
#: ckanext/harvest/templates_new/source/base.html:17 #: ckanext/harvest/templates/source/base.html:17
msgid "Organizations" msgid "Organizations"
msgstr "Organisationer" msgstr "Organisationer"
#: ckanext/harvest/templates_new/source/base.html:19 #: ckanext/harvest/templates/source/base.html:19
#: ckanext/harvest/templates_new/source/base.html:22 #: ckanext/harvest/templates/source/base.html:22
#: ckanext/harvest/templates_new/source/new.html:4 #: ckanext/harvest/templates/source/new.html:4
#: ckanext/harvest/templates_new/source/org_source_list.html:3 #: ckanext/harvest/templates/source/org_source_list.html:3
#: ckanext/harvest/templates_new/source/org_source_list.html:7 #: ckanext/harvest/templates/source/org_source_list.html:7
#: ckanext/harvest/templates_new/source/org_source_list.html:19 #: ckanext/harvest/templates/source/org_source_list.html:19
#: ckanext/harvest/templates_new/source/search.html:7 #: ckanext/harvest/templates/source/search.html:7
msgid "Harvest Sources" msgid "Harvest Sources"
msgstr "Skördningskällor" msgstr "Skördningskällor"
#: ckanext/harvest/templates_new/source/edit.html:3 #: ckanext/harvest/templates/source/edit.html:3
msgid "Edit harvest source" msgid "Edit harvest source"
msgstr "Redigera skördningskällo" msgstr "Redigera skördningskällo"
#: ckanext/harvest/templates_new/source/new.html:5 #: ckanext/harvest/templates/source/new.html:5
msgid "Create Harvest Source" msgid "Create Harvest Source"
msgstr "Skapa skördningskälla" msgstr "Skapa skördningskälla"
#: ckanext/harvest/templates_new/source/new.html:11 #: ckanext/harvest/templates/source/new.html:11
msgid "Create harvest source" msgid "Create harvest source"
msgstr "Skapa skördningskälla" msgstr "Skapa skördningskälla"
#: ckanext/harvest/templates_new/source/new.html:23 #: ckanext/harvest/templates/source/new.html:23
#: ckanext/harvest/templates_new/source/search.html:3 #: ckanext/harvest/templates/source/search.html:3
msgid "Harvest sources" msgid "Harvest sources"
msgstr "Skördningskällor" msgstr "Skördningskällor"
#: ckanext/harvest/templates_new/source/new.html:26 #: ckanext/harvest/templates/source/new.html:26
msgid "" msgid ""
" Harvest sources allow importing remote metadata into this catalog. Remote " " Harvest sources allow importing remote metadata into this catalog. "
"sources can be other catalogs such as other CKAN instances, CSW servers or " "Remote sources can be other catalogs such as other CKAN instances, CSW "
"Web Accessible Folders (WAF) (depending on the actual harvesters enabled for" "servers or Web Accessible Folders (WAF) (depending on the actual "
" this instance). " "harvesters enabled for this instance). "
msgstr "Skördningskällor kan användas för att importera metadata till katalogen. Källor kan vara kataloger (t ex CKAN-instanser), CSW-servrar eller Web Accessible Folders (WAF), beroende på antalet aktiverade skördningsformat för instansen. " msgstr ""
"Skördningskällor kan användas för att importera metadata till katalogen. "
"Källor kan vara kataloger (t ex CKAN-instanser), CSW-servrar eller Web "
"Accessible Folders (WAF), beroende på antalet aktiverade skördningsformat"
" för instansen. "
#: ckanext/harvest/templates_new/source/new_source_form.html:8 #: ckanext/harvest/templates/source/new_source_form.html:8
msgid "URL" msgid "URL"
msgstr "URL" msgstr "URL"
#: ckanext/harvest/templates_new/source/new_source_form.html:10 #: ckanext/harvest/templates/source/new_source_form.html:10
msgid "This should include the http:// part of the URL" msgid "This should include the http:// part of the URL"
msgstr "Denna URL ska börja med http://" msgstr "Denna URL ska börja med http://"
#: ckanext/harvest/templates_new/source/new_source_form.html:14 #: ckanext/harvest/templates/source/new_source_form.html:14
msgid "Title" msgid "Title"
msgstr "Rubrik" msgstr "Rubrik"
#: ckanext/harvest/templates_new/source/new_source_form.html:14 #: ckanext/harvest/templates/source/new_source_form.html:14
msgid "eg. A descriptive title" msgid "eg. A descriptive title"
msgstr "t ex Beskrivande rubrik" msgstr "t ex Beskrivande rubrik"
#: ckanext/harvest/templates_new/source/new_source_form.html:21 #: ckanext/harvest/templates/source/new_source_form.html:21
msgid "Name" msgid "Name"
msgstr "Namn" msgstr "Namn"
#: ckanext/harvest/templates_new/source/new_source_form.html:21 #: ckanext/harvest/templates/source/new_source_form.html:21
msgid "eg. my-dataset" msgid "eg. my-dataset"
msgstr "t ex mitt-dataset" msgstr "t ex mitt-dataset"
#: ckanext/harvest/templates_new/source/new_source_form.html:23 #: ckanext/harvest/templates/source/new_source_form.html:23
msgid "Description" msgid "Description"
msgstr "Beskrivning" msgstr "Beskrivning"
#: ckanext/harvest/templates_new/source/new_source_form.html:43 #: ckanext/harvest/templates/source/new_source_form.html:43
msgid "Update frequency" msgid "Update frequency"
msgstr "Uppdateringsfrekvens" msgstr "Uppdateringsfrekvens"
#: ckanext/harvest/templates_new/source/new_source_form.html:46 #: ckanext/harvest/templates/source/new_source_form.html:46
msgid "Configuration" msgid "Configuration"
msgstr "Konfiguration" msgstr "Konfiguration"
#: ckanext/harvest/templates_new/source/new_source_form.html:66 #: ckanext/harvest/templates/source/new_source_form.html:66
msgid "No organization" msgid "No organization"
msgstr "Ingen organisation" msgstr "Ingen organisation"
#: ckanext/harvest/templates_new/source/new_source_form.html:79 #: ckanext/harvest/templates/source/new_source_form.html:79
msgid "State" msgid "State"
msgstr "Status" msgstr "Status"
#: ckanext/harvest/templates_new/source/new_source_form.html:82 #: ckanext/harvest/templates/source/new_source_form.html:82
msgid "Active" msgid "Active"
msgstr "Aktiv" msgstr "Aktiv"
#: ckanext/harvest/templates_new/source/new_source_form.html:92 #: ckanext/harvest/templates/source/new_source_form.html:92
msgid "" msgid ""
"This will flag the source as deleted but keep all its datasets and previous " "This will flag the source as deleted but keep all its datasets and "
"jobs. Are you sure you want to delete this harvest source?" "previous jobs. Are you sure you want to delete this harvest source?"
msgstr "Källan markeras som borttagen men alla dataset och tidigare jobb sparas. Vill du markera skördningskällan som borttagen?" msgstr ""
"Källan markeras som borttagen men alla dataset och tidigare jobb sparas. "
"Vill du markera skördningskällan som borttagen?"
#: ckanext/harvest/templates_new/source/new_source_form.html:93 #: ckanext/harvest/templates/source/new_source_form.html:93
msgid "" msgid ""
"Warning: Apart from deleting this source, this command will remove all its " "Warning: Apart from deleting this source, this command will remove all "
"datasets, as well as all previous job reports. Are you sure you want to " "its datasets, as well as all previous job reports. Are you sure you want "
"continue?" "to continue?"
msgstr "Varning. Förutom att källan tas bort, raderas även alla källans dataset och tidigare jobbrapporter. Vill du fortsätta med raderingen?" msgstr ""
"Varning. Förutom att källan tas bort, raderas även alla källans dataset "
"och tidigare jobbrapporter. Vill du fortsätta med raderingen?"
#: ckanext/harvest/templates_new/source/new_source_form.html:96 #: ckanext/harvest/templates/source/new_source_form.html:96
msgid "Delete" msgid "Delete"
msgstr "Ta bort" msgstr "Ta bort"
#: ckanext/harvest/templates_new/source/new_source_form.html:102 #: ckanext/harvest/templates/source/new_source_form.html:102
msgid "Delete source" msgid "Delete source"
msgstr "Ta bort källa" msgstr "Ta bort källa"
#: ckanext/harvest/templates_new/source/new_source_form.html:107 #: ckanext/harvest/templates/source/new_source_form.html:107
msgid "Delete and clear source" msgid "Delete and clear source"
msgstr "Ta bort och rensa källa" msgstr "Ta bort och rensa källa"
#: ckanext/harvest/templates_new/source/old_new_source_form.html:5 #: ckanext/harvest/templates/source/old_new_source_form.html:5
msgid "Return to the harvest sources list" msgid "Return to the harvest sources list"
msgstr "Återgå till listan med skördningskällor" msgstr "Återgå till listan med skördningskällor"
#: ckanext/harvest/templates_new/source/org_source_list.html:15 #: ckanext/harvest/templates/source/org_source_list.html:15
#: ckanext/harvest/templates_new/source/search_2.0.html:25 #: ckanext/harvest/templates/source/search_2.0.html:25
msgid " found for \"{query}\"" msgid " found for \"{query}\""
msgstr " hittades för \"{query}\"" msgstr " hittades för \"{query}\""
#: ckanext/harvest/templates_new/source/org_source_list.html:31 #: ckanext/harvest/templates/source/org_source_list.html:31
msgid "Search sources..." msgid "Search sources..."
msgstr "Sök källor..." msgstr "Sök källor..."
#: ckanext/harvest/templates_new/source/org_source_list.html:32 #: ckanext/harvest/templates/source/org_source_list.html:32
#: ckanext/harvest/templates_new/source/search_2.0.html:8 #: ckanext/harvest/templates/source/search_2.0.html:8
msgid "Search" msgid "Search"
msgstr "Sök" msgstr "Sök"
#: ckanext/harvest/templates_new/source/read_base.html:22 #: ckanext/harvest/templates/source/read_base.html:22
msgid "read more" msgid "read more"
msgstr "läs mer" msgstr "läs mer"
#: ckanext/harvest/templates_new/source/read_base.html:54 #: ckanext/harvest/templates/source/read_base.html:54
msgid "About" msgid "About"
msgstr "Om" msgstr "Om"
#: ckanext/harvest/templates_new/source/search.html:44 #: ckanext/harvest/templates/source/search.html:44
msgid "Relevance" msgid "Relevance"
msgstr "Relevans" msgstr "Relevans"
#: ckanext/harvest/templates_new/source/search.html:45 #: ckanext/harvest/templates/source/search.html:45
msgid "Name Ascending" msgid "Name Ascending"
msgstr "Namn (stigande)" msgstr "Namn (stigande)"
#: ckanext/harvest/templates_new/source/search.html:46 #: ckanext/harvest/templates/source/search.html:46
msgid "Name Descending" msgid "Name Descending"
msgstr "Namn (fallande)" msgstr "Namn (fallande)"
#: ckanext/harvest/templates_new/source/search.html:47 #: ckanext/harvest/templates/source/search.html:47
msgid "Last Modified" msgid "Last Modified"
msgstr "Senast ändrad" msgstr "Senast ändrad"
#: ckanext/harvest/templates_new/source/search.html:48 #: ckanext/harvest/templates/source/search.html:48
msgid "Popular" msgid "Popular"
msgstr "Populär" msgstr "Populär"
#: ckanext/harvest/templates_new/source/search.html:50 #: ckanext/harvest/templates/source/search.html:50
msgid "Search harvest sources..." msgid "Search harvest sources..."
msgstr "Sök skördningskällor..." msgstr "Sök skördningskällor..."
#: ckanext/harvest/templates_new/source/search_2.0.html:7 #: ckanext/harvest/templates/source/search_2.0.html:7
msgid "Search..." msgid "Search..."
msgstr "Sök..." msgstr "Sök..."
#: ckanext/harvest/templates_new/source/search_2.0.html:29 #: ckanext/harvest/templates/source/search_2.0.html:29
msgid "All harvest sources" msgid "All harvest sources"
msgstr "Alla skördningskällor" msgstr "Alla skördningskällor"
#: ckanext/harvest/templates_new/source/search_2.0.html:42 #: ckanext/harvest/templates/source/search_2.0.html:42
msgid "Remove" msgid "Remove"
msgstr "Radera" msgstr "Radera"
#: ckanext/harvest/templates_new/source/search_2.0.html:48 #: ckanext/harvest/templates/source/search_2.0.html:48
msgid "Try another search term, browse the sources below or " msgid "Try another search term, browse the sources below or "
msgstr "Försök med en annan sökning, välj bland källorna nedan eller " msgstr "Försök med en annan sökning, välj bland källorna nedan eller "
#: ckanext/harvest/templates_new/source/search_2.0.html:49 #: ckanext/harvest/templates/source/search_2.0.html:49
msgid "add a new one" msgid "add a new one"
msgstr "lägg till en ny" msgstr "lägg till en ny"
#: ckanext/harvest/templates_new/source/search_2.0.html:55 #: ckanext/harvest/templates/source/search_2.0.html:55
msgid "" msgid ""
" <p><strong>There was an error while searching.</strong> Please try " " <p><strong>There was an error while searching.</strong> Please try "
"again.</p> " "again.</p> "
msgstr " <p><strong>Fel vid sökning.</strong> Försök igen.</p> " msgstr " <p><strong>Fel vid sökning.</strong> Försök igen.</p> "
#: ckanext/harvest/templates_new/source/job/list.html:5 #: ckanext/harvest/templates/source/job/list.html:5
#: ckanext/harvest/templates_new/source/job/list.html:10 #: ckanext/harvest/templates/source/job/list.html:10
msgid "Harvest Jobs" msgid "Harvest Jobs"
msgstr "Skördningsjobb" msgstr "Skördningsjobb"
#: ckanext/harvest/templates_new/source/job/list.html:21 #: ckanext/harvest/templates/source/job/list.html:21
msgid "Job: " msgid "Job: "
msgstr "Jobb:" msgstr "Jobb:"
#: ckanext/harvest/templates_new/source/job/list.html:28 #: ckanext/harvest/templates/source/job/list.html:28
msgid "Started:" msgid "Started:"
msgstr "Påbörjade:" msgstr "Påbörjade:"
#: ckanext/harvest/templates_new/source/job/list.html:28 #: ckanext/harvest/templates/source/job/list.html:30
#: ckanext/harvest/templates_new/source/job/list.html:30 #: ckanext/harvest/templates/source/job/list.html:35
msgid "Not yet" msgid "Not yet"
msgstr "Inte ännu" msgstr "Inte ännu"
#: ckanext/harvest/templates_new/source/job/list.html:30 #: ckanext/harvest/templates/source/job/list.html:33
msgid "Finished:" msgid "Finished:"
msgstr "Avslutade:" msgstr "Avslutade:"
#: ckanext/harvest/templates_new/source/job/read.html:3 #: ckanext/harvest/templates/source/job/read.html:3
#: ckanext/harvest/templates_new/source/job/read.html:12 #: ckanext/harvest/templates/source/job/read.html:12
msgid "Job Report" msgid "Job Report"
msgstr "Jobbrapport" msgstr "Jobbrapport"
#: ckanext/harvest/templates_new/source/job/read.html:9 #: ckanext/harvest/templates/source/job/read.html:9
msgid "Back to job list" msgid "Back to job list"
msgstr "Tillbaka till jobblistan" msgstr "Tillbaka till jobblistan"
#: ckanext/harvest/templates_new/source/job/read.html:18 #: ckanext/harvest/templates/source/job/read.html:18
#: ckanext/harvest/templates_new/source/job/read.html:22 #: ckanext/harvest/templates/source/job/read.html:22
msgid "Error Summary" msgid "Error Summary"
msgstr "Översikt för felaktigheter" msgstr "Översikt för felaktigheter"
#: ckanext/harvest/templates_new/source/job/read.html:19 #: ckanext/harvest/templates/source/job/read.html:19
msgid "No errors for this job" msgid "No errors for this job"
msgstr "Inga felaktigheter för detta jobb" msgstr "Inga felaktigheter för detta jobb"
#: ckanext/harvest/templates_new/source/job/read.html:23 #: ckanext/harvest/templates/source/job/read.html:23
msgid "Only the 20 most frequent errors are shown" msgid "Only the 20 most frequent errors are shown"
msgstr "Endast de 20 vanligaste felen visas" msgstr "Endast de 20 vanligaste felen visas"
#: ckanext/harvest/templates_new/source/job/read.html:26 #: ckanext/harvest/templates/source/job/read.html:26
#: ckanext/harvest/templates_new/source/job/read.html:40 #: ckanext/harvest/templates/source/job/read.html:40
msgid "Job Errors" msgid "Job Errors"
msgstr "Jobbfel" msgstr "Jobbfel"
#: ckanext/harvest/templates_new/source/job/read.html:30 #: ckanext/harvest/templates/source/job/read.html:30
#: ckanext/harvest/templates_new/source/job/read.html:57 #: ckanext/harvest/templates/source/job/read.html:57
msgid "Document Errors" msgid "Document Errors"
msgstr "Dokumentfel" msgstr "Dokumentfel"
#: ckanext/harvest/templates_new/source/job/read.html:37 #: ckanext/harvest/templates/source/job/read.html:37
msgid "Error Report" msgid "Error Report"
msgstr "Felrapport" msgstr "Felrapport"
#: ckanext/harvest/templates_new/source/job/read.html:58 #: ckanext/harvest/templates/source/job/read.html:58
msgid "documents with errors" msgid "documents with errors"
msgstr "dokument med fel" msgstr "dokument med fel"
#: ckanext/harvest/templates_new/source/job/read.html:69 #: ckanext/harvest/templates/source/job/read.html:69
msgid "Remote content" msgid "Remote content"
msgstr "Fjärrinnehåll" msgstr "Fjärrinnehåll"
#: ckanext/harvest/templates_new/source/job/read.html:73 #: ckanext/harvest/templates/source/job/read.html:73
msgid "Local content" msgid "Local content"
msgstr "Lokalt innehåll" msgstr "Lokalt innehåll"
#~ msgid "Cannot render description"
#~ msgstr "Kan inte generera beskrivning"
#~ msgid "Refresh requested, harvesting will take place within 15 minutes."
#~ msgstr "Uppdatering har begärts, skördning sker inom 15 minuter."

View File

@ -229,12 +229,14 @@ class Harvest(p.SingletonPlugin, DefaultDatasetForm, DefaultTranslation):
return map return map
def update_config(self, config): def update_config(self, config):
# check if new templates if not p.toolkit.check_ckan_version(min_version='2.0'):
templates = 'templates' assert 0, 'CKAN before 2.0 not supported by ckanext-harvest - '\
if p.toolkit.check_ckan_version(min_version='2.0'): 'genshi templates not supported any more'
if not p.toolkit.asbool(config.get('ckan.legacy_templates', False)): if p.toolkit.asbool(config.get('ckan.legacy_templates', False)):
templates = 'templates_new' log.warn('Old genshi templates not supported any more by '
p.toolkit.add_template_directory(config, templates) 'ckanext-harvest so you should set ckan.legacy_templates '
'option to True any more.')
p.toolkit.add_template_directory(config, 'templates')
p.toolkit.add_public_directory(config, 'public') p.toolkit.add_public_directory(config, 'public')
p.toolkit.add_resource('fanstatic_library', 'ckanext-harvest') p.toolkit.add_resource('fanstatic_library', 'ckanext-harvest')
p.toolkit.add_resource('public/ckanext/harvest/javascript', 'harvest-extra-field') p.toolkit.add_resource('public/ckanext/harvest/javascript', 'harvest-extra-field')

View File

@ -1,95 +1,91 @@
<html xmlns:py="http://genshi.edgewall.org/" {% extends "page.html" %}
xmlns:i18n="http://genshi.edgewall.org/i18n"
xmlns:xi="http://www.w3.org/2001/XInclude"
py:strip="">
<py:def function="page_title">Harvesting Sources</py:def> {% block title %}{{ _('Harvesting Sources') }} - {{ super() }}{% endblock %}
<py:def function="body_class">harvest no-sidebar</py:def> {% block breadcrumb_content %}
<py:def function="page_heading">Harvesting Sources</py:def> {% endblock %}
<py:def function="optional_head"> {% block styles %}
<link type="text/css" rel="stylesheet" media="all" href="/ckanext/harvest/style.css" /> {{ super() }}
</py:def> <link type="text/css" rel="stylesheet" media="all" href="/ckanext/harvest/style.css" />
<py:def function="optional_footer"> {% endblock %}
<script>$("#show-inactive-sources").click(function(){$("#harvest-sources .inactive").toggle()});</script>
</py:def>
<div py:match="content"> {% block scripts %}
<div class="harvest-content"> {{ super() }}
<script>$("#show-inactive-sources").click(function(){$("#harvest-sources .inactive").toggle()});</script>
{% endblock %}
<div py:if="c.status" class="status"> {% block primary %}
<h3>Status:</h3> <article class="module">
${h.literal(c.status)} <div class="module-content">
</div> <h1>{% trans %}Harvesting Sources{% endtrans %}</h1>
{% if c.status %}
<div class="status">
<h3>{{ _('Status') }}:</h3>
{{ h.literal(c.status) }}
</div>
{% endif %}
<div id="new-harvest-source"><a href="harvest/new">Add a harvesting source</a></div> <div id="new-harvest-source"><a href="harvest/new">{% trans %}Add a harvesting source{% endtrans %}</a></div>
<py:choose>
<py:when test="c.sources">
<div id="show-inactive-sources-content">
<input type="checkbox" id="show-inactive-sources" />
<label for="show-inactive-sources"> Show inactive sources</label>
</div>
<table id="harvest-sources" class="table table-bordered table-condensed ${'publishers' if c.publisher_auth else ''}" > {% if c.sources %}
<tr> <div id="show-inactive-sources-content">
<th class="action">View</th> <label for="show-inactive-sources">Show inactive sources</label>
<th class="action">Edit</th> <input type="checkbox" id="show-inactive-sources" />
<th class="action">Refresh</th> </div>
<th>URL</th>
<th>Type</th>
<th>Active</th>
<th>Statistics</th>
<th>Next Harvest</th>
<th>Created</th>
</tr>
<?python old_publisher = None ?>
<py:for each="source in c.sources">
<tr class="publisher" py:if="c.publisher_auth and old_publisher != source['publisher_id']">
<py:choose>
<py:when test="source.get('publisher_title')">
<td colspan="9">${source['publisher_title']}</td>
</py:when>
<py:otherwise>
<td colspan="9">${source['publisher_id']}</td>
</py:otherwise>
</py:choose>
<table id="harvest-sources" class="table table-bordered table-condensed ${'publishers' if c.publisher_auth else ''}" >
<tr>
<th class="action">{{ _('View') }}</th>
<th class="action">{{ _('Edit') }}</th>
<th class="action">{{ _('Refresh'}}</th>
<th class="url">URL</th>
{# TRANSLATORS: Appears in harvest source table for the type of harvester #}
<th>{{ _('Type')}}</th>
{# TRANSLATORS: Appears in harvest source table 'is Active' #}
<th>{{ _('Active')}}</th>
<th>{{ _('Statistics') }}</th>
{# TRANSLATORS: Appears in harvest source table 'date of next harvest #}
<th>{{ _('Next Harvest') }}</th>
{# TRANSLATORS: Appears in harvest source table date created #}
<th>{{ _('Created') }}</th>
</tr>
{% set old_publisher = None %}
{% for source in c.sources %}
{% if c.publisher_auth and old_publisher != source['publisher_id'] %}
<tr class="publisher">
{% if source.get('publisher_title') %}
<td colspan="9">{{ source['publisher_title'] }}</td>
{% else %}
<td colspan="9">{{ source['publisher_id'] }}</td>
{% endif %}
</tr>
{% endif %}
{% set old_publisher = source['publisher_id'] %}
<tr class="{{ 'active' if source.active else 'inactive' }}">
<td class="action"><a href="harvest/{{ source.id }}"><img src="ckanext/harvest/images/icons/source_view.png" alt="View" title="View" /></a></td>
<td class="action"><a href="harvest/edit/{{ source.id }}"><img src="ckanext/harvest/images/icons/source_edit.png" alt="Edit" title="Edit" /></a></td>
<td class="action"><a href="harvest/refresh/{{ source.id }}"><img src="ckanext/harvest/images/icons/source_refresh.png" alt="Refresh" title="Refresh" /></a></td>
<td title="{{ source.url }}">{{ source.url | truncate(50) }}</td>
<td>{{ source.type }}</td>
<td class="state">{{ source.active }}</td>
{% if 'msg' in source.status %}
<td>{{ source.status.msg }}</td>
<td>{{ source.status.msg }}</td>
{% else %}
<td>Datasets: <a href="harvest/{{ source.id }}#datasets">{{ source.status.overall_statistics.added }}</a><br/>
Last errors: <a href="harvest/{{ source.id }}#errors">{{ source.status.last_harvest_statistics.errors }}</a></td>
<td>{{ source.status.next_harvest }}</td>
{% endif %}
<td>{{ h.render_datetime(source.created) }}</td>
</tr> </tr>
<?python old_publisher = source['publisher_id'] ?> {% endfor %}
<tr class="${'active' if source.active else 'inactive'}"> </table>
<td><a href="harvest/${source.id}"><img src="ckanext/harvest/images/icons/source_view.png" alt="View" title="View" /></a></td> {% else %}
<td><a href="harvest/edit/${source.id}"><img src="ckanext/harvest/images/icons/source_edit.png" alt="Edit" title="Edit" /></a></td> <div id="no-harvest-sources">{% trans %}No harvest sources defined yet.{% endtrans %}</div>
<td><a href="harvest/refresh/${source.id}"><img src="ckanext/harvest/images/icons/source_refresh.png" alt="Refresh" title="Refresh" /></a></td> {% endif %}
<?python </div>
from webhelpers.text import truncate </article>
?> {% endblock %}
<td title="${source.url}">${truncate(source.url, 50)}</td>
<td>${source.type}</td>
<td class="state">${source.active}</td>
<py:choose>
<py:when test="'msg' in source.status">
<td>${source.status.msg}</td>
<td>${source.status.msg}</td>
</py:when>
<py:otherwise>
<td>Datasets: <a href="harvest/${source.id}#datasets">${source.status.overall_statistics.added}</a> <br/>
Last errors: <a href="harvest/${source.id}#errors">${source.status.last_harvest_statistics.errors}</a></td>
<td>${source.status.next_harvest}</td>
</py:otherwise>
</py:choose>
<td>${h.render_datetime(source.created)}</td> {% block sidebar %}{% endblock %}
</tr>
</py:for>
</table>
</py:when>
<py:otherwise>
<div id="no-harvest-sources">No harvest sources defined yet.</div>
</py:otherwise>
</py:choose>
</div>
</div>
<xi:include href="layout.html" />
</html>

View File

@ -1,24 +1,16 @@
<html xmlns:py="http://genshi.edgewall.org/" {% extends "source/admin_base.html" %}
xmlns:i18n="http://genshi.edgewall.org/i18n"
xmlns:xi="http://www.w3.org/2001/XInclude"
py:strip="">
<py:def function="page_title">Edit - Harvest Source</py:def> {% block subtitle %}{{ _('Edit harvest source') }}{% endblock %}
<py:def function="page_heading">Edit harvest source </py:def>
<py:def function="body_class">hide-sidebar</py:def> {% block primary_content_inner %}
<py:def function="optional_head"> <div class="module-content">
<link rel="stylesheet" href="${g.site_url}/css/forms.css" type="text/css" media="screen, print" /> {% block form %}
<link type="text/css" rel="stylesheet" media="all" href="/ckanext/harvest/style.css" /> {% if c.form %}
</py:def> {# CKAN < 2.3 #}
{{ c.form | safe }}
<div py:match="content"> {% else %}
<div class="harvest-content"> {{- h.snippet(form_snippet, c=c, **form_vars) -}}
{% endif %}
{% endblock %}
${h.literal(c.form)} </div>
{% endblock %}
</div>
</div>
<xi:include href="../layout.html" />
</html>

View File

@ -1,23 +1,40 @@
<html xmlns:py="http://genshi.edgewall.org/" {% extends "source/admin_base.html" %}
xmlns:i18n="http://genshi.edgewall.org/i18n"
xmlns:xi="http://www.w3.org/2001/XInclude"
py:strip="">
<py:def function="page_title">New - Harvest Source</py:def> {% block breadcrumb_content %}
<py:def function="page_heading">New harvest source </py:def> <li>{{ h.nav_named_link(_('Harvest Sources'), '{0}_search'.format(c.dataset_type)) }}</li>
<li class="active">{{ h.nav_named_link(_('Create Harvest Source'), '{0}_new'.format(c.dataset_type)) }}</li>
{% endblock %}
<py:def function="body_class">hide-sidebar</py:def> {% block actions_content %}
<py:def function="optional_head"> {% endblock %}
<link rel="stylesheet" href="${g.site_url}/css/forms.css" type="text/css" media="screen, print" />
<link type="text/css" rel="stylesheet" media="all" href="/ckanext/harvest/style.css" />
</py:def>
<div py:match="content"> {% block subtitle %}{{ _('Create harvest source') }}{% endblock %}
<div class="harvest-content">
${h.literal(c.form)} {% block primary_content %}
<section class="module">
</div> <div class="module-content">
{% if c.form %}
{# CKAN < 2.3 #}
{{ c.form | safe }}
{% else %}
{{- h.snippet(form_snippet, c=c, **form_vars) -}}
{% endif %}
</div> </div>
<xi:include href="../layout.html" /> </section>
</html> {% endblock %}
{% block secondary_content %}
<section class="module module-narrow">
<h2 class="module-heading"><i class="icon-large icon-info-sign"></i> {{ _('Harvest sources') }}</h2>
<div class="module-content">
<p>
{% trans %}
Harvest sources allow importing remote metadata into this catalog.
Remote sources can be other catalogs such as other CKAN instances, CSW
servers or Web Accessible Folders (WAF) (depending on the actual
harvesters enabled for this instance).
{% endtrans %}
</p>
</div>
</section>
{% endblock %}

View File

@ -1,89 +1,118 @@
<form id="source-new" class="ckan" method="post" {% import 'macros/form.html' as form %}
py:attrs="{'class':'has-errors'} if errors else {}" {% resource 'harvest-extra-field/main' %}
xmlns:i18n="http://genshi.edgewall.org/i18n"
xmlns:py="http://genshi.edgewall.org/"
xmlns:xi="http://www.w3.org/2001/XInclude">
<div class="error-explanation" py:if="error_summary"> <form id="source-new" class="form-horizontal" method="post" >
<h2>Errors in form</h2>
<p>The form contains invalid entries:</p>
<ul>
<li py:for="key, error in error_summary.items()">${"%s: %s" % (key, error)}</li>
</ul>
</div>
<fieldset> {% block errors %}{{ form.errors(error_summary) }}{% endblock %}
<legend>Details</legend>
<dl>
<dt><label class="field_req" for="url">URL for source of metadata *</label></dt>
<dd><input id="url" name="url" size="80" type="text" value="${data.get('url', '')}" /></dd>
<dd class="field_error" py:if="errors.get('url', '')">${errors.get('url', '')}</dd>
<dd class="instructions basic">This should include the <tt>http://</tt> part of the URL</dd>
<dt><label class="field_req" for="type">Source Type *</label></dt>
<dd>
<select id="type" name="type">
<py:for each="harvester in harvesters">
<option value="${harvester.name}" py:attrs="{'selected': 'selected' if data.get('type', '') == harvester.name else None, 'data-config': harvester.show_config}" >${harvester.title}</option>
</py:for>
</select>
</dd>
<dd class="field_error" py:if="errors.get('type', '')">${errors.get('type', '')}</dd>
<dd class="instructions basic">Which type of source does the URL above represent?
<ul>
<py:for each="harvester in harvesters">
<li><span class="harvester-title">${harvester.title}</span>: ${harvester.description}</li>
</py:for>
</ul>
</dd>
<dt class="harvest-source-title"><label class="field_req" for="title">Title</label></dt> {% call form.input('url', id='field-url', label=_('URL'), value=data.url, error=errors.url, classes=['control-full', 'control-large']) %}
<dd class="harvest-source-title"><input id="title" name="title" size="80" type="text" value="${data.get('title', '')}" /></dd> <span class="info-block">
<dd class="harvest-source-title field_error" py:if="errors.get('title', '')">${errors.get('title', '')}</dd> {{ _('This should include the http:// part of the URL') }}
<dd class="harvest-source-title instructions basic">This will be shown as the datasets source.</dd> </span>
{% endcall %}
<dt><label class="field_opt" for="description">Description</label></dt> {{ form.input('title', id='field-title', label=_('Title'), placeholder=_('eg. A descriptive title'), value=data.title, error=errors.title, classes=['control-full'], attrs={'data-module': 'slug-preview-target'}) }}
<dd><textarea id="description" name="description" cols="30" rows="2" style="height:75px">${data.get('description', '')}</textarea></dd>
<dd class="instructions basic">You can add your own notes here about what the URL above represents to remind you later.</dd>
<dt py:if="c.publisher_auth"><label class="field_opt" for="groups__${len(data.get('groups', []))}__id">Publisher</label></dt> {% set prefix = 'harvest' %}
<dd py:if="c.publisher_auth and c.groups"> {% set domain = h.url_for('{0}_read'.format(c.dataset_type), id='', qualified=true) %}
<select id="publisher_id" name="publisher_id"> {% set domain = domain|replace("http://", "")|replace("https://", "") %}
<py:for each="group in c.groups"> {% set attrs = {'data-module': 'slug-preview-slug', 'data-module-prefix': domain, 'data-module-placeholder': '<harvest-source>'} %}
<option value="${group['id']}" py:attrs="{'selected': 'selected' if group['id'] == data.get('publisher_id',None) else None}">${group['title']}</option>
</py:for>
</select>
</dd>
<dd py:if="c.publisher_auth and not c.groups"><em>Cannot add any publishers.</em></dd>
{{ form.prepend('name', id='field-name', label=_('Name'), prepend=prefix, placeholder=_('eg. my-dataset'), value=data.name, error=errors.name, attrs=attrs) }}
<dt class="harvest-source-config"><label class="field_opt" for="config">Configuration</label></dt> {{ form.markdown('notes', id='field-notes', label=_('Description'), value=data.notes, error=errors.notes) }}
<dd class="harvest-source-config"><textarea id="config" name="config" cols="30" rows="2" style="height:75px">${data.get('config', '')}</textarea></dd>
<dt><label class="field_opt" for="active">State</label></dt> <div class="harvest-types control-group">
<dd> <label class="control-label">Source type</label>
<select id="active" name="active"> <div class="controls">
<option py:attrs="{'selected': 'selected' if data.get('active') or not 'active' in data else None}" value="True">active</option> {% for harvester in h.harvesters_info() %}
<option py:attrs="{'selected': 'selected' if 'active' in data and not data.get('active') else None}" value="False">withdrawn</option> {% set checked = False %}
</select> {# select first option if nothing in data #}
<py:if test="data.get('active') or not 'active' in data"> {% if data.source_type == harvester['name'] or (not data.source_type and loop.first) %}
<div>This harvest source is <span class="source-state-active">Active</span></div> {% set checked = True %}
</py:if> {% endif %}
<py:if test="'active' in data and not data.get('active')"> <label class="radio">
<div>This harvest source is <span class="source-state-inactive">Withdrawn</span></div> <input type="radio" name="source_type" value="{{ harvester['name'] }}" {{ "checked " if checked }} data-module="harvest-type-change">
</py:if> {{ harvester['title'] }}
<i class="icon-question-sign muted" title="{{ harvester['description'] }}" data-toggle="tooltip"></i>
</label>
{% endfor %}
</div>
</div>
{{ form.select('frequency', id='field-frequency', label=_('Update frequency'), options=h.harvest_frequencies(), selected=data.frequency, error=errors.frequency) }}
{% block extra_config %}
{{ form.textarea('config', id='field-config', label=_('Configuration'), value=data.config, error=errors.config) }}
{% endblock extra_config %}
{# if we have a default group then this wants remembering #}
{% if data.group_id %}
<input type="hidden" name="groups__0__id" value="{{ data.group_id }}" />
{% endif %}
{% set dataset_is_draft = data.get('state', 'draft').startswith('draft') or data.get('state', 'none') == 'none' %}
{% set dataset_has_organization = data.owner_org or data.group_id %}
{% set organizations_available = h.organizations_available('create_dataset') %}
{% set user_is_sysadmin = h.check_access('sysadmin') %}
{% set show_organizations_selector = organizations_available and (user_is_sysadmin or dataset_is_draft) %}
{% if show_organizations_selector %}
{% set existing_org = data.owner_org %}
<div class="control-group">
<label for="field-organizations" class="control-label">{{ _('Organization') }}</label>
<div class="controls">
<select id="field-organizations" name="owner_org" data-module="autocomplete">
<option value="" {% if not selected_org and data.id %} selected="selected" {% endif %}>{{ _('No organization') }}</option>
{% for organization in organizations_available %}
{# get out first org from users list only if there is not an existing org #}
{% set selected_org = (existing_org and existing_org == organization.id) or (not existing_org and not data.id and organization.id == organizations_available[0].id) %}
<option value="{{ organization.id }}" {% if selected_org %} selected="selected" {% endif %}>{{ organization.name }}</option>
{% endfor %}
</select>
</div>
</div>
{% endif %}
{% if data.get('id', None) and h.check_access('harvest_source_delete', {'id': data.id}) and data.get('state', 'none') == 'deleted' %}
<div class="control-group">
<label for="field-state" class="control-label">{{ _('State') }}</label>
<div class="controls">
<select id="field-state" name="state">
<option value="active" {% if data.get('state', 'none') == 'active' %} selected="selected" {% endif %}>{{ _('Active') }}</option>
<option value="deleted" {% if data.get('state', 'none') == 'deleted' %} selected="selected" {% endif %}>{{ _('Deleted') }}</option>
</select>
</div>
</div>
{% endif %}
<p class="form-actions">
{% block delete_button %}
{% if data.get('id', None) and h.check_access('harvest_source_delete', {'id': data.id}) and not data.get('state', 'none') == 'deleted' %}
{% set locale_delete = h.dump_json({'content': _('This will flag the source as deleted but keep all its datasets and previous jobs. Are you sure you want to delete this harvest source?')}) %}
{% set locale_clear = h.dump_json({'content': _('Warning: Apart from deleting this source, this command will remove all its datasets, as well as all previous job reports. Are you sure you want to continue?')}) %}
<div class="dropdown btn-group">
<a href="#" class="btn btn-danger dropdown-toggle" data-toggle="dropdown">
{{ _('Delete') }}
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li>
<a href="{% url_for 'harvest_delete', id=data.name %}" data-module="confirm-action" data-module-i18n="{{ locale_delete }}">
{{ _('Delete source') }}
</a>
</li>
<li>
<a href="{% url_for 'harvest_delete', id=data.name %}?clear=True" data-module="confirm-action" data-module-i18n="{{ locale_clear }}">
{{ _('Delete and clear source') }}
</a>
</li>
</ul>
</div>
{% endif %}
{% endblock %}
<input id="save" name="save" value="Save" type="submit" class="btn btn-primary pull-right">
</p>
</dd>
</dl>
</fieldset>
<input id="save" name="save" value="Save" type="submit" class="btn"/> or <a href="/harvest">Return to the harvest sources list</a>
<script type="text/javascript">
$(document).ready(function() {
$("#type").change(function(){
var show_config = ($("#type option:selected").attr("data-config") == "True");
if (!show_config) $("#config").val("");
$("#config").attr("disabled", !show_config);
});
$("#type").trigger("change");
});
</script>
</form> </form>

View File

@ -1,149 +1,8 @@
<html xmlns:py="http://genshi.edgewall.org/" {% extends "source/read_base.html" %}
xmlns:i18n="http://genshi.edgewall.org/i18n"
xmlns:xi="http://www.w3.org/2001/XInclude"
py:strip="">
<py:def function="page_title">Harvest Source Details</py:def> {% block primary_content_inner %}
<py:def function="page_heading">Harvest Source Details</py:def> <section class="module-content">
<h1 class="hide-heading">{{ _('Datasets') }}</h1>
<py:def function="optional_head"> {{ h.package_list_for_source(source.id) }}
<link type="text/css" rel="stylesheet" media="all" href="/ckanext/harvest/style.css" /> </section>
</py:def> {% endblock %}
<div py:match="content">
<div class="harvest-content">
<py:if test="c.source">
<div id="harvest-source-actions">
<img src="/ckanext/harvest/images/icons/source_edit.png" alt="Edit" /><a href="/harvest/edit/${c.source.id}">Edit source</a> |
<img src="/ckanext/harvest/images/icons/source_refresh.png" alt="Refresh" /><a href="/harvest/refresh/${c.source.id}">Refresh source</a> |
<a href="/harvest">Sources list</a>
</div>
<div py:if="not c.source.active" class="alert alert-block">NB: This Harvest Source is Withdrawn. Therefore the Gemini XML will not be harvested again. However, any metadata that was previously harvested, remains in the catalogue.</div>
<table id="harvest-source-details" class="table table-bordered table-condensed">
<tr>
<th>ID</th>
<td>${c.source.id}</td>
</tr>
<tr>
<th>URL</th>
<td>${c.source.url}</td>
</tr>
<tr>
<th>Type</th>
<td>${c.source.type}</td>
</tr>
<tr>
<th>Withdrawn</th>
<td>${not c.source.active}</td>
</tr>
<tr py:if="c.source.title">
<th>Title</th>
<td>${c.source.title}</td>
</tr>
<tr>
<th>Description</th>
<td>${c.source.description}</td>
</tr>
<tr>
<th>Configuration</th>
<py:if test="c.source.config">
<td>${c.source.config}</td>
</py:if>
<py:if test="not c.source.config">
<td>-</td>
</py:if>
</tr>
<tr py:if="c.publisher_auth">
<th>User</th>
<td>${c.source.user_id}</td>
</tr>
<tr py:if="c.publisher_auth">
<th>Publisher</th>
<py:if test="c.source.publisher_title">
<td>${c.source.publisher_title}</td>
</py:if>
<py:if test="not c.source.publisher_title">
<td>${c.source.publisher_id}</td>
</py:if>
</tr>
<tr>
<th>Created</th>
<td>${c.source.created}</td>
</tr>
<tr>
<th>Total jobs</th>
<td>${c.source.status.job_count}</td>
</tr>
<tr>
<th>Status</th>
<td>
<a name="errors"/>Last Harvest Errors: ${c.source.status.last_harvest_statistics.errors}<br/>
<py:choose>
<py:when test="len(c.source.status.last_harvest_errors.gather)>0">
<i>Gathering errors</i>
<ul>
<li py:for="error in c.source.status.last_harvest_errors.gather">
<?python
lines = error.split('\n')
?>
<div py:for="line in lines">${line}</div>
</li>
</ul>
</py:when>
</py:choose>
<py:choose>
<py:when test="len(c.source.status.last_harvest_errors.object)>0">
<i>Object errors</i>
<ul>
<li py:for="error in c.source.status.last_harvest_errors.object">
<div>GUID <a href="${g.site_url}/harvest/object/${error.object_id}">${error.object_guid}</a></div>
<?python
lines = error['message'].split('\n')
?>
<div py:for="line in lines">${line}</div>
</li>
</ul>
</py:when>
</py:choose>
Last Harvest Added: ${c.source.status.last_harvest_statistics.added}<br/>
Last Harvest Updated: ${c.source.status.last_harvest_statistics.updated}<br/>
Last Harvest: ${c.source.status.last_harvest_request} <br/>
Next Harvest: ${c.source.status.next_harvest}
</td>
</tr>
<tr>
<th>Total Errors</th>
<td>${c.source.status.overall_statistics.errors}</td>
</tr>
<tr>
<th>Total Datasets</th>
<td>${c.source.status.overall_statistics.added}</td>
</tr>
<tr>
<th>Datasets</th>
<td>
<a name="datasets"/>
<div>There could be a 10 minutes delay before these datasets (or changes to them) appear on
the site or on search results.</div>
<p i18n:msg="item_count">There are <strong>${c.page.item_count}</strong> datasets.</p>
${c.page.pager()}
<py:for each="item in c.page.items">
<div>
<a href="/dataset/${item}">${item}</a>
</div>
</py:for>
${c.page.pager()}
</td>
</tr>
</table>
</py:if>
</div>
</div>
<xi:include href="../layout.html" />
</html>

View File

@ -1,91 +0,0 @@
{% extends "page.html" %}
{% block title %}{{ _('Harvesting Sources') }} - {{ super() }}{% endblock %}
{% block breadcrumb_content %}
{% endblock %}
{% block styles %}
{{ super() }}
<link type="text/css" rel="stylesheet" media="all" href="/ckanext/harvest/style.css" />
{% endblock %}
{% block scripts %}
{{ super() }}
<script>$("#show-inactive-sources").click(function(){$("#harvest-sources .inactive").toggle()});</script>
{% endblock %}
{% block primary %}
<article class="module">
<div class="module-content">
<h1>{% trans %}Harvesting Sources{% endtrans %}</h1>
{% if c.status %}
<div class="status">
<h3>{{ _('Status') }}:</h3>
{{ h.literal(c.status) }}
</div>
{% endif %}
<div id="new-harvest-source"><a href="harvest/new">{% trans %}Add a harvesting source{% endtrans %}</a></div>
{% if c.sources %}
<div id="show-inactive-sources-content">
<label for="show-inactive-sources">Show inactive sources</label>
<input type="checkbox" id="show-inactive-sources" />
</div>
<table id="harvest-sources" class="table table-bordered table-condensed ${'publishers' if c.publisher_auth else ''}" >
<tr>
<th class="action">{{ _('View') }}</th>
<th class="action">{{ _('Edit') }}</th>
<th class="action">{{ _('Refresh'}}</th>
<th class="url">URL</th>
{# TRANSLATORS: Appears in harvest source table for the type of harvester #}
<th>{{ _('Type')}}</th>
{# TRANSLATORS: Appears in harvest source table 'is Active' #}
<th>{{ _('Active')}}</th>
<th>{{ _('Statistics') }}</th>
{# TRANSLATORS: Appears in harvest source table 'date of next harvest #}
<th>{{ _('Next Harvest') }}</th>
{# TRANSLATORS: Appears in harvest source table date created #}
<th>{{ _('Created') }}</th>
</tr>
{% set old_publisher = None %}
{% for source in c.sources %}
{% if c.publisher_auth and old_publisher != source['publisher_id'] %}
<tr class="publisher">
{% if source.get('publisher_title') %}
<td colspan="9">{{ source['publisher_title'] }}</td>
{% else %}
<td colspan="9">{{ source['publisher_id'] }}</td>
{% endif %}
</tr>
{% endif %}
{% set old_publisher = source['publisher_id'] %}
<tr class="{{ 'active' if source.active else 'inactive' }}">
<td class="action"><a href="harvest/{{ source.id }}"><img src="ckanext/harvest/images/icons/source_view.png" alt="View" title="View" /></a></td>
<td class="action"><a href="harvest/edit/{{ source.id }}"><img src="ckanext/harvest/images/icons/source_edit.png" alt="Edit" title="Edit" /></a></td>
<td class="action"><a href="harvest/refresh/{{ source.id }}"><img src="ckanext/harvest/images/icons/source_refresh.png" alt="Refresh" title="Refresh" /></a></td>
<td title="{{ source.url }}">{{ source.url | truncate(50) }}</td>
<td>{{ source.type }}</td>
<td class="state">{{ source.active }}</td>
{% if 'msg' in source.status %}
<td>{{ source.status.msg }}</td>
<td>{{ source.status.msg }}</td>
{% else %}
<td>Datasets: <a href="harvest/{{ source.id }}#datasets">{{ source.status.overall_statistics.added }}</a><br/>
Last errors: <a href="harvest/{{ source.id }}#errors">{{ source.status.last_harvest_statistics.errors }}</a></td>
<td>{{ source.status.next_harvest }}</td>
{% endif %}
<td>{{ h.render_datetime(source.created) }}</td>
</tr>
{% endfor %}
</table>
{% else %}
<div id="no-harvest-sources">{% trans %}No harvest sources defined yet.{% endtrans %}</div>
{% endif %}
</div>
</article>
{% endblock %}
{% block sidebar %}{% endblock %}

View File

@ -1,16 +0,0 @@
{% extends "source/admin_base.html" %}
{% block subtitle %}{{ _('Edit harvest source') }}{% endblock %}
{% block primary_content_inner %}
<div class="module-content">
{% block form %}
{% if c.form %}
{# CKAN < 2.3 #}
{{ c.form | safe }}
{% else %}
{{- h.snippet(form_snippet, c=c, **form_vars) -}}
{% endif %}
{% endblock %}
</div>
{% endblock %}

View File

@ -1,42 +0,0 @@
{% extends "source/admin_base.html" %}
{% block breadcrumb_content %}
<li>{{ h.nav_named_link(_('Harvest Sources'), '{0}_search'.format(c.dataset_type)) }}</li>
<li class="active">{{ h.nav_named_link(_('Create Harvest Source'), '{0}_new'.format(c.dataset_type)) }}</li>
{% endblock %}
{% block actions_content %}
{% endblock %}
{% block subtitle %}{{ _('Create harvest source') }}{% endblock %}
{% block primary_content %}
<section class="module">
<div class="module-content">
{% block form %}
{% if c.form %}
{# CKAN < 2.3 #}
{{ c.form | safe }}
{% else %}
{{- h.snippet(form_snippet, c=c, **form_vars) -}}
{% endif %}
{% endblock %}
</div>
</section>
{% endblock %}
{% block secondary_content %}
<section class="module module-narrow">
<h2 class="module-heading"><i class="icon-large icon-info-sign"></i> {{ _('Harvest sources') }}</h2>
<div class="module-content">
<p>
{% trans %}
Harvest sources allow importing remote metadata into this catalog.
Remote sources can be other catalogs such as other CKAN instances, CSW
servers or Web Accessible Folders (WAF) (depending on the actual
harvesters enabled for this instance).
{% endtrans %}
</p>
</div>
</section>
{% endblock %}

View File

@ -1,118 +0,0 @@
{% import 'macros/form.html' as form %}
{% resource 'harvest-extra-field/main' %}
<form id="source-new" class="form-horizontal" method="post" >
{% block errors %}{{ form.errors(error_summary) }}{% endblock %}
{% call form.input('url', id='field-url', label=_('URL'), value=data.url, error=errors.url, classes=['control-full', 'control-large']) %}
<span class="info-block">
{{ _('This should include the http:// part of the URL') }}
</span>
{% endcall %}
{{ form.input('title', id='field-title', label=_('Title'), placeholder=_('eg. A descriptive title'), value=data.title, error=errors.title, classes=['control-full'], attrs={'data-module': 'slug-preview-target'}) }}
{% set prefix = 'harvest' %}
{% set domain = h.url_for('{0}_read'.format(c.dataset_type), id='', qualified=true) %}
{% set domain = domain|replace("http://", "")|replace("https://", "") %}
{% set attrs = {'data-module': 'slug-preview-slug', 'data-module-prefix': domain, 'data-module-placeholder': '<harvest-source>'} %}
{{ form.prepend('name', id='field-name', label=_('Name'), prepend=prefix, placeholder=_('eg. my-dataset'), value=data.name, error=errors.name, attrs=attrs) }}
{{ form.markdown('notes', id='field-notes', label=_('Description'), value=data.notes, error=errors.notes) }}
<div class="harvest-types control-group">
<label class="control-label">Source type</label>
<div class="controls">
{% for harvester in h.harvesters_info() %}
{% set checked = False %}
{# select first option if nothing in data #}
{% if data.source_type == harvester['name'] or (not data.source_type and loop.first) %}
{% set checked = True %}
{% endif %}
<label class="radio">
<input type="radio" name="source_type" value="{{ harvester['name'] }}" {{ "checked " if checked }} data-module="harvest-type-change">
{{ harvester['title'] }}
<i class="icon-question-sign muted" title="{{ harvester['description'] }}" data-toggle="tooltip"></i>
</label>
{% endfor %}
</div>
</div>
{{ form.select('frequency', id='field-frequency', label=_('Update frequency'), options=h.harvest_frequencies(), selected=data.frequency, error=errors.frequency) }}
{% block extra_config %}
{{ form.textarea('config', id='field-config', label=_('Configuration'), value=data.config, error=errors.config) }}
{% endblock extra_config %}
{# if we have a default group then this wants remembering #}
{% if data.group_id %}
<input type="hidden" name="groups__0__id" value="{{ data.group_id }}" />
{% endif %}
{% set dataset_is_draft = data.get('state', 'draft').startswith('draft') or data.get('state', 'none') == 'none' %}
{% set dataset_has_organization = data.owner_org or data.group_id %}
{% set organizations_available = h.organizations_available('create_dataset') %}
{% set user_is_sysadmin = h.check_access('sysadmin') %}
{% set show_organizations_selector = organizations_available and (user_is_sysadmin or dataset_is_draft) %}
{% if show_organizations_selector %}
{% set existing_org = data.owner_org %}
<div class="control-group">
<label for="field-organizations" class="control-label">{{ _('Organization') }}</label>
<div class="controls">
<select id="field-organizations" name="owner_org" data-module="autocomplete">
<option value="" {% if not selected_org and data.id %} selected="selected" {% endif %}>{{ _('No organization') }}</option>
{% for organization in organizations_available %}
{# get out first org from users list only if there is not an existing org #}
{% set selected_org = (existing_org and existing_org == organization.id) or (not existing_org and not data.id and organization.id == organizations_available[0].id) %}
<option value="{{ organization.id }}" {% if selected_org %} selected="selected" {% endif %}>{{ organization.name }}</option>
{% endfor %}
</select>
</div>
</div>
{% endif %}
{% if data.get('id', None) and h.check_access('harvest_source_delete', {'id': data.id}) and data.get('state', 'none') == 'deleted' %}
<div class="control-group">
<label for="field-state" class="control-label">{{ _('State') }}</label>
<div class="controls">
<select id="field-state" name="state">
<option value="active" {% if data.get('state', 'none') == 'active' %} selected="selected" {% endif %}>{{ _('Active') }}</option>
<option value="deleted" {% if data.get('state', 'none') == 'deleted' %} selected="selected" {% endif %}>{{ _('Deleted') }}</option>
</select>
</div>
</div>
{% endif %}
<p class="form-actions">
{% block delete_button %}
{% if data.get('id', None) and h.check_access('harvest_source_delete', {'id': data.id}) and not data.get('state', 'none') == 'deleted' %}
{% set locale_delete = h.dump_json({'content': _('This will flag the source as deleted but keep all its datasets and previous jobs. Are you sure you want to delete this harvest source?')}) %}
{% set locale_clear = h.dump_json({'content': _('Warning: Apart from deleting this source, this command will remove all its datasets, as well as all previous job reports. Are you sure you want to continue?')}) %}
<div class="dropdown btn-group">
<a href="#" class="btn btn-danger dropdown-toggle" data-toggle="dropdown">
{{ _('Delete') }}
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li>
<a href="{% url_for 'harvest_delete', id=data.name %}" data-module="confirm-action" data-module-i18n="{{ locale_delete }}">
{{ _('Delete source') }}
</a>
</li>
<li>
<a href="{% url_for 'harvest_delete', id=data.name %}?clear=True" data-module="confirm-action" data-module-i18n="{{ locale_clear }}">
{{ _('Delete and clear source') }}
</a>
</li>
</ul>
</div>
{% endif %}
{% endblock %}
<input id="save" name="save" value="Save" type="submit" class="btn btn-primary pull-right">
</p>
</form>

View File

@ -1,8 +0,0 @@
{% extends "source/read_base.html" %}
{% block primary_content_inner %}
<section class="module-content">
<h1 class="hide-heading">{{ _('Datasets') }}</h1>
{{ h.package_list_for_source(source.id) }}
</section>
{% endblock %}

View File

@ -46,7 +46,7 @@ setup(
'ckanext': [ 'ckanext': [
('**.py', 'python', None), ('**.py', 'python', None),
('**.js', 'javascript', None), ('**.js', 'javascript', None),
('**/templates_new/**.html', 'ckan', None), ('**/templates/**.html', 'ckan', None),
], ],
} }
) )

View File

@ -17,7 +17,7 @@ use = config:../ckan/test-core.ini
# run fast. # run fast.
ckan.plugins = harvest ckan_harvester test_harvester test_action_harvester ckan.plugins = harvest ckan_harvester test_harvester test_action_harvester
ckan.harvest.mq.type = redis ckan.harvest.mq.type = redis
ckan.legacy_templates = no ckan.legacy_templates = false
# NB: other test configuration should go in test-core.ini, which is # NB: other test configuration should go in test-core.ini, which is
# what the postgres tests use. # what the postgres tests use.