Skip to content

Commit

Permalink
Moved time column and grains to models.py (#1255)
Browse files Browse the repository at this point in the history
  • Loading branch information
vera-liu authored and mistercrunch committed Oct 5, 2016
1 parent a8a1690 commit 659bf6d
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export const CHANGE_FILTER_OP = 'CHANGE_FILTER_OP';
export const CHANGE_FILTER_VALUE = 'CHANGE_FILTER_VALUE';
export const RESET_FORM_DATA = 'RESET_FORM_DATA';
export const CLEAR_ALL_OPTS = 'CLEAR_ALL_OPTS';
export const SET_DATASOURCE_CLASS = 'SET_DATASOURCE_CLASS';
export const SET_DATASOURCE_TYPE = 'SET_DATASOURCE_TYPE';

export function setTimeColumnOpts(timeColumnOpts) {
return { type: SET_TIME_COLUMN_OPTS, timeColumnOpts };
Expand Down Expand Up @@ -60,8 +60,8 @@ export function clearAllOpts() {
return { type: CLEAR_ALL_OPTS };
}

export function setDatasourceClass(datasourceClass) {
return { type: SET_DATASOURCE_CLASS, datasourceClass };
export function setDatasourceType(datasourceType) {
return { type: SET_DATASOURCE_TYPE, datasourceType };
}

export function setFormOpts(datasourceId, datasourceType) {
Expand Down Expand Up @@ -94,7 +94,6 @@ export function setFormOpts(datasourceId, datasourceType) {
if (d) timeGrainOpts.push({ value: d, label: d });
});
// Repopulate options for controls
dispatch(setDatasourceClass(data.datasource_class));
dispatch(setTimeColumnOpts(timeColumnOpts));
dispatch(setTimeGrainOpts(timeGrainOpts));
dispatch(setGroupByColumnOpts(groupByColumnOpts));
Expand Down
1 change: 0 additions & 1 deletion caravel/assets/javascripts/explorev2/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ const bootstrappedState = Object.assign(initialState, {
datasources: bootstrapData.datasources,
datasourceId: parseInt(bootstrapData.datasource_id, 10),
datasourceType: bootstrapData.datasource_type,
datasourceClass: bootstrapData.datasource_class,
sliceName: bootstrapData.viz.form_data.slice_name,
sliceId: bootstrapData.viz.form_data.slice_id,
vizType: bootstrapData.viz.form_data.viz_type,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@ export const exploreReducer = function (state, action) {
[actions.CLEAR_ALL_OPTS]() {
return Object.assign({}, state, defaultOpts);
},
[actions.SET_DATASOURCE_CLASS]() {
return Object.assign({}, state, { datasourceClass: action.datasourceClass });
[actions.SET_DATASOURCE_TYPE]() {
return Object.assign({}, state, { datasourceType: action.datasourceType });
},
};
if (action.type in actionHandlers) {
Expand Down
1 change: 0 additions & 1 deletion caravel/assets/javascripts/explorev2/stores/store.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ export const initialState = {
datasources: null,
datasourceId: null,
datasourceType: null,
datasourceClass: null,
vizType: null,
timeColumnOpts: [],
timeColumn: null,
Expand Down
17 changes: 17 additions & 0 deletions caravel/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -760,6 +760,13 @@ def metrics_combo(self):
def sql_url(self):
return self.database.sql_url + "?table_name=" + str(self.table_name)

@property
def time_column_grains(self):
return {
"time_columns": self.dttm_cols,
"time_grains": [grain.name for grain in self.database.grains()]
}

def get_col(self, col_name):
columns = self.table_columns
for col in columns:
Expand Down Expand Up @@ -1278,6 +1285,16 @@ def full_name(self):
"[{obj.cluster_name}]."
"[{obj.datasource_name}]").format(obj=self)

@property
def time_column_grains(self):
return {
"time_columns": [
'all', '5 seconds', '30 seconds', '1 minute',
'5 minutes', '1 hour', '6 hour', '1 day', '7 days'
],
"time_grains": ['now']
}

def __repr__(self):
return self.datasource_name

Expand Down
26 changes: 5 additions & 21 deletions caravel/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,6 @@
log_this = models.Log.log_this
can_access = utils.can_access
QueryStatus = models.QueryStatus
DRUID_TIME_GRAINS = [
'all', '5 seconds', '30 seconds', '1 minute',
'5 minutes', '1 hour', '6 hour', '1 day', '7 days'
]


class BaseCaravelView(BaseView):
Expand Down Expand Up @@ -1301,7 +1297,6 @@ def exploreV2(self, datasource_type, datasource_id, slice_id=None):
"datasources": [(d.id, d.full_name) for d in datasources],
"datasource_id": datasource_id,
"datasource_type": datasource_type,
"datasource_class": datasource_class.__name__,
"user_id": g.user.get_id() if g.user else None,
"viz": json.loads(viz_obj.get_json())
}
Expand Down Expand Up @@ -1963,25 +1958,14 @@ def fetch_datasource_metadata(self):
if not self.datasource_access(datasource):
return json_error_response(DATASOURCE_ACCESS_ERR)

time_columns = []
grains_choices = []
datasource_class_name = datasource_class.__name__
if datasource_class_name == 'SqlaTable':
time_columns = datasource.dttm_cols
grains = datasource.database.grains()
grains_choices = [grain.name for grain in grains]
elif datasource_class_name == 'DruidDatasource':
time_columns = DRUID_TIME_GRAINS
grains_choices = ['now']

form_data = {
"datasource_class": datasource_class_name,
"time_columns": time_columns,
"time_grains": grains_choices,
column_opts = {
"groupby_cols": datasource.groupby_column_names,
"metrics": datasource.metrics_combo,
"filter_cols": datasource.filterable_column_names,
"filter_cols": datasource.filterable_column_names
}
form_data = dict(
column_opts.items() + datasource.time_column_grains.items()
)

return Response(
json.dumps(form_data), mimetype="application/json")
Expand Down

0 comments on commit 659bf6d

Please sign in to comment.