-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfirebase_upload.py
More file actions
66 lines (54 loc) · 2.1 KB
/
firebase_upload.py
File metadata and controls
66 lines (54 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import json
import os
from base64 import b64decode
import firebase_admin
from firebase_admin import firestore, credentials
with open('geschichte.json', 'r', encoding='utf-8') as jsonFile:
jsonStr = jsonFile.read()
storyIn = json.loads(jsonStr)
with open('erlebnisse.json', 'r', encoding='utf-8') as jsonFile:
jsonStr = jsonFile.read()
erlebnisse = json.loads(jsonStr)
with open('gendering.json', 'r', encoding='utf-8') as jsonFile:
jsonStr = jsonFile.read()
gendering = json.loads(jsonStr)
screens = {}
#Transform lists into dictionaries for firebase-upload
for i in range(len(storyIn['screens'])):
_screen = {}
for key in storyIn['screens'][i].keys():
if key not in ['number', 'text']:
_map = {}
for j,value in enumerate(storyIn['screens'][i][key]):
#Use only strings for compatability to json/firebase
_map[str(j)] = str(value)
_screen[key] = _map
elif key == 'text':
_screen[key] = storyIn['screens'][i][key]
screens[str(storyIn['screens'][i]['number'])] = _screen
extraTags = ['name','zusammenfassung']
data = {'screens': screens}
for key in extraTags:
data[key] = storyIn[key]
#From here on we actually upload the data to firebase
#Vrite enviormental variable to file - thank you Vincent!
with open('hundetage_key.json', 'w') as fd:
print(b64decode(os.environ['FIREBASE_KEY']).decode('utf-8'), file=fd)
#Authenticate via service user
cred = credentials.Certificate('hundetage_key.json')
firebase_admin.initialize_app(cred)
db = firestore.client()
#Update screens
storyRef = db.collection('abenteuer').document(storyIn['name'])
storyRef.update(data)
#Update story version
versionRef = db.collection('general_data').document('firebase_versions')
versions = versionRef.get().to_dict()
versions[storyIn['name']] = storyIn['version']
versionRef.update(versions)
#Update Erlebnisse
erlebnisseRef = db.collection('general_data').document('erlebnisse')
erlebnisseRef.update(erlebnisse)
#Update Gendering Data
genderingRef = db.collection('general_data').document('gendering')
genderingRef.update(gendering)