Browse Source

Rename some bps variables.

Rename quotum to quota.
pull/7/head
ShyPike 14 years ago
parent
commit
c03921ad55
  1. 2
      ISSUES.txt
  2. 30
      interfaces/Classic/templates/config_switches.tmpl
  3. 4
      interfaces/Classic/templates/connection_info.tmpl
  4. 4
      interfaces/Classic/templates/inc_bottom.tmpl
  5. 42
      interfaces/Plush/templates/config_switches.tmpl
  6. 2
      interfaces/Plush/templates/main.tmpl
  7. 4
      interfaces/Plush/templates/queue.tmpl
  8. 6
      interfaces/Plush/templates/static/javascripts/plush.js
  9. 34
      interfaces/smpl/templates/config_switches.tmpl
  10. 4
      interfaces/smpl/templates/history.tmpl
  11. 8
      interfaces/smpl/templates/main.tmpl
  12. 700
      po/main/SABnzbd.pot
  13. 16
      sabnzbd/__init__.py
  14. 14
      sabnzbd/api.py
  15. 119
      sabnzbd/bpsmeter.py
  16. 8
      sabnzbd/cfg.py
  17. 2
      sabnzbd/downloader.py
  18. 6
      sabnzbd/interface.py
  19. 6
      sabnzbd/scheduler.py
  20. 25
      sabnzbd/skintext.py

2
ISSUES.txt

@ -2,7 +2,7 @@
*** Known issues *** *** Known issues ***
******************************************* *******************************************
- To prevent unexpectedly large NZBs from eating your quotum you can set - To prevent unexpectedly large NZBs from eating your download quota you can set
the option 'size_limit' in the INI file. the option 'size_limit' in the INI file.
Any NZB larger than this size will be set to paused and get a low priority. Any NZB larger than this size will be set to paused and get a low priority.

30
interfaces/Classic/templates/config_switches.tmpl

@ -151,28 +151,28 @@
</fieldset> </fieldset>
<fieldset class="EntryFieldSet"> <fieldset class="EntryFieldSet">
<strong>$T('opt-quotum_size'):</strong><br/> <strong>$T('opt-quota_size'):</strong><br/>
$T('explain-quotum_size')<br/> $T('explain-quota_size')<br/>
<input type="text" name="quotum_size" value="$quotum_size"/> <input type="text" name="quota_size" value="$quota_size"/>
<br> <br>
<br> <br>
<strong>$T('opt-quotum_period'):</strong><br> <strong>$T('opt-quota_period'):</strong><br>
$T('explain-quotum_period')<br> $T('explain-quota_period')<br>
<select name="ssl_type"> <select name="ssl_type">
<option value="m" <!--#if $quotum_period == 'm' then 'selected' else ''#--> >$T('month')</option> <option value="m" <!--#if $quota_period == 'm' then 'selected' else ''#--> >$T('month')</option>
<option value="w" <!--#if $quotum_period == 'w' then 'selected' else ''#--> >$T('week')</option> <option value="w" <!--#if $quota_period == 'w' then 'selected' else ''#--> >$T('week')</option>
<option value="d" <!--#if $quotum_period == 'd' then 'selected' else ''#--> >$T('day')</option> <option value="d" <!--#if $quota_period == 'd' then 'selected' else ''#--> >$T('day')</option>
<option value="x" <!--#if $quotum_period == 'x' then 'selected' else ''#--> >$T('manual')</option> <option value="x" <!--#if $quota_period == 'x' then 'selected' else ''#--> >$T('manual')</option>
</select> </select>
<br/><br/> <br/><br/>
<strong>$T('opt-quotum_day'):</strong><br/> <strong>$T('opt-quota_day'):</strong><br/>
$T('explain-quotum_day')<br/> $T('explain-quota_day')<br/>
<input type="text" name="quotum_day" value="$quotum_day"/> <input type="text" name="quota_day" value="$quota_day"/>
<br> <br>
<br> <br>
<legend>$T('swtag-quotum')</legend> <legend>$T('swtag-quota')</legend>
<label><input type="checkbox" name="quotum_resume" value="1" <!--#if $quotum_resume > 0 then "checked=1" else ""#--> /> <strong>$T('opt-quotum_resume')</strong></label><br> <label><input type="checkbox" name="quota_resume" value="1" <!--#if $quota_resume > 0 then "checked=1" else ""#--> /> <strong>$T('opt-quota_resume')</strong></label><br>
$T('explain-quotum_resume')<br> $T('explain-quota_resume')<br>
<br/> <br/>
</fieldset> </fieldset>
</div> </div>

4
interfaces/Classic/templates/connection_info.tmpl

@ -6,8 +6,8 @@
<span class="SubMenu"> <span class="SubMenu">
<!--#set $msg=$T('askTestEmail')#--> <!--#set $msg=$T('askTestEmail')#-->
<!--#if $have_quotum#--> <!--#if $have_quota#-->
<a href="./reset_quotum?session=$session">$T('link-resetQuotum')</a> | <a href="./reset_quota?session=$session">$T('link-resetQuota')</a> |
<!--#end if#--> <!--#end if#-->
<a href="./disconnect?session=$session">$T('link-forceDisc')</a> | <a href="./disconnect?session=$session">$T('link-forceDisc')</a> |
<a href="./showlog?session=$session">$T('link-showLog')</a> <a href="./showlog?session=$session">$T('link-showLog')</a>

