Exemple #1
0
    def save_features(self):
        try:
            map_id = self.request.matchdict.get("map_id")
            map = DBSession.query(Map).get(map_id)
            if map is None:
                return HTTPNotFound()

            if not self.has_permission(self.request.user, map):
                return HTTPUnauthorized()

            if 'features' not in self.request.params:
                return HTTPBadRequest()

            features = self.request.params.get('features').\
                replace(u'\ufffd', '?')
            feature_collection = geojson.\
                loads(features, object_hook=geojson.GeoJSON.to_instance)

            for feature in feature_collection['features']:
                feature_id = feature.properties.get('fid')

                if feature_id:
                    cur_feature = DBSession.query(Feature).get(feature_id)
                    DBSession.delete(cur_feature)
                obj = Feature(feature)
                map.features.append(obj)

            DBSession.commit()
            return {'success': True}
        except:
            DBSession.rollback()
            traceback.print_exc(file=sys.stdout)
            return {'success': False}
Exemple #2
0
    def delete_all_features(self):
        id = self.request.matchdict.get("map_id")

        map = DBSession.query(Map).get(id)
        if map is None:
            return HTTPNotFound()
        if not self.has_permission(self.request.user, map):
            return HTTPUnauthorized()

        # remove the features associated to the map
        features = DBSession.query(Feature).filter(
            Feature.map_id == map.uuid).all()
        for f in features:
            DBSession.delete(f)
        DBSession.commit()
        return {'success': True}
Exemple #3
0
    def delete_feature(self):
        id = self.request.matchdict.get("feature_id")

        feature = DBSession.query(Feature).get(id)
        if feature is None:
            return HTTPNotFound()

        map = DBSession.query(Map).get(feature.map_id)
        if map is None:
            return HTTPNotFound()

        if not self.has_permission(self.request.user, map):
            return HTTPUnauthorized()

        DBSession.delete(feature)
        DBSession.commit()

        return {'success': True}