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
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()
def save(self): if self.id is None: db_session.add(self) db_session.flush()
def remove(self): db_session.delete(self) db_session.flush()
def _flush(self): try: db_session.flush() except DatabaseError as e: db_session.rollback()
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)