From 201513d1c964ac7fe43ef77853e8201aaab612ea Mon Sep 17 00:00:00 2001
From: Nico Vermaas <vermaas@astron.nl>
Date: Mon, 3 Aug 2020 13:55:33 +0200
Subject: [PATCH] fix admin app failure since splitting up databases. Added a
 MultiDBModelAdmin to admin.py for that.

---
 esap/esap/esap_config.sqlite3 | Bin 278528 -> 278528 bytes
 esap/ida/admin.py             |  28 +++++++++++++++-
 esap/ida/api/urls.py          |   1 -
 esap/logs/esap.log            |  61 ++++++++++++++++++++++++++++++++++
 esap/query/admin.py           |  25 ++++++++++++++
 esap/rucio/admin.py           |   3 --
 esap/staging/admin.py         |  29 ++++++++++++++++
 esap/staging/api/urls.py      |   2 +-
 8 files changed, 143 insertions(+), 6 deletions(-)
 delete mode 100644 esap/rucio/admin.py

diff --git a/esap/esap/esap_config.sqlite3 b/esap/esap/esap_config.sqlite3
index a7f75dd9b867cdc233ff9fedfdc206c6142a5257..36de43ffb45786ba2f3edc92b953dd7c6fb1a8d0 100644
GIT binary patch
delta 365
zcmZo@5Nv1=oFL5@Gf~EwF=k`Jl6+<nUfId)1qz(9yubN9__pxf+^neZmPb{E*_W|6
zsWhoH(=aV5yEMrt&9orZ+`uBy(m1QYASJ7)+{j#fvs0~uqKJjAfw6+2ft8V^m64gA
zk%gt1x%uRC^NpHM%-eoq9-~blvk33h>FggE)tPvwZdO!C<&~FXc4Ra%Ff!0Ju+TL$
zM`$)SFg7zV5^vw~mvQ@+zf1u}A{;Ci82AqHw(z)dp5o|Xxxntn&9PZgVF%0h3nt9>
z7?~Itrf)D~R#dMRXZ3AlbtL5E$<Gp;L{RNCGB-A}Fxu{C&b*6Ry~$df)whM9Ih#Lb
VGBcu?195x1n+@}JHyf5+%m8%GYV!a9

delta 335
zcmZo@5Nv1=oFL5@IZ?)$F>+(Vl6+=iUZ=_I1q$rH`91iy@ZH?3s35|-*{Rk+QN&!=
z$Uwo+*viDn%D_O+(9F!p++gy#`9{qr=50SQkI^QOS(tarboLL7>YEi6+IZWy{AJv}
z<u6l!kq|q}1qQxDye&L#oToT?ST3;pZB|s+#j^c^3G+QhCT@=D8_bv$S#wiMi_ND0
zFk!CP?q|-ti@BbGfzi&lh1Id#GS4I}Hzhx}&?G6pBsaCJ%E-JpvoNtRxwNE7T$t6j
z+14?w%s8<yHPJ9Xzsl0QB+E1_-=M58IU^-6Ejh`gxUkr-D%8j~+$+m3E7>T@-7Ux8
z-POp~#Vgl0+|$6{#nZ^wDAL3)E4{)uB)c*)#JAkvC7Zd*FJ!u&Df4_;4+C2x10w@n
j19M#?3k3snD-&}oLkm4a0~2!tgLXF?=Iw4aEW4NiQh{nF

diff --git a/esap/ida/admin.py b/esap/ida/admin.py
index 9a8f66a9..c389088d 100644
--- a/esap/ida/admin.py
+++ b/esap/ida/admin.py
@@ -1,4 +1,30 @@
-# Register your models here.
 from django.contrib import admin
 from .models import Ida
+
 admin.site.register(Ida)
+
+class MultiDBModelAdmin(admin.ModelAdmin):
+    # A handy constant for the name of the alternate database.
+    using = 'ida'
+
+    def save_model(self, request, obj, form, change):
+        # Tell Django to save objects to the 'other' database.
+        obj.save(using=self.using)
+
+    def delete_model(self, request, obj):
+        # Tell Django to delete objects from the 'other' database
+        obj.delete(using=self.using)
+
+    def get_queryset(self, request):
+        # Tell Django to look for objects on the 'other' database.
+        return super().get_queryset(request).using(self.using)
+
+    def formfield_for_foreignkey(self, db_field, request, **kwargs):
+        # Tell Django to populate ForeignKey widgets using a query
+        # on the 'other' database.
+        return super().formfield_for_foreignkey(db_field, request, using=self.using, **kwargs)
+
+    def formfield_for_manytomany(self, db_field, request, **kwargs):
+        # Tell Django to populate ManyToMany widgets using a query
+        # on the 'other' database.
+        return super().formfield_for_manytomany(db_field, request, using=self.using, **kwargs)
\ No newline at end of file
diff --git a/esap/ida/api/urls.py b/esap/ida/api/urls.py
index 5a3b2aa2..addda9cd 100644
--- a/esap/ida/api/urls.py
+++ b/esap/ida/api/urls.py
@@ -11,7 +11,6 @@ router.register('ida', IdaViewSet, 'ida')
 urlpatterns = router.urls
 
 urlpatterns = [
-    path('admin', admin.site.urls, name='admin-view'),
     path('', views.IndexView.as_view(), name='index-view'),
     path('my_ida', views.StagingListViewAPI.as_view(), name='ida-view'),
 ]
diff --git a/esap/logs/esap.log b/esap/logs/esap.log
index 3016b639..8019b5fe 100644
--- a/esap/logs/esap.log
+++ b/esap/logs/esap.log
@@ -3658,3 +3658,64 @@
 [2020-07-23 13:38:20,770] construct_query: https://alta.astron.nl/altapi/dataproducts?dataProductType=image_and_collection=imaging_and_dataProductSubType__in=calibratedVisibility,continuumMF,continuumChunk,imageCube,beamCube,polarisationImage,polarisationCube,continuumCube
 [2020-07-23 13:38:20,773] run-query: https://alta.astron.nl/altapi/dataproducts?dataProductType=image&collection=imaging&dataProductSubType__in=calibratedVisibility,continuumMF,continuumChunk,imageCube,beamCube,polarisationImage,polarisationCube,continuumCube
 [2020-07-23 13:38:39,565] nr of dataproducts in response: 500
+[2020-08-03 11:03:00,852] ConfigurationView
+[2020-08-03 11:03:00,994] ConfigurationView
+[2020-08-03 11:03:16,342] ConfigurationView
+[2020-08-03 11:03:41,987] query_controller.create_query()
+[2020-08-03 11:05:22,300] query_controller.create_query()
+[2020-08-03 11:06:48,371] ConfigurationView
+[2020-08-03 11:07:03,119] query_controller.create_query()
+[2020-08-03 11:07:03,125] ERROR: could not translating key collection 'collection', using it raw.
+[2020-08-03 11:07:03,126] construct_query: https://alta.astron.nl/altapi/dataproducts?collection=imaging_and_dataProductSubType__in=calibratedVisibility,continuumMF,continuumChunk,imageCube,beamCube,polarisationImage,polarisationCube,continuumCube
+[2020-08-03 11:07:03,128] run-query: https://alta.astron.nl/altapi/dataproducts?collection=imaging&dataProductSubType__in=calibratedVisibility,continuumMF,continuumChunk,imageCube,beamCube,polarisationImage,polarisationCube,continuumCube
+[2020-08-03 11:07:16,077] nr of dataproducts in response: 500
+[2020-08-03 11:07:55,424] ConfigurationView
+[2020-08-03 11:08:10,941] query_controller.create_query()
+[2020-08-03 11:18:38,921] query_controller.create_query()
+[2020-08-03 11:45:42,442] ConfigurationView
+[2020-08-03 12:14:44,264] ConfigurationView
+[2020-08-03 12:17:10,548] ConfigurationView
+[2020-08-03 12:17:10,668] ConfigurationView
+[2020-08-03 12:17:22,603] ConfigurationView
+[2020-08-03 12:17:22,704] ConfigurationView
+[2020-08-03 13:18:44,486] ConfigurationView
+[2020-08-03 13:18:59,163] query_controller.create_query()
+[2020-08-03 13:18:59,195] run-query: https://vo.astron.nl/__system__/tap/run/tap/sync?lang=ADQL
+[2020-08-03 13:19:12,451] query_controller.create_query()
+[2020-08-03 13:19:12,481] run-query: https://vo.astron.nl/__system__/tap/run/tap/sync?lang=ADQL
+[2020-08-03 13:19:36,790] ConfigurationView
+[2020-08-03 13:19:44,692] query_controller.create_query()
+[2020-08-03 13:19:44,696] construct_query: https://alta.astron.nl/altapi/dataproducts?dataProductSubType__in=uncalibratedVisibility
+[2020-08-03 13:19:44,698] construct_query: https://alta.astron.nl/altapi/dataproducts?dataProductSubType__in=calibratedVisibility,continuumMF,continuumChunk,imageCube,beamCube,polarisationImage,polarisationCube,continuumCube
+[2020-08-03 13:19:44,699] construct_query: https://alta.astron.nl/altapi/dataproducts?dataProductSubType=pulsarTimingTimeSeries
+[2020-08-03 13:19:44,716] run-query: https://alta.astron.nl/altapi/dataproducts?dataProductSubType__in=uncalibratedVisibility
+[2020-08-03 13:19:54,675] nr of dataproducts in response: 398
+[2020-08-03 13:20:09,632] ConfigurationView
+[2020-08-03 13:20:17,117] query_controller.create_query()
+[2020-08-03 13:20:17,122] construct_query: https://alta.astron.nl/altapi/dataproducts?dataProductSubType__in=uncalibratedVisibility
+[2020-08-03 13:20:17,124] construct_query: https://alta.astron.nl/altapi/dataproducts?dataProductSubType__in=calibratedVisibility,continuumMF,continuumChunk,imageCube,beamCube,polarisationImage,polarisationCube,continuumCube
+[2020-08-03 13:20:17,126] construct_query: https://alta.astron.nl/altapi/dataproducts?dataProductSubType=pulsarTimingTimeSeries
+[2020-08-03 13:20:17,140] run-query: https://alta.astron.nl/altapi/dataproducts?dataProductSubType__in=uncalibratedVisibility
+[2020-08-03 13:20:26,303] nr of dataproducts in response: 398
+[2020-08-03 13:21:17,137] query_controller.create_query()
+[2020-08-03 13:21:34,765] query_controller.create_query()
+[2020-08-03 13:21:34,772] ERROR: could not translating key collection 'collection', using it raw.
+[2020-08-03 13:21:34,773] ERROR: could not translating key view_ra 'view_ra', using it raw.
+[2020-08-03 13:21:34,773] ERROR: could not translating key view_dec 'view_dec', using it raw.
+[2020-08-03 13:21:34,773] ERROR: could not translating key view_fov 'view_fov', using it raw.
+[2020-08-03 13:21:34,773] construct_query: https://alta.astron.nl/altapi/dataproducts?collection=imaging_and_view_ra=342.16_and_view_dec=33.94_and_view_fov=1_and_dataProductSubType__in=uncalibratedVisibility
+[2020-08-03 13:21:34,776] ERROR: could not translating key collection 'collection', using it raw.
+[2020-08-03 13:21:34,776] ERROR: could not translating key view_ra 'view_ra', using it raw.
+[2020-08-03 13:21:34,777] ERROR: could not translating key view_dec 'view_dec', using it raw.
+[2020-08-03 13:21:34,777] ERROR: could not translating key view_fov 'view_fov', using it raw.
+[2020-08-03 13:21:34,777] construct_query: https://alta.astron.nl/altapi/dataproducts?collection=imaging_and_view_ra=342.16_and_view_dec=33.94_and_view_fov=1_and_dataProductSubType__in=calibratedVisibility,continuumMF,continuumChunk,imageCube,beamCube,polarisationImage,polarisationCube,continuumCube
+[2020-08-03 13:21:34,781] run-query: https://alta.astron.nl/altapi/dataproducts?collection=imaging&view_ra=342.16&view_dec=33.94&view_fov=1&dataProductSubType__in=uncalibratedVisibility
+[2020-08-03 13:21:35,505] nr of dataproducts in response: 5
+[2020-08-03 13:21:35,507] run-query: https://alta.astron.nl/altapi/dataproducts?collection=imaging&view_ra=342.16&view_dec=33.94&view_fov=1&dataProductSubType__in=calibratedVisibility,continuumMF,continuumChunk,imageCube,beamCube,polarisationImage,polarisationCube,continuumCube
+[2020-08-03 13:21:39,610] nr of dataproducts in response: 143
+[2020-08-03 13:21:56,501] query_controller.create_query()
+[2020-08-03 13:21:56,505] construct_query: https://alta.astron.nl/altapi/dataproducts?dataProductSubType__in=uncalibratedVisibility
+[2020-08-03 13:21:56,507] construct_query: https://alta.astron.nl/altapi/dataproducts?dataProductSubType__in=calibratedVisibility,continuumMF,continuumChunk,imageCube,beamCube,polarisationImage,polarisationCube,continuumCube
+[2020-08-03 13:21:56,509] construct_query: https://alta.astron.nl/altapi/dataproducts?dataProductSubType=pulsarTimingTimeSeries
+[2020-08-03 13:21:56,525] run-query: https://alta.astron.nl/altapi/dataproducts?dataProductSubType__in=uncalibratedVisibility
+[2020-08-03 13:22:05,933] nr of dataproducts in response: 398
diff --git a/esap/query/admin.py b/esap/query/admin.py
index a3b4fc94..235dead7 100644
--- a/esap/query/admin.py
+++ b/esap/query/admin.py
@@ -9,3 +9,28 @@ admin.site.register(Catalog)
 admin.site.register(ParameterMapping)
 
 
+class MultiDBModelAdmin(admin.ModelAdmin):
+    # A handy constant for the name of the alternate database.
+    using = 'default'
+
+    def save_model(self, request, obj, form, change):
+        # Tell Django to save objects to the 'other' database.
+        obj.save(using=self.using)
+
+    def delete_model(self, request, obj):
+        # Tell Django to delete objects from the 'other' database
+        obj.delete(using=self.using)
+
+    def get_queryset(self, request):
+        # Tell Django to look for objects on the 'other' database.
+        return super().get_queryset(request).using(self.using)
+
+    def formfield_for_foreignkey(self, db_field, request, **kwargs):
+        # Tell Django to populate ForeignKey widgets using a query
+        # on the 'other' database.
+        return super().formfield_for_foreignkey(db_field, request, using=self.using, **kwargs)
+
+    def formfield_for_manytomany(self, db_field, request, **kwargs):
+        # Tell Django to populate ManyToMany widgets using a query
+        # on the 'other' database.
+        return super().formfield_for_manytomany(db_field, request, using=self.using, **kwargs)
\ No newline at end of file
diff --git a/esap/rucio/admin.py b/esap/rucio/admin.py
deleted file mode 100644
index 8c38f3f3..00000000
--- a/esap/rucio/admin.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.contrib import admin
-
-# Register your models here.
diff --git a/esap/staging/admin.py b/esap/staging/admin.py
index cc347e97..0e4f109a 100644
--- a/esap/staging/admin.py
+++ b/esap/staging/admin.py
@@ -1,3 +1,32 @@
 from django.contrib import admin
 from .models import Staging
+
 admin.site.register(Staging)
+
+
+
+class MultiDBModelAdmin(admin.ModelAdmin):
+    # A handy constant for the name of the alternate database.
+    using = 'staging'
+
+    def save_model(self, request, obj, form, change):
+        # Tell Django to save objects to the 'other' database.
+        obj.save(using=self.using)
+
+    def delete_model(self, request, obj):
+        # Tell Django to delete objects from the 'other' database
+        obj.delete(using=self.using)
+
+    def get_queryset(self, request):
+        # Tell Django to look for objects on the 'other' database.
+        return super().get_queryset(request).using(self.using)
+
+    def formfield_for_foreignkey(self, db_field, request, **kwargs):
+        # Tell Django to populate ForeignKey widgets using a query
+        # on the 'other' database.
+        return super().formfield_for_foreignkey(db_field, request, using=self.using, **kwargs)
+
+    def formfield_for_manytomany(self, db_field, request, **kwargs):
+        # Tell Django to populate ManyToMany widgets using a query
+        # on the 'other' database.
+        return super().formfield_for_manytomany(db_field, request, using=self.using, **kwargs)
\ No newline at end of file
diff --git a/esap/staging/api/urls.py b/esap/staging/api/urls.py
index de773bde..8b03957d 100644
--- a/esap/staging/api/urls.py
+++ b/esap/staging/api/urls.py
@@ -11,7 +11,7 @@ router.register('staging', StagingViewSet, 'staging')
 urlpatterns = router.urls
 
 urlpatterns = [
-    path('admin', admin.site.urls, name='admin-view'),
+    # path('admin', admin.site.urls, name='admin-view'),
     path('', views.IndexView.as_view(), name='index-view'),
     path('staging', views.StagingListViewAPI.as_view(), name='staging-view'),
 ]
-- 
GitLab