diff --git a/kolibri/core/errorreports/__init__.py b/kolibri/core/errorreports/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/kolibri/core/errorreports/apps.py b/kolibri/core/errorreports/apps.py new file mode 100644 index 00000000000..ae71f967170 --- /dev/null +++ b/kolibri/core/errorreports/apps.py @@ -0,0 +1,7 @@ +from django.apps import AppConfig + + +class KolibriErrorConfig(AppConfig): + name = "kolibri.core.errorreports" + label = "errorreports" + verbose_name = "Kolibri ErrorReports" diff --git a/kolibri/core/errorreports/models.py b/kolibri/core/errorreports/models.py new file mode 100644 index 00000000000..cc2b608e5b0 --- /dev/null +++ b/kolibri/core/errorreports/models.py @@ -0,0 +1,38 @@ +from kolibri.deployment.default.sqlite_db_names import ERROR_REPORTS + + +class ErrorReportsRouter(object): + """ + Determine how to route database calls for the ErrorReports app. + ref: https://docs.djangoproject.com/en/5.0/topics/db/multi-db/ + + """ + + def db_for_read(self, model, **hints): + if model._meta.app_label == "errorreports": + return ERROR_REPORTS + return None + + def db_for_write(self, model, **hints): + if model._meta.app_label == "errorreports": + return ERROR_REPORTS + return None + + def allow_relation(self, obj1, obj2, **hints): + if ( + obj1._meta.app_label == "errorreports" + and obj2._meta.app_label == "errorreports" + ): + return True + elif "errorreports" not in [obj1._meta.app_label, obj2._meta.app_label]: + return None + + return False + + def allow_migrate(self, db, app_label, model_name=None, **hints): + if app_label == "errorreports": + return db == ERROR_REPORTS + elif db == ERROR_REPORTS: + return False + + return None diff --git a/kolibri/deployment/default/settings/base.py b/kolibri/deployment/default/settings/base.py index 8206a1b8a88..3c0f24fea2b 100644 --- a/kolibri/deployment/default/settings/base.py +++ b/kolibri/deployment/default/settings/base.py @@ -73,6 +73,7 @@ "kolibri.core.auth.apps.KolibriAuthConfig", "kolibri.core.bookmarks", "kolibri.core.content", + "kolibri.core.errorreports", "kolibri.core.logger", "kolibri.core.notifications.apps.KolibriNotificationsConfig", "kolibri.core.tasks.apps.KolibriTasksConfig", @@ -161,6 +162,7 @@ "kolibri.core.notifications.models.NotificationsRouter", "kolibri.core.device.models.SyncQueueRouter", "kolibri.core.discovery.models.NetworkLocationRouter", + "kolibri.core.errorreports.models.ErrorReportsRouter", ) elif conf.OPTIONS["Database"]["DATABASE_ENGINE"] == "postgres": diff --git a/kolibri/deployment/default/sqlite_db_names.py b/kolibri/deployment/default/sqlite_db_names.py index 3118a4049ff..46f54ea8885 100644 --- a/kolibri/deployment/default/sqlite_db_names.py +++ b/kolibri/deployment/default/sqlite_db_names.py @@ -10,5 +10,12 @@ NOTIFICATIONS = "notifications" +ERROR_REPORTS = "errorreports" -ADDITIONAL_SQLITE_DATABASES = (SYNC_QUEUE, NETWORK_LOCATION, NOTIFICATIONS) + +ADDITIONAL_SQLITE_DATABASES = ( + SYNC_QUEUE, + NETWORK_LOCATION, + NOTIFICATIONS, + ERROR_REPORTS, +)