Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- commit bb11fed59b12111d6fd18127cd123f29ec9d65f4
- Author: Fmstrat <github@nosolutions.com>
- Date: Thu Dec 19 18:02:52 2013 -0500
- Updated for server priority selection
- diff --git a/sabnzbd/nzbstuff.py b/sabnzbd/nzbstuff.py
- index 65540db..a018e5b 100644
- --- a/sabnzbd/nzbstuff.py
- +++ b/sabnzbd/nzbstuff.py
- @@ -88,7 +88,7 @@ class Article(TryList):
- self.tries = 0 # Try count
- self.nzf = nzf
- - def get_article(self, server):
- + def get_article(self, server, servers):
- """ Return article when appropriate for specified server """
- if server.fillserver and (not self.allow_fill_server) and sabnzbd.active_primaries():
- logging.debug('Article %s | Server: %s | Skipping as its a fill', self.article, server.host)
- commit 013056f2049983cdb952cfad3beb142c84f3d634
- Author: Fmstrat <github@nosolutions.com>
- Date: Tue Dec 17 11:48:50 2013 -0500
- Updated for server priority selection
- diff --git a/interfaces/Classic/templates/config_server.tmpl b/interfaces/Classic/templates/config_server.tmpl
- index 9ecfa50..2f3d417 100644
- --- a/interfaces/Classic/templates/config_server.tmpl
- +++ b/interfaces/Classic/templates/config_server.tmpl
- @@ -17,6 +17,7 @@
- $T('srv-password'):<br><input type="password" size="25" name="password"><br>
- $T('srv-timeout'):<br><input type="text" size="25" name="timeout" value="120"><br>
- $T('srv-connections'):<br><input type="text" size="25" name="connections"><br>
- + $T('srv-priority'):<br><input type="text" size="25" name="priority"><br>
- $T('srv-retention') ($T('days')):<br><input type="text" size="25" name="retention"><br>
- <!--#if int($have_ssl) == 0#-->
- $T('srv-ssl') $T('opt-notInstalled')
- @@ -42,6 +43,7 @@
- $T('srv-password'):<br><input type="password" size="25" name="password" value="$servers[$server]['password']"><br>
- $T('srv-timeout'):<br><input type="text" size="25" name="timeout" value="$servers[$server]['timeout']"><br>
- $T('srv-connections'):<br><input type="text" size="25" name="connections" value="$servers[$server]['connections']"><br>
- + $T('srv-priorty'):<br><input type="text" size="25" name="priorty" value="$servers[$server]['priorty']"><br>
- $T('srv-retention'):<br><input type="text" size="25" name="retention" value="$servers[$server]['retention']"><br>
- <!--#if int($have_ssl) == 0#-->
- $T('srv-ssl') $T('opt-notInstalled')
- diff --git a/interfaces/Config/templates/config_server.tmpl b/interfaces/Config/templates/config_server.tmpl
- index 171da0e..6b867c4 100644
- --- a/interfaces/Config/templates/config_server.tmpl
- +++ b/interfaces/Config/templates/config_server.tmpl
- @@ -41,6 +41,10 @@
- <label class="config" for="connections">$T('srv-connections')</label>
- <input type="number" name="connections" id="connections" size="8" min="0" max="100" />
- </div>
- + <div class="field-pair">
- + <label class="config" for="priority">$T('srv-priority')</label>
- + <input type="number" name="priority" id="priority" size="8" min="0" max="100" />
- + </div>
- <div class="field-pair alt">
- <label class="config" for="retention">$T('srv-retention')</label>
- <input type="number" name="retention" id="retention" size="8" min="0" /> <i>$T('days')</i>
- @@ -122,6 +126,10 @@
- <label class="config" for="connections$cur">$T('srv-connections')</label>
- <input type="number" name="connections" id="connections$cur" value="$servers[$server]['connections']" size="8" min="0" max="100" />
- </div>
- + <div class="field-pair">
- + <label class="config" for="priority$cur">$T('srv-priority')</label>
- + <input type="number" name="priority" id="priority$cur" value="$servers[$server]['priority']" size="8" min="0" max="100" />
- + </div>
- <div class="field-pair alt">
- <label class="config" for="retention$cur">$T('srv-retention')</label>
- <input type="number" name="retention" id="retention$cur" value="$servers[$server]['retention']" size="8" min="0" /> <i>$T('days')</i>
- diff --git a/interfaces/Plush/templates/config_server.tmpl b/interfaces/Plush/templates/config_server.tmpl
- index 305e7a5..7578159 100644
- --- a/interfaces/Plush/templates/config_server.tmpl
- +++ b/interfaces/Plush/templates/config_server.tmpl
- @@ -55,6 +55,12 @@
- <input type="text" size="10" name="connections"/>
- </label>
- </div>
- + <div class="field-pair">
- + <label class="nocheck clearfix" for="priority">
- + <span class="component-title"># $T('srv-priority')</span>
- + <input type="text" size="10" name="priority"/>
- + </label>
- + </div>
- <div class="field-pair alt">
- <label class="nocheck clearfix" for="retention">
- <span class="component-title">$T('srv-retention')</span>
- @@ -165,6 +171,12 @@
- <input type="text" size="10" name="connections" value="$servers[$server]['connections']" />
- </label>
- </div>
- + <div class="field-pair">
- + <label class="nocheck clearfix" for="priority">
- + <span class="component-title">$T('srv-priority')</span>
- + <input type="text" size="10" name="priority" value="$servers[$server]['priority']" />
- + </label>
- + </div>
- <div class="field-pair alt">
- <label class="nocheck clearfix" for="retention">
- <span class="component-title">$T('srv-retention')</span>
- diff --git a/interfaces/smpl/templates/config_server.tmpl b/interfaces/smpl/templates/config_server.tmpl
- index af26cf6..f584576 100644
- --- a/interfaces/smpl/templates/config_server.tmpl
- +++ b/interfaces/smpl/templates/config_server.tmpl
- @@ -22,6 +22,8 @@
- <br class="clear" />
- <label class="label">$T('srv-connections'):</label><input type="text" size="25" name="connections" value="$servers[$server]['connections']">
- <br class="clear" />
- + <label class="label">$T('srv-priority'):</label><input type="text" size="25" name="priority" value="$servers[$server]['priority']">
- + <br class="clear" />
- <label class="label">$T('srv-retention') ($T('days')):</label><input type="text" size="25" name="retention" value="$servers[$server]['retention']">
- <br class="clear" />
- @@ -87,6 +89,9 @@
- <label class="label">$T('srv-connections'):</label><input type="text" size="25" name="connections">
- <br class="clear" />
- + <label class="label">$T('srv-priority'):</label><input type="text" size="25" name="priority">
- +<br class="clear" />
- +
- <label class="label">$T('srv-retention') ($T('days')):</label><input type="text" size="25" name="retention">
- <br class="clear" />
- @@ -113,4 +118,4 @@
- </fieldset>
- </form><br class="clear"/>
- -</div>
- \ No newline at end of file
- +</div>
- diff --git a/interfaces/wizard/one.html b/interfaces/wizard/one.html
- index 1aaf719..bb32f19 100644
- --- a/interfaces/wizard/one.html
- +++ b/interfaces/wizard/one.html
- @@ -31,6 +31,10 @@ $T('wizard-explain-server')
- <div id="connections-tip" class="tips">$T('wizard-server-con-explain') $T('wizard-server-con-eg')</div>
- <div id="connections-error" class="error-text hidden">$T('wizard-server-number')</div>
- <br class="clear" />
- + <label class="label">$T('srv-priority')<span class="required-star">*</span></label><input id="priority" class="text-input-thin" type="text" size="2" name="priority" value="$priority">
- + <div id="priority-tip" class="tips">$T('wizard-server-pri-explain') $T('wizard-server-pri-eg')</div>
- + <div id="priority-error" class="error-text hidden">$T('wizard-server-number')</div>
- + <br class="clear" />
- <label for="srv-ssl"><!--#if $have_ssl then $T('srv-ssl') else '<span class="disabled-text">'+$T('srv-ssl')+'</span> (pyopenssl (python-ssl) '+$T('opt-notInstalled')+')'#-->
- <input class="validate-text" class="radio" type="checkbox" name="ssl" value="1" <!--#if $have_ssl then '' else 'disabled'#--><!--#if $ssl == 1 then 'checked' else ''#-->></label>
- <div class="tips">$T('wizard-server-ssl-explain')</div>
- @@ -58,4 +62,4 @@ $T('wizard-explain-server')
- </table>
- </div>
- </form>
- -<!--#include $webdir + "/inc_bottom.tmpl"#-->
- \ No newline at end of file
- +<!--#include $webdir + "/inc_bottom.tmpl"#-->
- diff --git a/interfaces/wizard/static/javascript/checkserver.js b/interfaces/wizard/static/javascript/checkserver.js
- index 51583e2..049156a 100644
- --- a/interfaces/wizard/static/javascript/checkserver.js
- +++ b/interfaces/wizard/static/javascript/checkserver.js
- @@ -77,6 +77,22 @@ $(document).ready(function() {
- }
- });
- + $("#priority").bind('keyup blur',function(){
- + if (this.value && isFinite(this.value)){
- + $(this).removeClass("incorrect");
- + $(this).addClass("correct");
- + $("#priority-tip").removeClass("hidden");
- + $("#priority-error").addClass("hidden");
- + checkRequired();
- + } else {
- + $(this).removeClass("correct");
- + $(this).addClass("incorrect");
- + $("#priority-tip").addClass("hidden");
- + $("#priority-error").removeClass("hidden");
- + checkRequired();
- + }
- + });
- +
- $("#port").bind('keyup blur',function(){
- if (!this.value || isFinite(this.value)){
- $(this).removeClass("incorrect");
- @@ -106,4 +122,4 @@ $(document).ready(function() {
- checkRequired();
- }
- });
- -});
- \ No newline at end of file
- +});
- diff --git a/sabnzbd/config.py b/sabnzbd/config.py
- index 71cdeb6..13ab51c 100644
- --- a/sabnzbd/config.py
- +++ b/sabnzbd/config.py
- @@ -360,6 +360,7 @@ class ConfigServer(object):
- self.enable = OptionBool(name, 'enable', True, add=False)
- self.optional = OptionBool(name, 'optional', False, add=False)
- self.retention = OptionNumber(name, 'retention', add=False)
- + self.priority = OptionNumber(name, 'priority', 0, 0, 100, add=False)
- self.set_dict(values)
- add_to_database('servers', self.__name, self)
- @@ -367,7 +368,7 @@ class ConfigServer(object):
- def set_dict(self, values):
- """ Set one or more fields, passed as dictionary """
- for kw in ('host', 'port', 'timeout', 'username', 'password', 'connections',
- - 'fillserver', 'ssl', 'enable', 'optional', 'retention'):
- + 'fillserver', 'ssl', 'enable', 'optional', 'retention', 'priority'):
- try:
- value = values[kw]
- except KeyError:
- @@ -393,6 +394,7 @@ class ConfigServer(object):
- dict['enable'] = self.enable()
- dict['optional'] = self.optional()
- dict['retention'] = self.retention()
- + dict['priority'] = self.priority()
- return dict
- def delete(self):
- diff --git a/sabnzbd/downloader.py b/sabnzbd/downloader.py
- index 00d7b9c..621f961 100644
- --- a/sabnzbd/downloader.py
- +++ b/sabnzbd/downloader.py
- @@ -54,7 +54,7 @@ TIMER_LOCK = RLock()
- #------------------------------------------------------------------------------
- class Server(object):
- - def __init__(self, id, host, port, timeout, threads, fillserver, ssl, username = None,
- + def __init__(self, id, host, port, timeout, threads, priority, fillserver, ssl, username = None,
- password = None, optional=False, retention=0):
- self.id = id
- self.newid = None
- @@ -63,6 +63,7 @@ class Server(object):
- self.port = port
- self.timeout = timeout
- self.threads = threads
- + self.priority = priority
- self.fillserver = fillserver
- self.ssl = ssl
- self.optional = optional
- @@ -176,6 +177,7 @@ class Downloader(Thread):
- port = srv.port()
- timeout = srv.timeout()
- threads = srv.connections()
- + priority = srv.priority()
- fillserver = srv.fillserver()
- primary = enabled and (not fillserver) and (threads > 0)
- ssl = srv.ssl() and sabnzbd.newswrapper.HAVE_SSL
- @@ -196,8 +198,8 @@ class Downloader(Thread):
- break
- if create and enabled and host and port and threads:
- - self.servers.append(Server(newserver, host, port, timeout, threads, fillserver, ssl,
- - username, password, optional, retention))
- + self.servers.append(Server(newserver, host, port, timeout, threads, priority, fillserver,
- + ssl, username, password, optional, retention))
- return primary
- @@ -356,7 +358,7 @@ class Downloader(Thread):
- request_server_info(server)
- break
- - article = NzbQueue.do.get_article(server)
- + article = NzbQueue.do.get_article(server, self.servers)
- if not article:
- break
- diff --git a/sabnzbd/nzbqueue.py b/sabnzbd/nzbqueue.py
- index 2f6e194..afd8b1c 100644
- --- a/sabnzbd/nzbqueue.py
- +++ b/sabnzbd/nzbqueue.py
- @@ -684,12 +684,12 @@ class NzbQueue(TryList):
- return False
- @synchronized(NZBQUEUE_LOCK)
- - def get_article(self, server):
- + def get_article(self, server, servers):
- if self.__top_only:
- if self.__nzo_list:
- for nzo in self.__nzo_list:
- if nzo.status not in (Status.PAUSED, Status.GRABBING):
- - article = nzo.get_article(server)
- + article = nzo.get_article(server, servers)
- if article:
- return article
- @@ -697,7 +697,7 @@ class NzbQueue(TryList):
- for nzo in self.__nzo_list:
- # Don't try to get an article if server is in try_list of nzo
- if not nzo.server_in_try_list(server) and nzo.status not in (Status.PAUSED, Status.GRABBING):
- - article = nzo.get_article(server)
- + article = nzo.get_article(server, servers)
- if article:
- return article
- diff --git a/sabnzbd/nzbstuff.py b/sabnzbd/nzbstuff.py
- index edb0b63..65540db 100644
- --- a/sabnzbd/nzbstuff.py
- +++ b/sabnzbd/nzbstuff.py
- @@ -42,6 +42,7 @@ from sabnzbd.misc import to_units, cat_to_opts, cat_convert, sanitize_foldername
- get_unique_path, get_admin_path, remove_all, format_source_url, \
- sanitize_filename, globber, sanitize_foldername, int_conv, \
- set_permissions
- +import sabnzbd.config as config
- import sabnzbd.cfg as cfg
- from sabnzbd.trylist import TryList
- from sabnzbd.encoding import unicoder, platform_encode, latin1, name_fixer
- @@ -77,6 +78,7 @@ class Article(TryList):
- TryList.__init__(self)
- self.fetcher = None
- + self.fetcher_priority = 0
- self.allow_fill_server = False
- self.article = article
- @@ -89,13 +91,50 @@ class Article(TryList):
- def get_article(self, server):
- """ Return article when appropriate for specified server """
- if server.fillserver and (not self.allow_fill_server) and sabnzbd.active_primaries():
- + logging.debug('Article %s | Server: %s | Skipping as its a fill', self.article, server.host)
- return None
- if not self.fetcher and not self.server_in_try_list(server):
- - self.fetcher = server
- - self.tries += 1
- - if sabnzbd.LOG_ALL: logging.debug('Article-try = %s', self.tries)
- - return self
- + logging.debug('Article %s | Server: %s | in second if', self.article, server.host)
- + # Is the current selected server of the same priority as this article?
- + logging.debug('Article %s | Server: %s | Article priority: %s', self.article, server.host, self.fetcher_priority)
- + logging.debug('Article %s | Server: %s | Server priority: %s', self.article, server.host, server.priority)
- + if (server.priority == self.fetcher_priority):
- + logging.debug('Article %s | Server: %s | same priority, use it', self.article, server.host)
- + self.fetcher = server
- + self.tries += 1
- + if sabnzbd.LOG_ALL: logging.debug('Article %s | Server: %s | Article-try: %s', self.article, server.host, self.tries)
- + logging.debug('Article %s | Server: %s | Article-try: %s', self.article, server.host, self.tries)
- + return self
- + else:
- + logging.debug('Article %s | Server: %s | not the same priorty', self.article, server.host)
- + # No, so is it a lower priority?
- + if (server.priority > self.fetcher_priority):
- + logging.debug('Article %s | Server: %s | lower priority', self.article, server.host)
- + # Is there an available server that is a higher priority?
- + found_priority = 1000
- + #for server_check in config.get_servers():
- + for server_check in servers:
- + logging.debug('Article %s | Server: %s | checking', self.article, server.host)
- + #if (server_check.priority() < found_priority and server_check.priority() < server.priority and not self.server_in_try_list(server_check)):
- + if (server_check.priority < found_priority):
- + if (server_check.priority < server.priority):
- + if (not self.server_in_try_list(server_check)):
- + logging.debug('Article %s | Server: %s | setting found priority to %s', self.article, server.host, server_check.priority)
- + found_priority = server_check.priority
- + if found_priority == 1000:
- + # If no higher priority servers, use this server
- + self.fetcher_priority = server.priority
- + self.fetcher = server
- + self.tries += 1
- + if sabnzbd.LOG_ALL: logging.debug('Article %s | Server: %s | Article-try: %s', self.article, server.host, self.tries)
- + logging.debug('Article %s | Server: %s | Article-try: %s', self.article, server.host, self.tries)
- + return self
- + else:
- + # There is a higher priorty server, so set article priority
- + logging.debug('Article %s | Server: %s | setting self priority', self.article, server.host)
- + self.fetcher_priority = found_priority
- + logging.debug('Article %s | Server: %s | Returning None', self.article, server.host)
- return None
- def get_art_id(self):
- @@ -121,6 +160,7 @@ class Article(TryList):
- self.__dict__[tup[1]] = None
- TryList.__init__(self)
- self.fetcher = None
- + self.fetcher_priority = 0
- self.allow_fill_server = False
- self.tries = 0
- @@ -250,16 +290,16 @@ class NzbFile(TryList):
- self.vol = vol
- self.blocks = int(blocks)
- - def get_article(self, server):
- + def get_article(self, server, servers):
- """ Get next article to be downloaded """
- if self.initial_article:
- - article = self.initial_article.get_article(server)
- + article = self.initial_article.get_article(server, servers)
- if article:
- return article
- else:
- for article in self.articles:
- - article = article.get_article(server)
- + article = article.get_article(server, servers)
- if article:
- return article
- @@ -1157,7 +1197,7 @@ class NzbObject(TryList):
- except:
- self.nzo_info[log] = [txt]
- - def get_article(self, server):
- + def get_article(self, server, servers):
- article = None
- nzf_remove_list = []
- @@ -1181,7 +1221,7 @@ class NzbObject(TryList):
- else:
- continue
- - article = nzf.get_article(server)
- + article = nzf.get_article(server, servers)
- if article:
- break
- diff --git a/sabnzbd/skintext.py b/sabnzbd/skintext.py
- index 329d567..05ff5ca 100644
- --- a/sabnzbd/skintext.py
- +++ b/sabnzbd/skintext.py
- @@ -494,6 +494,7 @@ SKIN_TEXT = {
- 'srv-connections' : TT('Connections'), #: Server: amount of connections
- 'srv-retention' : TT('Retention time'), #: Server's retention time in days
- 'srv-ssl' : TT('SSL'), #: Server SSL tickbox
- + 'srv-priority' : TT('Priority'), #: Server priority
- 'srv-fillserver' : TT('Backup server'), #: Backup server tickbox
- 'srv-optional' : TT('Optional'), #: Server optional tickbox
- 'srv-enable' : TT('Enable'), #: Enable server tickbox
- @@ -865,6 +866,8 @@ SKIN_TEXT = {
- 'wizard-server-help2' : TT('Don\'t have a usenet provider? We recommend trying %s.'),
- 'wizard-server-con-explain' : TT('The number of connections allowed by your provider'),
- 'wizard-server-con-eg' : TT('E.g. 8 or 20'), #: Wizard: examples of amount of connections
- + 'wizard-server-pri-explain' : TT('The priority of your server, 0 being first, 100 being last.'),
- + 'wizard-server-pri-eg' : TT('E.g. 0, 2 or 3'), #: Wizard: examples of priority
- 'wizard-server-ssl-explain' : TT('Select only if your provider allows SSL connections.'),
- 'wizard-server-text' : TT('Click to test the entered details.'),
- 'wizard-server-required' : TT('This field is required.'),
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement