def goal_list(request, weekly=False): """ List current goals, or create a new one """ weekly_param = request.GET.get('weekly','false') weekly = weekly or weekly_param != 'false' try: year = int(request.GET.get('year', 0)) except ValueError as e: year = 0 if year is not 0: month = int(request.GET.get('month', 0)) day = int(request.GET.get('day', 0)) today = date(year, month, day) else: today = False if request.method == 'GET': user = request.user.id goals = Goal.getGoals(user=user, weekly=weekly, day=today) serializer = GoalSerializer(goals, many=True) return JSONResponse(serializer.data) elif request.method == 'POST': data = JSONParser().parse(request) data['owner'] = request.user.id if not data['date']: data['date'] = today.isoformat() if today else date.today().isoformat() serializer = GoalSerializer(data=data, partial=True) if serializer and serializer.is_valid(): serializer.save() return JSONResponse(serializer.data, status=status.HTTP_201_CREATED) return JSONResponse(serializer.errors, status=400)