Commit 01c8b1fe authored by echel0n's avatar echel0n
Browse files

Merge branch 'release/10.0.61'

parents 06f43225 ab1bbe75
...@@ -2,8 +2,14 @@ ...@@ -2,8 +2,14 @@
   
All notable changes to this project will be documented in this file. Dates are displayed in UTC. All notable changes to this project will be documented in this file. Dates are displayed in UTC.
   
#### [10.0.61](https://git.sickrage.ca/SiCKRAGE/sickrage/compare/10.0.60...10.0.61)
- fixed issues with blank URLs being sent to get_image function when populating show/season/episode images [`bda6105`](https://git.sickrage.ca/SiCKRAGE/sickrage/commit/bda61054c9b8ac46cf036413d83fd4769dfa6ae3)
#### [10.0.60](https://git.sickrage.ca/SiCKRAGE/sickrage/compare/10.0.59...10.0.60) #### [10.0.60](https://git.sickrage.ca/SiCKRAGE/sickrage/compare/10.0.59...10.0.60)
   
> 8 May 2022
- added in missing mimetype mkv [`956a357`](https://git.sickrage.ca/SiCKRAGE/sickrage/commit/956a357160f4377e8ea2b0f86331394c322b71e4) - added in missing mimetype mkv [`956a357`](https://git.sickrage.ca/SiCKRAGE/sickrage/commit/956a357160f4377e8ea2b0f86331394c322b71e4)
   
#### [10.0.59](https://git.sickrage.ca/SiCKRAGE/sickrage/compare/10.0.58...10.0.59) #### [10.0.59](https://git.sickrage.ca/SiCKRAGE/sickrage/compare/10.0.58...10.0.59)
......
{ {
"name": "sickrage", "name": "sickrage",
"version": "10.0.60", "version": "10.0.61",
"private": true, "private": true,
"repository": { "repository": {
"type": "git", "type": "git",
......
[bumpversion] [bumpversion]
current_version = 10.0.60 current_version = 10.0.61
commit = False commit = False
tag = False tag = False
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\.(?P<release>[a-z]+)(?P<dev>\d+))? parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\.(?P<release>[a-z]+)(?P<dev>\d+))?
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
# along with SiCKRAGE. If not, see <http://www.gnu.org/licenses/>. # along with SiCKRAGE. If not, see <http://www.gnu.org/licenses/>.
# ############################################################################## # ##############################################################################
__version__ = "10.0.60" __version__ = "10.0.61"
__install_type__ = "" __install_type__ = ""
import argparse import argparse
......
sickrage/checksums.md5 = d41d8cd98f00b204e9800998ecf8427e sickrage/checksums.md5 = d41d8cd98f00b204e9800998ecf8427e
sickrage/__init__.py = 4a77152359d0934c913d97fc1e9118f8 sickrage/__init__.py = 63720d34dea954ada099526f656f5e1e
sickrage/version.txt = 564287ddf17394e5127657f63a8d1080 sickrage/version.txt = bbfd01890110a71ef8a413a7bb715779
sickrage/clients/__init__.py = abafc862109398700c9fee676cdeef6b sickrage/clients/__init__.py = abafc862109398700c9fee676cdeef6b
sickrage/clients/nzb/nzbget.py = 2a23083d4915fed22c73f4966588cac8 sickrage/clients/nzb/nzbget.py = 2a23083d4915fed22c73f4966588cac8
sickrage/clients/nzb/sabnzbd.py = f76666e47017abaf366f4a3e8b71c47b sickrage/clients/nzb/sabnzbd.py = f76666e47017abaf366f4a3e8b71c47b
...@@ -16,7 +16,7 @@ sickrage/clients/torrent/mlnet.py = 0e73345f3516a57eeaf9dea40ecbbddc ...@@ -16,7 +16,7 @@ sickrage/clients/torrent/mlnet.py = 0e73345f3516a57eeaf9dea40ecbbddc
sickrage/clients/torrent/putio.py = e3635cb458be1bd9e6dbdf10ceaa2bd4 sickrage/clients/torrent/putio.py = e3635cb458be1bd9e6dbdf10ceaa2bd4
sickrage/clients/torrent/deluged.py = f7291242ab46a4668c0b54cd7821dff0 sickrage/clients/torrent/deluged.py = f7291242ab46a4668c0b54cd7821dff0
sickrage/clients/torrent/__init__.py = 014e84083401e6b05a9626cb29bd8467 sickrage/clients/torrent/__init__.py = 014e84083401e6b05a9626cb29bd8467
sickrage/locale/messages.pot = 70e7db29b3ed5bfe7e6df48bee008394 sickrage/locale/messages.pot = 162cb342c89a34115a1a2e988b320599
sickrage/locale/no_NO/LC_MESSAGES/messages.po = 665add0ac4385bce84e16cb1dba3267a sickrage/locale/no_NO/LC_MESSAGES/messages.po = 665add0ac4385bce84e16cb1dba3267a
sickrage/locale/no_NO/LC_MESSAGES/messages.json = a8e45d067d9f0e279a23e959db8fa1e7 sickrage/locale/no_NO/LC_MESSAGES/messages.json = a8e45d067d9f0e279a23e959db8fa1e7
sickrage/locale/no_NO/LC_MESSAGES/messages.mo = 81d7c78f3be5a5c414493c37657a1097 sickrage/locale/no_NO/LC_MESSAGES/messages.mo = 81d7c78f3be5a5c414493c37657a1097
...@@ -50,9 +50,9 @@ sickrage/locale/zh_TW/LC_MESSAGES/messages.mo = d946e6bf24f511ffa16bd567484998fb ...@@ -50,9 +50,9 @@ sickrage/locale/zh_TW/LC_MESSAGES/messages.mo = d946e6bf24f511ffa16bd567484998fb
sickrage/locale/el_GR/LC_MESSAGES/messages.po = 9d8087cfea2d4348f804c043f3d3e740 sickrage/locale/el_GR/LC_MESSAGES/messages.po = 9d8087cfea2d4348f804c043f3d3e740
sickrage/locale/el_GR/LC_MESSAGES/messages.json = d0043052f4d192e19eaec90b2d907e5d sickrage/locale/el_GR/LC_MESSAGES/messages.json = d0043052f4d192e19eaec90b2d907e5d
sickrage/locale/el_GR/LC_MESSAGES/messages.mo = e6c8522c5232bd7835e5f85c0e5d93f3 sickrage/locale/el_GR/LC_MESSAGES/messages.mo = e6c8522c5232bd7835e5f85c0e5d93f3
sickrage/locale/en_US/LC_MESSAGES/messages.po = 6da8949c4e2ceede4fccb1711d96adab sickrage/locale/en_US/LC_MESSAGES/messages.po = 2ae22ef0ed5f6ab9018159666f6dbee8
sickrage/locale/en_US/LC_MESSAGES/messages.json = 34be851b221b72688c9c5c7caa9f450a sickrage/locale/en_US/LC_MESSAGES/messages.json = 34be851b221b72688c9c5c7caa9f450a
sickrage/locale/en_US/LC_MESSAGES/messages.mo = 59ae88953ca0b73db48740cd056cea00 sickrage/locale/en_US/LC_MESSAGES/messages.mo = 79c8345173173703d339467ab18b661a
sickrage/locale/ar_SA/LC_MESSAGES/messages.po = 905109fc0c7ea4b653122b7397d2d55b sickrage/locale/ar_SA/LC_MESSAGES/messages.po = 905109fc0c7ea4b653122b7397d2d55b
sickrage/locale/ar_SA/LC_MESSAGES/messages.json = 8c47f610aec954cc75530578b9e1af6a sickrage/locale/ar_SA/LC_MESSAGES/messages.json = 8c47f610aec954cc75530578b9e1af6a
sickrage/locale/ar_SA/LC_MESSAGES/messages.mo = 40c217dfcc15eef7b61ddab8318825cc sickrage/locale/ar_SA/LC_MESSAGES/messages.mo = 40c217dfcc15eef7b61ddab8318825cc
...@@ -167,7 +167,7 @@ sickrage/metadata_providers/mediabrowser.py = 05150d6d2295c6bdfb443ad37486b4f9 ...@@ -167,7 +167,7 @@ sickrage/metadata_providers/mediabrowser.py = 05150d6d2295c6bdfb443ad37486b4f9
sickrage/metadata_providers/kodi_12plus.py = a7c88d988d97ac25a5c14fb7004aff38 sickrage/metadata_providers/kodi_12plus.py = a7c88d988d97ac25a5c14fb7004aff38
sickrage/metadata_providers/mede8er.py = 0c5dd3e61b0b009f4f5920a706aacb19 sickrage/metadata_providers/mede8er.py = 0c5dd3e61b0b009f4f5920a706aacb19
sickrage/metadata_providers/kodi.py = 125bd1ecec4ceab086e38690117f1443 sickrage/metadata_providers/kodi.py = 125bd1ecec4ceab086e38690117f1443
sickrage/metadata_providers/__init__.py = 1bfced564d41cf71772dd21d402ee107 sickrage/metadata_providers/__init__.py = ddb6dcf299351633628eb7ca1819f4a1
sickrage/metadata_providers/tivo.py = d690a863583e1e867c406228e192217f sickrage/metadata_providers/tivo.py = d690a863583e1e867c406228e192217f
sickrage/series_providers/helpers.py = 20f4de562e6bdbab2e6baa6d54cadd6a sickrage/series_providers/helpers.py = 20f4de562e6bdbab2e6baa6d54cadd6a
sickrage/series_providers/exceptions.py = 6b85b3a3a22ec33db1aff5b4244ae78c sickrage/series_providers/exceptions.py = 6b85b3a3a22ec33db1aff5b4244ae78c
...@@ -217,7 +217,7 @@ sickrage/core/search.py = bcb6d5972f5808d7ab9570a8a39b2d02 ...@@ -217,7 +217,7 @@ sickrage/core/search.py = bcb6d5972f5808d7ab9570a8a39b2d02
sickrage/core/scene_numbering.py = e517e5232d3b9ca186fe8b33578abd4b sickrage/core/scene_numbering.py = e517e5232d3b9ca186fe8b33578abd4b
sickrage/core/__init__.py = 7afdf13aeb03d85bad032ec3ecf25fbf sickrage/core/__init__.py = 7afdf13aeb03d85bad032ec3ecf25fbf
sickrage/core/common.py = 8eca84658272c806858b105179285693 sickrage/core/common.py = 8eca84658272c806858b105179285693
sickrage/core/queues/show.py = aad3e6afd0be7e10b73348070fa91509 sickrage/core/queues/show.py = 5d78f1349528a607cc96c020c80cf526
sickrage/core/queues/postprocessor.py = b2bcd7642060906c2c21d554d114b9ee sickrage/core/queues/postprocessor.py = b2bcd7642060906c2c21d554d114b9ee
sickrage/core/queues/search.py = 0b53c8a4e726e9fcbd3243db68b39ab3 sickrage/core/queues/search.py = 0b53c8a4e726e9fcbd3243db68b39ab3
sickrage/core/queues/__init__.py = 95b39e042b76e797398d106329436d10 sickrage/core/queues/__init__.py = 95b39e042b76e797398d106329436d10
...@@ -226,7 +226,7 @@ sickrage/core/tv/__init__.py = d41d8cd98f00b204e9800998ecf8427e ...@@ -226,7 +226,7 @@ sickrage/core/tv/__init__.py = d41d8cd98f00b204e9800998ecf8427e
sickrage/core/tv/show/helpers.py = 9d887b91be03e52a2ff473312c59e077 sickrage/core/tv/show/helpers.py = 9d887b91be03e52a2ff473312c59e077
sickrage/core/tv/show/coming_episodes.py = 0d43711e559f1fbda75fc25b3485928f sickrage/core/tv/show/coming_episodes.py = 0d43711e559f1fbda75fc25b3485928f
sickrage/core/tv/show/history.py = 02a46fa4946cdf7b80915da916f25ca0 sickrage/core/tv/show/history.py = 02a46fa4946cdf7b80915da916f25ca0
sickrage/core/tv/show/__init__.py = 296a3bb14d7bf3d169e9151b85473f34 sickrage/core/tv/show/__init__.py = 41b8c932d742f80c3df3c22aad32857c
sickrage/core/tv/episode/helpers.py = 12251c9697477624ac6a493c22553fd4 sickrage/core/tv/episode/helpers.py = 12251c9697477624ac6a493c22553fd4
sickrage/core/tv/episode/__init__.py = e955f34e112961f0364c59f6cd6b687d sickrage/core/tv/episode/__init__.py = e955f34e112961f0364c59f6cd6b687d
sickrage/core/processors/post_processor.py = 1d2c118cead05e6ea64f8e062636175c sickrage/core/processors/post_processor.py = 1d2c118cead05e6ea64f8e062636175c
...@@ -353,18 +353,18 @@ sickrage/core/webserver/handlers/manage/queues.py = f92d4a8b34b1872e529886f4aa80 ...@@ -353,18 +353,18 @@ sickrage/core/webserver/handlers/manage/queues.py = f92d4a8b34b1872e529886f4aa80
sickrage/core/webserver/handlers/manage/__init__.py = 6b79f83afdd5565b06310e22245f882b sickrage/core/webserver/handlers/manage/__init__.py = 6b79f83afdd5565b06310e22245f882b
sickrage/core/webserver/handlers/api/schemas.py = 7fcfd3dee63378ba5bd8fcbaebbf49ef sickrage/core/webserver/handlers/api/schemas.py = 7fcfd3dee63378ba5bd8fcbaebbf49ef
sickrage/core/webserver/handlers/api/__init__.py = d4e5ae21437bff15091baf20e3632059 sickrage/core/webserver/handlers/api/__init__.py = d4e5ae21437bff15091baf20e3632059
sickrage/core/webserver/handlers/api/v1/__init__.py = 07e1cf8ba7e91a89b582f7df8547167f sickrage/core/webserver/handlers/api/v1/__init__.py = 5183beff16716288f9ed33a86f11a87c
sickrage/core/webserver/handlers/api/v2/__init__.py = 331c145796355d52ae1818bf9fd69ced sickrage/core/webserver/handlers/api/v2/__init__.py = 331c145796355d52ae1818bf9fd69ced
sickrage/core/webserver/handlers/api/v2/file_browser/schemas.py = 014e84083401e6b05a9626cb29bd8467 sickrage/core/webserver/handlers/api/v2/file_browser/schemas.py = 014e84083401e6b05a9626cb29bd8467
sickrage/core/webserver/handlers/api/v2/file_browser/__init__.py = 5e348f6f96a80a98dca3ae2b9151ac33 sickrage/core/webserver/handlers/api/v2/file_browser/__init__.py = 5e348f6f96a80a98dca3ae2b9151ac33
sickrage/core/webserver/handlers/api/v2/series/schemas.py = b5159b40ee6d67aa04a85de7c7810284 sickrage/core/webserver/handlers/api/v2/series/schemas.py = b5159b40ee6d67aa04a85de7c7810284
sickrage/core/webserver/handlers/api/v2/series/__init__.py = d46c263366f0dcc333ecb2c546d14402 sickrage/core/webserver/handlers/api/v2/series/__init__.py = 591df51c8945e346ac9532cfa0215ba9
sickrage/core/webserver/handlers/api/v2/schedule/schemas.py = 4af02a112f828040cbb1cf34ad03fdd5 sickrage/core/webserver/handlers/api/v2/schedule/schemas.py = 4af02a112f828040cbb1cf34ad03fdd5
sickrage/core/webserver/handlers/api/v2/schedule/__init__.py = ee7f141e9f81cfd1d63bf1e1d5e10749 sickrage/core/webserver/handlers/api/v2/schedule/__init__.py = ee7f141e9f81cfd1d63bf1e1d5e10749
sickrage/core/webserver/handlers/api/v2/series_provider/schemas.py = 014e84083401e6b05a9626cb29bd8467 sickrage/core/webserver/handlers/api/v2/series_provider/schemas.py = 014e84083401e6b05a9626cb29bd8467
sickrage/core/webserver/handlers/api/v2/series_provider/__init__.py = 96d4f6bdd84c81c75e61a6ad06232a4c sickrage/core/webserver/handlers/api/v2/series_provider/__init__.py = 96d4f6bdd84c81c75e61a6ad06232a4c
sickrage/core/webserver/handlers/api/v2/episode/schemas.py = 014e84083401e6b05a9626cb29bd8467 sickrage/core/webserver/handlers/api/v2/episode/schemas.py = 014e84083401e6b05a9626cb29bd8467
sickrage/core/webserver/handlers/api/v2/episode/__init__.py = e33595769f436ebf426b3e206a679f5e sickrage/core/webserver/handlers/api/v2/episode/__init__.py = accce54f7387f1a65befc8121d6862fa
sickrage/core/webserver/handlers/api/v2/postprocess/schemas.py = 994d368e0a2321b8311700d613695563 sickrage/core/webserver/handlers/api/v2/postprocess/schemas.py = 994d368e0a2321b8311700d613695563
sickrage/core/webserver/handlers/api/v2/postprocess/__init__.py = 0c2bf1754d86ee7c2b4751d94bf8d443 sickrage/core/webserver/handlers/api/v2/postprocess/__init__.py = 0c2bf1754d86ee7c2b4751d94bf8d443
sickrage/core/webserver/handlers/api/v2/history/schemas.py = 014e84083401e6b05a9626cb29bd8467 sickrage/core/webserver/handlers/api/v2/history/schemas.py = 014e84083401e6b05a9626cb29bd8467
...@@ -433,7 +433,7 @@ sickrage/core/webserver/static/images/backdrops/config.jpg = ddbe8915317f7860d91 ...@@ -433,7 +433,7 @@ sickrage/core/webserver/static/images/backdrops/config.jpg = ddbe8915317f7860d91
sickrage/core/webserver/static/images/backdrops/home.jpg = 804dfc976638bbf45df310a3627e2d5c sickrage/core/webserver/static/images/backdrops/home.jpg = 804dfc976638bbf45df310a3627e2d5c
sickrage/core/webserver/static/images/backdrops/schedule.jpg = 0c0e5f4dcee42bfcfb73de100f1d3015 sickrage/core/webserver/static/images/backdrops/schedule.jpg = 0c0e5f4dcee42bfcfb73de100f1d3015
sickrage/core/webserver/static/images/backdrops/history.jpg = b4911bfe3ec57a894b5a16fa1ab479cf sickrage/core/webserver/static/images/backdrops/history.jpg = b4911bfe3ec57a894b5a16fa1ab479cf
sickrage/core/webserver/static/js/core.min.js = 0f311a4622469c3edd1125778d64538d sickrage/core/webserver/static/js/core.min.js = 3db088023c8e5f47b0f202de1628770d
sickrage/core/webserver/static/js/core.js.map = cdf19c1422438fb68dd84471031b2c56 sickrage/core/webserver/static/js/core.js.map = cdf19c1422438fb68dd84471031b2c56
sickrage/core/webserver/views/login.mako = 3f6c8e8325928539d6bb70a77b378116 sickrage/core/webserver/views/login.mako = 3f6c8e8325928539d6bb70a77b378116
sickrage/core/webserver/views/login_failed.mako = 5684d10edff37970a2285d7d5bb815eb sickrage/core/webserver/views/login_failed.mako = 5684d10edff37970a2285d7d5bb815eb
......
...@@ -352,7 +352,7 @@ class ShowTaskAdd(ShowTask): ...@@ -352,7 +352,7 @@ class ShowTaskAdd(ShowTask):
show_obj.paused = self.paused if self.paused is not None else False show_obj.paused = self.paused if self.paused is not None else False
# set up default new/missing episode status # set up default new/missing episode status
sickrage.app.log.info("Setting all current episodes to the specified default status: " + str(self.default_status)) sickrage.app.log.info("Setting all current episodes to the specified default status: " + str(self.default_status.display_name))
show_obj.default_ep_status = self.default_status show_obj.default_ep_status = self.default_status
# save to database # save to database
......
...@@ -62,6 +62,7 @@ class TVShow(object): ...@@ -62,6 +62,7 @@ class TVShow(object):
def __init__(self, series_id, series_provider_id, lang='eng', location=''): def __init__(self, series_id, series_provider_id, lang='eng', location=''):
self.lock = threading.Lock() self.lock = threading.Lock()
self._episodes = {} self._episodes = {}
self.loading_episodes = False
with sickrage.app.main_db.session() as session: with sickrage.app.main_db.session() as session:
try: try:
...@@ -644,6 +645,10 @@ class TVShow(object): ...@@ -644,6 +645,10 @@ class TVShow(object):
def is_removing(self): def is_removing(self):
return self.show_queue_status.get('action') == 'REMOVE' return self.show_queue_status.get('action') == 'REMOVE'
@property
def is_loading_episodes(self):
return self.loading_episodes
def save(self): def save(self):
with self.lock, sickrage.app.main_db.session() as session: with self.lock, sickrage.app.main_db.session() as session:
sickrage.app.log.debug("{0:d}: Saving to database: {1}".format(self.series_id, self.name)) sickrage.app.log.debug("{0:d}: Saving to database: {1}".format(self.series_id, self.name))
...@@ -701,6 +706,8 @@ class TVShow(object): ...@@ -701,6 +706,8 @@ class TVShow(object):
def load_episodes_from_series_provider(self, cache=True): def load_episodes_from_series_provider(self, cache=True):
scanned_eps = {} scanned_eps = {}
self.loading_episodes = True
sickrage.app.log.debug(str(self.series_id) + ": Loading all episodes from " + self.series_provider.name + "..") sickrage.app.log.debug(str(self.series_id) + ": Loading all episodes from " + self.series_provider.name + "..")
# flush episodes from cache so we can reload from database # flush episodes from cache so we can reload from database
...@@ -709,6 +716,7 @@ class TVShow(object): ...@@ -709,6 +716,7 @@ class TVShow(object):
series_provider_language = self.lang or sickrage.app.config.general.series_provider_default_language series_provider_language = self.lang or sickrage.app.config.general.series_provider_default_language
series_info = self.series_provider.get_series_info(self.series_id, language=series_provider_language, enable_cache=cache) series_info = self.series_provider.get_series_info(self.series_id, language=series_provider_language, enable_cache=cache)
if not series_info: if not series_info:
self.loading_episodes = False
raise SeriesProviderException raise SeriesProviderException
for season in series_info: for season in series_info:
...@@ -737,6 +745,8 @@ class TVShow(object): ...@@ -737,6 +745,8 @@ class TVShow(object):
self.save() self.save()
self.loading_episodes = False
return scanned_eps return scanned_eps
def get_episode(self, season=None, episode=None, absolute_number=None, location=None, no_create=False): def get_episode(self, season=None, episode=None, absolute_number=None, location=None, no_create=False):
...@@ -868,6 +878,8 @@ class TVShow(object): ...@@ -868,6 +878,8 @@ class TVShow(object):
sickrage.app.log.debug(str(self.series_id) + ": Show dir doesn't exist, not loading episodes from disk") sickrage.app.log.debug(str(self.series_id) + ": Show dir doesn't exist, not loading episodes from disk")
return return
self.loading_episodes = True
sickrage.app.log.debug(str(self.series_id) + ": Loading all episodes from the show directory " + self.location) sickrage.app.log.debug(str(self.series_id) + ": Loading all episodes from the show directory " + self.location)
# get file list # get file list
...@@ -911,6 +923,8 @@ class TVShow(object): ...@@ -911,6 +923,8 @@ class TVShow(object):
sickrage.app.log.error("%s: Could not refresh subtitles" % self.series_id) sickrage.app.log.error("%s: Could not refresh subtitles" % self.series_id)
sickrage.app.log.debug(traceback.format_exc()) sickrage.app.log.debug(traceback.format_exc())
self.loading_episodes = False
def load_imdb_info(self): def load_imdb_info(self):
imdb_info_mapper = { imdb_info_mapper = {
'imdbvotes': 'votes', 'imdbvotes': 'votes',
......
...@@ -1628,10 +1628,11 @@ class CMD_SiCKRAGESetDefaults(ApiV1Handler): ...@@ -1628,10 +1628,11 @@ class CMD_SiCKRAGESetDefaults(ApiV1Handler):
super(CMD_SiCKRAGESetDefaults, self).__init__(application, request, *args, **kwargs) super(CMD_SiCKRAGESetDefaults, self).__init__(application, request, *args, **kwargs)
self.initial, args = self.check_params("initial", None, False, "list", any_quality_list, *args, **kwargs) self.initial, args = self.check_params("initial", None, False, "list", any_quality_list, *args, **kwargs)
self.archive, args = self.check_params("archive", None, False, "list", best_quality_list, *args, **kwargs) self.archive, args = self.check_params("archive", None, False, "list", best_quality_list, *args, **kwargs)
self.future_show_paused, args = self.check_params("future_show_paused", None, False, "bool", [], *args, self.future_show_paused, args = self.check_params("future_show_paused", None, False, "bool", [], *args, **kwargs)
**kwargs)
self.flatten_folders, args = self.check_params("flatten_folders", None, False, "bool", [], *args, **kwargs) self.flatten_folders, args = self.check_params("flatten_folders", None, False, "bool", [], *args, **kwargs)
self.status, args = self.check_params("status", None, False, "string", ["wanted", "skipped", "ignored"], *args, **kwargs) self.status, args = self.check_params("status", None, False, "string",
[EpisodeStatus.WANTED.name.lower(), EpisodeStatus.SKIPPED.name.lower(), EpisodeStatus.ARCHIVED.name.lower(),
EpisodeStatus.IGNORED.name.lower()], *args, **kwargs)
def run(self): def run(self):
""" Set SiCKRAGE's user default configuration value """ """ Set SiCKRAGE's user default configuration value """
...@@ -1650,8 +1651,11 @@ class CMD_SiCKRAGESetDefaults(ApiV1Handler): ...@@ -1650,8 +1651,11 @@ class CMD_SiCKRAGESetDefaults(ApiV1Handler):
sickrage.app.config.general.quality_default = Quality.combine_qualities(iqualityID, aqualityID) sickrage.app.config.general.quality_default = Quality.combine_qualities(iqualityID, aqualityID)
if self.status: if self.status:
# convert string status to EpisodeStatus
self.status = EpisodeStatus[self.status.upper()]
# only allow the status options we want # only allow the status options we want
if EpisodeStatus[self.status.upper()] not in (EpisodeStatus.WANTED, EpisodeStatus.SKIPPED, EpisodeStatus.ARCHIVED, EpisodeStatus.IGNORED): if self.status not in (EpisodeStatus.WANTED, EpisodeStatus.SKIPPED, EpisodeStatus.ARCHIVED, EpisodeStatus.IGNORED):
raise InternalApiError("Status Prohibited") raise InternalApiError("Status Prohibited")
sickrage.app.config.general.status_default = self.status sickrage.app.config.general.status_default = self.status
...@@ -1949,17 +1953,6 @@ class CMD_ShowAddNew(ApiV1Handler): ...@@ -1949,17 +1953,6 @@ class CMD_ShowAddNew(ApiV1Handler):
if not os.path.isdir(self.location): if not os.path.isdir(self.location):
return _responds(RESULT_FAILURE, msg="'" + self.location + "' is not a valid location") return _responds(RESULT_FAILURE, msg="'" + self.location + "' is not a valid location")
# convert string status to EpisodeStatus
if self.status:
self.status = EpisodeStatus[self.status.upper()]
# convert string future status to EpisodeStatus
if self.future_status:
self.future_status = EpisodeStatus[self.future_status.upper()]
# convert string search format to SearchFormat
self.search_format = SearchFormat[self.search_format.upper()]
# use default quality as a failsafe # use default quality as a failsafe
new_quality = int(sickrage.app.config.general.quality_default) new_quality = int(sickrage.app.config.general.quality_default)
iquality_id = [] iquality_id = []
...@@ -1978,6 +1971,9 @@ class CMD_ShowAddNew(ApiV1Handler): ...@@ -1978,6 +1971,9 @@ class CMD_ShowAddNew(ApiV1Handler):
# use default status as a failsafe # use default status as a failsafe
new_status = sickrage.app.config.general.status_default new_status = sickrage.app.config.general.status_default
if self.status: if self.status:
# convert string status to EpisodeStatus
self.status = EpisodeStatus[self.status.upper()]
# only allow the status options we want # only allow the status options we want
if self.status not in (EpisodeStatus.WANTED, EpisodeStatus.SKIPPED, EpisodeStatus.IGNORED): if self.status not in (EpisodeStatus.WANTED, EpisodeStatus.SKIPPED, EpisodeStatus.IGNORED):
return _responds(RESULT_FAILURE, msg="Status prohibited") return _responds(RESULT_FAILURE, msg="Status prohibited")
...@@ -1987,9 +1983,13 @@ class CMD_ShowAddNew(ApiV1Handler): ...@@ -1987,9 +1983,13 @@ class CMD_ShowAddNew(ApiV1Handler):
# use default status as a failsafe # use default status as a failsafe
default_ep_status_after = sickrage.app.config.general.status_default_after default_ep_status_after = sickrage.app.config.general.status_default_after
if self.future_status: if self.future_status:
# convert string future status to EpisodeStatus
self.future_status = EpisodeStatus[self.future_status.upper()]
# only allow the status options we want # only allow the status options we want
if self.future_status not in (EpisodeStatus.WANTED, EpisodeStatus.SKIPPED, EpisodeStatus.IGNORED): if self.future_status not in (EpisodeStatus.WANTED, EpisodeStatus.SKIPPED, EpisodeStatus.IGNORED):
return _responds(RESULT_FAILURE, msg="Status prohibited") return _responds(RESULT_FAILURE, msg="Status prohibited")
default_ep_status_after = self.future_status default_ep_status_after = self.future_status
series_provider_result = CMD_SiCKRAGESearchSeriesProvider(self.application, self.request, **{ series_provider_result = CMD_SiCKRAGESearchSeriesProvider(self.application, self.request, **{
...@@ -2039,7 +2039,7 @@ class CMD_ShowAddNew(ApiV1Handler): ...@@ -2039,7 +2039,7 @@ class CMD_ShowAddNew(ApiV1Handler):
subtitles=self.subtitles, subtitles=self.subtitles,
anime=self.anime, anime=self.anime,
scene=self.scene, scene=self.scene,
search_format=self.search_format, search_format=SearchFormat[self.search_format.upper()],
default_status_after=default_ep_status_after, default_status_after=default_ep_status_after,
skip_downloaded=self.skip_downloaded skip_downloaded=self.skip_downloaded
) )
...@@ -2362,6 +2362,9 @@ class CMD_ShowSeasonList(ApiV1Handler): ...@@ -2362,6 +2362,9 @@ class CMD_ShowSeasonList(ApiV1Handler):
if not show_obj: if not show_obj:
return _responds(RESULT_FAILURE, msg="Show not found") return _responds(RESULT_FAILURE, msg="Show not found")
while show_obj.is_loading_episodes:
time.sleep(1)
season_list = set() season_list = set()
for episode_object in show_obj.episodes: for episode_object in show_obj.episodes:
season_list.add(episode_object.season) season_list.add(episode_object.season)
...@@ -2401,6 +2404,9 @@ class CMD_ShowSeasons(ApiV1Handler): ...@@ -2401,6 +2404,9 @@ class CMD_ShowSeasons(ApiV1Handler):
if not show_obj: if not show_obj:
return _responds(RESULT_FAILURE, msg="Show not found") return _responds(RESULT_FAILURE, msg="Show not found")
while show_obj.is_loading_episodes:
time.sleep(1)
if self.season is None: if self.season is None:
db_data = session.query(MainDB.TVEpisode).filter_by(series_id=self.series_id, series_provider_id=show_obj.series_provider_id) db_data = session.query(MainDB.TVEpisode).filter_by(series_id=self.series_id, series_provider_id=show_obj.series_provider_id)
else: else:
......
...@@ -24,9 +24,4 @@ from sickrage.core.webserver.handlers.api.v2 import ApiV2BaseHandler ...@@ -24,9 +24,4 @@ from sickrage.core.webserver.handlers.api.v2 import ApiV2BaseHandler
class ApiV2EpisodeStatusesHandler(ApiV2BaseHandler): class ApiV2EpisodeStatusesHandler(ApiV2BaseHandler):
def get(self): def get(self):
statuses = [{ return self.json_response([{'name': x.display_name, 'slug': x.name} for x in EpisodeStatus])
'name': x.display_name,
'slug': x.name,
} for x in EpisodeStatus]
return self.json_response(statuses)
...@@ -631,9 +631,4 @@ class ApiV2SeriesEpisodesManualSearchHandler(ApiV2BaseHandler): ...@@ -631,9 +631,4 @@ class ApiV2SeriesEpisodesManualSearchHandler(ApiV2BaseHandler):
class ApiV2SeriesSearchFormatsHandler(ApiV2BaseHandler): class ApiV2SeriesSearchFormatsHandler(ApiV2BaseHandler):
def get(self): def get(self):
search_formats = [{ return self.json_response([{'name': x.display_name, 'slug': x.name} for x in SearchFormat])
'name': x.display_name,
'slug': x.name,
} for x in SearchFormat]
return self.json_response(search_formats)
...@@ -81729,7 +81729,7 @@ var debugs = {}; ...@@ -81729,7 +81729,7 @@ var debugs = {};
var debugEnviron; var debugEnviron;
exports.debuglog = function(set) { exports.debuglog = function(set) {
if (isUndefined(debugEnviron)) if (isUndefined(debugEnviron))
debugEnviron = Object({"SENTRY_DSN":'https://[email protected]/2',"PACKAGE_VERSION":"10.0.60"}).NODE_DEBUG || ''; debugEnviron = Object({"SENTRY_DSN":'https://[email protected]/2',"PACKAGE_VERSION":"10.0.61"}).NODE_DEBUG || '';
set = set.toUpperCase(); set = set.toUpperCase();
if (!debugs[set]) { if (!debugs[set]) {
if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
...@@ -82538,7 +82538,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de ...@@ -82538,7 +82538,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
   
Sentry.init({ Sentry.init({
dsn: 'https://[email protected]/2', dsn: 'https://[email protected]/2',
release: "10.0.60", release: "10.0.61",
beforeSend: function beforeSend(event, hint) { beforeSend: function beforeSend(event, hint) {
if (event.exception) { if (event.exception) {
event.exception.values[0].stacktrace.frames.forEach(function (frame) { event.exception.values[0].stacktrace.frames.forEach(function (frame) {
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sickrage 10.0.60.dev3\n" "Project-Id-Version: sickrage 10.0.61.dev2\n"
"Report-Msgid-Bugs-To: [email protected]\n" "Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2022-05-08 00:12+0000\n" "POT-Creation-Date: 2022-05-08 20:23+0000\n"
"PO-Revision-Date: 2022-05-08 00:12+0000\n" "PO-Revision-Date: 2022-05-08 20:23+0000\n"
"Last-Translator: FULL NAME <[email protected]>\n" "Last-Translator: FULL NAME <[email protected]>\n"
"Language: en_US\n" "Language: en_US\n"
"Language-Team: en_US <LL[email protected]>\n" "Language-Team: en_US <[email protected]>\n"
...@@ -6099,63 +6099,63 @@ msgstr "" ...@@ -6099,63 +6099,63 @@ msgstr ""
msgid "Launching backlog for this show since it has episodes that are WANTED" msgid "Launching backlog for this show since it has episodes that are WANTED"
msgstr "" msgstr ""
#: sickrage/core/tv/show/__init__.py:599 #: sickrage/core/tv/show/__init__.py:600
#: sickrage/core/webserver/handlers/home/__init__.py:819 #: sickrage/core/webserver/handlers/home/__init__.py:819
msgid "" msgid ""
"This show is in the process of being downloaded - the info below is " "This show is in the process of being downloaded - the info below is "
"incomplete." "incomplete."
msgstr "" msgstr ""
#: sickrage/core/tv/show/__init__.py:604 #: sickrage/core/tv/show/__init__.py:605
msgid "This show is in the process of being removed." msgid "This show is in the process of being removed."
msgstr "" msgstr ""
#: sickrage/core/tv/show/__init__.py:609 #: sickrage/core/tv/show/__init__.py:610
#: sickrage/core/webserver/handlers/home/__init__.py:822 #: sickrage/core/webserver/handlers/home/__init__.py:822
msgid "The information on this page is in the process of being updated." msgid "The information on this page is in the process of being updated."
msgstr "" msgstr ""
#: sickrage/core/tv/show/__init__.py:614 #: sickrage/core/tv/show/__init__.py:615
#: sickrage/core/webserver/handlers/home/__init__.py:825 #: sickrage/core/webserver/handlers/home/__init__.py:825
msgid "The episodes below are currently being refreshed from disk" msgid "The episodes below are currently being refreshed from disk"
msgstr "" msgstr ""
#: sickrage/core/tv/show/__init__.py:619 #: sickrage/core/tv/show/__init__.py:620
#: sickrage/core/webserver/handlers/home/__init__.py:828 #: sickrage/core/webserver/handlers/home/__init__.py:828
msgid "Currently downloading subtitles for this show" msgid "Currently downloading subtitles for this show"
msgstr "" msgstr ""
#: sickrage/core/tv/show/__init__.py:624 #: sickrage/core/tv/show/__init__.py:625
#: sickrage/core/webserver/handlers/home/__init__.py:831 #: sickrage/core/webserver/handlers/home/__init__.py:831
msgid "This show is queued to be refreshed." msgid "This show is queued to be refreshed."
msgstr "" msgstr ""
#: sickrage/core/tv/show/__init__.py:629 #: sickrage/core/tv/show/__init__.py:630
#: sickrage/core/webserver/handlers/home/__init__.py:834 #: sickrage/core/webserver/handlers/home/__init__.py:834
msgid "This show is queued and awaiting an update." msgid "This show is queued and awaiting an update."
msgstr "" msgstr ""
#: sickrage/core/tv/show/__init__.py:634 #: sickrage/core/tv/show/__init__.py:635
#: sickrage/core/webserver/handlers/home/__init__.py:837 #: sickrage/core/webserver/handlers/home/__init__.py:837
msgid "This show is queued and awaiting subtitles download." msgid "This show is queued and awaiting subtitles download."
msgstr "" msgstr ""
#: sickrage/core/tv/show/__init__.py:1460 #: sickrage/core/tv/show/__init__.py:1474
#: sickrage/core/webserver/handlers/home/__init__.py:146 #: sickrage/core/webserver/handlers/home/__init__.py:146
msgid "no data" msgid "no data"
msgstr "" msgstr ""
#: sickrage/core/tv/show/__init__.py:1463 #: sickrage/core/tv/show/__init__.py:1477
#: sickrage/core/webserver/handlers/home/__init__.py:149