From 5fcad77383f64d68d69b3abc60da9916e2442a19 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Louis=20V=C3=A9zina?=
<5130500+morpheus65535@users.noreply.github.com>
Date: Fri, 13 Sep 2019 16:30:18 -0400
Subject: [PATCH 01/10] Missing Cork file creation.
---
bazarr/init.py | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/bazarr/init.py b/bazarr/init.py
index 87ff2a9d7..552848bb7 100644
--- a/bazarr/init.py
+++ b/bazarr/init.py
@@ -68,6 +68,23 @@ config_file = os.path.normpath(os.path.join(args.config_dir, 'config', 'config.i
cfg = ConfigParser()
+if not os.path.exists(os.path.normpath(os.path.join(args.config_dir, 'config', 'users.json'))):
+ cork = Cork(os.path.normpath(os.path.join(args.config_dir, 'config')), initialize=True)
+
+ cork._store.roles[''] = 100
+ cork._store.save_roles()
+
+ tstamp = str(time.time())
+ username = password = ''
+ cork._store.users[username] = {
+ 'role': '',
+ 'hash': cork._hash(username, password),
+ 'email_addr': username,
+ 'desc': username,
+ 'creation_date': tstamp
+ }
+ cork._store.save_users()
+
def init_binaries():
exe = get_binary("unrar")
From 2fcf3dee087bff8e6005da5438e47e552bbc3864 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Louis=20V=C3=A9zina?=
<5130500+morpheus65535@users.noreply.github.com>
Date: Fri, 13 Sep 2019 21:53:12 -0400
Subject: [PATCH 02/10] Fix for new install since peewee integration.
---
bazarr/database.py | 21 ++++-------------
bazarr/main.py | 47 ++++++++++++++++++++------------------
views/wizard_subtitles.tpl | 6 ++---
3 files changed, 32 insertions(+), 42 deletions(-)
diff --git a/bazarr/database.py b/bazarr/database.py
index bee060907..f5ec1d85c 100644
--- a/bazarr/database.py
+++ b/bazarr/database.py
@@ -8,9 +8,9 @@ from playhouse.sqliteq import SqliteQueueDatabase
from helper import path_replace, path_replace_movie, path_replace_reverse, path_replace_reverse_movie
database = SqliteQueueDatabase(
- os.path.join(args.config_dir, 'db', 'bazarr.db'),
+ None,
use_gevent=False,
- autostart=True,
+ autostart=False,
queue_max_size=256, # Max. # of pending writes that can accumulate.
results_timeout=30.0) # Max. time to wait for query to be executed.
@@ -168,6 +168,8 @@ class TableSettingsNotifier(BaseModel):
def database_init():
+ database.init(os.path.join(args.config_dir, 'db', 'bazarr.db'))
+ database.start()
database.connect()
database.pragma('wal_checkpoint', 'TRUNCATE') # Run a checkpoint and merge remaining wal-journal.
@@ -180,22 +182,7 @@ def database_init():
database.create_tables(models_list, safe=True)
- # Insert default values
- if System.select().count() == 0:
- System.insert(
- {
- System.updated: 0,
- System.configured: 0
- }
- ).execute()
-
def wal_cleaning():
database.pragma('wal_checkpoint', 'TRUNCATE') # Run a checkpoint and merge remaining wal-journal.
database.wal_autocheckpoint = 50 # Run an automatic checkpoint every 50 write transactions.
-
-
-@atexit.register
-def _stop_worker_threads():
- database.close()
- database.stop()
diff --git a/bazarr/main.py b/bazarr/main.py
index 33917be77..80e7f52fd 100644
--- a/bazarr/main.py
+++ b/bazarr/main.py
@@ -88,10 +88,16 @@ else:
bottle.ERROR_PAGE_TEMPLATE = bottle.ERROR_PAGE_TEMPLATE.replace('if DEBUG and', 'if')
# Reset restart required warning on start
-System.update({
- System.configured: 0,
- System.updated: 0
-}).execute()
+if System.select().count():
+ System.update({
+ System.configured: 0,
+ System.updated: 0
+ }).execute()
+else:
+ System.insert({
+ System.configured: 0,
+ System.updated: 0
+ }).execute()
# Load languages in database
load_language_in_db()
@@ -188,32 +194,29 @@ def shutdown():
except Exception as e:
logging.error('BAZARR Cannot create bazarr.stop file.')
else:
- stop_file.write('')
- stop_file.close()
+ server.stop()
database.close()
database.stop()
- server.stop()
+ stop_file.write('')
+ stop_file.close()
sys.exit(0)
@route(base_url + 'restart')
def restart():
try:
- server.stop()
- except:
- logging.error('BAZARR Cannot stop CherryPy.')
+ restart_file = open(os.path.join(args.config_dir, "bazarr.restart"), "w")
+ except Exception as e:
+ logging.error('BAZARR Cannot create bazarr.restart file.')
else:
- try:
- restart_file = open(os.path.join(args.config_dir, "bazarr.restart"), "w")
- except Exception as e:
- logging.error('BAZARR Cannot create bazarr.restart file.')
- else:
- # print 'Bazarr is being restarted...'
- logging.info('Bazarr is being restarted...')
- restart_file.write('')
- restart_file.close()
- database.close()
- database.stop()
+ # print 'Bazarr is being restarted...'
+ logging.info('Bazarr is being restarted...')
+ server.stop()
+ database.close()
+ database.stop()
+ restart_file.write('')
+ restart_file.close()
+ sys.exit(0)
@route(base_url + 'wizard')
@@ -439,7 +442,7 @@ def save_wizard():
settings_movie_default_hi = 'True'
settings.general.movie_default_hi = text_type(settings_movie_default_hi)
- settings_movie_default_forced = str(request.forms.getall('settings_movie_default_forced'))
+ settings_movie_default_forced = str(request.forms.get('settings_movie_default_forced'))
settings.general.movie_default_forced = text_type(settings_movie_default_forced)
with open(os.path.join(args.config_dir, 'config', 'config.ini'), 'w+') as handle:
diff --git a/views/wizard_subtitles.tpl b/views/wizard_subtitles.tpl
index 74f6d2de9..71e075a23 100644
--- a/views/wizard_subtitles.tpl
+++ b/views/wizard_subtitles.tpl
@@ -105,9 +105,9 @@
%enabled_languages = []
%for language in settings_languages:
-
- %if language[3] == True:
- % enabled_languages.append(str(language[1]))
+
+ %if language.enabled == True:
+ % enabled_languages.append(str(language.code2))
%end
%end
From 5c905021f5ffe8947864b9bdeea0dbb26495a15d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Louis=20V=C3=A9zina?=
<5130500+morpheus65535@users.noreply.github.com>
Date: Fri, 13 Sep 2019 21:56:52 -0400
Subject: [PATCH 03/10] Added better logging of exception while getting video
information from a file.
---
bazarr/get_subtitle.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/bazarr/get_subtitle.py b/bazarr/get_subtitle.py
index a12fadd92..dbbc57b28 100644
--- a/bazarr/get_subtitle.py
+++ b/bazarr/get_subtitle.py
@@ -74,7 +74,7 @@ def get_video(path, title, sceneName, use_scenename, providers=None, media_type=
logging.debug('BAZARR is using those video object properties: %s', vars(video))
return video
- except:
+ except Exception as e:
logging.exception("BAZARR Error trying to get video information for this file: " + path)
From a0200b23da430fdf33e412bdf046327df845af97 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Louis=20V=C3=A9zina?=
<5130500+morpheus65535@users.noreply.github.com>
Date: Sat, 14 Sep 2019 09:32:19 -0400
Subject: [PATCH 04/10] Removed 1 hour interval for search subtitles task.
---
views/settings_subtitles.tpl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/views/settings_subtitles.tpl b/views/settings_subtitles.tpl
index b07c37afc..e5abf4406 100644
--- a/views/settings_subtitles.tpl
+++ b/views/settings_subtitles.tpl
@@ -9,7 +9,7 @@
From 1005584f4f78ff3dde3c34ba40b0e1627f12f9c8 Mon Sep 17 00:00:00 2001
From: Pika <15848969+ThatNerdyPikachu@users.noreply.github.com>
Date: Sat, 14 Sep 2019 18:15:59 -0400
Subject: [PATCH 05/10] Actually skip PGS subtitles (#543)
* Update embedded_subs_reader.py
* Update list_subtitles.py
---
bazarr/embedded_subs_reader.py | 2 +-
bazarr/list_subtitles.py | 12 ++++++++++--
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/bazarr/embedded_subs_reader.py b/bazarr/embedded_subs_reader.py
index df9625d4c..c808b8f46 100644
--- a/bazarr/embedded_subs_reader.py
+++ b/bazarr/embedded_subs_reader.py
@@ -27,7 +27,7 @@ class EmbeddedSubsReader:
detected_languages = []
for detected_language in data['subtitles']:
- subtitles_list.append([detected_language['language'], detected_language['forced']])
+ subtitles_list.append([detected_language['language'], detected_language['forced'], detected_language["codec"]])
else:
if os.path.splitext(file)[1] == '.mkv':
with open(file, 'rb') as f:
diff --git a/bazarr/list_subtitles.py b/bazarr/list_subtitles.py
index dcac64f4b..2c15d4a31 100644
--- a/bazarr/list_subtitles.py
+++ b/bazarr/list_subtitles.py
@@ -36,8 +36,12 @@ def store_subtitles(file):
logging.debug("BAZARR is trying to index embedded subtitles.")
try:
subtitle_languages = embedded_subs_reader.list_languages(file)
- for subtitle_language, subtitle_forced in subtitle_languages:
+ for subtitle_language, subtitle_forced, subtitle_codec in subtitle_languages:
try:
+ if settings.general.getboolean("ignore_pgs_subs") and subtitle_codec == "hdmv_pgs_subtitle":
+ logging.debug("BAZARR skipping pgs sub for language: " + str(alpha2_from_alpha3(subtitle_language)))
+ continue
+
if alpha2_from_alpha3(subtitle_language) is not None:
lang = str(alpha2_from_alpha3(subtitle_language))
if subtitle_forced:
@@ -128,8 +132,12 @@ def store_subtitles_movie(file):
logging.debug("BAZARR is trying to index embedded subtitles.")
try:
subtitle_languages = embedded_subs_reader.list_languages(file)
- for subtitle_language, subtitle_forced in subtitle_languages:
+ for subtitle_language, subtitle_forced, subtitle_codec in subtitle_languages:
try:
+ if settings.general.getboolean("ignore_pgs_subs") and subtitle_codec == "hdmv_pgs_subtitle":
+ logging.debug("BAZARR skipping pgs sub for language: " + str(alpha2_from_alpha3(subtitle_language)))
+ continue
+
if alpha2_from_alpha3(subtitle_language) is not None:
lang = str(alpha2_from_alpha3(subtitle_language))
if subtitle_forced:
From 7910fa55cefe700492b659ca1df94c376d551910 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Louis=20V=C3=A9zina?=
<5130500+morpheus65535@users.noreply.github.com>
Date: Sun, 15 Sep 2019 10:39:31 -0400
Subject: [PATCH 06/10] Fix for history when series/movies have been deleted.
---
bazarr/main.py | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/bazarr/main.py b/bazarr/main.py
index 80e7f52fd..5f1e7efb1 100644
--- a/bazarr/main.py
+++ b/bazarr/main.py
@@ -1124,7 +1124,13 @@ def history():
def historyseries():
authorize()
- row_count = TableHistory.select().count()
+ row_count = TableHistory.select(
+
+ ).join_from(
+ TableHistory, TableShows, JOIN.LEFT_OUTER
+ ).where(
+ TableShows.title.is_null(False)
+ ).count()
page = request.GET.page
if page == "":
page = "1"
@@ -1168,6 +1174,8 @@ def historyseries():
TableHistory, TableShows, JOIN.LEFT_OUTER
).join_from(
TableHistory, TableEpisodes, JOIN.LEFT_OUTER
+ ).where(
+ TableShows.title.is_null(False)
).order_by(
TableHistory.timestamp.desc()
).paginate(
@@ -1229,7 +1237,13 @@ def historyseries():
def historymovies():
authorize()
- row_count = TableHistoryMovie.select().count()
+ row_count = TableHistoryMovie.select(
+
+ ).join_from(
+ TableHistoryMovie, TableMovies, JOIN.LEFT_OUTER
+ ).where(
+ TableMovies.title.is_null(False)
+ ).count()
page = request.GET.page
if page == "":
page = "1"
@@ -1269,6 +1283,8 @@ def historymovies():
TableMovies.forced
).join_from(
TableHistoryMovie, TableMovies, JOIN.LEFT_OUTER
+ ).where(
+ TableMovies.title.is_null(False)
).order_by(
TableHistoryMovie.timestamp.desc()
).paginate(
From 7d318117afcdad0a4ed7c7ffec41b372be2a4c8b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Louis=20V=C3=A9zina?=
<5130500+morpheus65535@users.noreply.github.com>
Date: Sun, 15 Sep 2019 14:21:57 -0400
Subject: [PATCH 07/10] Fix for #546
---
bazarr/get_series.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/bazarr/get_series.py b/bazarr/get_series.py
index b3ac34d28..2fdc7e9de 100644
--- a/bazarr/get_series.py
+++ b/bazarr/get_series.py
@@ -17,6 +17,7 @@ from utils import get_sonarr_version
def update_series():
notifications.write(msg="Update series list from Sonarr is running...", queue='get_series')
apikey_sonarr = settings.sonarr.apikey
+ sonarr_version = get_sonarr_version()
serie_default_enabled = settings.general.getboolean('serie_default_enabled')
serie_default_language = settings.general.serie_default_language
serie_default_hi = settings.general.serie_default_hi
@@ -89,7 +90,7 @@ def update_series():
'overview': unicode(overview),
'poster': unicode(poster),
'fanart': unicode(fanart),
- 'audio_language': unicode(profile_id_to_language((show['qualityProfileId'] if get_sonarr_version().startswith('2') else show['languageProfileId']), audio_profiles)),
+ 'audio_language': unicode(profile_id_to_language((show['qualityProfileId'] if sonarr_version.startswith('2') else show['languageProfileId']), audio_profiles)),
'sort_title': unicode(show['sortTitle']),
'year': unicode(show['year']),
'alternate_titles': unicode(alternateTitles)})
@@ -104,7 +105,7 @@ def update_series():
'overview': overview,
'poster': poster,
'fanart': fanart,
- 'audio_language': profile_id_to_language((show['qualityProfileId'] if get_sonarr_version().startswith('2') else show['languageProfileId']), audio_profiles),
+ 'audio_language': profile_id_to_language((show['qualityProfileId'] if sonarr_version.startswith('2') else show['languageProfileId']), audio_profiles),
'sort_title': show['sortTitle'],
'year': show['year'],
'alternate_titles': alternateTitles,
@@ -117,7 +118,7 @@ def update_series():
'overview': overview,
'poster': poster,
'fanart': fanart,
- 'audio_language': profile_id_to_language((show['qualityProfileId'] if get_sonarr_version().startswith('2') else show['languageProfileId']), audio_profiles),
+ 'audio_language': profile_id_to_language((show['qualityProfileId'] if sonarr_version.startswith('2') else show['languageProfileId']), audio_profiles),
'sort_title': show['sortTitle'],
'year': show['year'],
'alternate_title': alternateTitles})
From 5c80278629ccd38b1df0ef489429942d44447c12 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Louis=20V=C3=A9zina?=
<5130500+morpheus65535@users.noreply.github.com>
Date: Sun, 15 Sep 2019 22:25:18 -0400
Subject: [PATCH 08/10] Fix for Google Analytics unique ID issue #539.
---
bazarr/analytics.py | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/bazarr/analytics.py b/bazarr/analytics.py
index a751dc477..1eccd37a0 100644
--- a/bazarr/analytics.py
+++ b/bazarr/analytics.py
@@ -27,11 +27,13 @@ def track_event(category=None, action=None, label=None):
tracker = Tracker('UA-138214134-3', 'none', conf=anonymousConfig)
try:
- visitor = pickle.loads(base64.b64decode(settings.analytics.visitor))
+ if settings.analytics.visitor:
+ visitor = pickle.loads(base64.b64decode(settings.analytics.visitor))
+ if visitor.unique_id > int(0x7fffffff):
+ visitor.unique_id = random.randint(0, 0x7fffffff)
except:
visitor = Visitor()
- unique_id = long(random.getrandbits(32))
- visitor.unique_id = unique_id
+ visitor.unique_id = long(random.randint(0, 0x7fffffff))
session = Session()
event = Event(category=category, action=action, label=label, value=1)
From d910cbcc6c0edc7c118d64c29c95a92aeb6cfc79 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Louis=20V=C3=A9zina?=
<5130500+morpheus65535@users.noreply.github.com>
Date: Mon, 16 Sep 2019 06:34:24 -0400
Subject: [PATCH 09/10] Removed erroneous null constraint on DB.
---
bazarr/database.py | 110 ++++++++++++++++++++++-----------------------
1 file changed, 55 insertions(+), 55 deletions(-)
diff --git a/bazarr/database.py b/bazarr/database.py
index f5ec1d85c..014077d83 100644
--- a/bazarr/database.py
+++ b/bazarr/database.py
@@ -34,8 +34,8 @@ class BaseModel(Model):
class System(BaseModel):
- configured = TextField(null=True)
- updated = TextField(null=True)
+ configured = TextField()
+ updated = TextField()
class Meta:
table_name = 'system'
@@ -43,41 +43,41 @@ class System(BaseModel):
class TableShows(BaseModel):
- alternate_titles = TextField(column_name='alternateTitles', null=True)
- audio_language = TextField(null=True)
- fanart = TextField(null=True)
- forced = TextField(null=True)
- hearing_impaired = TextField(null=True)
- languages = TextField(null=True)
- overview = TextField(null=True)
+ alternate_titles = TextField(column_name='alternateTitles')
+ audio_language = TextField()
+ fanart = TextField()
+ forced = TextField()
+ hearing_impaired = TextField()
+ languages = TextField()
+ overview = TextField()
path = TextField(unique=True)
- poster = TextField(null=True)
+ poster = TextField()
sonarr_series_id = IntegerField(column_name='sonarrSeriesId', unique=True)
- sort_title = TextField(column_name='sortTitle', null=True)
+ sort_title = TextField(column_name='sortTitle')
title = TextField()
tvdb_id = AutoField(column_name='tvdbId')
- year = TextField(null=True)
+ year = TextField()
class Meta:
table_name = 'table_shows'
class TableEpisodes(BaseModel):
- audio_codec = TextField(null=True)
+ audio_codec = TextField()
episode = IntegerField()
- failed_attempts = TextField(column_name='failedAttempts', null=True)
- format = TextField(null=True)
- missing_subtitles = TextField(null=True)
- monitored = TextField(null=True)
+ failed_attempts = TextField(column_name='failedAttempts')
+ format = TextField()
+ missing_subtitles = TextField()
+ monitored = TextField()
path = TextField()
- resolution = TextField(null=True)
- scene_name = TextField(null=True)
+ resolution = TextField()
+ scene_name = TextField()
season = IntegerField()
sonarr_episode_id = IntegerField(column_name='sonarrEpisodeId', unique=True)
sonarr_series_id = ForeignKeyField(TableShows, field='sonarr_series_id', column_name='sonarrSeriesId')
- subtitles = TextField(null=True)
+ subtitles = TextField()
title = TextField()
- video_codec = TextField(null=True)
+ video_codec = TextField()
class Meta:
table_name = 'table_episodes'
@@ -85,30 +85,30 @@ class TableEpisodes(BaseModel):
class TableMovies(BaseModel):
- alternative_titles = TextField(column_name='alternativeTitles', null=True)
- audio_codec = TextField(null=True)
- audio_language = TextField(null=True)
- failed_attempts = TextField(column_name='failedAttempts', null=True)
- fanart = TextField(null=True)
- forced = TextField(null=True)
- format = TextField(null=True)
- hearing_impaired = TextField(null=True)
- imdb_id = TextField(column_name='imdbId', null=True)
- languages = TextField(null=True)
- missing_subtitles = TextField(null=True)
- monitored = TextField(null=True)
- overview = TextField(null=True)
+ alternative_titles = TextField(column_name='alternativeTitles')
+ audio_codec = TextField()
+ audio_language = TextField()
+ failed_attempts = TextField(column_name='failedAttempts')
+ fanart = TextField()
+ forced = TextField()
+ format = TextField()
+ hearing_impaired = TextField()
+ imdb_id = TextField(column_name='imdbId')
+ languages = TextField()
+ missing_subtitles = TextField()
+ monitored = TextField()
+ overview = TextField()
path = TextField(unique=True)
- poster = TextField(null=True)
+ poster = TextField()
radarr_id = IntegerField(column_name='radarrId', unique=True)
- resolution = TextField(null=True)
- scene_name = TextField(column_name='sceneName', null=True)
- sort_title = TextField(column_name='sortTitle', null=True)
- subtitles = TextField(null=True)
+ resolution = TextField()
+ scene_name = TextField(column_name='sceneName')
+ sort_title = TextField(column_name='sortTitle')
+ subtitles = TextField()
title = TextField()
tmdb_id = TextField(column_name='tmdbId', primary_key=True)
- video_codec = TextField(null=True)
- year = TextField(null=True)
+ video_codec = TextField()
+ year = TextField()
class Meta:
table_name = 'table_movies'
@@ -118,13 +118,13 @@ class TableHistory(BaseModel):
id = IntegerField(null=False)
action = IntegerField()
description = TextField()
- language = TextField(null=True)
- provider = TextField(null=True)
- score = TextField(null=True)
+ language = TextField(null=False)
+ provider = TextField(null=False)
+ score = TextField(null=False)
sonarr_episode_id = ForeignKeyField(TableEpisodes, field='sonarr_episode_id', column_name='sonarrEpisodeId')
sonarr_series_id = ForeignKeyField(TableShows, field='sonarr_series_id', column_name='sonarrSeriesId')
timestamp = IntegerField()
- video_path = TextField(null=True)
+ video_path = TextField(null=False)
class Meta:
table_name = 'table_history'
@@ -135,12 +135,12 @@ class TableHistoryMovie(BaseModel):
id = IntegerField(null=False)
action = IntegerField()
description = TextField()
- language = TextField(null=True)
- provider = TextField(null=True)
+ language = TextField(null=False)
+ provider = TextField(null=False)
radarr_id = ForeignKeyField(TableMovies, field='radarr_id', column_name='radarrId')
- score = TextField(null=True)
+ score = TextField(null=False)
timestamp = IntegerField()
- video_path = TextField(null=True)
+ video_path = TextField(null=False)
class Meta:
table_name = 'table_history_movie'
@@ -148,10 +148,10 @@ class TableHistoryMovie(BaseModel):
class TableSettingsLanguages(BaseModel):
- code2 = TextField(null=True)
+ code2 = TextField()
code3 = TextField(primary_key=True)
- code3b = TextField(null=True)
- enabled = IntegerField(null=True)
+ code3b = TextField()
+ enabled = IntegerField()
name = TextField()
class Meta:
@@ -159,9 +159,9 @@ class TableSettingsLanguages(BaseModel):
class TableSettingsNotifier(BaseModel):
- enabled = IntegerField(null=True)
- name = TextField(null=True, primary_key=True)
- url = TextField(null=True)
+ enabled = IntegerField()
+ name = TextField(primary_key=True)
+ url = TextField()
class Meta:
table_name = 'table_settings_notifier'
From 10e73994e633c6f3f8fef94da7ec6316add427d3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Louis=20V=C3=A9zina?=
<5130500+morpheus65535@users.noreply.github.com>
Date: Mon, 16 Sep 2019 19:40:42 -0400
Subject: [PATCH 10/10] Revert "Removed erroneous null constraint on DB."
This reverts commit d910cbcc
---
bazarr/database.py | 110 ++++++++++++++++++++++-----------------------
1 file changed, 55 insertions(+), 55 deletions(-)
diff --git a/bazarr/database.py b/bazarr/database.py
index 014077d83..f5ec1d85c 100644
--- a/bazarr/database.py
+++ b/bazarr/database.py
@@ -34,8 +34,8 @@ class BaseModel(Model):
class System(BaseModel):
- configured = TextField()
- updated = TextField()
+ configured = TextField(null=True)
+ updated = TextField(null=True)
class Meta:
table_name = 'system'
@@ -43,41 +43,41 @@ class System(BaseModel):
class TableShows(BaseModel):
- alternate_titles = TextField(column_name='alternateTitles')
- audio_language = TextField()
- fanart = TextField()
- forced = TextField()
- hearing_impaired = TextField()
- languages = TextField()
- overview = TextField()
+ alternate_titles = TextField(column_name='alternateTitles', null=True)
+ audio_language = TextField(null=True)
+ fanart = TextField(null=True)
+ forced = TextField(null=True)
+ hearing_impaired = TextField(null=True)
+ languages = TextField(null=True)
+ overview = TextField(null=True)
path = TextField(unique=True)
- poster = TextField()
+ poster = TextField(null=True)
sonarr_series_id = IntegerField(column_name='sonarrSeriesId', unique=True)
- sort_title = TextField(column_name='sortTitle')
+ sort_title = TextField(column_name='sortTitle', null=True)
title = TextField()
tvdb_id = AutoField(column_name='tvdbId')
- year = TextField()
+ year = TextField(null=True)
class Meta:
table_name = 'table_shows'
class TableEpisodes(BaseModel):
- audio_codec = TextField()
+ audio_codec = TextField(null=True)
episode = IntegerField()
- failed_attempts = TextField(column_name='failedAttempts')
- format = TextField()
- missing_subtitles = TextField()
- monitored = TextField()
+ failed_attempts = TextField(column_name='failedAttempts', null=True)
+ format = TextField(null=True)
+ missing_subtitles = TextField(null=True)
+ monitored = TextField(null=True)
path = TextField()
- resolution = TextField()
- scene_name = TextField()
+ resolution = TextField(null=True)
+ scene_name = TextField(null=True)
season = IntegerField()
sonarr_episode_id = IntegerField(column_name='sonarrEpisodeId', unique=True)
sonarr_series_id = ForeignKeyField(TableShows, field='sonarr_series_id', column_name='sonarrSeriesId')
- subtitles = TextField()
+ subtitles = TextField(null=True)
title = TextField()
- video_codec = TextField()
+ video_codec = TextField(null=True)
class Meta:
table_name = 'table_episodes'
@@ -85,30 +85,30 @@ class TableEpisodes(BaseModel):
class TableMovies(BaseModel):
- alternative_titles = TextField(column_name='alternativeTitles')
- audio_codec = TextField()
- audio_language = TextField()
- failed_attempts = TextField(column_name='failedAttempts')
- fanart = TextField()
- forced = TextField()
- format = TextField()
- hearing_impaired = TextField()
- imdb_id = TextField(column_name='imdbId')
- languages = TextField()
- missing_subtitles = TextField()
- monitored = TextField()
- overview = TextField()
+ alternative_titles = TextField(column_name='alternativeTitles', null=True)
+ audio_codec = TextField(null=True)
+ audio_language = TextField(null=True)
+ failed_attempts = TextField(column_name='failedAttempts', null=True)
+ fanart = TextField(null=True)
+ forced = TextField(null=True)
+ format = TextField(null=True)
+ hearing_impaired = TextField(null=True)
+ imdb_id = TextField(column_name='imdbId', null=True)
+ languages = TextField(null=True)
+ missing_subtitles = TextField(null=True)
+ monitored = TextField(null=True)
+ overview = TextField(null=True)
path = TextField(unique=True)
- poster = TextField()
+ poster = TextField(null=True)
radarr_id = IntegerField(column_name='radarrId', unique=True)
- resolution = TextField()
- scene_name = TextField(column_name='sceneName')
- sort_title = TextField(column_name='sortTitle')
- subtitles = TextField()
+ resolution = TextField(null=True)
+ scene_name = TextField(column_name='sceneName', null=True)
+ sort_title = TextField(column_name='sortTitle', null=True)
+ subtitles = TextField(null=True)
title = TextField()
tmdb_id = TextField(column_name='tmdbId', primary_key=True)
- video_codec = TextField()
- year = TextField()
+ video_codec = TextField(null=True)
+ year = TextField(null=True)
class Meta:
table_name = 'table_movies'
@@ -118,13 +118,13 @@ class TableHistory(BaseModel):
id = IntegerField(null=False)
action = IntegerField()
description = TextField()
- language = TextField(null=False)
- provider = TextField(null=False)
- score = TextField(null=False)
+ language = TextField(null=True)
+ provider = TextField(null=True)
+ score = TextField(null=True)
sonarr_episode_id = ForeignKeyField(TableEpisodes, field='sonarr_episode_id', column_name='sonarrEpisodeId')
sonarr_series_id = ForeignKeyField(TableShows, field='sonarr_series_id', column_name='sonarrSeriesId')
timestamp = IntegerField()
- video_path = TextField(null=False)
+ video_path = TextField(null=True)
class Meta:
table_name = 'table_history'
@@ -135,12 +135,12 @@ class TableHistoryMovie(BaseModel):
id = IntegerField(null=False)
action = IntegerField()
description = TextField()
- language = TextField(null=False)
- provider = TextField(null=False)
+ language = TextField(null=True)
+ provider = TextField(null=True)
radarr_id = ForeignKeyField(TableMovies, field='radarr_id', column_name='radarrId')
- score = TextField(null=False)
+ score = TextField(null=True)
timestamp = IntegerField()
- video_path = TextField(null=False)
+ video_path = TextField(null=True)
class Meta:
table_name = 'table_history_movie'
@@ -148,10 +148,10 @@ class TableHistoryMovie(BaseModel):
class TableSettingsLanguages(BaseModel):
- code2 = TextField()
+ code2 = TextField(null=True)
code3 = TextField(primary_key=True)
- code3b = TextField()
- enabled = IntegerField()
+ code3b = TextField(null=True)
+ enabled = IntegerField(null=True)
name = TextField()
class Meta:
@@ -159,9 +159,9 @@ class TableSettingsLanguages(BaseModel):
class TableSettingsNotifier(BaseModel):
- enabled = IntegerField()
- name = TextField(primary_key=True)
- url = TextField()
+ enabled = IntegerField(null=True)
+ name = TextField(null=True, primary_key=True)
+ url = TextField(null=True)
class Meta:
table_name = 'table_settings_notifier'