mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-03 18:03:37 +00:00
58ea9588a7
Change indicate when not sorting with article by dimming ("The", "A", "An") on Show List, Episode, History, Mass Update, Add with Browse and from Existing views.
269 lines
12 KiB
Cheetah
269 lines
12 KiB
Cheetah
#import sickbeard
|
|
#import datetime
|
|
#import re
|
|
#from sickbeard.common import *
|
|
#from sickbeard import sbdatetime
|
|
#from sickbeard import history
|
|
#from sickbeard import providers
|
|
#from sickbeard.providers import generic
|
|
##
|
|
#set global $title = 'History'
|
|
#set global $header = 'History'
|
|
#set global $sbPath = '..'
|
|
#set global $topmenu = 'history'
|
|
#set $layout = $sickbeard.HISTORY_LAYOUT
|
|
##
|
|
#import os.path
|
|
#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_top.tmpl')
|
|
|
|
<script type="text/javascript">
|
|
<!--
|
|
\$.tablesorter.addParser({
|
|
id: 'cDate',
|
|
is: function(s) {
|
|
return false;
|
|
},
|
|
format: function(s) {
|
|
return s;
|
|
},
|
|
type: 'numeric'
|
|
});
|
|
|
|
\$(document).ready(function()
|
|
{
|
|
\$('#historyTable:has(tbody tr)').tablesorter({
|
|
widgets: ['zebra', 'filter'],
|
|
sortList: [[0, 1]],
|
|
textExtraction: {
|
|
0: function(node) { return \$(node).find('span').text().toLowerCase(); },
|
|
#if ('detailed' == $layout)
|
|
4: function(node) { return \$(node).find('span').text().toLowerCase(); }
|
|
#else
|
|
1: function(node) { return \$(node).find('span[data-name]').attr('data-name').toLowerCase(); },
|
|
2: function(node) { return \$(node).attr('provider').toLowerCase(); },
|
|
5: function(node) { return \$(node).attr('quality').toLowerCase(); }
|
|
#end if
|
|
},
|
|
headers: {
|
|
0: { sorter: 'cDate' },
|
|
#if ('detailed' == $layout)
|
|
4: { sorter: 'quality' }
|
|
#else
|
|
4: { sorter: false },
|
|
5: { sorter: 'quality' }
|
|
#end if
|
|
}
|
|
|
|
});
|
|
\$('#limit').change(function(){
|
|
url = '$sbRoot/history/?limit=' + \$(this).val()
|
|
window.location.href = url
|
|
});
|
|
|
|
#set $fuzzydate = 'airdate'
|
|
#if $sickbeard.FUZZY_DATING
|
|
fuzzyMoment({
|
|
containerClass: '.${fuzzydate}',
|
|
dateHasTime: !0,
|
|
dateFormat: '${sickbeard.DATE_PRESET}',
|
|
timeFormat: '${sickbeard.TIME_PRESET_W_SECONDS}',
|
|
trimZero: #echo ('!1', '!0')[$sickbeard.TRIM_ZERO]#,
|
|
dtGlue: ', '
|
|
});
|
|
#end if
|
|
});
|
|
//-->
|
|
</script>
|
|
|
|
#if $varExists('header')
|
|
<h1 class="header">$header</h1>
|
|
#else
|
|
<h1 class="title">$title</h1>
|
|
#end if
|
|
|
|
#set $html_selected = ' selected="selected"'
|
|
##
|
|
<div class="h2footer pull-right">Limit:
|
|
<select name="limit" id="limit" class="form-control form-control-inline input-sm">
|
|
<option value="100"#echo ('', $html_selected)['100' == $limit]#>100</option>
|
|
<option value="250"#echo ('', $html_selected)['250' == $limit]#>250</option>
|
|
<option value="500"#echo ('', $html_selected)['500' == $limit]#>500</option>
|
|
<option value="0"#echo ('', $html_selected)['0' == $limit]#>All</option>
|
|
</select>
|
|
|
|
<span style="margin-left:5px">Layout:
|
|
<select name="HistoryLayout" class="form-control form-control-inline input-sm" onchange="location = this.options[this.selectedIndex].value">
|
|
<option value="$sbRoot/setHistoryLayout/?layout=compact"#echo ('', $html_selected)['compact' == $sickbeard.HISTORY_LAYOUT]#>Compact</option>
|
|
<option value="$sbRoot/setHistoryLayout/?layout=detailed"#echo ('', $html_selected)['detailed' == $sickbeard.HISTORY_LAYOUT]#>Detailed</option>
|
|
</select>
|
|
</span>
|
|
</div>
|
|
<br>
|
|
|
|
<table id="historyTable" class="sickbeardTable tablesorter $layout" cellspacing="1" border="0" cellpadding="0">
|
|
#if 'detailed' == $layout
|
|
<thead>
|
|
<tr>
|
|
<th class="nowrap">Time</th>
|
|
<th width="35%">Episode</th>
|
|
<th>Action</th>
|
|
<th>Provider</th>
|
|
<th>Quality</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th class="nowrap" colspan="5"> </th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
#for $hItem in $historyResults
|
|
#set $curStatus, $curQuality = $Quality.splitCompositeStatus(int($hItem['action']))
|
|
#set $data_name = (re.sub('^((?:A(?!\s+to)n?)|The)\s(\w)', r'\2', $hItem['show_name']), $hItem['show_name'])[$sickbeard.SORT_ARTICLE]
|
|
#set $display_name = '<span data-name="%s">%s - S%02iE%02i</span>' % (
|
|
$data_name,
|
|
(re.sub('^((?:A(?!\s+to)n?)|The)\s(\w)', r'<span class="article">\1</span> \2', $hItem['show_name']), $hItem['show_name'])[$sickbeard.SORT_ARTICLE],
|
|
int(hItem['season']), int(hItem['episode']))
|
|
<tr>
|
|
#set $curdatetime = $datetime.datetime.strptime(str($hItem['date']), $history.dateFormat)
|
|
<td><div class="${fuzzydate}">$sbdatetime.sbdatetime.sbfdatetime($curdatetime, show_seconds=True)</div><span class="sort-data">$time.mktime($curdatetime.timetuple())</span></td>
|
|
<td class="tvShow"><a href="$sbRoot/home/displayShow?show=$hItem['showid']#season-$hItem['season']">$display_name#if 'proper' in $hItem['resource'].lower or 'repack' in $hItem['resource'].lower then ' <span class="quality Proper">Proper</span>' else ''#</a></td>
|
|
<td#echo ('', ' class="subtitles_column"')[SUBTITLED == $curStatus]#>
|
|
#if SUBTITLED == $curStatus
|
|
<img width="16" height="11" src="$sbRoot/images/flags/<%= hItem["resource"][len(hItem["resource"])-6:len(hItem["resource"])-4] + '.png' %>">
|
|
#end if
|
|
<span class="help" title="$os.path.basename($hItem["resource"])">$statusStrings[$curStatus]</span>
|
|
</td>
|
|
<td class="provider">
|
|
#if DOWNLOADED == $curStatus
|
|
#if '-1' != $hItem['provider']
|
|
<span><i>$hItem['provider']</i></span>
|
|
#end if
|
|
#else
|
|
#if 0 < $hItem['provider']
|
|
#if $curStatus in [SNATCHED, FAILED]
|
|
#set $provider = $providers.getProviderClass($generic.GenericProvider.make_id($hItem['provider']))
|
|
#if None is not $provider
|
|
<img src="$sbRoot/images/providers/<%= provider.image_name() %>" width="16" height="16" /><span>$provider.name</span>
|
|
#else
|
|
<img src="$sbRoot/images/providers/missing.png" width="16" height="16" title="missing provider" /><span>Missing Provider</span>
|
|
#end if
|
|
#else
|
|
<img src="$sbRoot/images/subtitles/<%= hItem['provider']+'.png' %>" width="16" height="16" /><span><%= hItem['provider'].capitalize() %></span>
|
|
#end if
|
|
#end if
|
|
#end if
|
|
</td>
|
|
<td><span class="hide">$curQuality</span><span class="quality $Quality.qualityStrings[$curQuality].replace('720p', 'HD720p').replace('1080p', 'HD1080p').replace('RawHD TV', 'RawHD').replace('HD TV', 'HD720p')">$Quality.qualityStrings[$curQuality]</span></td>
|
|
</tr>
|
|
#end for
|
|
|
|
#else
|
|
<thead>
|
|
<tr>
|
|
<th class="nowrap">Time</th>
|
|
<th width="#echo '3%s%%' % ('5', '0')[sickbeard.USE_SUBTITLES]#">Episode</th>
|
|
<th>Snatched</th>
|
|
<th>Downloaded</th>
|
|
#if sickbeard.USE_SUBTITLES
|
|
<th>Subtitled</th>
|
|
#end if
|
|
<th width="14%">Quality</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th class="nowrap" colspan="6"> </th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
#for $hItem in $compactResults
|
|
#set $curdatetime = $datetime.datetime.strptime(str($hItem['actions'][0]['time']), $history.dateFormat)
|
|
#set $data_name = (re.sub('^((?:A(?!\s+to)n?)|The)\s(\w)', r'\2', $hItem['show_name']), $hItem['show_name'])[$sickbeard.SORT_ARTICLE]
|
|
#set $display_name = '<span data-name="%s">%s - S%02iE%02i</span>' % (
|
|
$data_name,
|
|
(re.sub('^((?:A(?!\s+to)n?)|The)\s(\w)', r'<span class="article">\1</span> \2', $hItem['show_name']), $hItem['show_name'])[$sickbeard.SORT_ARTICLE],
|
|
int(hItem['season']), int(hItem['episode']))
|
|
#set $prov_list = []
|
|
#set $down_list = []
|
|
#set $order = 1
|
|
#set $ordinal_indicators = {'1':'st', '2':'nd', '3':'rd'}
|
|
#for $action in reversed($hItem['actions'])
|
|
#set $curStatus, $curQuality = $Quality.splitCompositeStatus(int($action['action']))
|
|
#set $basename = $os.path.basename($action['resource'])
|
|
#if $curStatus in [SNATCHED, FAILED]
|
|
#set $provider = $providers.getProviderClass($generic.GenericProvider.make_id($action['provider']))
|
|
#if None is not $provider
|
|
#set $prov_list += ['<span%s><img class="help" src="%s/images/providers/%s" width="16" height="16" alt="%s" title="%s.. %s: %s" /></span>'\
|
|
% (('', ' class="fail"')[FAILED == $curStatus], $sbRoot, $provider.image_name(), $provider.name,
|
|
('%s%s' % ($order, 'th' if $order in [11, 12, 13] or str($order)[-1] not in $ordinal_indicators else $ordinal_indicators[str($order)[-1]]), 'Snatch failed')[FAILED == $curStatus],
|
|
$provider.name, $basename)]
|
|
#set $order += (0, 1)[SNATCHED == $curStatus]
|
|
#else
|
|
#set $prov_list += ['<img src="%s/images/providers/missing.png" width="16" height="16" alt="missing provider" title="missing provider" />'\
|
|
% $sbRoot]
|
|
#end if
|
|
#end if
|
|
#if $curStatus in [DOWNLOADED, ARCHIVED]
|
|
#set $match = $re.search('\-(\w+)\.\w{3}\Z', $basename)
|
|
#set $non_scene_note = ''
|
|
#if not $match
|
|
## This fallback is for when idiots add a space and word to a release group. The space is converted
|
|
## to '\' which makes the regex parsing the scene group name fail, therefore we arrive here.
|
|
## A better solution would be to find where such data is parsed and saved to the db and perhaps
|
|
## fix at that point. But, in the meantime...
|
|
#set $non_scene_resource = re.sub(r'(\-\w+)([\\]\w+)?(\.\w{3})\Z', r'\1\3', $action['resource'])
|
|
#if $non_scene_resource
|
|
#set $non_scene_note = ' (Non scene name: %s)' % $action['resource'].partition('-')[-1]
|
|
#set $basename = $os.path.basename($non_scene_resource)
|
|
#set $match = $re.search('\-(\w+)\.\w{3}\Z', $basename)
|
|
#end if
|
|
#end if
|
|
#if $match
|
|
#if $match.group(1).upper() in ('X264', '720P')
|
|
#set $match = $re.search('(\w+)\-.*\-' + $match.group(1) + '\.\w{3}\Z', $os.path.basename($hItem['resource']), re.I)
|
|
#end if
|
|
#if $match
|
|
#set $down_list += ['<span class="help" title="%s%s"><i>%s</i></span>'\
|
|
% ($basename, $non_scene_note, $match.group(1).upper())]
|
|
#end if
|
|
#end if
|
|
#end if
|
|
#end for
|
|
<tr>
|
|
<td><div class="${fuzzydate}">$sbdatetime.sbdatetime.sbfdatetime($curdatetime, show_seconds=True)</div><span class="sort-data">$time.mktime($curdatetime.timetuple())</span></td>
|
|
<td class="tvShow">
|
|
<span><a href="$sbRoot/home/displayShow?show=$hItem['show_id']#season-$hItem['season']">$display_name#if 'proper' in $hItem['resource'].lower or 'repack' in $hItem['resource'].lower then ' <span class="quality Proper">Proper</span>' else ''#</a></span>
|
|
</td>
|
|
<td class="provider" provider="<%= str(sorted(hItem['actions'])[0]['provider']) %>">
|
|
#echo ''.join($prov_list)#
|
|
</td>
|
|
<td>
|
|
#echo ' '.join($down_list)#
|
|
</td>
|
|
#if sickbeard.USE_SUBTITLES
|
|
<td>
|
|
#for $action in reversed($hItem['actions'])
|
|
#set $curStatus, $curQuality = $Quality.splitCompositeStatus(int($action['action']))
|
|
#if SUBTITLED == $curStatus
|
|
<img src="$sbRoot/images/subtitles/<%= action['provider'] + '.png' %>" width="16" height="16" alt="$action['provider']" title="<%= action['provider'].capitalize() %>:$os.path.basename($action['resource'])" />
|
|
<span> / </span>
|
|
<img width="16" height="11" src="$sbRoot/images/flags/<%= action['resource'][len(action['resource'])-6:len(action['resource'])-4] + '.png' %>" style="vertical-align:middle !important">
|
|
|
|
#end if
|
|
#end for
|
|
</td>
|
|
#end if
|
|
<td quality="$curQuality"><span class="quality $Quality.qualityStrings[$curQuality].replace('720p', 'HD720p').replace('1080p', 'HD1080p').replace('RawHD TV', 'RawHD').replace('HD TV', 'HD720p')">$Quality.qualityStrings[$curQuality]</span></td>
|
|
</tr>
|
|
#end for
|
|
|
|
#end if
|
|
</tbody>
|
|
</table>
|
|
|
|
#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_bottom.tmpl')
|