def listSR(seasonid_from, seasonid_to): # Список сезонов /* и возрастов по состоянию на текущий год, название начального и конечного сезонов */ и возраста listSeason = Season.select().order_by(Season.seasonName) # listAge = Age.select().order_by(Age.ageName) # for age in listAge: # age.ageName = int(date.today().year) - int(age.ageName) try: seasonname_from = Season.get(season_ID = seasonid_from).seasonName seasonname_to = Season.get(season_ID = seasonid_to).seasonName # agename = Age.get(age_ID = ageid).ageName except DoesNotExist: seasonname_from = None seasonname_to = None # agename = None # Список позиций рейтинга спортивных школ и их количество listSR = schoolRating.select().where(schoolRating.season_ID.between(seasonid_from, seasonid_to)) listSR_count = listSR.count() # Вывод шаблона return render_template( 'schoolRating.jinja.html', listSeason = listSeason, seasonid_from = seasonid_from, seasonid_to = seasonid_to, # listAge = listAge, # ageid = ageid, listSR = listSR, listSR_count = listSR_count)
def listTR(seasonid_from, seasonid_to, ageid): # Список сезонов и возрастов по состоянию на текущий год, название начального и конечного сезонов и возраста listSeason = Season.select().order_by(Season.seasonName) listAge = Age.select().order_by(Age.ageName) for age in listAge: age.ageName = int(date.today().year) - int(age.ageName) try: seasonname_from = Season.get(season_ID = seasonid_from).seasonName seasonname_to = Season.get(season_ID = seasonid_to).seasonName agename = Age.get(age_ID = ageid).ageName except DoesNotExist: seasonname_from = None seasonname_to = None agename = None # Список позиций рейтинга юношеских команд и их количество listTR = teamRating.select().where(teamRating.season_ID.between(seasonid_from, seasonid_to) & teamRating.age_ID == ageid) listTR_count = listTR.count() # Вывод шаблона return render_template( 'teamRating.jinja.html', listSeason = listSeason, seasonid_from = seasonid_from, seasonid_to = seasonid_to, listAge = listAge, ageid = ageid, listTR = listTR, listTR_count = listTR_count)
def deleteSeason(seasonid): # Удаление текущей записи в БД if session['demo']: pass else: # Ограничение по внешнему ключу FK_SAS_Season # не позволяет удалить стадию при наличии связанных с ней игровых этапов. try: Season.get(season_ID = seasonid).delete_instance() except IntegrityError: flash('Вы не можете удалить этот сезон, пока в нём добавлен хотя бы один игровой этап', 'danger') # Редирект на вид list return redirect( url_for('listSeason'))
def merge_episode(episode_info): # Split the name path, info = episode_info show_name = info['series'].lower() parsed_season = info['season'] parsed_episode = info['episodeNumber'] try: show = Show.get(Show.name == show_name) except DoesNotExist: # Show does not exist yet show = Show.create(name=show_name) season = Season.create(show=show, season_number=parsed_season) Episode.create(season=season, episode_number=parsed_episode, path=path, added_time=datetime.datetime.now()) print('Merged "' + show.name + '" season ' + str(parsed_season) + ' episode ' + str(parsed_episode)) else: try: season = Season.get(Season.show == show, Season.season_number == parsed_season) except DoesNotExist: # Season did not exist yet season = Season.create(show=show, season_number=parsed_season) Episode.create(season=season, episode_number=parsed_episode, path=path, added_time=datetime.datetime.now()) print('Merged "' + show.name + '" season ' + str(parsed_season) + ' episode ' + str(parsed_episode)) else: try: Episode.get(Episode.season == season, Episode.episode_number == parsed_episode) except DoesNotExist: Episode.create(season=season, episode_number=parsed_episode, path=path, added_time=datetime.datetime.now()) print('Merged "' + show.name + '" season ' + str(parsed_season) + ' episode ' + str(parsed_episode))
def listSAS(seasonid, ageid): # Список сезонов и возрастов по состоянию на текущий год, название текущего сезона и возраста listSeason = Season.select().order_by(Season.season_ID.asc()) listAge = Age.select().order_by(Age.ageName) for age in listAge: age.ageName = int(date.today().year) - int(age.ageName) try: seasonname = Season.get(season_ID = seasonid).seasonName agename = Age.get(age_ID = ageid).ageName except DoesNotExist: seasonname = None agename = None # Список игровых стадий listStage = Stage.select().order_by(Stage.stageType, Stage.stageName) # Список типов соревноавний listGameType = GameType.select().order_by(GameType.gameTypeName) # Список игровых этапов с количеством дочерних команд и матчей listSAS = (RawQuery(SAS, 'SELECT `SAS`.*, (SELECT COUNT(`SAST2`.`SAS_ID`) FROM `SeasonAgeStageTeam` AS `SAST2` WHERE `SAST2`.`SAS_ID` = `SAS`.`SAS_ID`) AS `countSAST`, (SELECT COUNT(`GP2`.`SAS_ID`) FROM `GameProtocol` AS `GP2` WHERE ((`GP2`.`SAS_ID` = `SAST`.`SAS_ID`) AND (`SAST`.`SAS_ID` = `SAS`.`SAS_ID` ))) AS `countGP` FROM `SeasonAgeStage` AS `SAS` LEFT JOIN `SeasonAgeStageTeam` AS `SAST` ON (`SAS`.`SAS_ID` = `SAST`.`SAS_ID`) LEFT JOIN `Stage` ON (`SAS`.`stage_ID` = `Stage`.`stage_ID`) WHERE ((`SAS`.`season_ID` = %s) AND (`SAS`.`age_ID` = %s)) GROUP BY `SAS`.`SAS_ID` ORDER BY `SAS`.`SAS_ID` ASC', seasonid, ageid)) # Переменные для автозаполнения формы добавления/обновления данных в JS-скрипте шаблона ## Список полей modifyFields = ['stage', 'zoneGroupPlayoffToggle', 'gameType', 'startDate', 'finishDate'] ## Список групп радиокнопок modifyRadios = ['zoneGroupPlayoffToggle', 'gameType'] ## Список выпадающих списков modifySelect = ['stage'] ## Заголовки модального окна createHeader = ['"Создать новую игровую стадию"'] updateHeader = ['"Изменить игровую стадию для возраста "', agename, '" в сезоне "', seasonname] ## Действия формы createAction = ['"/season/"', seasonid, '"/age/"', ageid, '"/stage/create"'] updateAction = ['"/season/"', seasonid, '"/age/"', ageid, '"/stage/"', 'PK_ID', '"/update"'] deleteAction = ['"/season/"', seasonid, '"/age/"', ageid, '"/stage/"', 'PK_ID', '"/delete"'] # Вывод шаблона return render_template( 'SAS.jinja.html', listSeason = listSeason, seasonid = seasonid, seasonname = seasonname, listAge = listAge, ageid = ageid, agename = agename, listStage = listStage, listGameType = listGameType, listSAS = listSAS, modifyFields = modifyFields, modifyRadios = modifyRadios, modifySelect = modifySelect, createHeader = createHeader, updateHeader = updateHeader, createAction = createAction, updateAction = updateAction, deleteAction = deleteAction)
def listSAST(seasonid, ageid, sasid): # Список сезонов и возрастов по состоянию на текущий год, название текущего сезона и возраста, название и тип игровой стадии текущего игрового этапа listSeason = Season.select().order_by(Season.season_ID.asc()) listAge = Age.select().order_by(Age.ageName) for age in listAge: age.ageName = int(date.today().year) - int(age.ageName) try: seasonname = Season.get(season_ID = seasonid).seasonName agename = Age.get(age_ID = ageid).ageName sasname = SAS.get(SAS_ID = sasid).stage_ID.stageName sastype = SAS.get(SAS_ID = sasid).stage_ID.stageType except DoesNotExist: seasonname = None agename = None sasname = None sastype = None # Список игровых этапов по типам listSAS_Z = SAS.select().where(SAS.season_ID == seasonid, SAS.age_ID == ageid).join(Stage).where(Stage.stageType == "Z").order_by(Stage.stageName) listSAS_G = SAS.select().where(SAS.season_ID == seasonid, SAS.age_ID == ageid).join(Stage).where(Stage.stageType == "G").order_by(Stage.stageName) listSAS_P = SAS.select().where(SAS.season_ID == seasonid, SAS.age_ID == ageid).join(Stage).where(Stage.stageType == "P").order_by(Stage.stageName) # Список городов, спортивных школ и команд для фильтрации по связанным выпадающим спискам filterCity = City.select().order_by(City.cityName) filterSchool = School.select().order_by(School.schoolName) filterTeam = Team.select().order_by(Team.teamName) # Список команд в текущем игровом этапе listSAST = SAST.select().where(SAST.SAS_ID == sasid).join(Stage, JOIN_LEFT_OUTER).order_by(SAST.SAST_ID) # Список игровых стадий listStage = Stage.select().order_by(Stage.stageType, Stage.stageName).order_by(Stage.stage_ID) # Есть ли в текущем игровом этапе подгруппы is_SASTsubstage = SAST.select().where(SAST.SAS_ID == sasid).join(Stage).exists() # Список подгрупп текущего игрового этапа (если они есть) listSASTsubstage = SAST.select(SAST.substage_ID).distinct().where(SAST.SAS_ID == sasid).join(Stage, JOIN_LEFT_OUTER) # Переменные для автозаполнения формы добавления/обновления данных в JS-скрипте шаблона ## Список полей modifyFields = ['filterCity', 'filterSchool', 'filterTeam', 'substage_ID', 'stageType', 'stageName'] ## Список групп радиокнопок modifyRadios = ['substage_ID'] ## Список выпадающих списков modifySelect = ['filterCity', 'filterSchool', 'filterTeam'] ## Заголовки модального окна createHeader = ['"Добавить команду в "', 'stageType', '" "', 'stageName'] updateHeader = ['"Изменить команду, участвующую в "', 'stageType', '" "', 'stageName'] ## Действия формы createAction = ['"/season/"', seasonid, '"/age/"', ageid, '"/stage/"', sasid, '"/team/create"'] updateAction = ['"/season/"', seasonid, '"/age/"', ageid, '"/stage/"', sasid, '"/team/"', 'PK_ID', '"/update"'] deleteAction = ['"/season/"', seasonid, '"/age/"', ageid, '"/stage/"', sasid, '"/team/"', 'PK_ID', '"/delete"'] # Вывод шаблона return render_template( 'SAST.jinja.html', listSeason = listSeason, seasonid = seasonid, seasonname = seasonname, listAge = listAge, ageid = ageid, agename = agename, listSAS_Z = listSAS_Z, listSAS_G = listSAS_G, listSAS_P = listSAS_P, sasid = sasid, sasname = sasname, sastype = sastype, filterCity = filterCity, filterSchool = filterSchool, filterTeam = filterTeam, listSAST = listSAST, listStage = listStage, is_SASTsubstage = is_SASTsubstage, listSASTsubstage = listSASTsubstage, modifyFields = modifyFields, modifyRadios = modifyRadios, modifySelect = modifySelect, createHeader = createHeader, updateHeader = updateHeader, createAction = createAction, updateAction = updateAction, deleteAction = deleteAction)