Skip to content
This repository has been archived by the owner on Jun 19, 2023. It is now read-only.

Commit

Permalink
Merge branch 'master' into api-changes
Browse files Browse the repository at this point in the history
  • Loading branch information
rossjones committed Dec 3, 2015
2 parents 4824460 + 66ecff8 commit d07555d
Show file tree
Hide file tree
Showing 7 changed files with 108 additions and 78 deletions.
5 changes: 5 additions & 0 deletions .coveragerc
Expand Up @@ -3,3 +3,8 @@ omit =
*/site-packages/*
*/python?.?/*
ckan/*
ckanext/dgu/tests/*
ckanext/dgu/testtools/*
ckanext/dgu/bin/*
include =
ckanext/dgu/*
2 changes: 1 addition & 1 deletion .travis.yml
Expand Up @@ -4,7 +4,7 @@ python:
env: PGVERSION=9.1
install:
- bash bin/travis-build.bash
- pip install coveralls
- pip install -U coveralls
script: sh bin/travis-run.sh
after_success:
- coveralls
4 changes: 1 addition & 3 deletions ckanext/dgu/lib/helpers.py
Expand Up @@ -329,9 +329,7 @@ def user_link_info(user_name, organization=None): # Overwrite h.linked_user
user_name, user, user_drupal_id, type_, this_is_me = user_properties(user_name)

# Now decide how to display the user
if c.is_an_official is '':
c.is_an_official = bool(c.groups or is_sysadmin())
if (c.is_an_official or this_is_me or type_ is None):
if (is_an_official() or this_is_me or type_ is None):
# User can see the actual user name - i.e. if:
# * viewer is an official
# * viewing ones own user
Expand Down
133 changes: 93 additions & 40 deletions ckanext/dgu/tests/lib/test_helpers.py
Expand Up @@ -4,6 +4,7 @@

from ckan.tests.pylons_controller import PylonsTestCase
import ckan.new_tests.factories as factories
import ckan.new_tests.helpers as helpers
from ckan import model

from ckanext.dgu.testtools.create_test_data import DguCreateTestData
Expand All @@ -13,10 +14,33 @@
)
from ckanext.dgu.plugins_toolkit import c, get_action

from contextlib import contextmanager

def regular_user():
return set_user_to('user')

def publisher_user():
return set_user_to('co_editor')

def sysadmin_user():
return set_user_to('sysadmin')

@contextmanager
def set_user_to(username):
old_user = c.userobj
c.userobj = model.User.by_name(username)

old_groups = c.groups
c.group = ''
yield
c.userobj = old_user
c.groups = old_groups


class TestLinkedUser(PylonsTestCase):
@classmethod
def setup_class(cls):
helpers.reset_db()
PylonsTestCase.setup_class()
DguCreateTestData.create_dgu_test_data()

Expand All @@ -25,83 +49,112 @@ def test_view_official(self):
user = 'nhseditor' # i.e. an official, needing anonymity to the public
user_obj = model.User.by_name(unicode(user))

c.is_an_official = False
assert_equal(str(dgu_linked_user(user)),
'<a href="/publisher/national-health-service">National Health Service</a>')
assert_equal(str(dgu_linked_user(user_obj)),
'<a href="/publisher/national-health-service">National Health Service</a>')
with regular_user():
assert_equal(str(dgu_linked_user(user)),
'<a href="/publisher/national-health-service">National Health Service</a>')
assert_equal(str(dgu_linked_user(user_obj)),
'<a href="/publisher/national-health-service">National Health Service</a>')

c.is_an_official = True
assert_equal(str(dgu_linked_user(user)),
'<a href="/data/user/nhseditor">NHS Editor</a>')
assert_equal(str(dgu_linked_user(user_obj)),
'<a href="/data/user/nhseditor">NHS Editor</a>')
with publisher_user():
assert_equal(str(dgu_linked_user(user)),
'<a href="/data/user/nhseditor">NHS Editor</a>')
assert_equal(str(dgu_linked_user(user_obj)),
'<a href="/data/user/nhseditor">NHS Editor</a>')

with sysadmin_user():
assert_equal(str(dgu_linked_user(user)),
'<a href="/data/user/nhseditor">NHS Editor</a>')
assert_equal(str(dgu_linked_user(user_obj)),
'<a href="/data/user/nhseditor">NHS Editor</a>')

def test_view_member_of_public(self):
# most common case
user = 'user_d102' # a member of the public, not anonymous - public comments
user_obj = model.User.by_name(unicode(user))

c.is_an_official = False
assert_equal(str(dgu_linked_user(user)),
'<a href="/users/102">John Doe - a public user</a>')
assert_equal(str(dgu_linked_user(user_obj)),
'<a href="/users/102">John Doe - a public user</a>')
with regular_user():
assert_equal(str(dgu_linked_user(user)),
'<a href="/users/102">John Doe - a public user</a>')
assert_equal(str(dgu_linked_user(user_obj)),
'<a href="/users/102">John Doe - a public user</a>')

with publisher_user():
assert_equal(str(dgu_linked_user(user)),
'<a href="/users/102">John Doe - a public user</a>')
assert_equal(str(dgu_linked_user(user_obj)),
'<a href="/users/102">John Doe - a public user</a>')

c.is_an_official = True
assert_equal(str(dgu_linked_user(user)),
'<a href="/users/102">John Doe - a public user</a>')
assert_equal(str(dgu_linked_user(user_obj)),
'<a href="/users/102">John Doe - a public user</a>')
with sysadmin_user():
assert_equal(str(dgu_linked_user(user)),
'<a href="/users/102">John Doe - a public user</a>')
assert_equal(str(dgu_linked_user(user_obj)),
'<a href="/users/102">John Doe - a public user</a>')

def test_view_sysadmin(self):
# very common case
user = 'sysadmin'
user_obj = model.User.by_name(unicode(user))

c.is_an_official = False
assert_equal(str(dgu_linked_user(user)), 'System Administrator')
assert_equal(str(dgu_linked_user(user_obj)), 'System Administrator')
with regular_user():
assert_equal(str(dgu_linked_user(user)), 'System Administrator')
assert_equal(str(dgu_linked_user(user_obj)), 'System Administrator')

c.is_an_official = True
assert_equal(str(dgu_linked_user(user)),
'<a href="/data/user/sysadmin">Test Sysadmin</a>')
assert_equal(str(dgu_linked_user(user_obj)),
'<a href="/data/user/sysadmin">Test Sysadmin</a>')
with publisher_user():
assert_equal(str(dgu_linked_user(user)),
'<a href="/data/user/sysadmin">Test Sysadmin</a>')
assert_equal(str(dgu_linked_user(user_obj)),
'<a href="/data/user/sysadmin">Test Sysadmin</a>')

with sysadmin_user():
assert_equal(str(dgu_linked_user(user)),
'<a href="/data/user/sysadmin">Test Sysadmin</a>')
assert_equal(str(dgu_linked_user(user_obj)),
'<a href="/data/user/sysadmin">Test Sysadmin</a>')

def test_view_non_object_user(self):
# created by a script, but no User object exists
user = 'random'

c.is_an_official = False
assert_equal(str(dgu_linked_user(user)), 'Staff')
with regular_user():
assert_equal(str(dgu_linked_user(user)), 'Staff')

with publisher_user():
assert_equal(str(dgu_linked_user(user)), 'random')

c.is_an_official = True
assert_equal(str(dgu_linked_user(user)), 'random')
with sysadmin_user():
assert_equal(str(dgu_linked_user(user)), 'random')

def test_view_old_drupal_edit(self):
# Up til Jun 2012, edits through drupal were saved like this
# "NHS North Staffordshire (uid 6107 )"
user = 'National Health Service (uid 101 )'

c.is_an_official = False
assert_equal(str(dgu_linked_user(user)),
with regular_user():
assert_equal(str(dgu_linked_user(user)),
'<a href="/publisher/national-health-service">National Health Service</a>')

c.is_an_official = True
assert_equal(str(dgu_linked_user(user)),
with publisher_user():
assert_equal(str(dgu_linked_user(user)),
'<a href="/data/user/user_d101">NHS Editor imported f...</a>')

with sysadmin_user():
assert_equal(str(dgu_linked_user(user)),
'<a href="/data/user/user_d101">NHS Editor imported f...</a>')

def test_view_system_user(self):
# created on the API
user_dict = get_action('get_site_user')({'model': model, 'ignore_auth': True}, {})
user = user_dict['name']

c.is_an_official = False
assert_equal(str(dgu_linked_user(user)), 'System Process')
with regular_user():
assert_equal(str(dgu_linked_user(user)), 'System Process')

with publisher_user():
assert_equal(str(dgu_linked_user(user, maxlength=100)),
'<a href="/data/user/test.ckan.net">System Process (Site user)</a>')

c.is_an_official = True
assert_equal(str(dgu_linked_user(user, maxlength=100)),
with sysadmin_user():
assert_equal(str(dgu_linked_user(user, maxlength=100)),
'<a href="/data/user/test.ckan.net">System Process (Site user)</a>')


Expand Down
3 changes: 0 additions & 3 deletions ckanext/dgu/theme/src/css/dgu-ckan.less
Expand Up @@ -1332,9 +1332,6 @@ body.controller-package {
margin-top: 13px;
margin-left: 18px;
}
.icon-25x {
font-size: 2.5em; // Like the font awesome ones but in between
}
}

/* PAGE: Resource/read */
Expand Down
32 changes: 1 addition & 31 deletions ckanext/dgu/theme/templates/package/read.html
Expand Up @@ -112,36 +112,6 @@ <h3>Dataset Extent</h3>

