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 ***
*******************************************
- 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.
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 class="EntryFieldSet">
<strong>$T('opt-quotum_size'):</strong><br/>
$T('explain-quotum_size')<br/>
<input type="text" name="quotum_size" value="$quotum_size"/>
<strong>$T('opt-quota_size'):</strong><br/>
$T('explain-quota_size')<br/>
<input type="text" name="quota_size" value="$quota_size"/>
<br>
<br>
<strong>$T('opt-quotum_period'):</strong><br>
$T('explain-quotum_period')<br>
<strong>$T('opt-quota_period'):</strong><br>
$T('explain-quota_period')<br>
<select name="ssl_type">
<option value="m" <!--#if $quotum_period == 'm' then 'selected' else ''#--> >$T('month')</option>
<option value="w" <!--#if $quotum_period == 'w' then 'selected' else ''#--> >$T('week')</option>
<option value="d" <!--#if $quotum_period == 'd' then 'selected' else ''#--> >$T('day')</option>
<option value="x" <!--#if $quotum_period == 'x' then 'selected' else ''#--> >$T('manual')</option>
<option value="m" <!--#if $quota_period == 'm' then 'selected' else ''#--> >$T('month')</option>
<option value="w" <!--#if $quota_period == 'w' then 'selected' else ''#--> >$T('week')</option>
<option value="d" <!--#if $quota_period == 'd' then 'selected' else ''#--> >$T('day')</option>
<option value="x" <!--#if $quota_period == 'x' then 'selected' else ''#--> >$T('manual')</option>
</select>
<br/><br/>
<strong>$T('opt-quotum_day'):</strong><br/>
$T('explain-quotum_day')<br/>
<input type="text" name="quotum_day" value="$quotum_day"/>
<strong>$T('opt-quota_day'):</strong><br/>
$T('explain-quota_day')<br/>
<input type="text" name="quota_day" value="$quota_day"/>
<br>
<br>
<legend>$T('swtag-quotum')</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>
$T('explain-quotum_resume')<br>
<legend>$T('swtag-quota')</legend>
<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-quota_resume')<br>
<br/>
</fieldset>
</div>

4
interfaces/Classic/templates/connection_info.tmpl