4
interfaces/Classic/templates/inc_bottom.tmpl

@ -11,8 +11,8 @@
<!--#set $msg=$T('ft-buffer@2')%($cache_art, $cache_size)#--> <!--#set $msg=$T('ft-buffer@2')%($cache_art, $cache_size)#-->
$msg&nbsp;&nbsp; $msg&nbsp;&nbsp;
<!--#end if#--> <!--#end if#-->
<!--#if $have_quotum#--> <!--#if $have_quota#-->
| &nbsp;&nbsp;<strong>$T('quotum-left'):</strong>&nbsp;&nbsp;$left_quotum&nbsp;&frasl;&nbsp;$quotum</strong>&nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;<strong>$T('quota-left'):</strong>&nbsp;&nbsp;$left_quota&nbsp;&frasl;&nbsp;$quota</strong>&nbsp;&nbsp;&nbsp;
<!--#end if#--> <!--#end if#-->
<!--#if $new_release#--> <!--#if $new_release#-->
<!--#set $msg=$T('ft-newRelease@1')%($new_release)#--> <!--#set $msg=$T('ft-newRelease@1')%($new_release)#-->

42
interfaces/Plush/templates/config_switches.tmpl

@ -322,49 +322,49 @@
</div><!-- /component-group6 --> </div><!-- /component-group6 -->
<div id="core-component-group6" class="component-group clearfix"> <div id="core-component-group6" class="component-group clearfix">
<div class="component-group-desc"> <div class="component-group-desc">
<h3>$T('swtag-quotum')</h3> <h3>$T('swtag-quota')</h3>
</div> </div>
<fieldset class="component-group-list"> <fieldset class="component-group-list">
<div class="field-pair"> <div class="field-pair">
<label class="nocheck clearfix" for="quotum_size"> <label class="nocheck clearfix" for="quota_size">
<span class="component-title">$T('opt-quotum_size')</span> <span class="component-title">$T('opt-quota_size')</span>
<input type="text" name="quotum_size" id="quotum_size" value="$quotum_size"/> <input type="text" name="quota_size" id="quota_size" value="$quota_size"/>
</label> </label>
<label class="nocheck clearfix"> <label class="nocheck clearfix">
<span class="component-title">&nbsp;</span> <span class="component-title">&nbsp;</span>
<span class="component-desc">$T('explain-quotum_size')</span> <span class="component-desc">$T('explain-quota_size')</span>
</label> </label>
</div> </div>
<div class="field-pair alt"> <div class="field-pair alt">
<label class="nocheck clearfix" for="quotum_period"> <label class="nocheck clearfix" for="quota_period">
<span class="component-title">$T('opt-quotum_period')</span> <span class="component-title">$T('opt-quota_period')</span>
<select name="quotum_period" id="quotum_period"> <select name="quota_period" id="quota_period">
<option value="m" <!--#if $quotum_period == "m" then 'selected' else ''#--> >$T('month')</option> <option value="m" <!--#if $quota_period == "m" then 'selected' else ''#--> >$T('month')</option>
<option value="w" <!--#if $quotum_period == "w" then 'selected' else ''#--> >$T('week')</option> <option value="w" <!--#if $quota_period == "w" then 'selected' else ''#--> >$T('week')</option>
<option value="d" <!--#if $quotum_period == "d" then 'selected' else ''#--> >$T('day')</option> <option value="d" <!--#if $quota_period == "d" then 'selected' else ''#--> >$T('day')</option>
<option value="x" <!--#if $quotum_period == "x" then 'selected' else ''#--> >$T('manual')</option> <option value="x" <!--#if $quota_period == "x" then 'selected' else ''#--> >$T('manual')</option>
</select> </select>
</label> </label>
<label class="nocheck clearfix"> <label class="nocheck clearfix">
<span class="component-title">&nbsp;</span> <span class="component-title">&nbsp;</span>
<span class="component-desc">$T('explain-quotum_period')</span> <span class="component-desc">$T('explain-quota_period')</span>
</label> </label>
</div> </div>
<div class="field-pair"> <div class="field-pair">
<label class="nocheck clearfix" for="quotum_day"> <label class="nocheck clearfix" for="quota_day">
<span class="component-title">$T('opt-quotum_day')</span> <span class="component-title">$T('opt-quota_day')</span>
<input type="text" name="quotum_day" id="quotum_day" value="$quotum_day"/> <input type="text" name="quota_day" id="quota_day" value="$quota_day"/>
</label> </label>
<label class="nocheck clearfix"> <label class="nocheck clearfix">
<span class="component-title">&nbsp;</span> <span class="component-title">&nbsp;</span>
<span class="component-desc">$T('explain-quotum_day')</span> <span class="component-desc">$T('explain-quota_day')</span>
</label> </label>
</div> </div>
<div class="field-pair alt"> <div class="field-pair alt">
<input type="checkbox" name="quotum_resume" id="quotum_resume" value="1" <!--#if $quotum_resume > 0 then "checked=1" else ""#--> /> <input type="checkbox" name="quota_resume" id="quota_resume" value="1" <!--#if $quota_resume > 0 then "checked=1" else ""#--> />
<label class="clearfix" for="quotum_resume"> <label class="clearfix" for="quota_resume">
<span class="component-title">$T('opt-quotum_resume')</span> <span class="component-title">$T('opt-quota_resume')</span>
<span class="component-desc">$T('explain-quotum_resume')</span> <span class="component-desc">$T('explain-quota_resume')</span>
</label> </label>
</div> </div>
</fieldset> </fieldset>

