def get(self, request, supplement_uuid):
supplement = get_object_or_404(Supplement, uuid=supplement_uuid, user=request.user)
user = request.user
serializer = SupplementLogRequestParametersSerializer(data=request.query_params)
serializer.is_valid(raise_exception=True)
params = serializer.validated_data
start_date = params['start_date']
end_date = get_current_userdate(user)
supplement_events = SupplementLog.objects.filter(user=user, supplement=supplement, time__date__gte=start_date)
builder = SupplementEventsDataframeBuilder(supplement_events)
if params['frequency'] == 'daily':
# most of the time the dataframe contains a lot of supplements, here we are only picking one
try:
series = builder.get_flat_daily_dataframe()[supplement.name]
except KeyError:
# key error for no data if the supplement was never taken during this time
series = pd.Series()
if params['complete_date_range_in_daily_frequency']:
series = force_start_end_date_to_series(user, series, start_date, end_date)
else:
df = builder.build_dataframe()
series = df['Quantity']
json_data = series.to_json(date_format='iso')
data = json.loads(json_data)
return Response(data)
评论列表
文章目录