@ -6,8 +6,8 @@
<span class="SubMenu">
<!--#set $msg=$T('askTestEmail')#-->
<!--#if $have_quotum#-->
<a href="./reset_quotum?session=$session">$T('link-resetQuotum')</a> |
<!--#if $have_quota#-->
<a href="./reset_quota?session=$session">$T('link-resetQuota')</a> |
<!--#end if#-->
<a href="./disconnect?session=$session">$T('link-forceDisc')</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)#-->
$msg&nbsp;&nbsp;
<!--#end if#-->
<!--#if $have_quotum#-->
| &nbsp;&nbsp;<strong>$T('quotum-left'):</strong>&nbsp;&nbsp;$left_quotum&nbsp;&frasl;&nbsp;$quotum</strong>&nbsp;&nbsp;&nbsp;
<!--#if $have_quota#-->
| &nbsp;&nbsp;<strong>$T('quota-left'):</strong>&nbsp;&nbsp;$left_quota&nbsp;&frasl;&nbsp;$quota</strong>&nbsp;&nbsp;&nbsp;
<!--#end if#-->
<!--#if $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 id="core-component-group6" class="component-group clearfix">
<div class="component-group-desc">
<h3>$T('swtag-quotum')</h3>
<h3>$T('swtag-quota')</h3>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label class="nocheck clearfix" for="quotum_size">
<span class="component-title">$T('opt-quotum_size')</span>
<input type="text" name="quotum_size" id="quotum_size" value="$quotum_size"/>
<label class="nocheck clearfix" for="quota_size">
<span class="component-title">$T('opt-quota_size')</span>
<input type="text" name="quota_size" id="quota_size" value="$quota_size"/>
</label>
<label class="nocheck clearfix">
<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>
</div>
<div class="field-pair alt">
<label class="nocheck clearfix" for="quotum_period">
<span class="component-title">$T('opt-quotum_period')</span>
<select name="quotum_period" id="quotum_period">
<option value="m" <!--#if $quotum_period == "m" then 'selected' else ''#--> >$T('month')</option>
<option value="w" <!--#if $quotum_period == "w" then 'selected' else ''#--> >$T('week')</option>
<option value="d" <!--#if $quotum_period == "d" then 'selected' else ''#--> >$T('day')</option>
<option value="x" <!--#if $quotum_period == "x" then 'selected' else ''#--> >$T('manual')</option>
<label class="nocheck clearfix" for="quota_period">
<span class="component-title">$T('opt-quota_period')</span>
<select name="quota_period" id="quota_period">
<option value="m" <!--#if $quota_period == "m" then 'selected' else ''#--> >$T('month')</option>
<option value="w" <!--#if $quota_period == "w" then 'selected' else ''#--> >$T('week')</option>
<option value="d" <!--#if $quota_period == "d" then 'selected' else ''#--> >$T('day')</option>
<option value="x" <!--#if $quota_period == "x" then 'selected' else ''#--> >$T('manual')</option>
</select>
</label>
<label class="nocheck clearfix">
<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>
</div>
<div class="field-pair">
<label class="nocheck clearfix" for="quotum_day">
<span class="component-title">$T('opt-quotum_day')</span>
<input type="text" name="quotum_day" id="quotum_day" value="$quotum_day"/>
<label class="nocheck clearfix" for="quota_day">
<span class="component-title">$T('opt-quota_day')</span>
<input type="text" name="quota_day" id="quota_day" value="$quota_day"/>
</label>
<label class="nocheck clearfix">
<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>
</div>
<div class="field-pair alt">
<input type="checkbox" name="quotum_resume" id="quotum_resume" value="1" <!--#if $quotum_resume > 0 then "checked=1" else ""#--> />
<label class="clearfix" for="quotum_resume">
<span class="component-title">$T('opt-quotum_resume')</span>
<span class="component-desc">$T('explain-quotum_resume')</span>
<input type="checkbox" name="quota_resume" id="quota_resume" value="1" <!--#if $quota_resume > 0 then "checked=1" else ""#--> />
<label class="clearfix" for="quota_resume">
<span class="component-title">$T('opt-quota_resume')</span>
<span class="component-desc">$T('explain-quota_resume')</span>
</label>
</div>
</fieldset>

2
interfaces/Plush/templates/main.tmpl

@ -25,7 +25,7 @@
<li class="main_sprite_container sprite_q_queue">
<a class="sf-with-ul">$T('menu-queue')</a>
<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 $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#-->

4
interfaces/Plush/templates/queue.tmpl

@ -15,8 +15,8 @@
// set lower-right queue stats
var stats = '';
<!--#if $have_quotum#-->
stats += '<strong>$left_quotum&nbsp;&nbsp;&frasl;&nbsp;&nbsp;$quotum</strong>&nbsp;$T('quotum-left')&nbsp;&nbsp;';
<!--#if $have_quota#-->
stats += '<strong>$left_quota&nbsp;&nbsp;&frasl;&nbsp;&nbsp;$quota</strong>&nbsp;$T('quota-left')&nbsp;&nbsp;';
<!--#end if#-->
<!--#if $noofslots > 0#-->
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_quotum_now').click(function() {
// Reset Quota
$('#reset_quota_now').click(function() {
$.ajax({
type: "POST",
url: "tapi",
data: {mode:'reset_quotum', apikey: $.plush.apikey},
data: {mode:'reset_quota', apikey: $.plush.apikey},
success: $.plush.RefreshQueue
});
});

34
interfaces/smpl/templates/config_switches.tmpl

