Example #1
0
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')
Example #2
0
    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
Example #3
0
    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
Example #4
0
 def get(self, name):
     return {
         'course':
         [course.json() for course in CourseModel.find_by_name(name)]
     }
Example #5
0
 def get(self, name):
     course = CourseModel.find_by_name(name)
     if course:
         return course.json()
     return {'message': 'Course not found.'}, 404
Example #6
0
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)