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