Skip to content

Commit

Permalink
[Fixes #5223] Layer details broken if no store identified
Browse files Browse the repository at this point in the history
  • Loading branch information
afabiani committed Nov 11, 2019
1 parent 862bb8a commit 0e37af0
Show file tree
Hide file tree
Showing 7 changed files with 62 additions and 32 deletions.
2 changes: 1 addition & 1 deletion codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ codecov:
coverage:
precision: 2
round: down
range: "70...100"
range: "60...100"

status:
project: yes
Expand Down
3 changes: 3 additions & 0 deletions geonode/layers/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,9 @@ def test_layer_save(self):
response = self.client.get(reverse('layer_detail', args=(lyr.alternate,)))
self.failUnlessEqual(response.status_code, 200)

response = self.client.get(reverse('layer_detail', args=(":%s" % lyr.alternate,)))
self.failUnlessEqual(response.status_code, 200)

response = self.client.get(reverse('layer_metadata', args=(lyr.alternate,)))
self.failUnlessEqual(response.status_code, 200)

Expand Down
14 changes: 9 additions & 5 deletions geonode/layers/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,13 +170,17 @@ def _resolve_layer(request, alternate, permission='base.view_resourcebase',
**kwargs)
else:
if len(service_typename) > 1 and ':' in service_typename[1]:
query = {
'store': service_typename[0],
'alternate': service_typename[1]
}
if service_typename[0]:
query = {
'store': service_typename[0],
'alternate': service_typename[1]
}
else:
query = {
'alternate': service_typename[1]
}
else:
query = {'alternate': alternate}

return resolve_object(request,
Layer,
query,
Expand Down
32 changes: 27 additions & 5 deletions geonode/proxy/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,18 @@
"""
import json

from geonode.base.models import Link
from geonode.tests.base import GeoNodeBaseTestSupport
from geonode.base.populate_test_data import create_models
from mock import MagicMock

from django.core.urlresolvers import reverse
from django.contrib.auth import get_user_model
from django.test.utils import override_settings

from mock import MagicMock

from geonode import geoserver
from geonode.base.models import Link
from geonode.layers.models import Layer
from geonode.decorators import on_ogc_backend
from geonode.tests.base import GeoNodeBaseTestSupport
from geonode.base.populate_test_data import create_models

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


class DownloadResourceTestCase(GeoNodeBaseTestSupport):

def setUp(self):
super(DownloadResourceTestCase, self).setUp()
create_models(type='layer')

@on_ogc_backend(geoserver.BACKEND_PACKAGE)
def test_download_url(self):
layer = Layer.objects.all().first()
self.client.login(username='admin', password='admin')
# ... all should be good
response = self.client.get(reverse('download', args=(layer.id,)))
# Espected 404 since there are no files available for this layer
self.failUnlessEqual(response.status_code, 404)
data = response.content
self.assertTrue(
"No files have been found for this resource. Please, contact a system administrator." in data)


class OWSApiTestCase(GeoNodeBaseTestSupport):

def setUp(self):
Expand Down
37 changes: 19 additions & 18 deletions geonode/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,18 @@ def get_version(version=None):
# main = X.Y[.Z]
# sub = .devN - for pre-alpha releases
# | {a|b|c}N - for alpha, beta and rc releases

git_changeset = get_git_changeset()
parts = 2 if version[2] == 0 else 3
main = '.'.join(str(x) for x in version[:parts])

sub = ''
if version[3] == 'unstable':
git_changeset = get_git_changeset()
if git_changeset:
sub = '.dev%s' % git_changeset

elif version[3] != 'final':
if version[3] != 'final':
mapping = {'beta': 'b', 'rc': 'rc'}
sub = mapping[version[3]] + str(version[4])

if git_changeset:
if version[3] == 'unstable':
sub += '.dev%s' % git_changeset
else:
sub += '.build%s' % git_changeset
return main + sub


Expand All @@ -59,13 +57,16 @@ def get_git_changeset():
This value isn't guaranteed to be unique, but collisions are very unlikely,
so it's sufficient for generating the development version numbers.
"""
repo_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
git_show = subprocess.Popen('git show --pretty=format:%ct --quiet HEAD',
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
shell=True, cwd=repo_dir, universal_newlines=True)
timestamp = git_show.communicate()[0].partition('\n')[0]
try:
timestamp = datetime.datetime.utcfromtimestamp(int(timestamp))
except ValueError:
return None
return timestamp.strftime('%Y%m%d%H%M%S')
repo_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
git_show = subprocess.Popen('git show --pretty=format:%ct --quiet HEAD',
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
shell=True, cwd=repo_dir, universal_newlines=True)
timestamp = git_show.communicate()[0].partition('\n')[0]
return timestamp
except BaseException:
try:
timestamp = datetime.datetime.utcfromtimestamp(int(timestamp))
return timestamp.strftime('%Y%m%d%H%M%S')
except ValueError:
return None
2 changes: 1 addition & 1 deletion pavement.py
Original file line number Diff line number Diff line change
Expand Up @@ -964,7 +964,7 @@ def run_tests(options):
if options.get('coverage'):
prefix = 'coverage run --branch --source=geonode \
--omit="*/__init__*,*/test*,*/wsgi*,*/version*,*/migrations*,\
*/search_indexes*,*/management/*,*/context_processors*,*/qgis_server/*"'
*/search_indexes*,*/management/*,*/context_processors*,*/upload/*,*/qgis_server/*"'
else:
prefix = 'python'
local = options.get('local', 'false') # travis uses default to false
Expand Down
4 changes: 2 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ geonode-oauth-toolkit==1.1.4.6

# GeoNode org maintained apps.
django-geoexplorer==4.0.43
django-mapstore-adapter==1.0.11
django-geonode-mapstore-client==1.4.5
django-mapstore-adapter==1.0.12
django-geonode-mapstore-client==1.4.6
django-geonode-client==1.0.9
geonode-user-messages==0.1.14
geonode-avatar==2.1.8
Expand Down

0 comments on commit 0e37af0

Please sign in to comment.