Mercurial > gemma
changeset 2923:9bd98daf0b0f
Let sys_admin import fairway dimensions without restrictions
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Wed, 03 Apr 2019 17:19:26 +0200 |
parents | 372dc8382389 |
children | d2dba0638ef1 |
files | pkg/imports/fd.go |
diffstat | 1 files changed, 22 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/imports/fd.go Wed Apr 03 17:08:18 2019 +0200 +++ b/pkg/imports/fd.go Wed Apr 03 17:19:26 2019 +0200 @@ -142,9 +142,9 @@ SELECT users.current_user_area_utm() AS a ) DELETE FROM waterway.fairway_dimensions -WHERE ST_Covers( - (SELECT a FROM resp), - ST_Transform(area::geometry, (SELECT ST_SRID(a) FROM resp))) +WHERE (pg_has_role('sys_admin', 'MEMBER') + OR ST_Covers((SELECT a FROM resp), + ST_Transform(area::geometry, (SELECT ST_SRID(a) FROM resp)))) AND staging_done AND level_of_service = $1::smallint` @@ -154,19 +154,25 @@ WITH resp AS ( SELECT users.current_user_area_utm() AS a ) -INSERT INTO waterway.fairway_dimensions (area, level_of_service, min_width, max_width, min_depth, date_info, source_organization) -SELECT ST_Transform(clipped.geom, 4326)::geography, $3, $4, $5, $6, $7, $8 FROM ( - SELECT (ST_Dump( - ST_Intersection( - (SELECT ST_Buffer(a, -0.0001) FROM resp), - ST_MakeValid(ST_Transform( - ST_GeomFromWKB($1, $2::integer), - (SELECT ST_SRID(a) FROM resp) - )) - ) - )).geom AS geom - ) AS clipped - WHERE clipped.geom IS NOT NULL +INSERT INTO waterway.fairway_dimensions ( + area, + level_of_service, + min_width, + max_width, + min_depth, + date_info, + source_organization) +SELECT ST_Transform(dmp.geom, 4326), $3, $4, $5, $6, $7, $8 + FROM ST_GeomFromWKB($1, $2::integer) AS new_fd (new_fd), + ST_Dump( + CASE WHEN pg_has_role('sys_admin', 'MEMBER') + THEN ST_MakeValid(ST_Transform( + new_fd, best_utm(ST_Transform(new_fd, 4326)))) + ELSE ST_CollectionExtract(ST_Intersection( + (SELECT ST_Buffer(a, -0.0001) FROM resp), + ST_MakeValid(ST_Transform(new_fd, (SELECT ST_SRID(a) FROM resp)))), + 3) + END) AS dmp RETURNING id, ST_X(ST_Centroid(area::geometry)), ST_Y(ST_Centroid(area::geometry))