Skip to content

Commit 3bffbe7

Browse files
committed
Merge branch 'rc', version updated to 1.5.7.
2 parents b33f09e + 4afbefc commit 3bffbe7

22 files changed

Lines changed: 607 additions & 26 deletions

docker/docker-compose.eea.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ version: '3'
22

33
services:
44
frontend:
5-
image: eeacms/copernicus-qctool-frontend:1.5.6
5+
image: eeacms/copernicus-qctool-frontend:1.5.7
66
ports:
77
- 8000:8000
88
environment:
@@ -22,7 +22,7 @@ services:
2222
- qc_tool_frontend:/mnt/qc_tool_frontend
2323

2424
worker:
25-
image: eeacms/copernicus-qctool-worker:1.5.6
25+
image: eeacms/copernicus-qctool-worker:1.5.7
2626
environment:
2727
- PRODUCT_DIRS
2828
- BOUNDARY_DIR=/mnt/qc_tool_boundary/boundaries

docker/docker-compose.service_provider.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ version: '3'
22

33
services:
44
frontend:
5-
image: eeacms/copernicus-qctool-frontend:1.5.6
5+
image: eeacms/copernicus-qctool-frontend:1.5.7
66
ports:
77
- 8000:8000
88
environment:
@@ -18,7 +18,7 @@ services:
1818
- qc_tool_volume:/mnt/qc_tool_volume
1919

2020
worker:
21-
image: eeacms/copernicus-qctool-worker:1.5.6
21+
image: eeacms/copernicus-qctool-worker:1.5.7
2222
environment:
2323
- PRODUCT_DIRS
2424
- BOUNDARY_DIR=/mnt/qc_tool_volume/boundaries

product_definitions/rpz_2018.json

