commit
10ab4e0f05
|
@ -4,4 +4,10 @@
|
|||
|
||||
.label-owner {
|
||||
background-color: #e0051e;
|
||||
}
|
||||
|
||||
.divider {
|
||||
margin-left:10px;
|
||||
height:auto;
|
||||
display:inline-block;
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright (c) 2014 CoNWeT Lab., Universidad Politécnica de Madrid
|
||||
# Copyright (c) 2014-2015 CoNWeT Lab., Universidad Politécnica de Madrid
|
||||
|
||||
# This file is part of CKAN Private Dataset Extension.
|
||||
|
||||
|
@ -23,6 +23,11 @@ import db
|
|||
|
||||
from pylons import config
|
||||
|
||||
from ckan.common import request
|
||||
|
||||
import logging
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def is_dataset_acquired(pkg_dict):
|
||||
|
||||
|
@ -68,3 +73,26 @@ def show_acquire_url_on_create():
|
|||
|
||||
def show_acquire_url_on_edit():
|
||||
return get_config_bool_value('ckan.privatedatasets.show_acquire_url_on_edit')
|
||||
|
||||
|
||||
def acquire_button(package):
|
||||
'''
|
||||
Return a Get Access button for the given package id when the dataset has
|
||||
an acquisition URL.
|
||||
|
||||
:param package: the the package to request access when the get access
|
||||
button is clicked
|
||||
:type package: Package
|
||||
|
||||
:returns: a get access button as an HTML snippet
|
||||
:rtype: string
|
||||
|
||||
'''
|
||||
|
||||
if 'acquire_url' in package and request.path.startswith('/dataset')\
|
||||
and package['acquire_url'] != '':
|
||||
url_dest = package['acquire_url']
|
||||
data = {'url_dest': url_dest}
|
||||
return tk.render_snippet('snippets/acquire_button.html', data)
|
||||
else:
|
||||
return ''
|
||||
|
|
|
@ -280,7 +280,7 @@ class PrivateDatasets(p.SingletonPlugin, tk.DefaultDatasetForm):
|
|||
# to read the package.
|
||||
attrs.append('resources')
|
||||
|
||||
# Delete
|
||||
# Delete
|
||||
self._delete_pkg_atts(result, attrs)
|
||||
|
||||
return search_results
|
||||
|
@ -295,5 +295,6 @@ class PrivateDatasets(p.SingletonPlugin, tk.DefaultDatasetForm):
|
|||
'is_owner': helpers.is_owner,
|
||||
'can_read': helpers.can_read,
|
||||
'show_acquire_url_on_create': helpers.show_acquire_url_on_create,
|
||||
'show_acquire_url_on_edit': helpers.show_acquire_url_on_edit
|
||||
'show_acquire_url_on_edit': helpers.show_acquire_url_on_edit,
|
||||
'acquire_button': helpers.acquire_button
|
||||
}
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
{#
|
||||
|
||||
Displays a Get Access button to request access to a private dataset.
|
||||
|
||||
ulr_dest - target url
|
||||
|
||||
Example:
|
||||
|
||||
{% snippet 'snippets/acquire_button.html', url_dest=url %}
|
||||
|
||||
#}
|
||||
<a href={{ url_dest }} class="btn btn-mini" target="_blank">
|
||||
<i class="icon-shopping-cart"></i>
|
||||
{{ _('Acquire') }}
|
||||
</a>
|
|
@ -44,7 +44,17 @@ Example:
|
|||
{{ _('Owner') }}
|
||||
</span>
|
||||
{% endif %}
|
||||
{{ h.link_to(h.truncate(title, truncate_title), h.url_for(controller='package', action='read', id=package.name)) }}
|
||||
|
||||
<!-- Customizations Acquire Button -->
|
||||
{% if package.private and not h.can_read(package) %}
|
||||
{{ _(h.truncate(title, truncate_title)) }}
|
||||
<div class="divider"/>
|
||||
{{ h.acquire_button(package) }}
|
||||
{% else %}
|
||||
{{ h.link_to(h.truncate(title, truncate_title), h.url_for(controller='package', action='read', id=package.name)) }}
|
||||
{% endif %}
|
||||
<!-- End of customizations Acquire Button -->
|
||||
|
||||
{% if package.get('state', '').startswith('draft') %}
|
||||
<span class="label label-info">{{ _('Draft') }}</span>
|
||||
{% elif package.get('state', '').startswith('deleted') %}
|
||||
|
|
|
@ -40,11 +40,15 @@ class HelpersTest(unittest.TestCase):
|
|||
self._config = helpers.config
|
||||
helpers.config = {}
|
||||
|
||||
self._request = helpers.request
|
||||
helpers.request = MagicMock()
|
||||
|
||||
def tearDown(self):
|
||||
helpers.model = self._model
|
||||
helpers.tk = self._tk
|
||||
helpers.db = self._db
|
||||
helpers.config = self._config
|
||||
helpers.request = self._request
|
||||
|
||||
@parameterized.expand([
|
||||
(False, 'user', False),
|
||||
|
@ -147,3 +151,24 @@ class HelpersTest(unittest.TestCase):
|
|||
|
||||
# Call the function
|
||||
self.assertEquals(expected_value, helpers.show_acquire_url_on_edit())
|
||||
|
||||
@parameterized.expand([
|
||||
({}, '/dataset', False),
|
||||
({'acquire_url': 'http://fiware.org'}, '/dataset', True),
|
||||
({'acquire_url': ''}, '/dataset', False),
|
||||
({'acquire_url': 'http://fiware.org'}, '/user', False),
|
||||
])
|
||||
def test_acquire_button(self, package, path, button_expected):
|
||||
|
||||
# Mocking
|
||||
helpers.request.path = path
|
||||
|
||||
# Call the function and check response
|
||||
result = helpers.acquire_button(package)
|
||||
|
||||
if button_expected:
|
||||
helpers.tk.render_snippet.assert_called_once_with('snippets/acquire_button.html',
|
||||
{'url_dest': package['acquire_url']})
|
||||
self.assertEquals(result, helpers.tk.render_snippet.return_value)
|
||||
else:
|
||||
self.assertEquals(result, '')
|
||||
|
|
Loading…
Reference in New Issue