Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Views: 18655
1
import json
2
3
import pandas as pd
4
import qgrid
5
from pbx_gs_python_utils.utils import Http
6
from pbx_gs_python_utils.utils.Files import Files
7
from pbx_gs_python_utils.utils.Json import Json
8
9
10
class OSS_GSheet_Data:
11
def __init__(self):
12
self.url = 'https://pm27fqb78d.execute-api.eu-west-2.amazonaws.com/Prod/gsheets/participants'
13
self._data = None
14
#self.data_folder = Files.path_combine(__file__, '../../../../data/_sync/json')
15
16
def get_data(self,reload=False):
17
if reload or self._data is None :
18
raw_data = Http.GET(self.url)
19
self._data= json.loads(raw_data)
20
return self._data
21
22
def data_participants_onsite(self,reload=False):
23
return self.get_data(reload).get('onsite')
24
#data = Json.load_json(Files.path_combine(self.data_folder, 'participants_onsite.json'))
25
#return list(data.values())
26
27
def data_participants_remote(self):
28
return self.get_data().get('remote')
29
# data = Json.load_json(Files.path_combine(self.data_folder, 'participants_remote.json'))
30
# return list(data.values())
31
32
def df_participants_onsite(self,columns=None,reload=False):
33
df = pd.DataFrame(self.data_participants_onsite(reload), columns=columns)
34
# fix data
35
df = df.fillna('')
36
if 'Days' in df.columns:
37
df['Days'] = df['Days' ].apply(lambda x: x.replace(' ', '').split(','))
38
if 'Nights' in df.columns:
39
df['Nights'] = df['Nights'].apply(lambda x: x.replace(' ', '').split(','))
40
df['Nights'] = df['Nights'].apply(lambda x: x if x != [''] else [])
41
return df
42
43
def df_participants_remote(self):
44
df = pd.DataFrame(self.data_participants_remote())
45
return df
46
47
def qgrid_participants_onsite(self,reload=False):
48
df_onsite = self.df_participants_onsite(reload)
49
return qgrid.show_grid(df_onsite)
50