コード例 #1
0
    def post(self):

        data = Score.parser.parse_args()

        score = ScoreModel(**data)

        try:
            score.save_to_db()
        except:
            return {"message": "An error occurred inserting the score."}, 500

        return score.json(), 201
コード例 #2
0
ファイル: score.py プロジェクト: willzzini/challenge-rest-api
    def post(self, type_risk):
        if ScoreModel.find_by_name(type_risk):
            return {
                'message':
                "A score with type_risk '{}' \
                    already exists.".format(type_risk)
            }, 400

        score = ScoreModel(type_risk)
        try:
            score.save_to_db()
        except:
            return {"message": "An error occurred creating the score."}, 500

        return score.json(), 201
コード例 #3
0
    def post(cls, user_id):
        data = cls.parser.parse_args()

        names = (score.name for score in ScoreModel.find_by_user_id(user_id))

        if data['name'] not in names:
            new_score = ScoreModel(data['name'],
                                   user_id,
                                   data['score'],
                                   public=data['public'],
                                   description=data['description'])
            new_score.save_to_db()

            return {
                'message': 'Successfully added new score.',
                'content': new_score.json()
            }
        return {
            'message':
            f'Name \"{data["name"]}\" was already used, try different name.',
        }, 409
コード例 #4
0
ファイル: app.py プロジェクト: pbiddyindacity/golf
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)
コード例 #5
0
     previousQueueItems = filter(
         lambda x: x.timeRequested < previousWeekStart,
         userQueueItems[userID])
     currentQuantity = 0
     unfulfilledQuantity = 0
     for queueItem in newQueueItems:
         currentQuantity += queueItem.request.quantity
     for queueItem in previousQueueItems:
         unfulfilledQuantity += queueItem.quantity
     unfulfilledQuantity += currentQuantity
     requested[userID] += unfulfilledQuantity
     score = ScoreModel.find_by_user_and_categoryType(
         userID, categoryTypeID)
     if not score:
         score = ScoreModel(userID, categoryTypeID)
         score.save_to_db()
     alpha = categoryType.price * currentQuantity
     beta = categoryType.price * unfulfilledQuantity * category.urgency
     u = 0.5 * (0.5 * currentQuantity * categoryType.price +
                score.regret + alpha + score.temporalRegret +
                beta)
     newRegret = max(score.regret + alpha - u, 0)
     newTemporalRegret = max(score.temporalRegret + beta - u, 0)
     score.regret = newRegret
     score.temporalRegret = newTemporalRegret
     score.save_to_db()
     utilities[userID] = u
 userArr = []
 requestedQuantitiesArr = []
 uArr = []
 for userID in utilities.keys():