Prefetching for widgets/visualizations/queries/query resutls when getting dashboard.

This commit is contained in:
Arik Fraimovich
2014-02-08 21:16:36 +02:00
parent d538134bb9
commit 704f2c176d
2 changed files with 3 additions and 2 deletions

View File

@@ -104,7 +104,6 @@ class DashboardListAPI(BaseResource):
class DashboardAPI(BaseResource):
def get(self, dashboard_slug=None):
# TODO: prefetching of widgets, visualizations and query results?
try:
dashboard = models.Dashboard.get_by_slug(dashboard_slug)
except models.Dashboard.DoesNotExist:

View File

@@ -145,7 +145,9 @@ class Dashboard(db.Model):
layout = json.loads(self.layout)
if with_widgets:
widgets = {w.id: w.to_dict() for w in self.widgets}
widgets = Widget.select(Widget, Visualization, Query, QueryResult).\
where(Widget.dashboard == self.id).join(Visualization).join(Query).join(QueryResult)
widgets = {w.id: w.to_dict() for w in widgets}
widgets_layout = map(lambda row: map(lambda widget_id: widgets.get(widget_id, None), row), layout)
else:
widgets_layout = None