Example #1
0
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'))
Example #2
0
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]
Example #3
0
	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())
Example #4
0
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
Example #6
0
	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())
Example #7
0
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
Example #8
0
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)