Skip to content

Commit 4c5a388

Browse files
authored
Merge pull request #638 from mapswipe/update-organisation-name-script
Update organisation name script
2 parents 03dc36f + ca59fda commit 4c5a388

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import sys
2+
3+
from mapswipe_workers.auth import firebaseDB
4+
from mapswipe_workers.definitions import logger
5+
6+
7+
def get_all_projects(organization_name: str):
8+
"""Get the project ids for active and inactive projects in Firebase DB."""
9+
10+
project_id_list = []
11+
fb_db = firebaseDB()
12+
13+
# we neglect private projects here
14+
# since there are no projects set up in production yet
15+
status_list = ["active", "inactive"]
16+
17+
for status in status_list:
18+
logger.info(f"query {status} projects")
19+
projects = (
20+
fb_db.reference("v2/projects/")
21+
.order_by_child("status")
22+
.equal_to(status)
23+
.get()
24+
)
25+
for project_id, data in projects.items():
26+
if data.get("requestingOrganisation", None) == organization_name:
27+
project_id_list.append(project_id)
28+
29+
logger.info(f"got {len(project_id_list)} project from firebase.")
30+
logger.info(f"projects: {project_id_list}")
31+
return project_id_list
32+
33+
34+
def update_projects(
35+
project_id_list, old_organization_name: str, new_organization_name: str
36+
):
37+
fb_db = firebaseDB()
38+
if len(project_id_list) < 1:
39+
logger.info("there are no matching projects.")
40+
else:
41+
for i, project_id in enumerate(project_id_list):
42+
fb_db.reference(f"v2/projects/{project_id}/requestingOrganisation").set(
43+
new_organization_name
44+
)
45+
logger.info(
46+
f"#{i} set organization name '{new_organization_name}'"
47+
f"for project '{project_id}'"
48+
)
49+
50+
project_name = fb_db.reference(f"v2/projects/{project_id}/name").get()
51+
new_project_name = project_name.replace(
52+
old_organization_name, new_organization_name
53+
)
54+
fb_db.reference(f"v2/projects/{project_id}/organizationName").set(
55+
new_project_name
56+
)
57+
logger.info(
58+
f"#{i} set project name '{new_project_name}' for project '{project_id}'"
59+
)
60+
61+
62+
if __name__ == "__main__":
63+
"""change_organization_name_for_projects.py old_name new_name"""
64+
old_organization_name = sys.argv[1]
65+
new_organization_name = sys.argv[2]
66+
project_id_list = get_all_projects(old_organization_name)
67+
update_projects(project_id_list, old_organization_name, new_organization_name)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
update projects set organization_name = 'Arizona State University' where organization_name = 'ASU';
2+
update projects set name = replace(name, 'ASU', 'Arizona State University') where organization_name = 'Arizona State University';

0 commit comments

Comments
 (0)