Skip to content

Commit 22156bf

Browse files
committed
add script to archive old firebase projects
1 parent 8b9a3ae commit 22156bf

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
from mapswipe_workers import auth
2+
from mapswipe_workers.definitions import logger
3+
4+
def get_old_projects():
5+
"""
6+
Get all projects from Firebase which have been created
7+
before we switched to v2.
8+
"""
9+
fb_db = auth.firebaseDB()
10+
ref = fb_db.reference("projects")
11+
projects = ref.get()
12+
logger.info('got old projects from firebase')
13+
return projects
14+
15+
16+
def move_project_data_to_v2(project_id, project_data):
17+
"""
18+
Copy project information from old path to v2/projects in Firebase.
19+
Add status=archived attribute.
20+
"""
21+
project_data['status'] = 'archived'
22+
fb_db = auth.firebaseDB()
23+
fb_db.reference("v2/projects/{0}".format(project_id)).set(project_data)
24+
fb_db.reference("projects/{0}".format(project_id)).set({})
25+
logger.info(f'moved old project to v2: {project_id}')
26+
27+
28+
def delete_old_groups(project_id):
29+
'''
30+
Delete old groups for a project
31+
'''
32+
fb_db = auth.firebaseDB()
33+
fb_db.reference("groups/{0}".format(project_id)).set({})
34+
logger.info(f'deleted groups for: {project_id}')
35+
36+
37+
def delete_other_old_data():
38+
'''
39+
Delete old imports, results, announcements in Firebase
40+
'''
41+
fb_db = auth.firebaseDB()
42+
fb_db.reference("imports").set({})
43+
fb_db.reference("results").set({})
44+
fb_db.reference("announcements").set({})
45+
logger.info(f'deleted old results, imports, announcements')
46+
47+
48+
def archive_old_projects():
49+
'''
50+
Run workflow to archive old projects.
51+
First get all old projects.
52+
Move project data to v2/projects in Firebase and
53+
set status=archived.
54+
Then delete all groups for a project.
55+
Finally, delete old results, imports and announcements.
56+
We don't touch the old user data in this workflow.
57+
'''
58+
59+
projects = get_old_projects()
60+
for project_id in projects.keys():
61+
project_data = projects[project_id]
62+
move_project_data_to_v2(project_id, project_data)
63+
delete_old_groups(project_id)
64+
65+
delete_other_old_data()
66+
67+
archive_old_projects()

0 commit comments

Comments
 (0)