mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-01 08:53:37 +00:00
Fix items shown for the current week on Coming Episodes/Calendar Layout.
Other data: past and after next week isn't shown in this view. Fix wrong sql operator being used. Fix: convert tomorrow toordinal(). Change bring webapi inline to these changes.
This commit is contained in:
parent
d9e3eacdda
commit
fb70e80461
2 changed files with 46 additions and 29 deletions
|
@ -725,17 +725,22 @@ class CMD_ComingEpisodes(ApiCall):
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
""" display the coming episodes """
|
""" display the coming episodes """
|
||||||
today = datetime.date.today().toordinal()
|
today1 = datetime.date.today()
|
||||||
next_week = (datetime.date.today() + datetime.timedelta(days=7)).toordinal()
|
today = today1.toordinal()
|
||||||
recently = (datetime.date.today() - datetime.timedelta(days=sickbeard.COMING_EPS_MISSED_RANGE)).toordinal()
|
yesterday1 = today1 - datetime.timedelta(days=1)
|
||||||
|
yesterday = yesterday1.toordinal()
|
||||||
|
tomorrow = (datetime.date.today() + datetime.timedelta(days=1)).toordinal()
|
||||||
|
next_week1 = (datetime.date.today() + datetime.timedelta(days=7))
|
||||||
|
next_week = (next_week1 + datetime.timedelta(days=1)).toordinal()
|
||||||
|
recently = (yesterday1 - datetime.timedelta(days=sickbeard.COMING_EPS_MISSED_RANGE)).toordinal()
|
||||||
|
|
||||||
done_show_list = []
|
done_show_list = []
|
||||||
qualList = Quality.DOWNLOADED + Quality.SNATCHED + [ARCHIVED, IGNORED]
|
qualList = Quality.DOWNLOADED + Quality.SNATCHED + [ARCHIVED, IGNORED]
|
||||||
|
|
||||||
myDB = db.DBConnection(row_type="dict")
|
myDB = db.DBConnection()
|
||||||
sql_results = myDB.select(
|
sql_results = myDB.select(
|
||||||
"SELECT airdate, airs, episode, name AS 'ep_name', description AS 'ep_plot', network, season, showid AS 'indexerid', show_name, tv_shows.quality AS quality, tv_shows.status AS 'show_status', tv_shows.paused AS 'paused' FROM tv_episodes, tv_shows WHERE season != 0 AND airdate >= ? AND airdate < ? AND tv_shows.indexer_id = tv_episodes.showid AND tv_episodes.status NOT IN (" + ','.join(
|
"SELECT airdate, airs, episode, name AS 'ep_name', description AS 'ep_plot', network, season, showid AS 'indexerid', show_name, tv_shows.quality AS quality, tv_shows.status AS 'show_status', tv_shows.paused AS 'paused' FROM tv_episodes, tv_shows WHERE season != 0 AND airdate >= ? AND airdate <= ? AND tv_shows.indexer_id = tv_episodes.showid AND tv_episodes.status NOT IN (" + ','.join(
|
||||||
['?'] * len(qualList)) + ")", [today, next_week] + qualList)
|
['?'] * len(qualList)) + ")", [yesterday, next_week] + qualList)
|
||||||
for cur_result in sql_results:
|
for cur_result in sql_results:
|
||||||
done_show_list.append(int(cur_result["indexerid"]))
|
done_show_list.append(int(cur_result["indexerid"]))
|
||||||
|
|
||||||
|
@ -748,17 +753,26 @@ class CMD_ComingEpisodes(ApiCall):
|
||||||
sql_results += more_sql_results
|
sql_results += more_sql_results
|
||||||
|
|
||||||
more_sql_results = myDB.select(
|
more_sql_results = myDB.select(
|
||||||
"SELECT airdate, airs, episode, name AS 'ep_name', description AS 'ep_plot', network, season, showid AS 'indexerid', show_name, tv_shows.quality AS quality, tv_shows.status AS 'show_status', tv_shows.paused AS 'paused' FROM tv_episodes, tv_shows WHERE season != 0 AND tv_shows.indexer_id = tv_episodes.showid AND airdate < ? AND airdate >= ? AND tv_episodes.status = ? AND tv_episodes.status NOT IN (" + ','.join(
|
"SELECT airdate, airs, episode, name AS 'ep_name', description AS 'ep_plot', network, season, showid AS 'indexerid', show_name, tv_shows.quality AS quality, tv_shows.status AS 'show_status', tv_shows.paused AS 'paused' FROM tv_episodes, tv_shows WHERE season != 0 AND tv_shows.indexer_id = tv_episodes.showid AND airdate <= ? AND airdate >= ? AND tv_episodes.status = ? AND tv_episodes.status NOT IN (" + ','.join(
|
||||||
['?'] * len(qualList)) + ")", [today, recently, WANTED] + qualList)
|
['?'] * len(qualList)) + ")", [tomorrow, recently, WANTED] + qualList)
|
||||||
sql_results += more_sql_results
|
sql_results += more_sql_results
|
||||||
|
|
||||||
|
sql_results = list(set(sql_results))
|
||||||
|
|
||||||
|
# make a dict out of the sql results
|
||||||
|
sql_results = [dict(row) for row in sql_results]
|
||||||
|
|
||||||
# sort by air date
|
# sort by air date
|
||||||
sorts = {
|
sorts = {
|
||||||
'date': (lambda x, y: cmp(int(x["airdate"]), int(y["airdate"]))),
|
'date': (lambda x, y: cmp(x["parsed_datetime"], y["parsed_datetime"])),
|
||||||
'show': (lambda a, b: cmp(a["show_name"], b["show_name"])),
|
'show': (lambda a, b: cmp((a["show_name"], a["parsed_datetime"]), (b["show_name"], b["parsed_datetime"]))),
|
||||||
'network': (lambda a, b: cmp(a["network"], b["network"])),
|
'network': (lambda a, b: cmp((a["network"], a["parsed_datetime"]), (b["network"], b["parsed_datetime"]))),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# add localtime to the dict
|
||||||
|
for index, item in enumerate(sql_results):
|
||||||
|
sql_results[index]['parsed_datetime'] = network_timezones.parse_date_time(item['airdate'], item['airs'], item['network'])
|
||||||
|
|
||||||
sql_results.sort(sorts[self.sort])
|
sql_results.sort(sorts[self.sort])
|
||||||
finalEpResults = {}
|
finalEpResults = {}
|
||||||
|
|
||||||
|
@ -777,9 +791,7 @@ class CMD_ComingEpisodes(ApiCall):
|
||||||
if ep["paused"] and not self.paused:
|
if ep["paused"] and not self.paused:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
ep['airs'] = str(ep['airs']).replace('am', ' AM').replace('pm', ' PM').replace(' ', ' ')
|
ep['airdate'] = int(ep["airdate"])
|
||||||
dtEpisodeAirs = sbdatetime.sbdatetime.convert_to_setting(network_timezones.parse_date_time(int(ep['airdate']), ep['airs'], ep['network']))
|
|
||||||
ep['airdate'] = dtEpisodeAirs.toordinal()
|
|
||||||
|
|
||||||
status = "soon"
|
status = "soon"
|
||||||
if ep["airdate"] < today:
|
if ep["airdate"] < today:
|
||||||
|
@ -801,12 +813,13 @@ class CMD_ComingEpisodes(ApiCall):
|
||||||
|
|
||||||
ep["quality"] = _get_quality_string(ep["quality"])
|
ep["quality"] = _get_quality_string(ep["quality"])
|
||||||
# clean up tvdb horrible airs field
|
# clean up tvdb horrible airs field
|
||||||
ep['airs'] = sbdatetime.sbdatetime.sbftime(dtEpisodeAirs, t_preset=timeFormat).lstrip('0').replace(' 0', ' ')
|
ep['airs'] = str(ep['airs']).replace('am', ' AM').replace('pm', ' PM').replace(' ', ' ')
|
||||||
# start day of the week on 1 (monday)
|
# start day of the week on 1 (monday)
|
||||||
ep['weekday'] = 1 + datetime.date.fromordinal(dtEpisodeAirs.toordinal()).weekday()
|
ep['weekday'] = 1 + datetime.date.fromordinal(ep['airdate']).weekday()
|
||||||
# Add tvdbid for backward compability
|
# Add tvdbid for backward compability
|
||||||
ep["tvdbid"] = ep['indexerid']
|
ep["tvdbid"] = ep['indexerid']
|
||||||
ep['airdate'] = sbdatetime.sbdatetime.sbfdate(dtEpisodeAirs, d_preset=dateFormat)
|
ep['airdate'] = sbdatetime.sbdatetime.sbfdate(datetime.date.fromordinal(ep['airdate']), d_preset=dateFormat)
|
||||||
|
ep['parsed_datetime'] = sbdatetime.sbdatetime.sbfdatetime(ep['parsed_datetime'], d_preset=dateFormat, t_preset='%H:%M %z')
|
||||||
|
|
||||||
# TODO: check if this obsolete
|
# TODO: check if this obsolete
|
||||||
if not status in finalEpResults:
|
if not status in finalEpResults:
|
||||||
|
|
|
@ -353,33 +353,37 @@ class MainHandler(RequestHandler):
|
||||||
|
|
||||||
today1 = datetime.date.today() - datetime.timedelta(days=1)
|
today1 = datetime.date.today() - datetime.timedelta(days=1)
|
||||||
today = today1.toordinal()
|
today = today1.toordinal()
|
||||||
tommorrow = (datetime.date.today() + datetime.timedelta(days=1))
|
tomorrow = (datetime.date.today() + datetime.timedelta(days=1)).toordinal()
|
||||||
next_week1 = (datetime.date.today() + datetime.timedelta(days=7))
|
next_week1 = (datetime.date.today() + datetime.timedelta(days=7))
|
||||||
next_week = (next_week1 + datetime.timedelta(days=1)).toordinal()
|
next_week = (next_week1 + datetime.timedelta(days=1)).toordinal()
|
||||||
recently = (today1 - datetime.timedelta(days=sickbeard.COMING_EPS_MISSED_RANGE)).toordinal()
|
if not (layout and layout in ('calendar')) and not (sickbeard.COMING_EPS_LAYOUT and sickbeard.COMING_EPS_LAYOUT in ('calendar')):
|
||||||
|
recently = (today1 - datetime.timedelta(days=sickbeard.COMING_EPS_MISSED_RANGE)).toordinal()
|
||||||
|
else:
|
||||||
|
recently = today
|
||||||
|
|
||||||
done_show_list = []
|
done_show_list = []
|
||||||
qualList = Quality.DOWNLOADED + Quality.SNATCHED + [ARCHIVED, IGNORED]
|
qualList = Quality.DOWNLOADED + Quality.SNATCHED + [ARCHIVED, IGNORED]
|
||||||
|
|
||||||
myDB = db.DBConnection()
|
myDB = db.DBConnection()
|
||||||
sql_results = myDB.select(
|
sql_results = myDB.select(
|
||||||
"SELECT *, tv_shows.status as show_status FROM tv_episodes, tv_shows WHERE season != 0 AND airdate >= ? AND airdate < ? AND tv_shows.indexer_id = tv_episodes.showid AND tv_episodes.status NOT IN (" + ','.join(
|
"SELECT *, tv_shows.status as show_status FROM tv_episodes, tv_shows WHERE season != 0 AND airdate >= ? AND airdate <= ? AND tv_shows.indexer_id = tv_episodes.showid AND tv_episodes.status NOT IN (" + ','.join(
|
||||||
['?'] * len(qualList)) + ")", [today, next_week] + qualList)
|
['?'] * len(qualList)) + ")", [today, next_week] + qualList)
|
||||||
|
|
||||||
for cur_result in sql_results:
|
for cur_result in sql_results:
|
||||||
done_show_list.append(int(cur_result["showid"]))
|
done_show_list.append(int(cur_result["showid"]))
|
||||||
|
|
||||||
more_sql_results = myDB.select(
|
if not (layout and layout in ('calendar')) and not (sickbeard.COMING_EPS_LAYOUT and sickbeard.COMING_EPS_LAYOUT in ('calendar')):
|
||||||
"SELECT *, tv_shows.status as show_status FROM tv_episodes outer_eps, tv_shows WHERE season != 0 AND showid NOT IN (" + ','.join(
|
more_sql_results = myDB.select(
|
||||||
['?'] * len(
|
"SELECT *, tv_shows.status as show_status FROM tv_episodes outer_eps, tv_shows WHERE season != 0 AND showid NOT IN (" + ','.join(
|
||||||
done_show_list)) + ") AND tv_shows.indexer_id = outer_eps.showid AND airdate = (SELECT airdate FROM tv_episodes inner_eps WHERE inner_eps.season != 0 AND inner_eps.showid = outer_eps.showid AND inner_eps.airdate >= ? ORDER BY inner_eps.airdate ASC LIMIT 1) AND outer_eps.status NOT IN (" + ','.join(
|
['?'] * len(
|
||||||
['?'] * len(Quality.DOWNLOADED + Quality.SNATCHED)) + ")",
|
done_show_list)) + ") AND tv_shows.indexer_id = outer_eps.showid AND airdate = (SELECT airdate FROM tv_episodes inner_eps WHERE inner_eps.season != 0 AND inner_eps.showid = outer_eps.showid AND inner_eps.airdate >= ? ORDER BY inner_eps.airdate ASC LIMIT 1) AND outer_eps.status NOT IN (" + ','.join(
|
||||||
done_show_list + [next_week] + Quality.DOWNLOADED + Quality.SNATCHED)
|
['?'] * len(Quality.DOWNLOADED + Quality.SNATCHED)) + ")",
|
||||||
sql_results += more_sql_results
|
done_show_list + [next_week] + Quality.DOWNLOADED + Quality.SNATCHED)
|
||||||
|
sql_results += more_sql_results
|
||||||
|
|
||||||
more_sql_results = myDB.select(
|
more_sql_results = myDB.select(
|
||||||
"SELECT *, tv_shows.status as show_status FROM tv_episodes, tv_shows WHERE season != 0 AND tv_shows.indexer_id = tv_episodes.showid AND airdate < ? AND airdate >= ? AND tv_episodes.status = ? AND tv_episodes.status NOT IN (" + ','.join(
|
"SELECT *, tv_shows.status as show_status FROM tv_episodes, tv_shows WHERE season != 0 AND tv_shows.indexer_id = tv_episodes.showid AND airdate <= ? AND airdate >= ? AND tv_episodes.status = ? AND tv_episodes.status NOT IN (" + ','.join(
|
||||||
['?'] * len(qualList)) + ")", [tommorrow, recently, WANTED] + qualList)
|
['?'] * len(qualList)) + ")", [tomorrow, recently, WANTED] + qualList)
|
||||||
sql_results += more_sql_results
|
sql_results += more_sql_results
|
||||||
|
|
||||||
sql_results = list(set(sql_results))
|
sql_results = list(set(sql_results))
|
||||||
|
|
Loading…
Reference in a new issue