@ -199,33 +199,33 @@
</fieldset>
<fieldset class="EntryFieldSet">
<legend>$T('swtag-quotum')</legend>
<legend>$T('swtag-quota')</legend>
<hr />
<span class="label">$T('opt-quotum_size'):</span>
<input type="text" name="quotum_size" value="$quotum_size"/>
<span class="tips">$T('explain-quotum_size')</span></label>
<span class="label">$T('opt-quota_size'):</span>
<input type="text" name="quota_size" value="$quota_size"/>
<span class="tips">$T('explain-quota_size')</span></label>
<br class="clear" />
<span class="label">$T('opt-quotum_period'):</span>
<select name="quotum_period" id="quotum_period" class="select">
<option value="m" <!--#if $quotum_period == "m" then 'selected' else ''#--> >$T('month')</option>
<option value="w" <!--#if $quotum_period == "w" then 'selected' else ''#--> >$T('week')</option>
<option value="d" <!--#if $quotum_period == "d" then 'selected' else ''#--> >$T('day')</option>
<option value="x" <!--#if $quotum_period == "x" then 'selected' else ''#--> >$T('manual')</option>
<span class="label">$T('opt-quota_period'):</span>
<select name="quota_period" id="quota_period" class="select">
<option value="m" <!--#if $quota_period == "m" then 'selected' else ''#--> >$T('month')</option>
<option value="w" <!--#if $quota_period == "w" then 'selected' else ''#--> >$T('week')</option>
<option value="d" <!--#if $quota_period == "d" then 'selected' else ''#--> >$T('day')</option>
<option value="x" <!--#if $quota_period == "x" then 'selected' else ''#--> >$T('manual')</option>
</select>
<span class="tips">$T('explain-quotum_period')</span>
<span class="tips">$T('explain-quota_period')</span>
<br class="clear" />
<span class="label">$T('opt-quotum_day'):</span>
<input type="text" name="quotum_day" value="$quotum_day"/>
<span class="tips">$T('explain-quotum_day')</span></label>
<span class="label">$T('opt-quota_day'):</span>
<input type="text" name="quota_day" value="$quota_day"/>
<span class="tips">$T('explain-quota_day')</span></label>
<br class="clear" />
<label><span class="label">$T('opt-quotum_resume'):</span>
<input class="radio" type="checkbox" name="quotum_resume" value="1" <!--#if $quotum_resume > 0 then 'checked="1"' else ""#--> />
<span class="tips">$T('explain-quotum_resume')</span></label>
<label><span class="label">$T('opt-quota_resume'):</span>
<input class="radio" type="checkbox" name="quota_resume" value="1" <!--#if $quota_resume > 0 then 'checked="1"' else ""#--> />
<span class="tips">$T('explain-quota_resume')</span></label>
<br class="clear" />
</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#-->
</table>
<div class="centerLinks">
<!--#if $have_quotum#-->
$T('quotum-left'):&nbsp;<strong>$left_quotum&nbsp;&frasl;&nbsp;$quotum</strong>&nbsp;|
<!--#if $have_quota#-->
$T('quota-left'):&nbsp;<strong>$left_quota&nbsp;&frasl;&nbsp;$quota</strong>&nbsp;|
<!--#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>
</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);
}
function resetQuotum()
function resetQuota()
{
d = doSimpleXMLHttpRequest('tapi?mode=reset_quotum&session='+session);
d = doSimpleXMLHttpRequest('tapi?mode=reset_quota&session='+session);
}
function changequeueoptions(page)
@ -1150,8 +1150,8 @@ function loadingJSON(){
<!--#if $varExists('newzbinDetails')#-->
<li><a onClick="getBookmarks()">$T('smpl-getbookmarks')</a></li>
<!--#end if#-->
<!--#if $have_quotum#-->
<li><a onClick="resetQuotum()">$T('link-resetQuotum')</a></li>
<!--#if $have_quota#-->
<li><a onClick="resetQuota()">$T('link-resetQuota')</a></li>
<!--#end if#-->
<br />
<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.growl_server.callback(sabnzbd.growler.change_value)
cfg.growl_password.callback(sabnzbd.growler.change_value)
cfg.quotum_size.callback(guard_quotum_size)
cfg.quotum_day.callback(guard_quotum_dp)
cfg.quotum_period.callback(guard_quotum_dp)
cfg.quota_size.callback(guard_quota_size)
cfg.quota_day.callback(guard_quota_dp)
cfg.quota_period.callback(guard_quota_dp)
### Set cache limit
ArticleCache.do.new_limit(cfg.cache_limit.get_int())
@ -422,12 +422,12 @@ def guard_pause_on_pp():
else:
Downloader.do.resume_from_postproc()
def guard_quotum_size():
""" Callback for change of quotum_size """
BPSMeter.do.change_quotum()
def guard_quota_size():
""" Callback for change of quota_size """
BPSMeter.do.change_quota()
def guard_quotum_dp():
""" Callback for change of quotum_day or quotum_period """
def guard_quota_dp():
""" Callback for change of quota_day or quota_period """
scheduler.restart(force=True)
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()
return report(output)
def _api_reset_quotum(name, output, kwargs):
""" Reset quotum left """
BPSMeter.do.reset_quotum(force=True)
def _api_reset_quota(name, output, kwargs):
""" Reset quota left """
BPSMeter.do.reset_quota(force=True)
def _api_undefined(name, output, kwargs):
""" API: accepts output """
@ -738,7 +738,7 @@ _api_table = {
'watched_now' : _api_watched_now,
'rss_now' : _api_rss_now,
'browse' : _api_browse,
'reset_quotum' : _api_reset_quotum
'reset_quota' : _api_reset_quota
}
_api_queue_table = {
@ -1499,9 +1499,9 @@ def build_header(prim):
header['mb'] = "%.2f" % (bytes / MEBI)
header['sizeleft'] = format_bytes(bytesleft)
header['size'] = format_bytes(bytes)
header['quotum'] = to_units(BPSMeter.do.quotum)
header['have_quotum'] = bool(BPSMeter.do.quotum > 0.0)
header['left_quotum'] = to_units(BPSMeter.do.left)
header['quota'] = to_units(BPSMeter.do.quota)
header['have_quota'] = bool(BPSMeter.do.quota > 0.0)
header['left_quota'] = to_units(BPSMeter.do.left)
status = ''
if Downloader.do.paused:

119
sabnzbd/bpsmeter.py

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

8
sabnzbd/cfg.py

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

2
sabnzbd/downloader.py

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

6
sabnzbd/interface.py

@ -1130,7 +1130,7 @@ SWITCH_LIST = \
'ignore_samples', 'pause_on_post_processing', 'quick_check', 'nice', 'ionice',
'ssl_type', 'pre_script', 'pause_on_pwrar', 'ampm', 'sfv_check', 'folder_rename',
'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()
@cherrypy.expose
def reset_quotum(self, **kwargs):
def reset_quota(self, **kwargs):
msg = check_session(kwargs)
if msg: return msg
BPSMeter.do.reset_quotum(force=True)
BPSMeter.do.reset_quota(force=True)
raise dcRaiser(self.__root, kwargs)
@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)
action, hour, minute = sabnzbd.bpsmeter.BPSMeter.do.get_quotum()
action, hour, minute = sabnzbd.bpsmeter.BPSMeter.do.get_quota()
if action:
logging.info('Setting schedule for quotum check daily at %s:%s', hour, minute)
__SCHED.add_daytime_task(action, 'quotum_reset', range(1, 8), None, (hour, minute),
logging.info('Setting schedule for quota check daily at %s:%s', hour, minute)
__SCHED.add_daytime_task(action, 'quota_reset', range(1, 8), None, (hour, minute),
kronos.method.sequential, [], None)

25
sabnzbd/skintext.py

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

Loading…
Cancel
Save