2
interfaces/Plush/templates/main.tmpl

@ -25,7 +25,7 @@
<li class="main_sprite_container sprite_q_queue"> <li class="main_sprite_container sprite_q_queue">
<a class="sf-with-ul">$T('menu-queue')</a> <a class="sf-with-ul">$T('menu-queue')</a>
<ul> <ul>
<!--#if $have_quotum#--><li><a id="reset_quotum_now" class="pointer">$T('link-resetQuotum')</a></li><!--#end if#--> <!--#if $have_quota#--><li><a id="reset_quota_now" class="pointer">$T('link-resetQuota')</a></li><!--#end if#-->
<!--#if $varExists('newzbinDetails')#--><li><a id="get_bookmarks_now" class="pointer">$T('link-getBookmarks')</a></li><!--#end if#--> <!--#if $varExists('newzbinDetails')#--><li><a id="get_bookmarks_now" class="pointer">$T('link-getBookmarks')</a></li><!--#end if#-->
<!--#if $have_rss_defined#--><li><a id="get_rss_now" class="pointer">$T('button-rssNow')</a></li><!--#end if#--> <!--#if $have_rss_defined#--><li><a id="get_rss_now" class="pointer">$T('button-rssNow')</a></li><!--#end if#-->
<!--#if $have_watched_dir#--><li><a id="get_watched_now" class="pointer">$T('sch-scan_folder')</a></li><!--#end if#--> <!--#if $have_watched_dir#--><li><a id="get_watched_now" class="pointer">$T('sch-scan_folder')</a></li><!--#end if#-->

4
interfaces/Plush/templates/queue.tmpl

@ -15,8 +15,8 @@
// set lower-right queue stats // set lower-right queue stats
var stats = ''; var stats = '';
<!--#if $have_quotum#--> <!--#if $have_quota#-->
stats += '<strong>$left_quotum&nbsp;&nbsp;&frasl;&nbsp;&nbsp;$quotum</strong>&nbsp;$T('quotum-left')&nbsp;&nbsp;'; stats += '<strong>$left_quota&nbsp;&nbsp;&frasl;&nbsp;&nbsp;$quota</strong>&nbsp;$T('quota-left')&nbsp;&nbsp;';
<!--#end if#--> <!--#end if#-->
<!--#if $noofslots > 0#--> <!--#if $noofslots > 0#-->
stats += '<strong>$mbleft&nbsp;&nbsp;&frasl;&nbsp;&nbsp;$mb&nbsp;$T('MB')</strong>&nbsp;$T('Plush-remaining')'; stats += '<strong>$mbleft&nbsp;&nbsp;&frasl;&nbsp;&nbsp;$mb&nbsp;$T('MB')</strong>&nbsp;$T('Plush-remaining')';

6
interfaces/Plush/templates/static/javascripts/plush.js

@ -271,12 +271,12 @@ jQuery(function($){
}); });
}); });
// Reset Quotum // Reset Quota
$('#reset_quotum_now').click(function() { $('#reset_quota_now').click(function() {
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: "tapi", url: "tapi",
data: {mode:'reset_quotum', apikey: $.plush.apikey}, data: {mode:'reset_quota', apikey: $.plush.apikey},
success: $.plush.RefreshQueue success: $.plush.RefreshQueue
}); });
}); });

34
interfaces/smpl/templates/config_switches.tmpl

@ -199,33 +199,33 @@
</fieldset> </fieldset>
<fieldset class="EntryFieldSet"> <fieldset class="EntryFieldSet">
<legend>$T('swtag-quotum')</legend> <legend>$T('swtag-quota')</legend>
<hr /> <hr />
<span class="label">$T('opt-quotum_size'):</span> <span class="label">$T('opt-quota_size'):</span>
<input type="text" name="quotum_size" value="$quotum_size"/> <input type="text" name="quota_size" value="$quota_size"/>
<span class="tips">$T('explain-quotum_size')</span></label> <span class="tips">$T('explain-quota_size')</span></label>
<br class="clear" /> <br class="clear" />
<span class="label">$T('opt-quotum_period'):</span> <span class="label">$T('opt-quota_period'):</span>
<select name="quotum_period" id="quotum_period" class="select"> <select name="quota_period" id="quota_period" class="select">
<option value="m" <!--#if $quotum_period == "m" then 'selected' else ''#--> >$T('month')</option> <option value="m" <!--#if $quota_period == "m" then 'selected' else ''#--> >$T('month')</option>
<option value="w" <!--#if $quotum_period == "w" then 'selected' else ''#--> >$T('week')</option> <option value="w" <!--#if $quota_period == "w" then 'selected' else ''#--> >$T('week')</option>
<option value="d" <!--#if $quotum_period == "d" then 'selected' else ''#--> >$T('day')</option> <option value="d" <!--#if $quota_period == "d" then 'selected' else ''#--> >$T('day')</option>
<option value="x" <!--#if $quotum_period == "x" then 'selected' else ''#--> >$T('manual')</option> <option value="x" <!--#if $quota_period == "x" then 'selected' else ''#--> >$T('manual')</option>
</select> </select>
<span class="tips">$T('explain-quotum_period')</span> <span class="tips">$T('explain-quota_period')</span>
<br class="clear" /> <br class="clear" />
<span class="label">$T('opt-quotum_day'):</span> <span class="label">$T('opt-quota_day'):</span>
<input type="text" name="quotum_day" value="$quotum_day"/> <input type="text" name="quota_day" value="$quota_day"/>
<span class="tips">$T('explain-quotum_day')</span></label> <span class="tips">$T('explain-quota_day')</span></label>
<br class="clear" /> <br class="clear" />
<label><span class="label">$T('opt-quotum_resume'):</span> <label><span class="label">$T('opt-quota_resume'):</span>
<input class="radio" type="checkbox" name="quotum_resume" value="1" <!--#if $quotum_resume > 0 then 'checked="1"' else ""#--> /> <input class="radio" type="checkbox" name="quota_resume" value="1" <!--#if $quota_resume > 0 then 'checked="1"' else ""#--> />
<span class="tips">$T('explain-quotum_resume')</span></label> <span class="tips">$T('explain-quota_resume')</span></label>
<br class="clear" /> <br class="clear" />
</fieldset> </fieldset>

