Skip to content

Commit

Permalink
Merge pull request #54 from LCOGT/feature/profile-queries
Browse files Browse the repository at this point in the history
Prefetch for observations viewset
  • Loading branch information
eheinrich committed Jul 19, 2019
2 parents 72afade + 572e116 commit f8b8ef9
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 22 deletions.
3 changes: 2 additions & 1 deletion observation_portal/blocks/viewsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ def get_queryset(self):
'request__configurations__acquisition_config',
'request__configurations__guiding_config', 'request__configurations__constraints',
'request__configurations__instrument_configs__rois', 'configuration_statuses',
'configuration_statuses__summary', 'request__request_group', 'request__request_group__proposal'
'configuration_statuses__summary', 'request__request_group', 'request__request_group__proposal',
'configuration_statuses__configuration', 'request__request_group__submitter'
).distinct()

def perform_create(self, serializer):
Expand Down
6 changes: 1 addition & 5 deletions observation_portal/observations/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,7 @@ def as_dict(self, no_request=False):

@property
def instrument_types(self):
return set(
Configuration.objects.filter(
configuration_status__in=self.configuration_statuses.all()
).values_list('instrument_type', flat=True)
)
return set(self.request.configurations.values_list('instrument_type', flat=True))


class ConfigurationStatus(models.Model):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@
{% bootstrap_pagination page_obj extra=request.GET.urlencode %}
</span>
{% endif %}
{% with last_update=filter.qs.first.modified %}
<span class="float-right text-right">
{{ filter.qs.count }} observations<br/>
Last Update: <strong>{{ filter.qs.first.modified }}</strong>
{{ page_obj.paginator.count }} observations<br/>
Last Update: <strong>{{ last_update }}</strong>
</span>
<table class="table">
<thead>
Expand Down Expand Up @@ -66,9 +67,10 @@
</span>
{% endif %}
<span class="float-right text-right">
Last Update: <strong>{{ filter.qs.first.modified }}</strong><br/>
{{ filter.qs.count }} observations
Last Update: <strong>{{ last_update }}</strong><br/>
{{ page_obj.paginator.count }} observations
</span>
{% endwith %}
</div>
<div class="col-md-2">
<form class="form" method="GET" action="{% url 'observations:observation-list' %}">
Expand Down
2 changes: 2 additions & 0 deletions observation_portal/observations/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from observation_portal.common.mixins import StaffRequiredMixin
from observation_portal.common.configdb import configdb
from observation_portal.observations.filters import ObservationFilter
from observation_portal.observations.viewsets import observations_queryset


class ObservationDetailView(StaffRequiredMixin, DetailView):
Expand All @@ -23,6 +24,7 @@ class ObservationListView(StaffRequiredMixin, FilterView):
paginate_by = 50
ordering = '-start'
template_name = 'observations/observation_list.html'
queryset = observations_queryset()

def get_filterset_kwargs(self, filterset_class):
kwargs = super(ObservationListView, self).get_filterset_kwargs(filterset_class)
Expand Down
26 changes: 14 additions & 12 deletions observation_portal/observations/viewsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,18 @@
from observation_portal.common.mixins import ListAsDictMixin, CreateListModelMixin


def observations_queryset():
qs = Observation.objects.all()
return qs.prefetch_related('request', 'request__configurations', 'request__configurations__instrument_configs',
'request__configurations__target', 'request__request_group__proposal',
'request__configurations__acquisition_config', 'request__request_group',
'request__configurations__guiding_config', 'request__configurations__constraints',
'request__configurations__instrument_configs__rois',
'configuration_statuses', 'configuration_statuses__summary',
'configuration_statuses__configuration',
'request__request_group__submitter').distinct()


class ScheduleViewSet(ListAsDictMixin, CreateListModelMixin, viewsets.ModelViewSet):
permission_classes = (IsAdminUser,)
http_method_names = ['get', 'post', 'head', 'options']
Expand All @@ -30,16 +42,7 @@ def perform_create(self, serializer):
serializer.save(submitter=self.request.user, submitter_id=self.request.user.id)

def get_queryset(self):
qs = Observation.objects.all()
return qs.prefetch_related('request', 'request__configurations', 'request__configurations__instrument_configs',
'request__configurations__target', 'request__request_group__proposal',
'request__configurations__acquisition_config', 'request__request_group',
'request__configurations__guiding_config', 'request__configurations__constraints',
'request__configurations__instrument_configs__rois',
'configuration_statuses', 'configuration_statuses__summary',
'configuration_statuses__configuration',
'request__request_group__submitter').distinct()

return observations_queryset()

class ObservationViewSet(CreateListModelMixin, ListAsDictMixin, viewsets.ModelViewSet):
permission_classes = (IsAdminUser,)
Expand All @@ -53,8 +56,7 @@ class ObservationViewSet(CreateListModelMixin, ListAsDictMixin, viewsets.ModelVi
ordering = ('-id',)

def get_queryset(self):
qs = Observation.objects.all()
return qs.prefetch_related('request', 'request__request_group').distinct()
return observations_queryset()

@action(detail=False, methods=['post'])
def cancel(self, request):
Expand Down

0 comments on commit f8b8ef9

Please sign in to comment.