diff pkg/imports/dma.go @ 2933:a5642ee4c6d0

Let sys_admin import distance marks ashore without restriction
author Tom Gottfried <tom@intevation.de>
date Thu, 04 Apr 2019 14:08:01 +0200
parents 074f2bb85584
children 78affd725ba5
line wrap: on
line diff
--- a/pkg/imports/dma.go	Thu Apr 04 12:47:56 2019 +0200
+++ b/pkg/imports/dma.go	Thu Apr 04 14:08:01 2019 +0200
@@ -80,27 +80,24 @@
   SELECT users.current_user_area_utm() AS a
 )
 DELETE FROM waterway.distance_marks
-WHERE ST_Covers(
-  (SELECT a FROM resp),
-  ST_Transform(geom::geometry, (SELECT ST_SRID(a) FROM resp)))
+WHERE pg_has_role('sys_admin', 'MEMBER')
+    OR ST_Covers((SELECT a FROM resp),
+      ST_Transform(geom::geometry, (SELECT ST_SRID(a) FROM resp)))
 `
 	insertDistanceMarksSQL = `
 WITH resp AS (
   SELECT users.current_user_area_utm() AS a
 )
 INSERT INTO waterway.distance_marks (geom, catdis)
-SELECT ST_Transform(clipped.geom, 4326)::geography, $3 FROM (
-    SELECT (ST_Dump(
-       ST_Intersection(
-         (SELECT a FROM resp),
-         ST_Transform(
-           ST_GeomFromWKB($1, $2::integer),
-           (SELECT ST_SRID(a) FROM resp)
-         )
-       )
-     )).geom AS geom
-  ) AS clipped
-  WHERE clipped.geom IS NOT NULL
+SELECT ST_Transform(
+    CASE WHEN pg_has_role('sys_admin', 'MEMBER')
+      THEN new_dma
+      ELSE ST_Intersection((SELECT a FROM resp),
+        ST_Transform(new_dma, (SELECT ST_SRID(a) FROM resp)))
+      END,
+    4326),
+    $3
+  FROM ST_GeomFromWKB($1, $2::integer) AS new_dma (new_dma)
 RETURNING id
 `
 )