Skip to content

Commit 71d64ec

Browse files
committed
Merge branch 'dev' of github.com:mapswipe/python-mapswipe-workers into dev
2 parents f3ef919 + 14763b2 commit 71d64ec

File tree

7 files changed

+36
-32
lines changed

7 files changed

+36
-32
lines changed

README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ The MapSwipe Back-End consists of a number of components:
1010
3. Manager Dashboard
1111
5. API
1212

13-
Please refer to the documentation for more information: https://mapswipe-workers.readthedocs.io/en/dev/
13+
Please refer to the documentation for more information: https://mapswipe-workers.readthedocs.io/en/
1414

1515

1616
## Ressources
@@ -26,7 +26,6 @@ Please refer to the documentation for more information: https://mapswipe-workers
2626

2727
This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details
2828

29-
3029
## Authors
3130

3231
* **Benjamin Herfort** - HeiGIT - [Hagellach37](https://github.com/Hagellach37)
@@ -35,7 +34,6 @@ This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENS
3534

3635
See also the list of [contributors](contributors.md) who participated in this project.
3736

38-
3937
## Acknowledgements
4038

41-
> Humanitarian organizations can't help people if they can't find them.
39+
* Humanitarian organizations can't help people if they can't find them.

postgres/scripts/v1_to_v2/copy_from_csv.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
USER="mapswipe_workers"
44
NAME="mapswipe"
5-
#tasks users results
6-
for entity in users results
5+
6+
for entity in projects groups tasks users results
77
do
88
psql -h localhost -p 5432 -U ${USER} -d ${NAME} -a -f copy_${entity}_from_csv.sql
99
done
10+
11+
# Commands if docker postgres port is not exposed:
1012
# docker cp ${entity}.csv mapswipe_postgres:${entity}.csv
1113
# docker cp copy_${entity}_from_csv.sql mapswipe_postgres:copy_${entity}_from_csv.sql
1214
# docker exec -t mapswipe_postgres psql -U ${USER} -d ${NAME} -a -f copy_${entity}_from_csv.sql

postgres/scripts/v1_to_v2/copy_groups_from_csv.sql

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,16 @@ UPDATE v1_groups
2525
SET progress = 100
2626
WHERE required_count <= 0;
2727

28+
UPDATE v1_groups
29+
SET group_id = cast(v1_group_id as varchar);
30+
31+
UPDATE groups
32+
SET (finished_count, required_count, progress) =
33+
(SELECT finished_count, required_count, progress
34+
FROM v1_groups
35+
WHERE groups.group_id = v1_groups.group_id
36+
AND groups.project_id = v1_groups.project_id);
37+
2838
-- Insert or update data of temp table to the permant table.
2939
-- Note that the special excluded table is used to
3040
-- reference values originally proposed for insertion
@@ -48,9 +58,4 @@ SELECT
4858
project_type_specifics
4959
FROM
5060
v1_groups
51-
ON CONFLICT (project_id, group_id) DO UPDATE
52-
SET
53-
finished_count = excluded.finished_count,
54-
required_count = excluded.required_count,
55-
progress = excluded.progress
56-
;
61+
ON CONFLICT (project_id, group_id) DO NOTHING;

postgres/scripts/v1_to_v2/copy_projects_from_csv.sql

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,9 @@ SET status = 'inactive'
4545
WHERE status = '3';
4646

4747
-- Extract geometry (kml) from info attribute (json) of imports table.
48-
UPDATE v1_imports i1
49-
SET kml = (SELECT info->'info'->>'kml' as kml FROM v1_imports i2 WHERE i1.import_id = i2.import_id);
50-
5148
-- Get only the geometry (Polygone or MultiPolygon) of the kml string.
5249
UPDATE v1_imports
53-
SET kml = substring(kml FROM '<Polygon>.*<\/Polygon>|<MultiPolygon>.*<\/MultiPolygon>');
50+
SET kml = substring(info->'info'->>'kml' FROM '<Polygon>.*<\/Polygon>|<MultiPolygon>.*<\/MultiPolygon>');
5451

5552
UPDATE v1_projects
5653
SET kml = v1_imports.kml
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
-- Export v1 MapSwipe data to csv.
22
-- Rename attributes to conform to v2.
33
\copy (SELECT user_id, username FROM users) TO users.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
4-
\copy (SELECT project_id, task_id, user_id, timestamp as "timeint", info FROM results WHERE project_id = 5519) TO results.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
4+
\copy (SELECT project_id, task_id, user_id, timestamp as "timeint", info FROM results WHERE project_id = 5549) TO results.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
-- Export v1 MapSwipe data to csv.
22
-- Rename attributes to conform to v2.
3-
\copy (SELECT archive, image, importkey as "import_id", isfeatured AS "is_featured", lookfor AS "look_for", name, progress, projectdetails AS "project_details", project_id, project_type, state AS "status", info AS "project_type_specifics" FROM projects WHERE project_id = 5519) TO projects.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
4-
\copy (SELECT i.import_id, i.info FROM imports i, projects p WHERE p.project_id = 5519 AND p.importkey = i.import_id) TO imports.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
5-
\copy (SELECT project_id, group_id, count as "number_of_tasks", completedcount as "finished_count", verificationcount as "required_count", info as "project_type_specifics" FROM groups WHERE project_id = 5519 ) TO groups.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
6-
\copy (SELECT project_id, group_id, task_id, info as "project_type_specifics" FROM tasks WHERE project_id = 5519) TO tasks.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
3+
\copy (SELECT archive, image, importkey as "import_id", isfeatured AS "is_featured", lookfor AS "look_for", name, progress, projectdetails AS "project_details", project_id, project_type, state AS "status", info AS "project_type_specifics" FROM projects WHERE project_id in (select project_id from results group by project_id) AND project_id = 5549) TO projects.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
4+
\copy (SELECT i.import_id, i.info FROM imports i , projects p WHERE import_id in (select importkey as import_id from projects) AND p.project_id = 5549 AND p.importkey = i.import_id) TO imports.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
5+
\copy (SELECT project_id, group_id, count as "number_of_tasks", completedcount as "finished_count", verificationcount as "required_count", info as "project_type_specifics" FROM groups WHERE project_id in (select project_id from results group by project_id) AND project_id = 5549 ) TO groups.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
6+
\copy (SELECT project_id, group_id, task_id, info as "project_type_specifics" FROM tasks WHERE project_id in (select project_id from results group by project_id) AND project_id = 5549) TO tasks.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);