Lines changed: 271 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,271 @@
1+
{
2+
"description": "Riparian Zones, LCLU 2018",
3+
"steps": [
4+
{
5+
"check_ident": "qc_tool.vector.unzip",
6+
"required": true
7+
},
8+
{
9+
"check_ident": "qc_tool.vector.naming",
10+
"required": true,
11+
"parameters": {
12+
"formats": [".gdb", ".gpkg", ".shp"],
13+
"layer_names": {
14+
"rpz": "^rpz_(?P<aoi_code>du[0-9]{3})[a-z]_lclu(?P<reference_year>2018)_v[0-9]{2}$"
15+
},
16+
"aoi_codes": ["du001", "du002", "du003", "du004", "du005", "du006", "du007", "du008", "du009",
17+
"du010", "du011", "du012", "du013", "du014", "du015", "du016", "du017", "du018", "du019",
18+
"du020", "du021", "du022", "du023", "du024", "du025", "du026", "du027", "du028", "du029",
19+
"du030", "du031", "du032", "du033", "du034", "du035", "du036", "du037", "du038", "du039",
20+
"du040", "du041", "du042", "du043"],
21+
"boundary_source": "boundary_rpz.shp",
22+
"reference_year": "2018"
23+
}
24+
},
25+
{
26+
"check_ident": "qc_tool.vector.attribute",
27+
"required": true,
28+
"parameters": {
29+
"layers": ["rpz"],
30+
"required": {"id": "integer",
31+
"du_id": "string",
32+
"maes_1_12": "integer",
33+
"maes_2_12": "integer",
34+
"maes_3_12": "integer",
35+
"maes_4_12": "integer",
36+
"maes_1_18": "integer",
37+
"maes_2_18": "integer",
38+
"maes_3_18": "integer",
39+
"maes_4_18": "integer",
40+
"changecode": "string",
41+
"ua": "string",
42+
"area_ha": "real",
43+
"nodata_12": "integer",
44+
"nodata_18": "integer",
45+
"comment": "string"},
46+
"ignored": []
47+
}
48+
},
49+
{
50+
"check_ident": "qc_tool.vector.epsg",
51+
"required": true,
52+
"parameters": {
53+
"layers": ["rpz"],
54+
"epsg": 3035,
55+
"auto_identify_epsg": true
56+
}
57+
},
58+
{
59+
"check_ident": "qc_tool.vector.import2pg",
60+
"required": true
61+
},
62+
{
63+
"check_ident": "qc_tool.vector.inspire",
64+
"required": false,
65+
"parameters": {
66+
"layers": ["rpz"]
67+
}
68+
},
69+
{
70+
"check_ident": "qc_tool.vector.unique",
71+
"required": false,
72+
"parameters": {
73+
"layers": ["rpz"],
74+
"unique_keys": ["id"]
75+
}
76+
},
77+
{
78+
"check_ident": "qc_tool.vector.enum",
79+
"required": false,
80+
"parameters": {
81+
"layers": ["rpz"],
82+
"exclude_column_name": "ua",
83+
"column_defs": [["nodata_12", [0, 1]],
84+
["nodata_18", [0, 1]],
85+
["maes_1_12", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]],
86+
["maes_2_12", [0,
87+
11, 12, 13, 14,
88+
21, 22, 23,
89+
31, 32, 33 , 34, 35,
90+
41, 42,
91+
51, 52,
92+
61, 62, 63,
93+
71, 72,
94+
81, 82,
95+
91, 92,
96+
100]],
97+
["maes_3_12", [0,
98+
111, 112, 121, 122, 123, 124, 131, 132, 140,
99+
211, 212, 221, 222, 231, 232, 233, 234,
100+
311, 312, 321, 322, 331, 332, 341, 342, 350,
101+
410, 421, 422,
102+
511, 512, 520,
103+
610, 621, 622, 631, 632, 633,
104+
710, 721, 722, 731, 732, 733,
105+
811, 812, 813, 821, 822,
106+
911, 912, 913,
107+
921, 922, 923, 924,
108+
1000]],
109+
["maes_4_12", [0,
110+
1111, 1112, 1113,
111+
1120, 1210, 1220, 1230, 1240,
112+
1310, 1320,
113+
1400,
114+
2110, 2120, 2210, 2220, 2310, 2320, 2330, 2340,
115+
3110, 3120, 3210, 3220, 3310, 3320, 3410, 3420, 3500,
116+
4100, 4210, 4220,
117+
5110, 5120, 5200,
118+
6100, 6210, 6220, 6310, 6320, 6330,
119+
7100, 7210, 7220, 7310, 7320, 7330,
120+
8110, 8120, 8130, 8210, 8220,
121+
9110, 9120, 9130,
122+
9210, 9220, 9230, 9240,
123+
10000]],
124+
["maes_1_18", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]],
125+
["maes_2_18", [0,
126+
11, 12, 13, 14,
127+
21, 22, 23,
128+
31, 32, 33 , 34, 35,
129+
41, 42,
130+
51, 52,
131+
61, 62, 63,
132+
71, 72,
133+
81, 82,
134+
91, 92,
135+
100]],
136+
["maes_3_18", [0,
137+
111, 112, 121, 122, 123, 124, 131, 132, 140,
138+
211, 212, 221, 222, 231, 232, 233, 234,
139+
311, 312, 321, 322, 331, 332, 341, 342, 350,
140+
410, 421, 422,
141+
511, 512, 520,
142+
610, 621, 622, 631, 632, 633,
143+
710, 721, 722, 731, 732, 733,
144+
811, 812, 813, 821, 822,
145+
911, 912, 913,
146+
921, 922, 923, 924,
147+
1000]],
148+
["maes_4_18", [0,
149+
1111, 1112, 1113,
150+
1120, 1210, 1220, 1230, 1240,
151+
1310, 1320,
152+
1400,
153+
2110, 2120, 2210, 2220, 2310, 2320, 2330, 2340,
154+
3110, 3120, 3210, 3220, 3310, 3320, 3410, 3420, 3500,
155+
4100, 4210, 4220,
156+
5110, 5120, 5200,
157+
6100, 6210, 6220, 6310, 6320, 6330,
158+
7100, 7210, 7220, 7310, 7320, 7330,
159+
8110, 8120, 8130, 8210, 8220,
160+
9110, 9120, 9130,
161+
9210, 9220, 9230, 9240,
162+
10000]]]
163+
}
164+
},
165+
{
166+
"check_ident": "qc_tool.vector.nodata",
167+
"required": false,
168+
"parameters": {
169+
"layers": ["rpz"],
170+
"nodata_column_name": "nodata_2012",
171+
"nodata_value": 1,
172+
"dep_column_names": ["maes_1_12", "maes_2_12", "maes_3_12", "maes_4_12"],
173+
"dep_value": 0
174+
}
175+
},
176+
{
177+
"check_ident": "qc_tool.vector.nodata",
178+
"required": false,
179+
"parameters": {
180+
"layers": ["rpz"],
181+
"nodata_column_name": "nodata_2018",
182+
"nodata_value": 1,
183+
"dep_column_names": ["maes_1_18", "maes_2_18", "maes_3_18", "maes_4_18"],
184+
"dep_value": 0
185+
}
186+
},
187+
{
188+
"check_ident": "qc_tool.vector.change",
189+
"required": false,
190+
"parameters": {
191+
"layers": ["rpz"],
192+
"initial_code_column_name": "maes_4_12",
193+
"final_code_column_name": "maes_4_18"
194+
}
195+
},
196+
{
197+
"check_ident": "qc_tool.vector.singlepart",
198+
"required": false,
199+
"parameters": {
200+
"layers": ["rpz"]
201+
}
202+
},
203+
{
204+
"check_ident": "qc_tool.vector.geometry",
205+
"required": false,
206+
"parameters": {
207+
"layers": ["rpz"]
208+
}
209+
},
210+
{
211+
"check_ident": "qc_tool.vector.area",
212+
"required": false,
213+
"parameters": {
214+
"layers": ["rpz"],
215+
"area_column_name": "area_ha",
216+
"unit": 10000,
217+
"tolerance": 0.001
218+
}
219+
},
220+
{
221+
"check_ident": "qc_tool.vector.gap_unit",
222+
"required": false,
223+
"parameters": {
224+
"layers": ["rpz"],
225+
"boundary_unit_column_name": "du_id"
226+
}
227+
},
228+
{
229+
"check_ident": "qc_tool.vector.mmu_rpz",
230+
"required": false,
231+
"parameters": {
232+
"layers": ["rpz"],
233+
"area_column_name": "area_ha",
234+
"area_ha": 0.5,
235+
"code_column_name": "MAES_4",
236+
"urban_feature_codes": [1111, 1112, 1113, 1120, 1210, 1220, 1230, 1240, 1310, 1320, 1400],
237+
"linear_feature_codes": [1210, 1220, 6220, 9110, 9120],
238+
"exception_comments": ["Area size exception (inside RZ_AoI / outside UA Core Region)",
239+
"Area size exception (at RZ_AoI / UA Core Region boundary)"]
240+
}
241+
},
242+
{
243+
"check_ident": "qc_tool.vector.mmw",
244+
"required": false,
245+
"parameters": {
246+
"layers": ["rpz"],
247+
"code_column_name": null,
248+
"filter_code": null,
249+
"mmw": 10.0
250+
}
251+
},
252+
{
253+
"check_ident": "qc_tool.vector.overlap",
254+
"required": false,
255+
"parameters": {
256+
"layers": ["rpz"]
257+
}
258+
},
259+
{
260+
"check_ident": "qc_tool.vector.neighbour_rpz",
261+
"required": false,
262+
"parameters": {
263+
"layers": ["rpz"],
264+
"code_column_name": "MAES_4",
265+
"exception_comments": ["Braided river",
266+
"Different water levels",
267+
"Flooded area"]
268+
}
269+
}
270+
]
271+
}

