def get_all_previous_periods(base_date): """ Returns an array of all the previous periods that are supported :param base_date: :return: """ periods = [] for flag in datecalc.PeriodTypes.Allowed_Period_Types: if flag == datecalc.PeriodTypes.Day: prev_period = base_date + timedelta(days=-1) elif flag == datecalc.PeriodTypes.Week: prev_period = base_date + timedelta(weeks=-1) elif flag == datecalc.PeriodTypes.Month: prev_period = datecalc.add_months(base_date, -1) elif flag == datecalc.PeriodTypes.Quarter: prev_period = datecalc.add_months(base_date, -3) elif flag == datecalc.PeriodTypes.Year: prev_period = datecalc.add_months(base_date, -12) periods.append( { "period": datecalc.get_period(prev_period, flag), "period_start_date": datecalc.period_start_date(prev_period, flag).isoformat(), "period_end_date": datecalc.period_end_date(prev_period, flag).isoformat() } ) return periods
def collect_ga_data(base_date): data = [] metrics_list = get_ga_metrics_list() period_defs = [ { "period": datecalc.get_period(base_date, datecalc.PeriodTypes.Week), "period_start_date": datecalc.period_start_date(base_date, datecalc.PeriodTypes.Week).isoformat(), "period_end_date": datecalc.period_end_date(base_date, datecalc.PeriodTypes.Week).isoformat(), "period_type": "w" } ] service = get_ga_service( client_email=get_application_email_address(), private_key=get_application_private_key() ) for period_def in period_defs: period_data = collect_period_ga_data( service=service, metric_def_list=metrics_list, period_def=period_def ) for item in period_data: data.append(item) return data