postgres/scripts/v1_to_v2/generate_copy_to_csv.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,37 @@
22

33

44
def get_query(project_ids):
5+
clause = 'WHERE project_id in (select project_id from results group by project_id)'
6+
clause_import = 'WHERE import_id in (select importkey as import_id from projects)'
57
if project_ids is None:
6-
clause = ''
7-
clause_import = ''
8+
pass
89
elif len(project_ids) == 1:
9-
clause = f'WHERE project_id = {project_ids[0]}'
10-
clause_import = f'WHERE p.project_id = {project_ids[0]} AND p.importkey = i.import_id'
10+
clause = f'{clause} AND project_id = {project_ids[0]}'
11+
clause_import = f', projects p {clause_import} AND p.project_id = {project_ids[0]} AND p.importkey = i.import_id'
1112
else:
12-
clause = f'WHERE project_id = {project_ids[0]}'
13-
clause_import = f'WHERE p.project_id = {project_ids[0]} AND p.importkey = i.import_id'
13+
clause = f'{clause} AND project_id = {project_ids[0]}'
14+
clause_import = f', projects p {clause_import} AND p.project_id = {project_ids[0]} AND p.importkey = i.import_id'
1415
for project_id in project_ids[1:]:
1516
clause = clause + f' OR project_id = {project_id}'
1617
clause_import = clause + f' OR p.project_id = {project_id} AND p.importkey = i.import_id'
1718

1819
query = f'-- Export v1 MapSwipe data to csv.\n' \
1920
f'-- Rename attributes to conform to v2.\n' \
2021
f'\copy (SELECT archive, image, importkey as "import_id", isfeatured AS "is_featured", lookfor AS "look_for", name, progress, projectdetails AS "project_details", project_id, project_type, state AS "status", info AS "project_type_specifics" FROM projects {clause}) TO projects.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);\n' \
21-
f'\copy (SELECT i.import_id, i.info FROM imports i, projects p {clause_import}) TO imports.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);\n' \
22-
f'\copy (SELECT project_id, group_id, count as "number_of_tasks", completedcount as "finished_count", verificationcount as "required_count", info as "project_type_specifics" FROM groups {clause} ) TO groups.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);\n' \
22+
f'\copy (SELECT i.import_id, i.info FROM imports i {clause_import}) TO imports.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);\n' \
23+
f'\copy (SELECT project_id, group_id as "v1_group_id", count as "number_of_tasks", completedcount as "finished_count", verificationcount as "required_count", info as "project_type_specifics" FROM groups {clause} ) TO groups.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);\n' \
2324
f'\copy (SELECT project_id, group_id, task_id, info as "project_type_specifics" FROM tasks {clause}) TO tasks.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);\n'
2425
return query
2526

2627

2728
def get_result_query(project_ids):
29+
clause = 'WHERE project_id in (SELECT project_id FROM projects GROUP BY project_id)'
2830
if project_ids is None:
29-
clause = ''
31+
pass
3032
elif len(project_ids) == 1:
31-
clause = f'WHERE project_id = {project_ids[0]}'
33+
clause = f'{clause} AND project_id = {project_ids[0]}'
3234
else:
33-
clause = f'WHERE project_id = {project_ids[0]}'
35+
clause = f'{clause} AND project_id = {project_ids[0]}'
3436
for project_id in project_ids[1:]:
3537
clause = clause + f' OR project_id = {project_id}'
3638

0 commit comments

Comments
 (0)