src/qc_tool/common.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747

4848
PRODUCT_FILENAME_REGEX = re.compile(r"[a-z].*\.json$")
4949

50+
ANNOUNCEMENT_FILENAME = "announcement.txt"
51+
5052
FAILED_ITEMS_LIMIT = 10
5153

5254
UNKNOWN_REFERENCE_YEAR_LABEL = "ury"
@@ -318,6 +320,7 @@ def setup_config():
318320
# Parameters consumed by frontend.
319321

320322
config["frontend_db_path"] = Path(environ.get("FRONTEND_DB_PATH", "/var/lib/qc_tool/frontend.sqlite3"))
323+
config["announcement_path"] = config["frontend_db_path"].with_name(ANNOUNCEMENT_FILENAME)
321324
config["submission_dir"] = environ.get("SUBMISSION_DIR", "")
322325
if config["submission_dir"] == "":
323326
config["submission_dir"] = None

src/qc_tool/frontend/dashboard/helpers.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
from datetime import datetime
77
from shutil import copyfile
88
from shutil import copytree
9-
from zipfile import ZipFile
109

10+
from qc_tool.common import CONFIG
1111
from qc_tool.common import compose_job_dir
1212
from qc_tool.common import get_product_descriptions
1313
from qc_tool.common import JOB_INPUT_DIRNAME
@@ -19,6 +19,19 @@
1919
logger = logging.getLogger(__name__)
2020

2121

22+
def get_announcement_message():
23+
"""
24+
Reads announcement message from the announcement.txt file.
25+
"""
26+
try:
27+
if CONFIG["announcement_path"].is_file():
28+
return CONFIG["announcement_path"].read_text()
29+
else:
30+
return None
31+
except:
32+
return None
33+
34+
2235
def find_product_description(product_ident):
2336
"""
2437
given a product ident, retrieve the product description.

0 commit comments

Comments
 (0)