Created
June 22, 2010 16:53
-
-
Save ingenieroariel/448740 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/GeoNodePy/geonode/maps/models.py b/src/GeoNodePy/geonode/maps/models.py | |
index c44abe0..762669e 100755 | |
--- a/src/GeoNodePy/geonode/maps/models.py | |
+++ b/src/GeoNodePy/geonode/maps/models.py | |
@@ -167,24 +167,36 @@ class Layer(models.Model): | |
}).get(self.storeType, "Data") | |
def delete_from_geoserver(self): | |
- layerURL = "%srest/layers/%s.xml" % (settings.GEOSERVER_BASE_URL,self.name) | |
+ if self.name == '': | |
+ # This layer is not well configured, don't do anything. | |
+ return | |
+ | |
+ | |
+ layerUrl = "%srest/layers/%s.xml" % (settings.GEOSERVER_BASE_URL,self.name) | |
+ | |
+ urls = [] | |
if self.storeType == "dataStore": | |
- featureUrl = "%srest/workspaces/%s/datastores/%s/featuretypes/%s.xml" % (settings.GEOSERVER_BASE_URL, self.workspace, self.store, self.name) | |
- storeUrl = "%srest/workspaces/%s/datastores/%s.xml" % (settings.GEOSERVER_BASE_URL, self.workspace, self.store) | |
+ urls[0] = "%srest/workspaces/%s/datastores/%s/featuretypes/%s.xml" % (settings.GEOSERVER_BASE_URL, self.workspace, self.store, self.name) | |
+ urls[1] = "%srest/workspaces/%s/datastores/%s.xml" % (settings.GEOSERVER_BASE_URL, self.workspace, self.store) | |
elif self.storeType == "coverageStore": | |
- featureUrl = "%srest/workspaces/%s/coveragestores/%s/coverages/%s.xml" % (settings.GEOSERVER_BASE_URL,self.workspace,self.store, self.name) | |
- storeUrl = "%srest/workspaces/%s/coveragestores/%s.xml" % (settings.GEOSERVER_BASE_URL,self.workspace,self.store) | |
- urls = (layerURL,featureUrl,storeUrl) | |
+ urls[0] = "%srest/workspaces/%s/coveragestores/%s/coverages/%s.xml" % (settings.GEOSERVER_BASE_URL,self.workspace,self.store, self.name) | |
+ urls[1] = "%srest/workspaces/%s/coveragestores/%s.xml" % (settings.GEOSERVER_BASE_URL,self.workspace,self.store) | |
# GEOSERVER_CREDENTIALS | |
HTTP = httplib2.Http(".cache") | |
HTTP.add_credentials(_user,_password) | |
+ output = HTTP.request(layerUrl,"DELETE") | |
+ if output[0]["status"][0] == '4': | |
+ raise RuntimeError("Unable to remove layer from Geoserver: %s" % output[1]) | |
+ | |
for u in urls: | |
- output = HTTP.request(u,"DELETE") | |
- if output[0]["status"][0] == '4': | |
- raise RuntimeError("Unable to remove from Geoserver: %s" % output[1]) | |
- | |
+ try: | |
+ output = HTTP.request(u,"DELETE") | |
+ except: | |
+ # If we cannot delete the containers it's ok. They might have other layers configured. | |
+ pass | |
+ | |
def delete_from_geonetwork(self): | |
gn = GeoNetwork(settings.GEONETWORK_BASE_URL, settings.GEONETWORK_CREDENTIALS[0], settings.GEONETWORK_CREDENTIALS[1]) | |
gn.login() | |
diff --git a/src/GeoNodePy/geonode/maps/tests.py b/src/GeoNodePy/geonode/maps/tests.py | |
index 81e7ac5..4970b6f 100755 | |
--- a/src/GeoNodePy/geonode/maps/tests.py | |
+++ b/src/GeoNodePy/geonode/maps/tests.py | |
@@ -16,6 +16,19 @@ class MapTest(TestCase): | |
if "GEOSERVER" in os.environ.keys(): | |
self.GEOSERVER = True | |
+ def resetLayers(self): | |
+ ''' | |
+ This is a very expensive operation, does the same as | |
+ ./manage.py updatelayers | |
+ Call it for specific tests that need to access GeoNetwork | |
+ and avoid having a blank uuid in the layer object. | |
+ ''' | |
+ if self.GEOSERVER: | |
+ # Since the layer list might not be up to date, just regenerate it | |
+ Layer.objects.all().delete() | |
+ Layer.objects.slurp() | |
+ | |
+ | |
default_abstract = "This is a demonstration of GeoNode, an application \ | |
for assembling and publishing web based maps. After adding layers to the map, \ | |
use the 'Save Map' button above to contribute your map to the GeoNode \ | |
@@ -63,6 +76,7 @@ community." | |
def test_search_detail(self): | |
'''/data/search/detail -> Test accessing the data search detail for a layer''' | |
if self.GEOSERVER: | |
+ self.resetLayers() | |
layer = Layer.objects.all()[0] | |
c = Client() | |
response = c.get('/data/search/detail', {'uuid':layer.uuid}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment