Add docker and sockets

This commit is contained in:
Frantisek F
2022-07-05 15:58:23 +02:00
parent 2281e030f6
commit 3053040da9
7 changed files with 107 additions and 46 deletions
+18 -16
View File
@@ -1,23 +1,25 @@
import json
import socket
import string
from flask_socketio import SocketIO, emit, disconnect, join_room
from flask import session, copy_current_request_context
from api.utils import get_points_sums, sort_card_list
from bridzik import Bridzik, BridzikException, Card, Card_colors, Card_values
from flask import Flask
import os
import logging
from logging.handlers import RotatingFileHandler
from config import Config
from flask import request
async_mode = None
app = Flask(__name__)
app.config.from_object(Config)
app.debug = True
if not app.debug:
if not os.path.exists('logs'):
os.mkdir('logs')
file_handler = RotatingFileHandler('logs/bridzik_api.log', maxBytes=10240, backupCount=10)
file_handler.setFormatter(logging.Formatter(
'%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]'
))
file_handler.setLevel(logging.INFO)
app.logger.addHandler(file_handler)
app.config['SECRET_KEY'] = 'secret!'
socket_ = SocketIO(app, cors_allowed_origins="*", async_mode='eventlet', logger=True, engineio_logger=True)
app.logger.setLevel(logging.INFO)
app.logger.info('Bridzik_API startup')
bridzikInstance = Bridzik()
from api import routes
players = ['', '', '', '']
socket_.run(app, debug=True, host="0.0.0.0", port="5000" )
+11 -13
View File
@@ -1,12 +1,10 @@
from api import app
from bridzik import Bridzik, Card, Card_colors, Card_values, BridzikException
from api import app, bridzikInstance
from bridzik import Card, Card_colors, Card_values, BridzikException
import json
from flask import render_template, url_for, flash, redirect
from api.forms import GuessForm, PlayForm, AdminForm
from api.utils import get_points_sums, sort_card_list
b = Bridzik()
players = [
'Jakub',
'Timo',
@@ -16,21 +14,21 @@ players = [
@app.route('/bridzik_api/get_status/<id>')
def get_status(id: int):
return json.dumps(b.get_status(int(id)), cls=Card.JSONEncoder)
return json.dumps(bridzikInstance.get_status(int(id)), cls=Card.JSONEncoder)
@app.route('/bridzik/<player>/status')
def status(player):
player = int(player)
game_status = b.get_status(player)
game_status = bridzikInstance.get_status(player)
action = None
form = None
player_cards = sort_card_list(b.series[-1].get_last_round().player_cards[player])
player_cards = sort_card_list(bridzikInstance.series[-1].get_last_round().player_cards[player])
game_status['player_cards'] = [str(c) for c in player_cards]
points_sums = get_points_sums(game_status['standings'])
if b.is_completed() or b.series[-1].get_last_round().get_active_player() != player:
if bridzikInstance.is_completed() or bridzikInstance.series[-1].get_last_round().get_active_player() != player:
pass
elif not b.series[-1].get_last_round().is_guessing_completed():
form = GuessForm(max_guess= 8 - b.series[-1].get_last_round().round_number)
elif not bridzikInstance.series[-1].get_last_round().is_guessing_completed():
form = GuessForm(max_guess= 8 - bridzikInstance.series[-1].get_last_round().round_number)
action = 'guess'
else:
form = PlayForm()
@@ -46,7 +44,7 @@ def guess(player):
player = int(player)
form = GuessForm()
try:
b.add_player_guess(player, int(form.guess.data))
bridzikInstance.add_player_guess(player, int(form.guess.data))
except BridzikException:
flash('Nie je možné zadať tip.')
return redirect(url_for('status', player=player))
@@ -54,7 +52,7 @@ def guess(player):
@app.route('/bridzik/<player>/play_card', methods=['POST'])
def play_card(player):
player = int(player)
player_cards = b.series[-1].get_last_round().player_cards[player]
player_cards = bridzikInstance.series[-1].get_last_round().player_cards[player]
form = PlayForm()
form.card.choices = [(str(c), str(c)) for c in player_cards]
color, value = form.card.data.split('_')
@@ -64,7 +62,7 @@ def play_card(player):
flash('Chyba. Opakuj pokus znovu.')
try:
b.play_card(player, card)
bridzikInstance.play_card(player, card)
except BridzikException:
flash('Nie je možné zahrať kartu.')
return redirect(url_for('status', player=player))