def initialize_database(settings): admin_username = settings.get('vignewton.admin.admin_username', 'admin') engine = engine_from_config(settings, 'sqlalchemy.') Base.metadata.create_all(engine) populate_groups() populate(admin_username) populate_sitetext() populate_accounting_tables(DBSession) tm = NFLTeamManager(DBSession) teams = get_nfl_teams_from_string(nfl_team_csv_data) try: tm.populate_teams(teams) except IntegrityError: transaction.abort()
def __init__(self, request): super(BetsViewer, self).__init__(request) #self.layout.main_menu = make_main_menu(self.request).render() #self.layout.ctx_menu = make_ctx_menu(self.request).output() make_context_menu(self.request) self.accounts = AccountingManager(self.request.db) self.teams = NFLTeamManager(self.request.db) self.games = NFLGameManager(self.request.db) self.odds = NFLOddsManager(self.request.db) self.bets = BetsManager(self.request.db) settings = self.get_app_settings() url = settings['vignewton.nfl.odds.url'] self.odds.oddscache.set_url(url) self.context = self.request.matchdict['context'] # make dispatch table self._cntxt_meth = dict( main=self.main_view, allpending=self.view_all_pending_bets, allclosed=self.view_all_closed_bets, ) if self.context in self._cntxt_meth: self._cntxt_meth[self.context]() else: msg = 'Undefined Context: %s' % self.context self.layout.content = '<b>%s</b>' % msg
def __init__(self, session): self.session = session self.games = NFLGameManager(self.session) self.teams = NFLTeamManager(self.session) self.odds = NFLOddsManager(self.session) self.accounts = AccountingManager(self.session) # FIXME: put this in config or database self.max_bet = 500
def __init__(self, request): super(NFLTeamViewer, self).__init__(request) self.layout.main_menu = make_main_menu(self.request).render() self.layout.ctx_menu = make_ctx_menu(self.request).output() self.teams = NFLTeamManager(self.request.db) self.context = self.request.matchdict['context'] # make dispatch table self._cntxt_meth = dict( main=self.main_view, viewteam=self.view_team, ) if self.context in self._cntxt_meth: self._cntxt_meth[self.context]() else: msg = 'Undefined Context: %s' % self.context self.layout.content = '<b>%s</b>' % msg
class NFLTeamViewer(BaseViewer): def __init__(self, request): super(NFLTeamViewer, self).__init__(request) self.layout.main_menu = make_main_menu(self.request).render() self.layout.ctx_menu = make_ctx_menu(self.request).output() self.teams = NFLTeamManager(self.request.db) self.context = self.request.matchdict['context'] # make dispatch table self._cntxt_meth = dict( main=self.main_view, viewteam=self.view_team, ) if self.context in self._cntxt_meth: self._cntxt_meth[self.context]() else: msg = 'Undefined Context: %s' % self.context self.layout.content = '<b>%s</b>' % msg def main_view(self): self.layout.subheader = 'NFL Teams' teams = self.teams.all() template = 'vignewton:templates/main-nfl-teams-view.mako' env = dict(teams=teams) content = self.render(template, env) self.layout.content = content def view_team(self): id = self.request.matchdict['id'] team = self.teams.get(id) games = self.teams.get_all_games(team.id) now = datetime.now() template = 'vignewton:templates/view-nfl-team.mako' env = dict(team=team, games=games, now=now) content = self.render(template, env) self.layout.content = content
def setup(env): request = env['request'] db = request.db env['db'] = db settings = env['registry'].settings url = settings['vignewton.nfl.schedule.url'] env['url'] = url odds_url = settings['vignewton.nfl.odds.url'] from vignewton.managers.nflgames import NFLTeamManager tm = NFLTeamManager(db) env['tm'] = tm from vignewton.managers.odds import NFLOddsManager om = NFLOddsManager(db) env['om'] = om om.oddscache.set_url(odds_url) if not om.get_current_odds(): filename = 'testdata/o.pickle' if not os.path.isfile(filename): om.update_current_odds() else: om.populate_from_pickle(filename) from vignewton.managers.nflgames import NFLGameManager gm = NFLGameManager(db) env['gm'] = gm gm.set_schedule_url(url) update_game_schedule = False if update_game_schedule: update_games(gm) env['ug'] = update_games from vignewton.managers.accounting import AccountingManager am = AccountingManager(db) am.initialize_bets_manager() env['am'] = am #env['games'] = om.oddscache.get_latest()[0].content #env['bg'] = env['games'][-3] from vignewton.managers.util import determine_max_bet env['dmb'] = determine_max_bet env['game'] = gm.query().get(125) backup_cache(gm, om) from vignewton.managers.bets import BetsManager bm = BetsManager(db) env['bm'] = bm from vignewton.managers.util import chop_ical_nflgame_desc env['cind'] = chop_ical_nflgame_desc env['g'] = gm.get(131)
def __init__(self, session): self.session = session self.games = NFLGameManager(self.session) self.teams = NFLTeamManager(self.session) self.oddscache = NFLOddsCache(self.session)
def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ # set app name appname = 'vignewton' # need to use goout root factory for ACL root_factory = 'vignewton.resources.RootGroupFactory' # alchemy request provides .db method request_factory = 'trumpet.request.AlchemyRequest' # get admin username admin_username = settings.get('vignewton.admin.admin_username', 'admin') # create db engine engine = engine_from_config(settings, 'sqlalchemy.') # setup db.sessionmaker settings['db.sessionmaker'] = DBSession # bind session to engine DBSession.configure(bind=engine) # bind objects to engine Base.metadata.bind = engine if settings.get('db.populate', 'False') == 'True': from sqlalchemy.exc import IntegrityError from vignewton.models.main import make_test_data Base.metadata.create_all(engine) #initialize_sql(engine) #make_test_data(DBSession) from vignewton.models.usergroup import populate_groups populate_groups() from vignewton.models.usergroup import populate populate(admin_username) from vignewton.models.sitecontent import populate_sitetext populate_sitetext() import transaction filename = 'testdata/nfl-teams.csv' if os.path.isfile(filename): from sqlalchemy.exc import IntegrityError from vignewton.managers.nflgames import NFLTeamManager from vignewton.managers.util import get_nfl_teams m = NFLTeamManager(DBSession) teams = get_nfl_teams(filename) try: m.populate_teams(teams) except IntegrityError: transaction.abort() filename = 'testdata/nfl.ics' if os.path.isfile(filename): from vignewton.managers.nflgames import NFLGameManager m = NFLGameManager(DBSession) try: m.populate_games(file(filename).read()) except IntegrityError: import transaction transaction.abort() from vignewton.models.main import populate_accounting_tables populate_accounting_tables(DBSession) # setup authn and authz secret = settings['%s.authn.secret' % appname] cookie = settings['%s.authn.cookie' % appname] timeout = int(settings['%s.authn.timeout' % appname]) authn_policy, authz_policy = make_authn_authz_policies( secret, cookie, callback=authenticate, timeout=timeout, tkt=False) # create config object config = Configurator(settings=settings, root_factory=root_factory, request_factory=request_factory, authentication_policy=authn_policy, authorization_policy=authz_policy) session_factory = session_factory_from_settings(settings) config.set_session_factory(session_factory) config.include('pyramid_fanstatic') configure_base_layout(config) configure_admin(config) configure_wiki(config, '/vig_wiki') config.add_static_view('static', 'vignewton:static', cache_max_age=3600) ################################## # Main Views ################################## config.add_route('home', '/') config.add_view('vignewton.views.main.MainViewer', layout='base', renderer=basetemplate, route_name='home') config.add_route('main', '/main/{context}/{id}') config.add_view('vignewton.views.main.MainViewer', permission='user', layout='base', renderer=basetemplate, route_name='main',) config.add_route('initdb', '/initdb/{context}/{id}') config.add_view('vignewton.views.main.MainViewer', layout='base', renderer=basetemplate, route_name='initdb') route_name = 'maincal_json' config.add_route(route_name, '/%s/{context}/{id}' % route_name) config.add_view('vignewton.views.main.MainCalJSONViewer', permission='user', route_name=route_name, renderer='json', layout='base',) route_name = 'vig_nflteams' config.add_route(route_name, '/vignflteams/{context}/{id}') config.add_view('vignewton.views.teams.NFLTeamViewer', permission='user', layout='base', renderer=basetemplate, route_name=route_name) route_name = 'vig_nflgames' config.add_route(route_name, '/vignflgames/{context}/{id}') config.add_view('vignewton.views.games.NFLGameViewer', permission='user', layout='base', renderer=basetemplate, route_name=route_name) route_name = 'vig_betgames' config.add_route(route_name, '/vigbetgames/{context}/{id}') config.add_view('vignewton.views.betgames.NFLGameBetsViewer', permission='user', layout='base', renderer=basetemplate, route_name=route_name) route_name = 'vig_betfrag' config.add_route(route_name, '/vigbetfrag/{context}/{id}') config.add_view('vignewton.views.betgames.NFLBetFrag', permission='user', layout='base', renderer='string', route_name=route_name) route_name = 'vig_really_bet' match = '/vigmakebet/{game_id}/{bettype}/{amount}/{betval}' config.add_route(route_name, match) config.add_view('vignewton.views.betgames.NFLGameBetsViewer', permission='user', layout='base', renderer=basetemplate, route_name=route_name) ################################## # Login Views ################################## login_viewer = 'vignewton.views.login.LoginViewer' config.add_route('login', '/login') config.add_view(login_viewer, renderer=basetemplate, layout='base', route_name='login') config.add_route('logout', '/logout') config.add_view(login_viewer, renderer=basetemplate, layout='base', route_name='logout') # Handle HTTPForbidden errors with a # redirect to a login page. config.add_view(login_viewer, context='pyramid.httpexceptions.HTTPForbidden', renderer=basetemplate, layout='base') ################################## config.add_route('blob', '/blob/{filetype}/{id}') config.add_view('vignewton.views.blob.BlobViewer', route_name='blob', renderer='string', layout='base') ################################## # Views for Users ################################## config.add_route('user', '/user/{context}') config.add_view('vignewton.views.userview.MainViewer', route_name='user', renderer=basetemplate, layout='base', permission='user') ################################## # wrap app with Fanstatic app = config.make_wsgi_app() from fanstatic import Fanstatic return Fanstatic(app)