diff --git a/heroic_api/filters.py b/heroic_api/filters.py index e2f6c4f..a357986 100644 --- a/heroic_api/filters.py +++ b/heroic_api/filters.py @@ -21,8 +21,8 @@ class TelescopeFilter(django_filters.FilterSet): - site = django_filters.CharFilter(field_name='site__id') - observatory = django_filters.CharFilter(field_name='site__observatory__id') + site = django_filters.ModelMultipleChoiceFilter(queryset=Site.objects.all(), field_name='site__id', to_field_name='id') + observatory = django_filters.ModelMultipleChoiceFilter(queryset=Observatory.objects.all(), field_name='site__observatory__id', to_field_name='id') class Meta: model = Telescope @@ -30,9 +30,9 @@ class Meta: class InstrumentFilter(django_filters.FilterSet): - site = django_filters.CharFilter(field_name='telescope__site__id') - observatory = django_filters.CharFilter(field_name='telescope__site__observatory__id') - telescope = django_filters.CharFilter(field_name='telescope__id') + site = django_filters.ModelMultipleChoiceFilter(queryset=Site.objects.all(), field_name='telescope__site__id', to_field_name='id') + observatory = django_filters.ModelMultipleChoiceFilter(queryset=Observatory.objects.all(), field_name='telescope__site__observatory__id', to_field_name='id') + telescope = django_filters.ModelMultipleChoiceFilter(queryset=Telescope.objects.all(), field_name='telescope__id', to_field_name='id') class Meta: model = Instrument @@ -126,10 +126,10 @@ class Meta: class TelescopePointingFilter(django_filters.FilterSet): - site = django_filters.CharFilter(field_name='telescope__site__id') - observatory = django_filters.CharFilter(field_name='telescope__site__observatory__id') - telescope = django_filters.CharFilter(field_name='telescope__id') - instrument = django_filters.CharFilter(field_name='instrument__id') + site = django_filters.ModelMultipleChoiceFilter(queryset=Site.objects.all(), field_name='telescope__site__id', to_field_name='id') + observatory = django_filters.ModelMultipleChoiceFilter(queryset=Observatory.objects.all(), field_name='telescope__site__observatory__id', to_field_name='id') + telescope = django_filters.ModelMultipleChoiceFilter(queryset=Telescope.objects.all(), field_name='telescope__id', to_field_name='id') + instrument = django_filters.ModelMultipleChoiceFilter(queryset=Instrument.objects.all(), field_name='instrument__id', to_field_name='id') planned = django_filters.BooleanFilter(field_name='planned') target = django_filters.CharFilter(field_name='target', lookup_expr='icontainer', label='Target name contains') target_exact = django_filters.CharFilter(field_name='target', lookup_expr='exact', label='Target name exact') @@ -154,6 +154,13 @@ class TelescopePointingFilter(django_filters.FilterSet): label='Date Before', widget=forms.TextInput(attrs={'class': 'input', 'type': 'date'}) ) + ordering = django_filters.OrderingFilter( + fields=( + ('date', 'date'), + ('telescope', 'telescope'), + ('instrument', 'instrument') + ) + ) def filter_cone_search(self, queryset, name, value): ''' Cone search is expected in the form "ra,dec,radius" all in decimal degress. diff --git a/heroic_api/tasks.py b/heroic_api/tasks.py index 5f8bbc5..7c18f37 100644 --- a/heroic_api/tasks.py +++ b/heroic_api/tasks.py @@ -22,14 +22,16 @@ def poll_rubin_schedule(): telescope = Telescope.objects.get(id=RUBIN_TELESCOPE_ID) except Telescope.DoesNotExist: logger.error(f"Cannot poll Rubin schedule: Rubin telescope {RUBIN_TELESCOPE_ID} is not defined") + return try: instrument = Instrument.objects.get(id=RUBIN_INSTRUMENT_ID) except Instrument.DoesNotExist: logger.error(f"Cannot poll Rubin schedule: Rubin instrument {RUBIN_INSTRUMENT_ID} is not defined") + return # Get the schedule from 15 minutes in the past until 25 hours later start = datetime.now() - timedelta(minutes=15) - logger.info(f'Getting the Rubin schedule starting at {start.isoformat()}') + logger.info(f'Getting the Rubin schedule starting at {start.strftime('%Y-%m-%d %H:%M:%S')}') params = {'time': '25', 'start': start.strftime('%Y-%m-%d %H:%M:%S')} response = requests.get(settings.RUBIN_SCHEDULE_URL, params=params) response.raise_for_status() diff --git a/heroic_base/settings.py b/heroic_base/settings.py index 5f6c102..74857a7 100644 --- a/heroic_base/settings.py +++ b/heroic_base/settings.py @@ -158,7 +158,7 @@ ), 'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema', "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination", - "PAGE_SIZE": 100, + "PAGE_SIZE": 1000, } SPECTACULAR_SETTINGS = {