def get_exercises_by_month(date_search): date_selected = DateHelper.generated_id_by_month_year_to_date(date_search) user_has_exercises = db.session.query(exists().where(Exercise.user_id == g.user.id)).scalar() if not user_has_exercises: flash('You don\'t have any exercises registered') return [] exercises = db.session.query(Exercise)\ .order_by(Exercise.date)\ .filter( Exercise.user_id == g.user.id,\ extract('month', Exercise.date) == date_selected.month,\ ).all() return exercises
def total_on_week_by_month(): form = TotalOnWeekByMonthForm(request.form) # set all months as options of SELECT element on the form form.months.choices = get_all_months_as_dictionary() # when is a POST action if form.validate_on_submit(): date_selected = DateHelper.generated_id_by_month_year_to_date(form.months.data) # get the total exercises a user have done per week on a selected month results = db.session.query(extract('week', Exercise.date).label('week'), func.count(Exercise.date).label('total'))\ .group_by(extract('week', Exercise.date))\ .order_by('week')\ .filter(extract('month', Exercise.date) == date_selected.month)\ .filter(extract('year', Exercise.date) == date_selected.year)\ .filter(Exercise.user_id == g.user.id)\ .all() # convert list to dictonary data = {('Week %i of the year' % (week)): str(total) for (week, total) in results} return render_template('exercises/total_on_week_by_month.html', form=form, data=data) return render_template('exercises/total_on_week_by_month.html', form=form)