def idid(): form = IDidExerciseForm(request.form) # get the exercise date if(form.date_exercise_type.data == 'yesterday'): date_exercise = DateHelper.get_yesterday() else: date_exercise = DateHelper.string_to_date(form.date_exercise.data) if date_exercise > DateHelper.get_current_date().date(): flash('Exercise date can not be newer than today') return render_template('exercises/i_did.html', form=form) if g.user.alreadyDidExercise(date_exercise): flash('You already did exercise on this date: %s' % date_exercise) return render_template('exercises/i_did.html', form=form) # create a new object to exercise exercise = Exercise(date_exercise, g.user.id) # insert the record in our db and commit it db.session.add(exercise) db.session.commit() # display a message to the user flash('Keep fitness and do it again tomorrow') # redirect user to the 'index' method of the user module return redirect(url_for('users.index'))
def get_all_months_as_dictionary(): # get all months a user have done exercises all_months = db.session.query(label('year', extract('year', Exercise.date)), label('month', extract('month', Exercise.date)))\ .group_by('year', 'month')\ .order_by('year desc, month desc')\ .filter(Exercise.user_id == g.user.id)\ .all() # convert list result to list dates all_months_as_date = [DateHelper.string_to_date(('%i/%i/1' % (year, month))) for (year, month) in all_months] # convert list to dictionary return [(DateHelper.generate_id_by_month_year(item), DateHelper.date_to_year_month_string(item)) for item in all_months_as_date]
def getTotalExercisesCurrentMonth(self): current_month = DateHelper.current_month() return len(db.session.query(Exercise.id) .filter(Exercise.user_id == self.id) .filter(extract('month', Exercise.date) == current_month) .all())
def mark_exercise_by_email(email_token): date_exercise = DateHelper.get_yesterday() user = User.query.filter_by(email_exercise_token=email_token).first() if(user is None): flash('Operation not allowed') return abort(404) if user.alreadyDidExercise(date_exercise): flash('You already did exercise on this date: %s' % date_exercise) return redirect(url_for('index')) # create a new object to exercise exercise = Exercise(date_exercise, user.id) # insert the record in our db and commit it db.session.add(exercise) db.session.commit() # display a message to the user flash('Keep fitness and do it again tomorrow') return redirect(url_for('index'))
def get_all_users_want_receive_mail_notification(): yesterday = DateHelper.get_yesterday() # get all users want to receive email notification # and didn't do exercise yesterday users = db.session.query(User)\ .filter(User.receive_email_notification)\ .filter(User.exercises.any(Exercise.date == yesterday) == False)\ .all() return users
def getTotalExercisesCurrentWeek(self): start_end_week = DateHelper.get_start_end_days_current_week() start_week = start_end_week[0] end_week = start_end_week[1] return len(db.session.query(Exercise.id) .filter(Exercise.user_id == self.id) .filter(Exercise.date >= start_week) .filter(Exercise.date <= end_week) .all())
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)