class LayerManager(models.Manager): def __init__(self): models.Manager.__init__(self) url = "%srest" % settings.GEOSERVER_BASE_URL user, password = settings.GEOSERVER_CREDENTIALS self.gs_catalog = Catalog(url, _user, _password) self.geonetwork = GeoNetwork(settings.GEONETWORK_BASE_URL, settings.GEONETWORK_CREDENTIALS[0], settings.GEONETWORK_CREDENTIALS[1]) @property def gn_catalog(self): # check if geonetwork is logged in if not self.geonetwork.connected: self.geonetwork.login() # Make sure to logout after you have finished using it. return self.geonetwork def admin_contact(self): # this assumes there is at least one superuser superusers = User.objects.filter(is_superuser=True).order_by('id') if superusers.count() == 0: raise RuntimeError('GeoNode needs at least one admin/superuser set') contact, created = Contact.objects.get_or_create(user=superusers[0], defaults={"name": "Geonode Admin"}) return contact def default_poc(self): return self.admin_contact() def default_metadata_author(self): return self.admin_contact() def slurp(self): cat = self.gs_catalog gn = self.gn_catalog for resource in cat.get_resources(): try: store = resource.store workspace = store.workspace layer, created = self.get_or_create(name=resource.name, defaults = { "workspace": workspace.name, "store": store.name, "storeType": store.resource_type, "typename": "%s:%s" % (workspace.name, resource.name), "title": resource.title or 'No title provided', "abstract": resource.abstract or 'No abstract provided', "uuid": str(uuid.uuid4()) }) layer.save() if created: layer.set_default_permissions() finally: pass # Doing a logout since we know we don't need this object anymore. gn.logout()
def __init__(self): models.Manager.__init__(self) url = "%srest" % settings.GEOSERVER_BASE_URL user, password = settings.GEOSERVER_CREDENTIALS self.gs_catalog = Catalog(url, _user, _password) self.geonetwork = GeoNetwork(settings.GEONETWORK_BASE_URL, settings.GEONETWORK_CREDENTIALS[0], settings.GEONETWORK_CREDENTIALS[1])