示例#1
0
def create_view():
    json_data = request.get_json()
    if not json_data:
        return return_non_success_json(400, {'message': 'No input data provided'})

    # Validate and deserialize input
    message_schema = MessageSchema(only=('recipient_address', 'sender_address', 'subject', 'body'))
    try:
        data = message_schema.load(json_data)
    except ValidationError as err:
        return return_non_success_json(422, err.messages)

    message = Message(**data.data)
    db_session.add(message)
    db_session.flush()
    db_session.commit()

    return jsonify({'messages': 'ok'})
def render_new(filename, start, end, cut_type, client_num, title, gtv_match_id, map_number, player):
    if gtv_match_id == '':
        filename_orig = filename
    else:
        filename_orig = 'upload/' + str(gtv_match_id) + '_' + str(map_number) + '.tv_84'
    filename_cut = 'download/' + str(gtv_match_id) + '_' + str(map_number) + '_' + str(client_num) + '_' + str(
        start) + '_' + str(end) + '.dm_84'
    if gtv_match_id != '' and not os.path.exists(filename_orig):
        demo_url = app.gamestv.getDemosLinks(app.gamestv.getMatchDemosId(gtv_match_id))[int(map_number)]
        urllib.request.urlretrieve(demo_url, filename_orig)
    app.Libtech3.cut(flask_app.config['PARSERPATH'], filename_orig, filename_cut, int(start) - 2000, end, cut_type,
                     client_num)
    result = tasks.render.delay(flask_app.config['APPHOST'] + '/' + filename_cut, start,end, title, player.name if (player!=None) else None, player.country if (player!=None) else None,etl=False)
    r = Render(result.id, title, gtv_match_id, map_number, client_num, player.id if (player!=None) else None )
    db_session.add(r)
    db_session.flush()
    db_session.commit()
    return r.id
示例#3
0
def update_view():
    json_data = request.json
    if not json_data:
        return return_non_success_json(400,
                                       {'message': 'No input data provided'})

    # Validate and deserialize input
    summary_schema = ExerciseSummarySchema(only=('created_at', 'subject'))
    try:
        data = summary_schema.load(json_data)
    except ValidationError as err:
        return return_non_success_json(422, err.messages)

    summary = ExerciseSummary(**data.data)
    db_session.add(summary)
    db_session.flush()
    db_session.commit()

    return jsonify({'messages': 'ok'})
def reset_all_tasks():
    today = dt.datetime.today()
    weekday = today.weekday()
    month = today.month
    hour = today.hour
    for task in db_session.query(Task).all():
        if not task.hours:
            continue
        schedule = json.loads(task.hours.replace("\'", "\""))
        if not (schedule['month_of_year'] == '*' or month in set(
            [int(mnt) for mnt in schedule['month_of_year'].split(',')])):
            continue
        if not (schedule['day_of_week'] == '*' or weekday in set(
            [int(week) for week in schedule['day_of_week'].split(',')])):
            continue
        hours = set([int(hr) for hr in schedule['hour'].split(',')])
        if not hour in hours:
            continue
        print(task)
        task.completed = False
    db_session.flush()
    db_session.commit()
示例#5
0
 def save(self):
     if self.id is None:
         db_session.add(self)
     db_session.flush()
示例#6
0
 def remove(self):
     db_session.delete(self)
     db_session.flush()
示例#7
0
 def _flush(self):
     try:
         db_session.flush()
     except DatabaseError as e:
         db_session.rollback()
示例#8
0
def process_match(match_id, render=True, parse_players=False):
    hs = ''
    for map_num, demo_url in enumerate(
            app.gamestv.getDemosLinks(app.gamestv.getMatchDemosId(match_id))):
        try:
            parser_out = web.export_get(str(match_id), str(map_num), False,
                                        False)
        except (HTTPError, URLError):
            print('not on ftp')
            urllib.request.urlretrieve(demo_url, 'upload/demo.tv_84')
            #except HTTPError:
            arg = flask_app.config['INDEXER'] % ('demo.tv_84')
            subprocess.call([flask_app.config['PARSERPATH'], 'indexer', arg])
            try:
                web.export_save(str(match_id), map_num)
            except TimeoutError:
                print("ftp timeout")
            parser_out = web.parse_output(
                open('download/out.json', 'r').readlines())
        if parse_players:
            g_players = app.gamestv.getPlayers(match_id)
            db_players = []
            for g_player in g_players:
                p = Player.query.filter(Player.name.ilike(
                    g_player['name'])).first()
                if p == None:
                    p = Player(g_player['name'], g_player['country'])
                    db_session.add(p)
                db_players.append(p)
                g_player['db'] = p
            db_session.flush()
            db_session.commit()
            for player in parser_out['players']:
                player['db'] = None
                for g_player in g_players:
                    if player['szCleanName'].lower().find(
                            g_player['name'].lower()) != -1:
                        #todo: this will not work now
                        player['db'] = {
                            'id': g_player['db'].id,
                            'name': g_player['db'].name,
                            'country': g_player['db'].country
                        }
                        break
        max_hs_player = max(parser_out['players'], key=lambda x: x['hits'][1])
        hs += 'Most headshots on ' + parser_out['demo'][
            'szMapName'] + ': ' + max_hs_player['szCleanName'] + ' - ' + str(
                max_hs_player['hits'][1])
        hs += ' [url=' + flask_app.config['APPHOST'] + '/export/' + str(
            match_id) + '/' + str(map_num) + ']more stats...[/url]' + '\n'
        if render:
            for player in parser_out['players']:
                for spree in player['sprees']:
                    web.render_new(
                        None, spree[0]['dwTime'] - 2000,
                        2000 + spree[len(spree) - 1]['dwTime'], 1,
                        player['bClientNum'], player['szCleanName'] + 's ' +
                        str(len(spree)) + '-man kill', match_id, map_num,
                        player['db'])
                    return
    i = Render.query.filter(Render.gtv_match_id == match_id).count()
    comment = 'Rendered [url=' + flask_app.config['APPHOST'] + '/export/' + str(
        match_id) + ']' + str(i) + ' highlights[/url] from this match\n'
    comment += hs
    print(comment)
    if flask_app.config['APPHOST'] != 'http://localhost:5111':
        app.gamestv.postComment(comment, match_id)