From e06f9faf95c24bcb852ef9bc35dc17f7d124dd6d Mon Sep 17 00:00:00 2001
From: Dustyn Gibson <miigotu@gmail.com>
Date: Sun, 12 Jul 2015 01:42:01 -0700
Subject: [PATCH] Fix provider sorting, enabled are always at the top now.

---
 sickbeard/providers/__init__.py | 5 +++++
 sickbeard/providers/generic.py  | 2 ++
 sickbeard/webserve.py           | 9 ++++++++-
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/sickbeard/providers/__init__.py b/sickbeard/providers/__init__.py
index 79fb54854..a6e634812 100644
--- a/sickbeard/providers/__init__.py
+++ b/sickbeard/providers/__init__.py
@@ -68,6 +68,11 @@ def sortedProviderList(randomize=False):
         if curModule in providerDict:
             newList.append(providerDict[curModule])
 
+    # add all enabled providers first
+    for curModule in providerDict:
+        if providerDict[curModule] not in newList and providerDict[curModule].isEnabled():
+            newList.append(providerDict[curModule])
+
     # add any modules that are missing from that list
     for curModule in providerDict:
         if providerDict[curModule] not in newList:
diff --git a/sickbeard/providers/generic.py b/sickbeard/providers/generic.py
index 1188a3698..a183d7d2d 100644
--- a/sickbeard/providers/generic.py
+++ b/sickbeard/providers/generic.py
@@ -62,6 +62,8 @@ class GenericProvider:
 
         self.search_mode = None
         self.search_fallback = False
+
+        self.enabled = False
         self.enable_daily = False
         self.enable_backlog = False
 
diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py
index dfe1deb07..144dcf24d 100644
--- a/sickbeard/webserve.py
+++ b/sickbeard/webserve.py
@@ -4404,6 +4404,7 @@ class ConfigProviders(Config):
             if curProvider.getID() not in finishedNames:
                 sickbeard.torrentRssProviderList.remove(curProvider)
 
+        disabled_list = []
         # do the enable/disable
         for curProviderStr in provider_str_list:
             curProvider, curEnabled = curProviderStr.split(':')
@@ -4414,12 +4415,18 @@ class ConfigProviders(Config):
             if curProvObj:
                 curProvObj[0].enabled = bool(curEnabled)
 
-            provider_list.append(curProvider)
+            if curEnabled:
+                provider_list.append(curProvider)
+            else:
+                disabled_list.append(curProvider)
+
             if curProvider in newznabProviderDict:
                 newznabProviderDict[curProvider].enabled = bool(curEnabled)
             elif curProvider in torrentRssProviderDict:
                 torrentRssProviderDict[curProvider].enabled = bool(curEnabled)
 
+        provider_list = provider_list + disabled_list
+
         # dynamically load provider settings
         for curTorrentProvider in [curProvider for curProvider in sickbeard.providers.sortedProviderList() if
                                    curProvider.providerType == sickbeard.GenericProvider.TORRENT]:
-- 
GitLab