{% set publisher_name = c.pkg.get_organization().name %}
{% if not h.is_unpublished_item(c.pkg_dict) %}
<h2>Data Package</h2>
<p>Download a copy of all of the cached resources for this dataset</p>
<div class="datapackage-zip">
<div class="row">
<div class="col-sm-6">
<div class="dataset-resource">
<div class="dataset-resource-format">
<i class="icon-25x icon-archive"></i>
<span class="format-name">ZIP</span>
</div>
<div class="dataset-resource-text">
<div class="inner">
<div class="inner2">
Download all data
{% if h.packagezip_size(c.pkg) %}
({{h.packagezip_size(c.pkg)|filesizeformat}})
{% endif %}
</div>
</div>
</div>
<div class="dropdown" style="pointer-events:none;">
<a href="{{h.packagezip_url(c.pkg)}}" class="dataset-resource-chevron" style="pointer-events:auto;">
<i class="icon-download-alt icon-25x"></i>
</a>
</div><!--/dropdown-->
</div><!-- /dataset-resource -->
</div><!-- /col-sm-6 -->
</div>
</div>

<div class="dataset-resources">
<!-- Resources -->
{% if h.individual_resources() %}
Expand Down Expand Up @@ -236,7 +206,7 @@ <h2>Related Applications</h2>
<div class="col-sm-6">
<div class="dataset-resource">
<div class="dataset-resource-format">
<i class="icon-25x icon-file-text"></i>
<i class="icon-3x icon-file-text"></i>
<span class="format-name">
{% if res.get('gemini',False) %}
{{res.get('type','')}}
Expand Down
7 changes: 7 additions & 0 deletions ckanext/dgu/theme/templates/package/read_common.html
Expand Up @@ -64,6 +64,12 @@
<b><a href="http://dataprotocols.org/data-packages/" target="_blank">Data Package JSON Documentation</a></b>
</li>
</ul>
{% if h.has_packagezip(c.pkg) %}
<p>A Data Package Zip containing the cached resources held by data.gov.uk is also available for download:</p>
<ul>
<li><b><a href="{{ h.packagezip_url(c.pkg) }}">Data Package Zip</a></b></li>
</ul>
{% endif %}
</div>
</div>
</span>
Expand Down Expand Up @@ -326,3 +332,4 @@ <h1>{{c.pkg_dict.get('title', c.pkg_dict['name'])}} {%if h.is_unpublished_item(c
{% endwith %}
</div>
{% endblock %}

0 comments on commit d07555d

Please sign in to comment.