Mercurial > gemma
annotate pkg/controllers/manualimports.go @ 1995:59055c8301df
Move import queue to its own database namespace
Authorisation of the import queue has to be handled differently
from the waterway-related data in the waterway schema. This is
easier to handle, if both are in their own schema/namespace.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 24 Jan 2019 12:56:31 +0100 |
parents | 9c65153bb56e |
children | 070ac9dd61a1 |
rev | line source |
---|---|
1534
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1 // This is Free Software under GNU Affero General Public License v >= 3.0 |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
2 // without warranty, see README.md and license for details. |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
3 // |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
4 // SPDX-License-Identifier: AGPL-3.0-or-later |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
5 // License-Filename: LICENSES/AGPL-3.0.txt |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
6 // |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
7 // Copyright (C) 2018 by via donau |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
8 // – Österreichische Wasserstraßen-Gesellschaft mbH |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
9 // Software engineering by Intevation GmbH |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
10 // |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
11 // Author(s): |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
12 // * Sascha L. Teichmann <sascha.teichmann@intevation.de> |
1667
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
13 // * Raimund Renkert <raimund.renkert@intevation.de> |
1534
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
14 |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
15 package controllers |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
16 |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
17 import ( |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
18 "database/sql" |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
19 "log" |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
20 "net/http" |
1708
49e047c2106e
Imports: Made imports re-runnable if they fail.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1677
diff
changeset
|
21 "time" |
1534
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
23 "gemma.intevation.de/gemma/pkg/auth" |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 "gemma.intevation.de/gemma/pkg/common" |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 "gemma.intevation.de/gemma/pkg/imports" |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 "gemma.intevation.de/gemma/pkg/models" |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 ) |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 |
1993
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
29 func importBottleneck(input interface{}) (interface{}, common.Attributes, bool) { |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
30 bi := input.(*models.BottleneckImport) |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
31 bn := &imports.Bottleneck{ |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
32 URL: bi.URL, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
33 Insecure: bi.Insecure, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
34 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
35 return bn, bi.Attributes, bi.SendEmail |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
36 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
37 |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
38 func importGaugeMeasurement(input interface{}) (interface{}, common.Attributes, bool) { |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
39 gi := input.(*models.GaugeMeasurementImport) |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
40 gm := &imports.GaugeMeasurement{ |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
41 URL: gi.URL, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
42 Insecure: gi.Insecure, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
43 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
44 return gm, gi.Attributes, gi.SendEmail |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
45 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
46 |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
47 func importFairwayAvailability(input interface{}) (interface{}, common.Attributes, bool) { |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
48 fai := input.(*models.FairwayAvailabilityImport) |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
49 fa := &imports.FairwayAvailability{ |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
50 URL: fai.URL, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
51 Insecure: fai.Insecure, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
52 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
53 return fa, fai.Attributes, fai.SendEmail |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
54 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
55 |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
56 func importWaterwayAxis(input interface{}) (interface{}, common.Attributes, bool) { |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
57 wxi := input.(*models.WaterwayAxisImport) |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
58 wx := &imports.WaterwayAxis{ |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
59 URL: wxi.URL, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
60 FeatureType: wxi.FeatureType, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
61 SortBy: wxi.SortBy, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
62 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
63 return wx, wxi.Attributes, wxi.SendEmail |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
64 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
65 |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
66 func importWaterwayArea(input interface{}) (interface{}, common.Attributes, bool) { |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
67 wai := input.(*models.WaterwayAreaImport) |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
68 wa := &imports.WaterwayArea{ |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
69 URL: wai.URL, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
70 FeatureType: wai.FeatureType, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
71 SortBy: wai.SortBy, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
72 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
73 return wa, wai.Attributes, wai.SendEmail |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
74 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
75 |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
76 func importWaterwayGauge(input interface{}) (interface{}, common.Attributes, bool) { |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
77 wgi := input.(*models.WaterwayGaugeImport) |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
78 username, _ := wgi.Attributes.Get("username") |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
79 password, _ := wgi.Attributes.Get("password") |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
80 insecure := wgi.Attributes.Bool("insecure") |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
81 wg := &imports.WaterwayGauge{ |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
82 URL: wgi.URL, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
83 Username: username, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
84 Password: password, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
85 Insecure: insecure, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
86 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
87 return wg, wgi.Attributes, wgi.SendEmail |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
88 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
89 |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
90 func importDistancemarksVirtual(input interface{}) (interface{}, common.Attributes, bool) { |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
91 dmvi := input.(*models.DistanceMarksVirtualImport) |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
92 username, _ := dmvi.Attributes.Get("username") |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
93 password, _ := dmvi.Attributes.Get("password") |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
94 insecure := dmvi.Attributes.Bool("insecure") |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
95 wg := &imports.DistanceMarksVirtual{ |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
96 URL: dmvi.URL, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
97 Username: username, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
98 Password: password, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
99 Insecure: insecure, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
100 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
101 return wg, dmvi.Attributes, dmvi.SendEmail |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
102 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
103 |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
104 func importFairwayDimension(input interface{}) (interface{}, common.Attributes, bool) { |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
105 fdi := input.(*models.FairwayDimensionImport) |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
106 fd := &imports.FairwayDimension{ |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
107 URL: fdi.URL, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
108 FeatureType: fdi.FeatureType, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
109 SortBy: fdi.SortBy, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
110 LOS: fdi.LOS, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
111 MinWidth: fdi.MinWidth, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
112 MaxWidth: fdi.MaxWidth, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
113 Depth: fdi.Depth, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
114 SourceOrganization: fdi.SourceOrganization, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
115 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
116 return fd, fdi.Attributes, fdi.SendEmail |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
117 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
118 |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
119 func importDistanceMarksAshore(input interface{}) (interface{}, common.Attributes, bool) { |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
120 dmai := input.(*models.DistanceMarksAshoreImport) |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
121 dma := &imports.DistanceMarksAshore{ |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
122 URL: dmai.URL, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
123 FeatureType: dmai.FeatureType, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
124 SortBy: dmai.SortBy, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
125 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
126 return dma, dmai.Attributes, dmai.SendEmail |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
127 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
128 |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
129 func importStretch(input interface{}) (interface{}, common.Attributes, bool) { |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
130 sti := input.(*models.StretchImport) |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
131 st := &imports.Stretch{ |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
132 Name: sti.Name, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
133 From: sti.From, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
134 To: sti.To, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
135 ObjNam: sti.ObjNam, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
136 NObjNam: sti.NObjNam, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
137 Source: sti.Source, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
138 Date: sti.Date, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
139 Countries: sti.Countries, |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
140 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
141 return st, sti.Attributes, sti.SendEmail |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
142 } |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
143 |
1985
8eeb0b5eb340
Imports: Made retries and the waiting between the attempts configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1901
diff
changeset
|
144 func retry(a common.Attributes) (time.Time, *int, *time.Duration) { |
1708
49e047c2106e
Imports: Made imports re-runnable if they fail.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1677
diff
changeset
|
145 due, _ := a.Time("due") |
1985
8eeb0b5eb340
Imports: Made retries and the waiting between the attempts configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1901
diff
changeset
|
146 ret, ok := a.Int("retries") |
8eeb0b5eb340
Imports: Made retries and the waiting between the attempts configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1901
diff
changeset
|
147 var retries *int |
8eeb0b5eb340
Imports: Made retries and the waiting between the attempts configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1901
diff
changeset
|
148 if ok { |
8eeb0b5eb340
Imports: Made retries and the waiting between the attempts configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1901
diff
changeset
|
149 retries = &ret |
1708
49e047c2106e
Imports: Made imports re-runnable if they fail.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1677
diff
changeset
|
150 } |
1985
8eeb0b5eb340
Imports: Made retries and the waiting between the attempts configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1901
diff
changeset
|
151 dur, ok := a.Duration("wait-retry") |
8eeb0b5eb340
Imports: Made retries and the waiting between the attempts configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1901
diff
changeset
|
152 var duration *time.Duration |
8eeb0b5eb340
Imports: Made retries and the waiting between the attempts configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1901
diff
changeset
|
153 if ok { |
8eeb0b5eb340
Imports: Made retries and the waiting between the attempts configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1901
diff
changeset
|
154 duration = &dur |
8eeb0b5eb340
Imports: Made retries and the waiting between the attempts configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1901
diff
changeset
|
155 } |
8eeb0b5eb340
Imports: Made retries and the waiting between the attempts configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1901
diff
changeset
|
156 return due, retries, duration |
1708
49e047c2106e
Imports: Made imports re-runnable if they fail.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1677
diff
changeset
|
157 } |
49e047c2106e
Imports: Made imports re-runnable if they fail.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1677
diff
changeset
|
158 |
1667
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
159 func manualImport( |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
160 kind imports.JobKind, |
1993
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
161 setup func(interface{}) (interface{}, common.Attributes, bool), |
1667
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
162 ) func(interface{}, *http.Request, *sql.Conn) (JSONResult, error) { |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
163 |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
164 return func(input interface{}, req *http.Request, _ *sql.Conn) ( |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
165 jr JSONResult, err error) { |
1534
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
166 |
1993
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
167 what, attrs, sendEmail := setup(input) |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
168 |
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
169 due, retries, waitRetry := retry(attrs) |
1667
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
170 |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
171 var serialized string |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
172 if serialized, err = common.ToJSONString(what); err != nil { |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
173 return |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
174 } |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
175 |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
176 session, _ := auth.GetSession(req) |
1534
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
177 |
1667
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
178 var jobID int64 |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
179 if jobID, err = imports.AddJob( |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
180 kind, |
1985
8eeb0b5eb340
Imports: Made retries and the waiting between the attempts configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1901
diff
changeset
|
181 due, |
8eeb0b5eb340
Imports: Made retries and the waiting between the attempts configurable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1901
diff
changeset
|
182 retries, |
1993
9c65153bb56e
Manual import controller: Simplified code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1985
diff
changeset
|
183 waitRetry, |
1667
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
184 session.User, |
1754
807569b08513
Import queue: Auto acceptance is now a property of the import kind itself and is not configurable any more.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1708
diff
changeset
|
185 sendEmail, |
1667
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
186 serialized, |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
187 ); err != nil { |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
188 return |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
189 } |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
190 |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
191 log.Printf("info: added import #%d to queue\n", jobID) |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
192 |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
193 result := struct { |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
194 ID int64 `json:"id"` |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
195 }{ |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
196 ID: jobID, |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
197 } |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
198 |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
199 jr = JSONResult{ |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
200 Code: http.StatusCreated, |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
201 Result: &result, |
aaa05d3c4aac
Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1646
diff
changeset
|
202 } |
1534
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
203 return |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
204 } |
165f31b71042
Bottleneck import: Added /api/imports/bottleneck POST endpoint.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
205 } |