Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DB migration of annotation_layers on slice objects #4072

Merged
merged 1 commit into from
Dec 18, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ export default class AnnotationLayer extends React.PureComponent {
isNew: !this.props.name,
isLoadingOptions: true,
valueOptions: [],
validationErrors: {},
};
this.submitAnnotation = this.submitAnnotation.bind(this);
this.deleteAnnotation = this.deleteAnnotation.bind(this);
Expand Down Expand Up @@ -235,11 +236,17 @@ export default class AnnotationLayer extends React.PureComponent {

applyAnnotation() {
if (this.state.name.length) {
const annotation = { ...this.state };
annotation.color = annotation.color === AUTOMATIC_COLOR ? null : annotation.color;
const annotation = {};
Object.keys(this.state).forEach((k) => {
if (this.state[k] !== null) {
annotation[k] = this.state[k];
}
});
delete annotation.isNew;
delete annotation.valueOptions;
delete annotation.isLoadingOptions;
delete annotation.validationErrors;
annotation.color = annotation.color === AUTOMATIC_COLOR ? null : annotation.color;
this.props.addAnnotationLayer(annotation);
this.setState({ isNew: false, oldName: this.state.name });
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import json

from alembic import op
from sqlalchemy import (
Column, Integer, or_, String, Text)
from sqlalchemy.ext.declarative import declarative_base

from superset import db

"""migrate_old_annotation_layers

Revision ID: 21e88bc06c02
Revises: 67a6ac9b727b
Create Date: 2017-12-17 11:06:30.180267

"""

# revision identifiers, used by Alembic.
revision = '21e88bc06c02'
down_revision = '67a6ac9b727b'

Base = declarative_base()


class Slice(Base):
__tablename__ = 'slices'
id = Column(Integer, primary_key=True)
viz_type = Column(String(250))
params = Column(Text)


def upgrade():
bind = op.get_bind()
session = db.Session(bind=bind)

for slc in session.query(Slice).filter(or_(
Slice.viz_type.like('line'), Slice.viz_type.like('bar'))):
params = json.loads(slc.params)
layers = params.get('annotation_layers', [])
new_layers = []
if len(layers) and isinstance(layers[0], int):
for layer in layers:
new_layers.append(
{
'annotationType': 'INTERVAL',
'style': 'solid',
'name': 'Layer {}'.format(layer),
'show': True,
'overrides': {'since': None, 'until': None},
'value': 1, 'width': 1, 'sourceType': 'NATIVE',
})
params['annotation_layers'] = new_layers
slc.params = json.dumps(params)
session.merge(slc)
session.commit()
session.close()


def downgrade():
pass