Home > Fantacalcio, FantaLega, python > Statistiche Fantacalcio: Flask-SQLAlchemy – view (parte 2)

Statistiche Fantacalcio: Flask-SQLAlchemy – view (parte 2)

20 Settembre 2013

ecco una UI veloce veloce e molto migliorabile:

import model

class TextualViewer(object):
    def show_main_menu(self):
        menu = """\n
                 * Scegli un'opzione
                 ----------------------------------
                 1 - Miglior giocatore del torneo
                 2 - Miglior portiere del torneo
                 3 - Miglior difensore del torneo
                 4 - Miglior ccampista del torneo
                 5 - Miglior attaccante del torneo
                 6 - Miglior giocatore per squadra
                 7 - Media giocatori per squadra
                 8 - Trova giocatore che comincia per...
                 9 - Tutti i voti di un giocatore
                 0 - EXIT
                """
        print menu

    def show_player_result(self, player):
        obj, avg = player
        print "\n\n"
        print " ---<<<   Miglior Giocatore del torneo   >>>---\n"
        print "     {} ({})".format(obj.name, obj.team)
        print "     media voto: {}".format(avg)
        
    def show_avg_result(self, iterable):
        print "\n\n"
        print " ---<<<   Media voto Giocatori decrescente  >>>---\n"
        for player in iterable:
            print '{}  ({}) : media voto: {}'.format(player[0], player[1],
                                                     player[2])
    def show_player_grades(self, iterable, player):
        print "\n\n"
        print " ---<<<     Voti giornate %s      >>>---\n" % player.name
        for record in iterable:
            print 'giornata {}    voto: {}'.format(record[0], record[1])

    def show_player_name_starts_with(self, iterable, prefix):
        print "\n\n"
        print " ---<<<     Nomi Giocatori con '%s'     >>>---\n" % prefix
        for player in iterable:
            print '{} ({})'.format(player.name, player.team)

Poi creeremo un controller, che per ora, per una questione di debug utilizzo nello stesso
file view.py, a runtime.
La classe controller la creerò quando avrò 5 minuti.

if __name__ == '__main__':
    m = model.Model()
    cases = {1: m.get_best_player,
             2: m.get_best_role_player,
             3: m.get_best_role_player,
             4: m.get_best_role_player,
             5: m.get_best_role_player,
             6: m.get_best_team_player,
             7: m.get_avg_players,
             8: m.get_players_name_starts_with,
             9: m.get_player_fgrades,
            }
    tv = TextualViewer()
    while True:
        tv.show_main_menu()
        choice = raw_input('--> ')
        if choice == '0'.strip(): break
        elif choice == '1':
            player = cases.get(int(choice))()
            tv.show_player_result(player)
        elif choice == '2':
            player = cases.get(int(choice))('portiere')
            tv.show_player_result(player)
        elif choice == '3':
            player = cases.get(int(choice))('difensore')
            tv.show_player_result(player)
        elif choice == '4':
            player = cases.get(int(choice))('centrocampista')
            tv.show_player_result(player)
        elif choice == '5':
            player = cases.get(int(choice))('attaccante')
            tv.show_player_result(player)
        elif choice == '6':
            team = raw_input('quale squadra? ')
            player = cases.get(int(choice))(team)
            tv.show_player_result(player)
        elif choice == '7':
            team = raw_input('quale squadra? ')
            players = m.get_players_by_team(team)
            result = cases.get(int(choice))(players)
            tv.show_avg_result(result)
        elif choice == '8':
            prefix = raw_input('comincia per? ')
            result = cases.get(int(choice))(prefix)
            tv.show_player_name_starts_with(result, prefix)
        elif choice == '9':
            pl = raw_input('quale giocatore? ')
            player = m.get_player_by_name(pl)
            result = cases.get(int(choice))(player)
            tv.show_player_grades(result, player)

link utili:
model

Categorie:Fantacalcio, FantaLega, python Tag:
I commenti sono chiusi.