Skip to content

Commit 0e37af0

Browse files
author
afabiani
committed
[Fixes GeoNode#5223] Layer details broken if no store identified
1 parent 862bb8a commit 0e37af0

File tree

7 files changed

+62
-32
lines changed

7 files changed

+62
-32
lines changed

codecov.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ codecov:
55
coverage:
66
precision: 2
77
round: down
8-
range: "70...100"
8+
range: "60...100"
99

1010
status:
1111
project: yes

geonode/layers/tests.py

+3
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,9 @@ def test_layer_save(self):
273273
response = self.client.get(reverse('layer_detail', args=(lyr.alternate,)))
274274
self.failUnlessEqual(response.status_code, 200)
275275

276+
response = self.client.get(reverse('layer_detail', args=(":%s" % lyr.alternate,)))
277+
self.failUnlessEqual(response.status_code, 200)
278+
276279
response = self.client.get(reverse('layer_metadata', args=(lyr.alternate,)))
277280
self.failUnlessEqual(response.status_code, 200)
278281

geonode/layers/views.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,17 @@ def _resolve_layer(request, alternate, permission='base.view_resourcebase',
170170
**kwargs)
171171
else:
172172
if len(service_typename) > 1 and ':' in service_typename[1]:
173-
query = {
174-
'store': service_typename[0],
175-
'alternate': service_typename[1]
176-
}
173+
if service_typename[0]:
174+
query = {
175+
'store': service_typename[0],
176+
'alternate': service_typename[1]
177+
}
178+
else:
179+
query = {
180+
'alternate': service_typename[1]
181+
}
177182
else:
178183
query = {'alternate': alternate}
179-
180184
return resolve_object(request,
181185
Layer,
182186
query,

geonode/proxy/tests.py

+27-5
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,18 @@
2626
"""
2727
import json
2828

29-
from geonode.base.models import Link
30-
from geonode.tests.base import GeoNodeBaseTestSupport
31-
from geonode.base.populate_test_data import create_models
29+
from mock import MagicMock
3230

31+
from django.core.urlresolvers import reverse
3332
from django.contrib.auth import get_user_model
3433
from django.test.utils import override_settings
3534

36-
from mock import MagicMock
37-
35+
from geonode import geoserver
36+
from geonode.base.models import Link
37+
from geonode.layers.models import Layer
38+
from geonode.decorators import on_ogc_backend
39+
from geonode.tests.base import GeoNodeBaseTestSupport
40+
from geonode.base.populate_test_data import create_models
3841

3942
TEST_DOMAIN = '.github.com'
4043
TEST_URL = 'https://help%s/' % TEST_DOMAIN
@@ -118,6 +121,25 @@ class Response(object):
118121
assert request_mock.call_args[0][0] == 'http://example.org/index.html'
119122

120123

124+
class DownloadResourceTestCase(GeoNodeBaseTestSupport):
125+
126+
def setUp(self):
127+
super(DownloadResourceTestCase, self).setUp()
128+
create_models(type='layer')
129+
130+
@on_ogc_backend(geoserver.BACKEND_PACKAGE)
131+
def test_download_url(self):
132+
layer = Layer.objects.all().first()
133+
self.client.login(username='admin', password='admin')
134+
# ... all should be good
135+
response = self.client.get(reverse('download', args=(layer.id,)))
136+
# Espected 404 since there are no files available for this layer
137+
self.failUnlessEqual(response.status_code, 404)
138+
data = response.content
139+
self.assertTrue(
140+
"No files have been found for this resource. Please, contact a system administrator." in data)
141+
142+
121143
class OWSApiTestCase(GeoNodeBaseTestSupport):
122144

123145
def setUp(self):

geonode/version.py

+19-18
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,18 @@ def get_version(version=None):
3535
# main = X.Y[.Z]
3636
# sub = .devN - for pre-alpha releases
3737
# | {a|b|c}N - for alpha, beta and rc releases
38-
38+
git_changeset = get_git_changeset()
3939
parts = 2 if version[2] == 0 else 3
4040
main = '.'.join(str(x) for x in version[:parts])
41-
4241
sub = ''
43-
if version[3] == 'unstable':
44-
git_changeset = get_git_changeset()
45-
if git_changeset:
46-
sub = '.dev%s' % git_changeset
47-
48-
elif version[3] != 'final':
42+
if version[3] != 'final':
4943
mapping = {'beta': 'b', 'rc': 'rc'}
5044
sub = mapping[version[3]] + str(version[4])
51-
45+
if git_changeset:
46+
if version[3] == 'unstable':
47+
sub += '.dev%s' % git_changeset
48+
else:
49+
sub += '.build%s' % git_changeset
5250
return main + sub
5351

5452

@@ -59,13 +57,16 @@ def get_git_changeset():
5957
This value isn't guaranteed to be unique, but collisions are very unlikely,
6058
so it's sufficient for generating the development version numbers.
6159
"""
62-
repo_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
63-
git_show = subprocess.Popen('git show --pretty=format:%ct --quiet HEAD',
64-
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
65-
shell=True, cwd=repo_dir, universal_newlines=True)
66-
timestamp = git_show.communicate()[0].partition('\n')[0]
6760
try:
68-
timestamp = datetime.datetime.utcfromtimestamp(int(timestamp))
69-
except ValueError:
70-
return None
71-
return timestamp.strftime('%Y%m%d%H%M%S')
61+
repo_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
62+
git_show = subprocess.Popen('git show --pretty=format:%ct --quiet HEAD',
63+
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
64+
shell=True, cwd=repo_dir, universal_newlines=True)
65+
timestamp = git_show.communicate()[0].partition('\n')[0]
66+
return timestamp
67+
except BaseException:
68+
try:
69+
timestamp = datetime.datetime.utcfromtimestamp(int(timestamp))
70+
return timestamp.strftime('%Y%m%d%H%M%S')
71+
except ValueError:
72+
return None

pavement.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -964,7 +964,7 @@ def run_tests(options):
964964
if options.get('coverage'):
965965
prefix = 'coverage run --branch --source=geonode \
966966
--omit="*/__init__*,*/test*,*/wsgi*,*/version*,*/migrations*,\
967-
*/search_indexes*,*/management/*,*/context_processors*,*/qgis_server/*"'
967+
*/search_indexes*,*/management/*,*/context_processors*,*/upload/*,*/qgis_server/*"'
968968
else:
969969
prefix = 'python'
970970
local = options.get('local', 'false') # travis uses default to false

requirements.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ geonode-oauth-toolkit==1.1.4.6
7272

7373
# GeoNode org maintained apps.
7474
django-geoexplorer==4.0.43
75-
django-mapstore-adapter==1.0.11
76-
django-geonode-mapstore-client==1.4.5
75+
django-mapstore-adapter==1.0.12
76+
django-geonode-mapstore-client==1.4.6
7777
django-geonode-client==1.0.9
7878
geonode-user-messages==0.1.14
7979
geonode-avatar==2.1.8

0 commit comments

Comments
 (0)