Merge pull request #30 from conwetlab/develop

Merge #22 into master
This commit is contained in:
Aitor Magán García 2015-06-18 13:24:31 +02:00
commit 10ab4e0f05
6 changed files with 89 additions and 4 deletions

6
ckanext/privatedatasets/fanstatic/custom.css Normal file → Executable file
View File

@ -4,4 +4,10 @@
.label-owner {
background-color: #e0051e;
}
.divider {
margin-left:10px;
height:auto;
display:inline-block;
}

30
ckanext/privatedatasets/helpers.py Normal file → Executable file
View File

@ -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 ''

5
ckanext/privatedatasets/plugin.py Normal file → Executable file
View File

@ -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
}

View File

@ -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>

View File

@ -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') %}

View File

@ -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, '')