4
interfaces/smpl/templates/history.tmpl

@ -99,8 +99,8 @@ t = time.strftime(time_format("%H:%M:%S on %A %d %B %Y"), completed)
<!--#end if#--> <!--#end if#-->
</table> </table>
<div class="centerLinks"> <div class="centerLinks">
<!--#if $have_quotum#--> <!--#if $have_quota#-->
$T('quotum-left'):&nbsp;<strong>$left_quotum&nbsp;&frasl;&nbsp;$quotum</strong>&nbsp;| $T('quota-left'):&nbsp;<strong>$left_quota&nbsp;&frasl;&nbsp;$quota</strong>&nbsp;|
<!--#end if#--> <!--#end if#-->
$T('smpl-size'): <span class="bold">$total_size</span> | $T('thisMonth'): <span class="bold">$month_size</span> | $T('thisWeek'): <span class="bold">$week_size</span> | $T('today'): <span class="bold">$day_size</span> $T('smpl-size'): <span class="bold">$total_size</span> | $T('thisMonth'): <span class="bold">$month_size</span> | $T('thisWeek'): <span class="bold">$week_size</span> | $T('today'): <span class="bold">$day_size</span>
</div> </div>

8
interfaces/smpl/templates/main.tmpl

@ -760,9 +760,9 @@ function lrb(url, extra, refresh)
d = doSimpleXMLHttpRequest('tapi?mode=newzbin&name=get_bookmarks&session='+session); d = doSimpleXMLHttpRequest('tapi?mode=newzbin&name=get_bookmarks&session='+session);
} }
function resetQuotum() function resetQuota()
{ {
d = doSimpleXMLHttpRequest('tapi?mode=reset_quotum&session='+session); d = doSimpleXMLHttpRequest('tapi?mode=reset_quota&session='+session);
} }
function changequeueoptions(page) function changequeueoptions(page)
@ -1150,8 +1150,8 @@ function loadingJSON(){
<!--#if $varExists('newzbinDetails')#--> <!--#if $varExists('newzbinDetails')#-->
<li><a onClick="getBookmarks()">$T('smpl-getbookmarks')</a></li> <li><a onClick="getBookmarks()">$T('smpl-getbookmarks')</a></li>
<!--#end if#--> <!--#end if#-->
<!--#if $have_quotum#--> <!--#if $have_quota#-->
<li><a onClick="resetQuotum()">$T('link-resetQuotum')</a></li> <li><a onClick="resetQuota()">$T('link-resetQuota')</a></li>
<!--#end if#--> <!--#end if#-->
<br /> <br />
<li><a style="text-decoration:underline;cursor:pointer;" onClick="if(confirm('$T('smpl-restartOK?')')){restart()}">$T('button-restart')</a></li> <li><a style="text-decoration:underline;cursor:pointer;" onClick="if(confirm('$T('smpl-restartOK?')')){restart()}">$T('button-restart')</a></li>

700
po/main/SABnzbd.pot

File diff suppressed because it is too large

16
sabnzbd/__init__.py

@ -229,9 +229,9 @@ def initialize(pause_downloader = False, clean_up = False, evalSched=False, repa
cfg.pause_on_post_processing.callback(guard_pause_on_pp) cfg.pause_on_post_processing.callback(guard_pause_on_pp)
cfg.growl_server.callback(sabnzbd.growler.change_value) cfg.growl_server.callback(sabnzbd.growler.change_value)
cfg.growl_password.callback(sabnzbd.growler.change_value) cfg.growl_password.callback(sabnzbd.growler.change_value)
cfg.quotum_size.callback(guard_quotum_size) cfg.quota_size.callback(guard_quota_size)
cfg.quotum_day.callback(guard_quotum_dp) cfg.quota_day.callback(guard_quota_dp)
cfg.quotum_period.callback(guard_quotum_dp) cfg.quota_period.callback(guard_quota_dp)
### Set cache limit ### Set cache limit
ArticleCache.do.new_limit(cfg.cache_limit.get_int()) ArticleCache.do.new_limit(cfg.cache_limit.get_int())
@ -422,12 +422,12 @@ def guard_pause_on_pp():
else: else:
Downloader.do.resume_from_postproc() Downloader.do.resume_from_postproc()
def guard_quotum_size(): def guard_quota_size():
""" Callback for change of quotum_size """ """ Callback for change of quota_size """
BPSMeter.do.change_quotum() BPSMeter.do.change_quota()
def guard_quotum_dp(): def guard_quota_dp():
""" Callback for change of quotum_day or quotum_period """ """ Callback for change of quota_day or quota_period """
scheduler.restart(force=True) scheduler.restart(force=True)
def add_msgid(msgid, pp=None, script=None, cat=None, priority=None, nzbname=None): def add_msgid(msgid, pp=None, script=None, cat=None, priority=None, nzbname=None):

14
sabnzbd/api.py

@ -600,9 +600,9 @@ def _api_rss_now(name, output, kwargs):
scheduler.force_rss() scheduler.force_rss()
return report(output) return report(output)
def _api_reset_quotum(name, output, kwargs): def _api_reset_quota(name, output, kwargs):
""" Reset quotum left """ """ Reset quota left """
BPSMeter.do.reset_quotum(force=True) BPSMeter.do.reset_quota(force=True)
def _api_undefined(name, output, kwargs): def _api_undefined(name, output, kwargs):
""" API: accepts output """ """ API: accepts output """
@ -738,7 +738,7 @@ _api_table = {
'watched_now' : _api_watched_now, 'watched_now' : _api_watched_now,
'rss_now' : _api_rss_now, 'rss_now' : _api_rss_now,
'browse' : _api_browse, 'browse' : _api_browse,
'reset_quotum' : _api_reset_quotum 'reset_quota' : _api_reset_quota
} }
_api_queue_table = { _api_queue_table = {
@ -1499,9 +1499,9 @@ def build_header(prim):
header['mb'] = "%.2f" % (bytes / MEBI) header['mb'] = "%.2f" % (bytes / MEBI)
header['sizeleft'] = format_bytes(bytesleft) header['sizeleft'] = format_bytes(bytesleft)
header['size'] = format_bytes(bytes) header['size'] = format_bytes(bytes)
header['quotum'] = to_units(BPSMeter.do.quotum) header['quota'] = to_units(BPSMeter.do.quota)
header['have_quotum'] = bool(BPSMeter.do.quotum > 0.0) header['have_quota'] = bool(BPSMeter.do.quota > 0.0)
header['left_quotum'] = to_units(BPSMeter.do.left) header['left_quota'] = to_units(BPSMeter.do.left)
status = '' status = ''
if Downloader.do.paused: if Downloader.do.paused:

119
sabnzbd/bpsmeter.py

@ -102,7 +102,6 @@ class BPSMeter(object):
def __init__(self): def __init__(self):
t = time.time() t = time.time()
self.start_time = t self.start_time = t
self.log_time = t self.log_time = t
self.last_update = t self.last_update = t
@ -116,13 +115,13 @@ class BPSMeter(object):
self.end_of_day = tomorrow(t) # Time that current day will end self.end_of_day = tomorrow(t) # Time that current day will end
self.end_of_week = next_week(t) # Time that current day will end self.end_of_week = next_week(t) # Time that current day will end
self.end_of_month = next_month(t) # Time that current month will end self.end_of_month = next_month(t) # Time that current month will end
self.q_day = 1 # Day of quotum reset self.q_day = 1 # Day of quota reset
self.q_period = 'm' # Daily/Weekly/Monthly quotum = d/w/m self.q_period = 'm' # Daily/Weekly/Monthly quota = d/w/m
self.quotum = self.left = 0.0 # Quotum and remaining quotum self.quota = self.left = 0.0 # Quota and remaining quota
self.have_quotum = False # Flag for quotum active self.have_quota = False # Flag for quota active
self.reset_q_time = 0L # Next reset time for quotum self.q_time = 0L # Next reset time for quota
self.hour = 0 # Quotum reset hour self.q_hour = 0 # Quota reset hour
self.minute = 0 # Quotum reset minute self.q_minute = 0 # Quota reset minute
BPSMeter.do = self BPSMeter.do = self
@ -132,29 +131,29 @@ class BPSMeter(object):
data = (self.last_update, self.grand_total, data = (self.last_update, self.grand_total,
self.day_total, self.week_total, self.month_total, self.day_total, self.week_total, self.month_total,
self.end_of_day, self.end_of_week, self.end_of_month, self.end_of_day, self.end_of_week, self.end_of_month,
self.quotum, self.left, self.reset_q_time self.quota, self.left, self.q_time
) )
sabnzbd.save_admin(data, BYTES_FILE_NAME) sabnzbd.save_admin(data, BYTES_FILE_NAME)
def read(self): def read(self):
""" Read admin from disk """ """ Read admin from disk """
quotum = self.left = cfg.quotum_size.get_float() # Quotum for this period quota = self.left = cfg.quota_size.get_float() # Quota for this period
data = sabnzbd.load_admin(BYTES_FILE_NAME) data = sabnzbd.load_admin(BYTES_FILE_NAME)
try: try:
self.last_update, self.grand_total, \ self.last_update, self.grand_total, \
self.day_total, self.week_total, self.month_total, \ self.day_total, self.week_total, self.month_total, \
self.end_of_day, self.end_of_week, self.end_of_month = data[:8] self.end_of_day, self.end_of_week, self.end_of_month = data[:8]
if len(data) == 11: if len(data) == 11:
self.quotum, self.left, self.reset_q_time = data[8:] self.quota, self.left, self.q_time = data[8:]
logging.debug('Read quotum q=%s l=%s reset=%s', logging.debug('Read quota q=%s l=%s reset=%s',
self.quotum, self.left, self.reset_q_time) self.quota, self.left, self.q_time)
if abs(quotum - self.quotum) > 0.5: if abs(quota - self.quota) > 0.5:
self.change_quotum() self.change_quota()
else: else:
self.quotum = self.left = cfg.quotum_size.get_float() self.quota = self.left = cfg.quota_size.get_float()
self.have_quotum = bool(cfg.quotum_size()) self.have_quota = bool(cfg.quota_size())
res = self.reset_quotum() res = self.reset_quota()
except: except:
# Get the latest data from the database and assign to a fake server # Get the latest data from the database and assign to a fake server
logging.debug('Setting default BPS meter values') logging.debug('Setting default BPS meter values')
@ -205,14 +204,14 @@ class BPSMeter(object):
self.grand_total[server] = 0L self.grand_total[server] = 0L
self.grand_total[server] += amount self.grand_total[server] += amount
# Quotum check # Quota check
if self.have_quotum: if self.have_quota:
self.left -= amount self.left -= amount
if self.left <= 0.0: if self.left <= 0.0:
from sabnzbd.downloader import Downloader from sabnzbd.downloader import Downloader
if Downloader.do and not Downloader.do.paused: if Downloader.do and not Downloader.do.paused:
Downloader.do.pause() Downloader.do.pause()
logging.warning(Ta('Quotum spent, pausing downloading')) logging.warning(Ta('Quota spent, pausing downloading'))
# Speedometer # Speedometer
try: try:
@ -262,15 +261,15 @@ class BPSMeter(object):
return self.bps return self.bps
def reset_quotum(self, force=False): def reset_quota(self, force=False):
""" Check if it's time to reset the quotum, optionally resuming """ Check if it's time to reset the quota, optionally resuming
Return True, when still paused Return True, when still paused
""" """
if force or (self.have_quotum and time.time() > (self.reset_q_time - 50)): if force or (self.have_quota and time.time() > (self.q_time - 50)):
self.quotum = self.left = cfg.quotum_size.get_float() self.quota = self.left = cfg.quota_size.get_float()
logging.info('Quotum was reset to %s', self.quotum) logging.info('Quota was reset to %s', self.quota)
if cfg.quotum_resume(): if cfg.quota_resume():
logging.info('Auto-resume due to quotum reset') logging.info('Auto-resume due to quota reset')
if sabnzbd.downloader.Downloader.do: if sabnzbd.downloader.Downloader.do:
sabnzbd.downloader.Downloader.do.resume() sabnzbd.downloader.Downloader.do.resume()
self.next_reset() self.next_reset()
@ -284,34 +283,34 @@ class BPSMeter(object):
t = t or time.time() t = t or time.time()
tm = time.localtime(t) tm = time.localtime(t)
if self.q_period == 'd': if self.q_period == 'd':
nx = (tm[0], tm[1], tm[2], self.hour, self.minute, 0, 0, 0, tm[8]) nx = (tm[0], tm[1], tm[2], self.q_hour, self.q_minute, 0, 0, 0, tm[8])
if (tm.tm_hour + tm.tm_min * 60) >= (self.hour + self.minute * 60): if (tm.tm_hour + tm.tm_min * 60) >= (self.q_hour + self.q_minute * 60):
# If today's moment has passed, it will happen tomorrow # If today's moment has passed, it will happen tomorrow
t = time.mktime(nx) + 24 * 3600 t = time.mktime(nx) + 24 * 3600
tm = time.localtime(t) tm = time.localtime(t)
elif self.q_period == 'w': elif self.q_period == 'w':
if self.q_day < tm.tm_wday+1 or (self.q_day == tm.tm_wday+1 and (tm.tm_hour + tm.tm_min * 60) >= (self.hour + self.minute * 60)): if self.q_day < tm.tm_wday+1 or (self.q_day == tm.tm_wday+1 and (tm.tm_hour + tm.tm_min * 60) >= (self.q_hour + self.q_minute * 60)):
tm = time.localtime(next_week(t)) tm = time.localtime(next_week(t))
dif = abs(self.q_day - tm.tm_wday - 1) dif = abs(self.q_day - tm.tm_wday - 1)
t = time.mktime(tm) + dif * 24 * 3600 t = time.mktime(tm) + dif * 24 * 3600
tm = time.localtime(t) tm = time.localtime(t)
elif self.q_period == 'm': elif self.q_period == 'm':
if self.q_day < tm.tm_mday or (self.q_day == tm.tm_mday and (tm.tm_hour + tm.tm_min * 60) >= (self.hour + self.minute * 60)): if self.q_day < tm.tm_mday or (self.q_day == tm.tm_mday and (tm.tm_hour + tm.tm_min * 60) >= (self.q_hour + self.q_minute * 60)):
tm = time.localtime(next_month(t)) tm = time.localtime(next_month(t))
tm = (tm[0], tm[1], self.q_day, self.hour, self.minute, 0, 0, 0, tm[8]) tm = (tm[0], tm[1], self.q_day, self.q_hour, self.q_minute, 0, 0, 0, tm[8])
else: else:
return return
tm = (tm[0], tm[1], tm[2], self.hour, self.minute, 0, 0, 0, tm[8]) tm = (tm[0], tm[1], tm[2], self.q_hour, self.q_minute, 0, 0, 0, tm[8])
self.reset_q_time = time.mktime(tm) self.q_time = time.mktime(tm)
logging.debug('Will reset quotum at %s', tm) logging.debug('Will reset quota at %s', tm)
def change_quotum(self): def change_quota(self):
""" Update quotum, potentially pausing downloader """ Update quota, potentially pausing downloader
""" """
if not self.have_quotum and self.quotum < 0.5: if not self.have_quota and self.quota < 0.5:
# Never set, use last period's size # Never set, use last period's size
per = cfg.quotum_period() per = cfg.quota_period()
sums = self.get_sums() sums = self.get_sums()
if per == 'd': if per == 'd':
self.left = sums[3] self.left = sums[3]
@ -320,51 +319,51 @@ class BPSMeter(object):
elif per == 'm': elif per == 'm':
self.left = sums[1] self.left = sums[1]
self.have_quotum = bool(cfg.quotum_size()) self.have_quota = bool(cfg.quota_size())
if self.have_quotum: if self.have_quota:
quotum = cfg.quotum_size.get_float() quota = cfg.quota_size.get_float()
self.left = quotum - (self.quotum - self.left) self.left = quota - (self.quota - self.left)
self.quotum = quotum self.quota = quota
else: else:
self.quotum = self.left = 0L self.quota = self.left = 0L
self.update(0) self.update(0)
self.next_reset() self.next_reset()
if self.left > 0.5: if self.left > 0.5:
from sabnzbd.downloader import Downloader from sabnzbd.downloader import Downloader
if cfg.quotum_resume() and Downloader.do and Downloader.do.paused: if cfg.quota_resume() and Downloader.do and Downloader.do.paused:
Downloader.do.resume() Downloader.do.resume()
# Pattern = <day#> <hh:mm> # Pattern = <day#> <hh:mm>
# The <day> and <hh:mm> part can both be optional # The <day> and <hh:mm> part can both be optional
__re_day = re.compile('^\s*(\d+)[^:]*') __re_day = re.compile('^\s*(\d+)[^:]*')
__re_hm = re.compile('(\d+):(\d+)\s*$') __re_hm = re.compile('(\d+):(\d+)\s*$')
def get_quotum(self): def get_quota(self):
""" If quotum active, return check-function, hour, minute """ If quota active, return check-function, hour, minute
""" """
if self.have_quotum: if self.have_quota:
self.q_period = cfg.quotum_period()[0].lower() self.q_period = cfg.quota_period()[0].lower()
self.q_day = 1 self.q_day = 1
self.hour = self.minute = 0 self.q_hour = self.q_minute = 0
txt = cfg.quotum_day().lower() txt = cfg.quota_day().lower()
m = self.__re_day.search(txt) m = self.__re_day.search(txt)
if m: if m:
self.q_day = int(m.group(1)) self.q_day = int(m.group(1))
m = self.__re_hm.search(txt) m = self.__re_hm.search(txt)
if m: if m:
self.hour = int(m.group(1)) self.q_hour = int(m.group(1))
self.minute = int(m.group(2)) self.q_minute = int(m.group(2))
self.q_day = max(1, self.q_day) self.q_day = max(1, self.q_day)
self.q_day = min(7, self.q_day) self.q_day = min(7, self.q_day)
self.change_quotum() self.change_quota()
return quotum_handler, self.hour, self.minute return quota_handler, self.q_hour, self.q_minute
else: else:
return None, 0, 0 return None, 0, 0
def quotum_handler(): def quota_handler():
""" To be called from scheduler """ """ To be called from scheduler """
logging.debug('Checking quotum') logging.debug('Checking quota')
BPSMeter.do.reset_quotum() BPSMeter.do.reset_quota()
BPSMeter() BPSMeter()

8
sabnzbd/cfg.py

@ -217,10 +217,10 @@ growl_password = OptionPassword('growl', 'growl_password')
growl_enable = OptionBool('growl', 'growl_enable', True) growl_enable = OptionBool('growl', 'growl_enable', True)
ntfosd_enable = OptionBool('growl', 'ntfosd_enable', True) ntfosd_enable = OptionBool('growl', 'ntfosd_enable', True)
quotum_size = OptionStr('misc', 'quotum_size') quota_size = OptionStr('misc', 'quota_size')
quotum_day = OptionStr('misc', 'quotum_day') quota_day = OptionStr('misc', 'quota_day')
quotum_resume = OptionBool('misc', 'quotum_resume', False) quota_resume = OptionBool('misc', 'quota_resume', False)
quotum_period = OptionStr('misc', 'quotum_period', 'm') quota_period = OptionStr('misc', 'quota_period', 'm')
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Set root folders for Folder config-items # Set root folders for Folder config-items

2
sabnzbd/downloader.py

@ -277,7 +277,7 @@ class Downloader(Thread):
from sabnzbd.nzbqueue import NzbQueue from sabnzbd.nzbqueue import NzbQueue
self.decoder.start() self.decoder.start()
# Kick BPS-Meter to check quotum # Kick BPS-Meter to check quota
BPSMeter.do.update() BPSMeter.do.update()
while 1: while 1:

6
sabnzbd/interface.py

@ -1130,7 +1130,7 @@ SWITCH_LIST = \
'ignore_samples', 'pause_on_post_processing', 'quick_check', 'nice', 'ionice', 'ignore_samples', 'pause_on_post_processing', 'quick_check', 'nice', 'ionice',
'ssl_type', 'pre_script', 'pause_on_pwrar', 'ampm', 'sfv_check', 'folder_rename', 'ssl_type', 'pre_script', 'pause_on_pwrar', 'ampm', 'sfv_check', 'folder_rename',
'unpack_check', 'pre_check', 'unpack_check', 'pre_check',
'quotum_size', 'quotum_day', 'quotum_resume', 'quotum_period' 'quota_size', 'quota_day', 'quota_resume', 'quota_period'
) )
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
@ -2187,10 +2187,10 @@ class ConnectionInfo(object):
return template.respond() return template.respond()
@cherrypy.expose @cherrypy.expose
def reset_quotum(self, **kwargs): def reset_quota(self, **kwargs):
msg = check_session(kwargs) msg = check_session(kwargs)
if msg: return msg if msg: return msg
BPSMeter.do.reset_quotum(force=True) BPSMeter.do.reset_quota(force=True)
raise dcRaiser(self.__root, kwargs) raise dcRaiser(self.__root, kwargs)
@cherrypy.expose @cherrypy.expose

6
sabnzbd/scheduler.py

@ -158,10 +158,10 @@ def init():
__SCHED.add_single_task(Bookmarks.do.run, 'Bookmarks', 20, kronos.method.sequential, None, None) __SCHED.add_single_task(Bookmarks.do.run, 'Bookmarks', 20, kronos.method.sequential, None, None)
action, hour, minute = sabnzbd.bpsmeter.BPSMeter.do.get_quotum() action, hour, minute = sabnzbd.bpsmeter.BPSMeter.do.get_quota()
if action: if action:
logging.info('Setting schedule for quotum check daily at %s:%s', hour, minute) logging.info('Setting schedule for quota check daily at %s:%s', hour, minute)
__SCHED.add_daytime_task(action, 'quotum_reset', range(1, 8), None, (hour, minute), __SCHED.add_daytime_task(action, 'quota_reset', range(1, 8), None, (hour, minute),
kronos.method.sequential, [], None) kronos.method.sequential, [], None)

25
sabnzbd/skintext.py

@ -197,9 +197,9 @@ SKIN_TEXT = {
'removeNZB-Files' : TT('Remove NZB & Delete Files'), #: Queue page button 'removeNZB-Files' : TT('Remove NZB & Delete Files'), #: Queue page button
'AofB' : TT('of'), #: Queue page, as in "4G *of* 10G" 'AofB' : TT('of'), #: Queue page, as in "4G *of* 10G"
'missingArt': TT('Missing articles'), #: Caption for missing articles in Queue 'missingArt': TT('Missing articles'), #: Caption for missing articles in Queue
'quotum-left' : TT('Quotum left'), #: Remaining quotum (displayed in Queue) 'quota-left' : TT('Quota left'), #: Remaining quota (displayed in Queue)
'manual' : TT('manual'), #: Manual reset of quotum 'manual' : TT('manual'), #: Manual reset of quota
'link-resetQuotum' : TT('Reset Quotum now'), 'link-resetQuota' : TT('Reset Quota now'),
# History page # History page
'purgeHist' : TT('Purge History'), #: History page button 'purgeHist' : TT('Purge History'), #: History page button
@ -425,19 +425,18 @@ SKIN_TEXT = {
'swtag-queue' : TT('Queue'), 'swtag-queue' : TT('Queue'),
'swtag-pp' : TT('Post processing'), 'swtag-pp' : TT('Post processing'),
'swtag-naming' : TT('Naming'), 'swtag-naming' : TT('Naming'),
'swtag-quotum' : TT('Quotum'), 'swtag-quota' : TT('Quota'),
'opt-quotum_size' : TT('Size'), #: Size of the download quotum 'opt-quota_size' : TT('Size'), #: Size of the download quota
'explain-quotum_size' : TT('How much can be downloaded this month (K/M/G)'), 'explain-quota_size' : TT('How much can be downloaded this month (K/M/G)'),
'opt-quotum_day' : TT('Reset day'), #: Reset day of the download quotum 'opt-quota_day' : TT('Reset day'), #: Reset day of the download quota
'explain-quotum_day' : TT('On which day of the month or week (1=Monday) does your ISP reset the quotum? (Optionally with hh:mm)'), 'explain-quota_day' : TT('On which day of the month or week (1=Monday) does your ISP reset the quota? (Optionally with hh:mm)'),
'opt-quotum_resume' : TT('Auto resume'), #: Auto-resume download on the reset day 'opt-quota_resume' : TT('Auto resume'), #: Auto-resume download on the reset day
'explain-quotum_resume' : TT('Should downloading resume after the quotum is reset?'), 'explain-quota_resume' : TT('Should downloading resume after the quota is reset?'),
'opt-quotum_period' : TT('Quotum period'), #: Does the quotum get reset every day, week or month? 'opt-quota_period' : TT('Quota period'), #: Does the quota get reset every day, week or month?
'explain-quotum_period' : TT('Does the quotum get reset each day, week or month?'), 'explain-quota_period' : TT('Does the quota get reset each day, week or month?'),
'opt-pre_check' : TT('Check before download'), 'opt-pre_check' : TT('Check before download'),
'explain-pre_check' : TT('Try to predict successful completion before actual download (slower!)'), 'explain-pre_check' : TT('Try to predict successful completion before actual download (slower!)'),
# Config->Server # Config->Server
'configServer' : TT('Server configuration'), 'configServer' : TT('Server configuration'),
'defServer' : TT('Server definition'), 'defServer' : TT('Server definition'),

Loading…
Cancel
Save