Skip to content
Snippets Groups Projects
Commit c7c3c01f authored by Daniel Neuwirth's avatar Daniel Neuwirth
Browse files

checks only at package level

parent 48b6dc62
Branches
Tags
No related merge requests found
...@@ -21,6 +21,9 @@ import ckan.plugins.toolkit as toolkit ...@@ -21,6 +21,9 @@ import ckan.plugins.toolkit as toolkit
from ckanext.dcat.controllers import DCATController from ckanext.dcat.controllers import DCATController
import ckan.model as model import ckan.model as model
import helpers import helpers
from ckan.lib.helpers import is_url, url_for
from helpers_tpsh import tpsh_get_latest_resources_for_type, tpsh_get_latest_dataset
abort = base.abort abort = base.abort
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
...@@ -95,6 +98,30 @@ class OdshPackageController(PackageController): ...@@ -95,6 +98,30 @@ class OdshPackageController(PackageController):
return super(OdshPackageController, self).edit_view(id, resource_id, view_id) return super(OdshPackageController, self).edit_view(id, resource_id, view_id)
class TpshLatestDatasetController(PackageController):
def latest(self, id):
latest_dataset= tpsh_get_latest_dataset(id)
toolkit.redirect_to(controller='package', action='read', id=latest_dataset)
class TpshLatestRecourcesController(PackageController):
def latest_resource(self, id, type):
c_context = c
latest_resources = tpsh_get_latest_resources_for_type(id, type)
if latest_resources is None:
abort(404)
url_type = latest_resources.get('url_type')
if url_type is None:
resource_url = latest_resources.get('url')
toolkit.redirect_to(resource_url)
if url_type == 'upload':
package_id = latest_resources.get('package_id')
resource_id = latest_resources.get('id')
pre_resource_url = latest_resources.get('url')
resource_url = "/dataset/" + package_id + "/resource/" + resource_id + "/download/" + pre_resource_url
toolkit.redirect_to(resource_url)
abort(404)
class OdshGroupController(OrganizationController): class OdshGroupController(OrganizationController):
def _action(self, name): def _action(self, name):
......
...@@ -20,7 +20,7 @@ from ckan.common import request ...@@ -20,7 +20,7 @@ from ckan.common import request
import pdb import pdb
from urlparse import urlsplit, urlunsplit from urlparse import urlsplit, urlunsplit
import subprocess import subprocess
import ckan.lib.helpers as helpers
from ckanext.odsh.pretty_daterange.date_range_formatter import DateRangeFormatter from ckanext.odsh.pretty_daterange.date_range_formatter import DateRangeFormatter
get_action = logic.get_action get_action = logic.get_action
...@@ -392,25 +392,16 @@ def tpsh_get_successor_and_predecessor_dataset(context, pkg_dict): ...@@ -392,25 +392,16 @@ def tpsh_get_successor_and_predecessor_dataset(context, pkg_dict):
if dataset_issued: if dataset_issued:
for item in list_of_siblings: for item in list_of_siblings:
item_pkt_dict = model.Package.get(item).as_dict() item_pkt_dict = model.Package.get(item).as_dict()
if helpers.check_access('package_show', item_pkt_dict):
item_issued = item_pkt_dict['extras'][u'issued'] item_issued = item_pkt_dict['extras'][u'issued']
if item_issued > dataset_issued and (item_issued < successor_issued or successor_issued == None): if (item_issued > dataset_issued or (item_issued == dataset_issued and item > dataset_name)) and (item_issued < successor_issued or successor_issued == None or (item_issued == successor_issued and item < successor_name)):
successor_name = item successor_name = item
successor_issued = item_issued successor_issued = item_issued
elif item_issued < dataset_issued and item_issued > predecessor_issued : elif (item_issued < dataset_issued or (item_issued == dataset_issued and item < dataset_name)) and (item_issued > predecessor_issued or predecessor_issued == None or (item_issued == predecessor_issued and item > predecessor_name)):
predecessor_name = item predecessor_name = item
predecessor_issued = item_issued predecessor_issued = item_issued
return successor_name, predecessor_name return successor_name, predecessor_name
def tpsh_get_newest_dataset(context, collection_name):
list_of_datasets = tpsh_get_all_datasets_belonging_to_collection(context, collection_name)
latest_issued = None
for item in list_of_datasets:
item_pkt_dict = model.Package.get(item).as_dict()
item_issued = item_pkt_dict['extras'][u'issued']
if newest_issued < item_issued:
latest_name = item
latest_issued = item_issued
return latest_name
def tpsh_get_successor_and_predecessor_urls(context, pkg_dict): def tpsh_get_successor_and_predecessor_urls(context, pkg_dict):
successor_name, predecessor_name = tpsh_get_successor_and_predecessor_dataset(context, pkg_dict) successor_name, predecessor_name = tpsh_get_successor_and_predecessor_dataset(context, pkg_dict)
......
import datetime import datetime
from string import lower
import ckan.lib.helpers as helpers
import ckan.model as model
import ckanext.odsh.helpers as odsh_helpers import ckanext.odsh.helpers as odsh_helpers
...@@ -70,3 +74,39 @@ def _get_date_start_and_end_from_pkg_dict(pkg_dict): ...@@ -70,3 +74,39 @@ def _get_date_start_and_end_from_pkg_dict(pkg_dict):
date_start = None date_start = None
date_end = None date_end = None
return date_start, date_end return date_start, date_end
def tpsh_get_latest_dataset(collection_name):
collection_dict = model.Package.get(collection_name).as_dict()
collection_dict_rel = collection_dict.get('relationships')
list_of_datasets = list()
latest_name = None
for item in collection_dict_rel:
collection_objects = item.get('object')
list_of_datasets.append(collection_objects)
latest_issued = None
for item in list_of_datasets:
item_pkt_dict = model.Package.get(item).as_dict()
if helpers.check_access('package_show', item_pkt_dict):
item_issued = item_pkt_dict.get('extras').get('issued')
if latest_issued < item_issued or (latest_issued == item_issued and latest_name < item):
latest_name = item
latest_issued = item_issued
return latest_name
def tpsh_get_latest_resources_for_type(collection_name, type):
latest_dataset_name = tpsh_get_latest_dataset(collection_name)
latest_dataset = model.Package.get(latest_dataset_name).as_dict()
resource_list = latest_dataset.get('resources')
latest = latest_created = None
for resource in resource_list:
resource_format = resource.get('format')
resource_created = resource.get('created')
resource_id = resource.get('id')
if lower(resource_format) == lower(type) and (resource_created > latest_created or (resource_created == latest_created and resource_id > latest_id)):
latest_id = resource_id
latest_created = resource_created
latest = resource
return latest
...@@ -230,6 +230,18 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -230,6 +230,18 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
map.redirect('/dataset/{id}/resource/{resource_id}', '/dataset/{id}') map.redirect('/dataset/{id}/resource/{resource_id}', '/dataset/{id}')
map.connect(
'/collection/{id}/aktuell',
controller='ckanext.odsh.controller:TpshLatestDatasetController',
action='latest'
)
map.connect(
'/collection/{id}/aktuell.{type}',
controller='ckanext.odsh.controller:TpshLatestRecourcesController',
action='latest_resource'
)
if plugins.toolkit.asbool(config.get('ckanext.dcat.enable_rdf_endpoints', True)): if plugins.toolkit.asbool(config.get('ckanext.dcat.enable_rdf_endpoints', True)):
odsh_helpers.odsh_remove_route(map, 'dcat_catalog') odsh_helpers.odsh_remove_route(map, 'dcat_catalog')
map.connect( map.connect(
......
...@@ -48,6 +48,12 @@ ...@@ -48,6 +48,12 @@
</span> </span>
{% endif %} {% endif %}
</div> </div>
{% set thumbnail = h.thumbnail_url(pkg.id) %}
{% if thumbnail %}
<a href="">
<img class="dataset-list-thumbnail" src="">
</a>
{% endif %}
</h2> </h2>
{% if h.check_access('package_update', {'id':pkg.id }) %} {% if h.check_access('package_update', {'id':pkg.id }) %}
{% endif %} {% endif %}
...@@ -65,6 +71,7 @@ ...@@ -65,6 +71,7 @@
{% endblock %} {% endblock %}
{% block package_resources %} {% block package_resources %}
{% snippet "package/snippets/resources_list.html", pkg=pkg, resources=pkg.resources %} {% snippet "package/snippets/resources_list.html", pkg=pkg, resources=pkg.resources %}
{% if h.check_access('package_update', {'id':pkg.id }) %} {% if h.check_access('package_update', {'id':pkg.id }) %}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment