def create_course(): if request.method == "POST": name = request.form.get('coursename') city = request.form.get('city') state = request.form.get('state') slope = request.form.get('slope') course = CourseModel(name, city, state, slope) if course.find_by_name(name): return {'message': f'A course named {name} already exists.'} course.save_to_db() distance_list = [] handicap_list = [] par_list = [] for i in range(1, 19): distance_str = "h" + str(i) + "d" handicap_str = "h" + str(i) + "h" par_str = "h" + str(i) + "p" distance_list.append(int(request.form.get(distance_str))) handicap_list.append(int(request.form.get(handicap_str))) par_list.append(int(request.form.get(par_str))) hole = HoleModel(course.id, i, par_list[i - 1], handicap_list[i - 1], distance_list[i - 1]) hole.save_to_db() course_dict = { 'name': name, 'city': city, 'state': state, 'slope': slope, 'distance': { 'hole_distances': distance_list, 'front_9_distance': sum(distance_list[:9]), 'back_9_distance': sum(distance_list[9:]), 'total_distance': sum(distance_list) }, 'handicap': { 'hole_handicaps': handicap_list, 'front_9_handicap': sum(handicap_list[:9]), 'back_9_handicap': sum(handicap_list[9:]), 'total_handicap': sum(handicap_list) }, 'par': { 'hole_pars': par_list, 'front_9_par': sum(par_list[:9]), 'back_9_par': sum(par_list[9:]), 'total_par': sum(par_list) } } return render_template('course_scorecard.jinja2', course_dict=course_dict) return render_template('blank_scorecard.jinja2')
def get(cls, name: str = None, course_id: int = None): course = CourseModel.find_by_name(name) if course_id: course = CourseModel.find_by_id(course_id) if course: return course_schema.dump(course), 200 if course: return {"course_intances": course_list_schema.dump(course)}, 200 return {"message": gettext("course_not_found")}, 404
def post(self, name): if CourseModel.find_by_name(name): return { 'message': f"A course with name '{name}' is already entered into the database." }, 400 data = Course.parser.parse_args() course = CourseModel(name, **data) try: course.save_to_db() except: return { 'message': 'An error occurred inserting the course into the database.' }, 500 return course.json(), 201
def get(self, name): return { 'course': [course.json() for course in CourseModel.find_by_name(name)] }
def get(self, name): course = CourseModel.find_by_name(name) if course: return course.json() return {'message': 'Course not found.'}, 404
def course_scorecard(name): if name == 'new': return redirect(url_for('create_course')) course = CourseModel.find_by_name(name) course_details = course.json() _id = course_details['id'] city = course_details['city'] state = course_details['state'] slope = course_details['slope'] par_list = [] distance_list = [] handicap_list = [] for i in range(1, 19): hole = HoleModel.find_by_course_hole(_id, i) hole_details = hole.json() hole_par = hole_details['par'] hole_distance = hole_details['distance'] hole_handicap = hole_details['handicap'] par_list.append(hole_par) distance_list.append(hole_distance) handicap_list.append(hole_handicap) if request.method == "POST": course = CourseModel.find_by_name(name) course_details = course.json() course_name = name course_id = course_details['id'] round_date = request.form.get('round_date') round_datetime = datetime.strptime(round_date, '%Y-%m-%d') round_datetime = round_datetime.astimezone(pytz.utc) round_string = round_datetime.strftime('%Y%m%d%H%M%S') enter_datetime = datetime.now(tz=pytz.utc) enter_string = enter_datetime.strftime('%Y%m%d%H%M%S') for p in range(1, 5): front_9_count = back_9_count = 0 round_scores = [] golfer_string = "golfer_" + str(p) name = request.form.get(golfer_string) player = GolferModel.find_by_name(name) if player: details = player.json() _id = details['id'] for h in range(1, 19): hole_string = "p" + str(p) + "_hole_" + str(h) + "_score" hole_score = request.form.get(hole_string) round_scores.append(hole_score) score = round_scores[h - 1] if score == '': score = 0 else: score = int(score) if h < 10 and score != 0: front_9_count += 1 elif h >= 10 and score != 0: back_9_count += 1 player_score = ScoreModel(course_id, _id, h, score, p, round_string, enter_string) player_score.save_to_db() return redirect( url_for('round', course_name=course_name, enter_string=enter_string)) golfers_list = [golfer for golfer in GolferModel.find_all()] course_dict = { 'name': name, 'city': city, 'state': state, 'slope': slope, 'distance': { 'hole_distances': distance_list, 'front_9_distance': sum(distance_list[:9]), 'back_9_distance': sum(distance_list[9:]), 'total_distance': sum(distance_list) }, 'handicap': { 'hole_handicaps': handicap_list, 'front_9_handicap': sum(handicap_list[:9]), 'back_9_handicap': sum(handicap_list[9:]), 'total_handicap': sum(handicap_list) }, 'par': { 'hole_pars': par_list, 'front_9_par': sum(par_list[:9]), 'back_9_par': sum(par_list[9:]), 'total_par': sum(par_list) } } return render_template('course_scorecard.jinja2', course_dict=course_dict, golfers_list=golfers_list)