From cd03253a3a9ecb564c67499b4012ebb52140ff5b Mon Sep 17 00:00:00 2001 From: Tyler Adam Martinez Date: Fri, 23 Jan 2026 18:03:28 -0600 Subject: [PATCH 1/2] [admin/views/weather_photos] Create WeatherPhotosAdmin pg --- admin/config.py | 83 ++++++++++++++++++----------------- admin/views/__init__.py | 2 + admin/views/weather_photos.py | 56 +++++++++++++++++++++++ 3 files changed, 101 insertions(+), 40 deletions(-) create mode 100644 admin/views/weather_photos.py diff --git a/admin/config.py b/admin/config.py index 0d4f462a..1ef24cbe 100644 --- a/admin/config.py +++ b/admin/config.py @@ -50,6 +50,7 @@ SurfaceWaterDataAdmin, ThingAdmin, TransducerObservationAdmin, + WeatherPhotosAdmin, ) from db.aquifer_system import AquiferSystem from db.aquifer_type import AquiferType @@ -71,6 +72,7 @@ NMA_Soil_Rock_Results, NMA_Stratigraphy, NMA_SurfaceWaterData, + NMA_WeatherPhotos, ) from db.notes import Notes from db.observation import Observation @@ -109,70 +111,71 @@ def create_admin(app): ) # Register model views - # Geography - admin.add_view(LocationAdmin(Location)) - - # Things (Wells, Springs, etc.) - admin.add_view(ThingAdmin(Thing)) + # Assets + admin.add_view(AssetAdmin(Asset)) - # Observations (Water Levels) - admin.add_view(ObservationAdmin(Observation)) + # Aquifer + admin.add_view(AquiferSystemAdmin(AquiferSystem)) + admin.add_view(AquiferTypeAdmin(AquiferType)) - # Contacts (Owners) + # Contacts admin.add_view(ContactAdmin(Contact)) - # Equipment - admin.add_view(SensorAdmin(Sensor)) + # Data provenance + admin.add_view(DataProvenanceAdmin(DataProvenance)) + + # Deployment / Equipment admin.add_view(DeploymentAdmin(Deployment)) + admin.add_view(SensorAdmin(Sensor)) - # Assets - admin.add_view(AssetAdmin(Asset)) + # Field + admin.add_view(FieldActivityAdmin(FieldActivity)) + admin.add_view(FieldEventAdmin(FieldEvent)) - # Aquifer - admin.add_view(AquiferSystemAdmin(AquiferSystem)) - admin.add_view(AquiferTypeAdmin(AquiferType)) + # Geology + admin.add_view(GeologicFormationAdmin(GeologicFormation)) + + # Geography + admin.add_view(LocationAdmin(Location)) # Groups admin.add_view(GroupAdmin(Group)) - # Notes - admin.add_view(NotesAdmin(Notes)) - - # Samples - admin.add_view(SampleAdmin(Sample)) - admin.add_view(ChemistrySampleInfoAdmin(NMA_Chemistry_SampleInfo)) - admin.add_view(SurfaceWaterDataAdmin(NMA_SurfaceWaterData)) - # Hydraulics admin.add_view(HydraulicsDataAdmin(NMA_HydraulicsData)) - admin.add_view(RadionuclidesAdmin(NMA_Radionuclides)) admin.add_view(MinorTraceChemistryAdmin(NMA_MinorTraceChemistry)) + admin.add_view(RadionuclidesAdmin(NMA_Radionuclides)) - # Field - admin.add_view(FieldEventAdmin(FieldEvent)) - admin.add_view(FieldActivityAdmin(FieldActivity)) + # Lexicon + admin.add_view(LexiconCategoryAdmin(LexiconCategory)) + admin.add_view(LexiconTermAdmin(LexiconTerm)) + + # Notes + admin.add_view(NotesAdmin(Notes)) + + # Observations + admin.add_view(ObservationAdmin(Observation)) # Parameters admin.add_view(ParameterAdmin(Parameter)) - # Geology - admin.add_view(GeologicFormationAdmin(GeologicFormation)) + # Samples + admin.add_view(ChemistrySampleInfoAdmin(NMA_Chemistry_SampleInfo)) + admin.add_view(SampleAdmin(Sample)) + admin.add_view(SurfaceWaterDataAdmin(NMA_SurfaceWaterData)) - # Data provenance - admin.add_view(DataProvenanceAdmin(DataProvenance)) + # Soil & Stratigraphy + admin.add_view(SoilRockResultsAdmin(NMA_Soil_Rock_Results)) + admin.add_view(StratigraphyAdmin(NMA_Stratigraphy)) + + # Things (Wells, Springs, etc.) + admin.add_view(ThingAdmin(Thing)) # Transducer observations admin.add_view(TransducerObservationAdmin(TransducerObservation)) - # Lexicon - admin.add_view(LexiconTermAdmin(LexiconTerm)) - admin.add_view(LexiconCategoryAdmin(LexiconCategory)) - - # Stratigraphy - admin.add_view(StratigraphyAdmin(NMA_Stratigraphy)) - - # SoilRockResults - admin.add_view(SoilRockResultsAdmin(NMA_Soil_Rock_Results)) + # Weather + admin.add_view(WeatherPhotosAdmin(NMA_WeatherPhotos)) # Future: Add more views here as they are implemented # admin.add_view(SampleAdmin) diff --git a/admin/views/__init__.py b/admin/views/__init__.py index 5061ba72..1af1fbb3 100644 --- a/admin/views/__init__.py +++ b/admin/views/__init__.py @@ -48,6 +48,7 @@ from admin.views.surface_water import SurfaceWaterDataAdmin from admin.views.thing import ThingAdmin from admin.views.transducer_observation import TransducerObservationAdmin +from admin.views.weather_photos import WeatherPhotosAdmin __all__ = [ "AssetAdmin", @@ -78,4 +79,5 @@ "SurfaceWaterDataAdmin", "ThingAdmin", "TransducerObservationAdmin", + "WeatherPhotosAdmin", ] diff --git a/admin/views/weather_photos.py b/admin/views/weather_photos.py new file mode 100644 index 00000000..403fcc3d --- /dev/null +++ b/admin/views/weather_photos.py @@ -0,0 +1,56 @@ +from admin.views.base import OcotilloModelView + + +class WeatherPhotosAdmin(OcotilloModelView): + """ + Admin view for legacy WeatherPhotos model (NMA_WeatherPhotos). + """ + + # ========== Basic Configuration ========== + name = "NMA Weather Photos" + label = "NMA Weather Photos" + icon = "fa fa-cloud" + + # Pagination + page_size = 50 + page_size_options = [25, 50, 100, 200] + + # ========== List View ========== + list_fields = [ + "weather_id", + "point_id", + "ole_path", + "object_id", + "global_id", + ] + + sortable_fields = [ + "global_id", + "object_id", + "point_id", + ] + + fields_default_sort = [("point_id", False), ("object_id", False)] + + searchable_fields = [ + "point_id", + "ole_path", + ] + + # ========== Detail View ========== + fields = [ + "weather_id", + "point_id", + "ole_path", + "object_id", + "global_id", + ] + + # ========== Legacy Field Labels ========== + field_labels = { + "weather_id": "WeatherID", + "point_id": "PointID", + "ole_path": "OLEPath", + "object_id": "OBJECTID", + "global_id": "GlobalID", + } From 961df5e7f8d34b3b233bf7a3b8c47cef8e19a395 Mon Sep 17 00:00:00 2001 From: Tyler Adam Martinez Date: Mon, 26 Jan 2026 15:43:04 -0600 Subject: [PATCH 2/2] [weather_photos] Update admin panel to be read-only --- admin/views/weather_photos.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/admin/views/weather_photos.py b/admin/views/weather_photos.py index 403fcc3d..006d1b10 100644 --- a/admin/views/weather_photos.py +++ b/admin/views/weather_photos.py @@ -54,3 +54,17 @@ class WeatherPhotosAdmin(OcotilloModelView): "object_id": "OBJECTID", "global_id": "GlobalID", } + + # ========== READ ONLY ========== + enable_publish_actions = ( + False # hides publish/unpublish actions inherited from base + ) + + def can_create(self, request) -> bool: + return False + + def can_edit(self, request) -> bool: + return False + + def can_delete(self, request) -> bool: + return False