def parse(self, params, path_info, host, post_data, request_method): self.host = host try: self.get_layer(path_info, params) except NoLayerException as e: a = Action() if params.has_key( 'service') and params['service'].lower() == 'wfs': for layer in self.service.datasources: self.datasources.append(layer) if params.has_key('request'): a.request = params['request'] else: a.request = "GetCapabilities" else: a.method = "metadata" self.actions.append(a) return wfsrequest = WFSRequest() try: Request.parse(self, params, path_info, host, post_data, request_method, format_obj=wfsrequest) except: raise
def insertUnique(self, feature): if not feature.properties.has_key(self.unique): raise Exception("Unique key (%s) missing from feature." % self.unique) action = Action() action.attributes[self.unique] = feature.properties[self.unique] features = self.select(action) if len(features) > 1: raise Exception( "There are two features with the unique key %s. Something's wrong with that." % feature.properties[self.unique]) thunk = self.freeze_feature(feature) if len(features) == 0: return self.append(thunk) else: self.db[features[0].id] = thunk return features[0].id