annotate pkg/controllers/uploadedimports.go @ 3302:ec6163c6687d

'Historicise' gauges on import Gauge data sets will be updated or a new version will be inserted depending on temporal validity and a timestamp marking the last update in the RIS-Index of a data set. The trigger on date_info is removed because the value is actually an attribut coming from the RIS-Index. Gauge measurements and predictions are associated to the version with matching temporal validity. Bottlenecks are always associated to the actual version of the gauge, although this might change as soon as bottlenecks are 'historicised', too.
author Tom Gottfried <tom@intevation.de>
date Thu, 16 May 2019 18:41:43 +0200
parents 5222bfe5b4af
children 34623265eac1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 // This is Free Software under GNU Affero General Public License v >= 3.0
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2 // without warranty, see README.md and license for details.
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 //
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4 // SPDX-License-Identifier: AGPL-3.0-or-later
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 // License-Filename: LICENSES/AGPL-3.0.txt
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 //
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 // Copyright (C) 2018 by via donau
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 // – Österreichische Wasserstraßen-Gesellschaft mbH
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 // Software engineering by Intevation GmbH
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 //
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 // Author(s):
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 // * Sascha L. Teichmann <sascha.teichmann@intevation.de>
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 package controllers
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 import (
2537
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
17 "fmt"
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 "log"
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 "net/http"
2536
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
20 "os"
2537
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
21 "strconv"
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 "time"
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 "gemma.intevation.de/gemma/pkg/auth"
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 "gemma.intevation.de/gemma/pkg/common"
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 "gemma.intevation.de/gemma/pkg/imports"
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 "gemma.intevation.de/gemma/pkg/misc"
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 )
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30 const maxUploadSize = 25 * 1024 * 1024
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31
2536
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
32 type BadUploadParameterError string
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
33
2537
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
34 func importWaterwayProfiles() http.HandlerFunc {
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
35 return uploadedImport(
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
36 imports.WPJobKind,
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
37 "wp.csv",
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
38 func(req *http.Request, dir string) (imports.Job, error) {
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
39 url := req.FormValue("url")
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
40 if url == "" {
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
41 return nil, BadUploadParameterError("missing 'url' parameter")
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
42 }
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
43
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
44 featureType := req.FormValue("feature-type")
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
45 if featureType == "" {
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
46 return nil, BadUploadParameterError("missing 'feature-type' parameter")
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
47 }
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
48
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
49 sortBy := req.FormValue("sort-by")
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
50
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
51 var precision *float64
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
52 if p := req.FormValue("precision"); p != "" {
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
53 v, err := strconv.ParseFloat(p, 64)
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
54 if err != nil {
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
55 return nil, BadUploadParameterError(
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
56 fmt.Sprintf("Invalid 'precision' parameter: %v", err))
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
57 }
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
58 precision = &v
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
59 }
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
60
2723
a10022399e24 WFS downloads: Fetch user and password from config.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2586
diff changeset
61 user := req.FormValue("user")
a10022399e24 WFS downloads: Fetch user and password from config.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2586
diff changeset
62 password := req.FormValue("password")
a10022399e24 WFS downloads: Fetch user and password from config.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2586
diff changeset
63
2537
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
64 return &imports.WaterwayProfiles{
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
65 Dir: dir,
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
66 URL: url,
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
67 FeatureType: featureType,
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
68 SortBy: sortBy,
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
69 Precision: precision,
2723
a10022399e24 WFS downloads: Fetch user and password from config.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2586
diff changeset
70 User: user,
a10022399e24 WFS downloads: Fetch user and password from config.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2586
diff changeset
71 Password: password,
2537
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
72 }, nil
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
73 },
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
74 )
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
75 }
07f892bc4bb0 WP import: Made WP import an uploaded import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2536
diff changeset
76
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
77 func importApprovedGaugeMeasurements() http.HandlerFunc {
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
78 return uploadedImport(
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
79 imports.AGMJobKind,
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
80 "agm.csv",
2562
ce39e9954e85 Make upload of AGM require only "fk_gauge_id" "measure_date" and "value"
Sascha Wilde <wilde@intevation.de>
parents: 2537
diff changeset
81 func(req *http.Request, dir string) (imports.Job, error) {
ce39e9954e85 Make upload of AGM require only "fk_gauge_id" "measure_date" and "value"
Sascha Wilde <wilde@intevation.de>
parents: 2537
diff changeset
82 originator := req.FormValue("originator")
ce39e9954e85 Make upload of AGM require only "fk_gauge_id" "measure_date" and "value"
Sascha Wilde <wilde@intevation.de>
parents: 2537
diff changeset
83 if originator == "" {
ce39e9954e85 Make upload of AGM require only "fk_gauge_id" "measure_date" and "value"
Sascha Wilde <wilde@intevation.de>
parents: 2537
diff changeset
84 return nil, BadUploadParameterError("missing 'originator' parameter")
ce39e9954e85 Make upload of AGM require only "fk_gauge_id" "measure_date" and "value"
Sascha Wilde <wilde@intevation.de>
parents: 2537
diff changeset
85 }
ce39e9954e85 Make upload of AGM require only "fk_gauge_id" "measure_date" and "value"
Sascha Wilde <wilde@intevation.de>
parents: 2537
diff changeset
86
ce39e9954e85 Make upload of AGM require only "fk_gauge_id" "measure_date" and "value"
Sascha Wilde <wilde@intevation.de>
parents: 2537
diff changeset
87 return &imports.ApprovedGaugeMeasurements{
ce39e9954e85 Make upload of AGM require only "fk_gauge_id" "measure_date" and "value"
Sascha Wilde <wilde@intevation.de>
parents: 2537
diff changeset
88 Dir: dir,
ce39e9954e85 Make upload of AGM require only "fk_gauge_id" "measure_date" and "value"
Sascha Wilde <wilde@intevation.de>
parents: 2537
diff changeset
89 Originator: originator,
ce39e9954e85 Make upload of AGM require only "fk_gauge_id" "measure_date" and "value"
Sascha Wilde <wilde@intevation.de>
parents: 2537
diff changeset
90 }, nil
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
91 },
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
92 )
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
93 }
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
94
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
95 func importUploadedBottleneck() http.HandlerFunc {
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
96 return uploadedImport(
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
97 imports.UBNJobKind,
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
98 "data.xml",
2586
bc1b43885a4d Expose axis snapping tolerance in bottleneck upload import
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
99 func(req *http.Request, dir string) (imports.Job, error) {
bc1b43885a4d Expose axis snapping tolerance in bottleneck upload import
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
100
bc1b43885a4d Expose axis snapping tolerance in bottleneck upload import
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
101 var tolerance float64
bc1b43885a4d Expose axis snapping tolerance in bottleneck upload import
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
102 if t := req.FormValue("tolerance"); t != "" {
bc1b43885a4d Expose axis snapping tolerance in bottleneck upload import
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
103 v, err := strconv.ParseFloat(t, 64)
bc1b43885a4d Expose axis snapping tolerance in bottleneck upload import
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
104 if err != nil {
bc1b43885a4d Expose axis snapping tolerance in bottleneck upload import
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
105 return nil, BadUploadParameterError(
bc1b43885a4d Expose axis snapping tolerance in bottleneck upload import
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
106 fmt.Sprintf("Invalid 'tolerance' parameter: %v", err))
bc1b43885a4d Expose axis snapping tolerance in bottleneck upload import
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
107 }
bc1b43885a4d Expose axis snapping tolerance in bottleneck upload import
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
108 tolerance = v
bc1b43885a4d Expose axis snapping tolerance in bottleneck upload import
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
109 }
bc1b43885a4d Expose axis snapping tolerance in bottleneck upload import
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
110
bc1b43885a4d Expose axis snapping tolerance in bottleneck upload import
Tom Gottfried <tom@intevation.de>
parents: 2563
diff changeset
111 return &imports.UploadedBottleneck{Dir: dir, Tolerance: tolerance}, nil
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
112 },
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
113 )
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
114 }
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
115
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
116 func importUploadedFairwayAvailability() http.HandlerFunc {
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
117 return uploadedImport(
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
118 imports.UFAJobKind,
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
119 "data.xml",
2536
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
120 func(_ *http.Request, dir string) (imports.Job, error) {
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
121 return &imports.UploadedFairwayAvailability{Dir: dir}, nil
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
122 },
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
123 )
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
124 }
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
125
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
126 func importUploadedGaugeMeasurement() http.HandlerFunc {
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
127 return uploadedImport(
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
128 imports.UGMJobKind,
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
129 "data.xml",
2536
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
130 func(_ *http.Request, dir string) (imports.Job, error) {
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
131 return &imports.UploadedGaugeMeasurement{Dir: dir}, nil
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
132 },
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
133 )
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
134 }
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
135
2536
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
136 func (bup BadUploadParameterError) Error() string {
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
137 return string(bup)
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
138 }
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
139
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
140 func uploadedImport(
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
141 kind imports.JobKind,
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
142 fname string,
2536
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
143 create func(*http.Request, string) (imports.Job, error),
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
144 ) http.HandlerFunc {
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
145
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
146 return func(rw http.ResponseWriter, req *http.Request) {
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
147 dir, err := misc.StoreUploadedFile(
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
148 req,
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
149 string(kind),
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
150 fname,
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
151 maxUploadSize)
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
152 if err != nil {
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
153 log.Printf("error: %v\n", err)
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
154 http.Error(rw, "error: "+err.Error(), http.StatusInternalServerError)
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
155 return
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
156 }
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
157
2536
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
158 job, err := create(req, dir)
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
159 if err != nil {
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
160 if err2 := os.RemoveAll(dir); err2 != nil {
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
161 log.Printf("warn: %v\n", err2)
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
162 }
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
163 if err2, ok := err.(BadUploadParameterError); ok {
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
164 http.Error(rw, string(err2), http.StatusBadRequest)
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
165 return
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
166 }
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
167 log.Printf("error: %v\n", err)
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
168 http.Error(rw, "error: "+err.Error(), http.StatusInternalServerError)
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
169 return
0a3debcfbe8f Upload imports: Increased power of upload imports to be able to cope parameterized imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
170 }
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
171
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
172 serialized, err := common.ToJSONString(job)
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
173 if err != nil {
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
174 log.Printf("error: %v\n", err)
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
175 http.Error(rw, "error: "+err.Error(), http.StatusInternalServerError)
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
176 return
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
177 }
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
178
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
179 session, _ := auth.GetSession(req)
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
180
2995
5222bfe5b4af Upload imports: spell form field 'send-email' instead of 'email'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2723
diff changeset
181 sendEmail := req.FormValue("send-email") != ""
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
182
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
183 jobID, err := imports.AddJob(
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
184 kind,
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
185 time.Time{}, // due
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
186 nil, // trys
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
187 nil, // retry wait
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
188 session.User,
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
189 sendEmail,
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
190 serialized)
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
191
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
192 if err != nil {
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
193 log.Printf("error: %v\n", err)
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
194 http.Error(rw, "error: "+err.Error(), http.StatusInternalServerError)
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
195 return
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
196 }
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
197
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
198 log.Printf("info: added import #%d to queue\n", jobID)
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
199
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
200 result := struct {
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
201 ID int64 `json:"id"`
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
202 }{
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
203 ID: jobID,
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
204 }
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
205 SendJSON(rw, http.StatusCreated, &result)
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
206 }
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
207 }