Skip to content

Commit 0ccc19f

Browse files
committed
Merge pull request apache#196 from airbnb/fix_audit
Fixing issues around fk nullable=False on audit fields
2 parents e7bed92 + 0f637bd commit 0ccc19f

File tree

2 files changed

+166
-2
lines changed

2 files changed

+166
-2
lines changed
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
"""fixing audit fk
2+
3+
Revision ID: 763d4b211ec9
4+
Revises: d2424a248d63
5+
Create Date: 2016-03-24 14:13:44.817723
6+
7+
"""
8+
9+
# revision identifiers, used by Alembic.
10+
revision = '763d4b211ec9'
11+
down_revision = 'd2424a248d63'
12+
13+
from alembic import op
14+
import sqlalchemy as sa
15+
16+
17+
def upgrade():
18+
op.alter_column('columns', 'changed_on',
19+
existing_type=sa.DATETIME(),
20+
nullable=True)
21+
op.alter_column('columns', 'created_on',
22+
existing_type=sa.DATETIME(),
23+
nullable=True)
24+
op.alter_column('css_templates', 'changed_on',
25+
existing_type=sa.DATETIME(),
26+
nullable=True)
27+
op.alter_column('css_templates', 'created_on',
28+
existing_type=sa.DATETIME(),
29+
nullable=True)
30+
op.alter_column('dashboards', 'changed_on',
31+
existing_type=sa.DATETIME(),
32+
nullable=True)
33+
op.alter_column('dashboards', 'created_on',
34+
existing_type=sa.DATETIME(),
35+
nullable=True)
36+
op.alter_column('datasources', 'changed_by_fk',
37+
existing_type=sa.INTEGER(),
38+
nullable=True)
39+
op.alter_column('datasources', 'changed_on',
40+
existing_type=sa.DATETIME(),
41+
nullable=True)
42+
op.alter_column('datasources', 'created_by_fk',
43+
existing_type=sa.INTEGER(),
44+
nullable=True)
45+
op.alter_column('datasources', 'created_on',
46+
existing_type=sa.DATETIME(),
47+
nullable=True)
48+
op.alter_column('dbs', 'changed_on',
49+
existing_type=sa.DATETIME(),
50+
nullable=True)
51+
op.alter_column('dbs', 'created_on',
52+
existing_type=sa.DATETIME(),
53+
nullable=True)
54+
op.add_column('metrics', sa.Column('changed_by_fk', sa.Integer(), nullable=True))
55+
op.add_column('metrics', sa.Column('changed_on', sa.DateTime(), nullable=True))
56+
op.add_column('metrics', sa.Column('created_by_fk', sa.Integer(), nullable=True))
57+
op.add_column('metrics', sa.Column('created_on', sa.DateTime(), nullable=True))
58+
op.create_foreign_key(None, 'metrics', 'ab_user', ['changed_by_fk'], ['id'])
59+
op.create_foreign_key(None, 'metrics', 'ab_user', ['created_by_fk'], ['id'])
60+
op.alter_column('slices', 'changed_on',
61+
existing_type=sa.DATETIME(),
62+
nullable=True)
63+
op.alter_column('slices', 'created_on',
64+
existing_type=sa.DATETIME(),
65+
nullable=True)
66+
op.alter_column('sql_metrics', 'changed_on',
67+
existing_type=sa.DATETIME(),
68+
nullable=True)
69+
op.alter_column('sql_metrics', 'created_on',
70+
existing_type=sa.DATETIME(),
71+
nullable=True)
72+
op.alter_column('table_columns', 'changed_on',
73+
existing_type=sa.DATETIME(),
74+
nullable=True)
75+
op.alter_column('table_columns', 'created_on',
76+
existing_type=sa.DATETIME(),
77+
nullable=True)
78+
op.alter_column('tables', 'changed_on',
79+
existing_type=sa.DATETIME(),
80+
nullable=True)
81+
op.alter_column('tables', 'created_on',
82+
existing_type=sa.DATETIME(),
83+
nullable=True)
84+
op.alter_column('url', 'changed_on',
85+
existing_type=sa.DATETIME(),
86+
nullable=True)
87+
op.alter_column('url', 'created_on',
88+
existing_type=sa.DATETIME(),
89+
nullable=True)
90+
91+
92+
def downgrade():
93+
op.alter_column('url', 'created_on',
94+
existing_type=sa.DATETIME(),
95+
nullable=False)
96+
op.alter_column('url', 'changed_on',
97+
existing_type=sa.DATETIME(),
98+
nullable=False)
99+
op.alter_column('tables', 'created_on',
100+
existing_type=sa.DATETIME(),
101+
nullable=False)
102+
op.alter_column('tables', 'changed_on',
103+
existing_type=sa.DATETIME(),
104+
nullable=False)
105+
op.alter_column('table_columns', 'created_on',
106+
existing_type=sa.DATETIME(),
107+
nullable=False)
108+
op.alter_column('table_columns', 'changed_on',
109+
existing_type=sa.DATETIME(),
110+
nullable=False)
111+
op.alter_column('sql_metrics', 'created_on',
112+
existing_type=sa.DATETIME(),
113+
nullable=False)
114+
op.alter_column('sql_metrics', 'changed_on',
115+
existing_type=sa.DATETIME(),
116+
nullable=False)
117+
op.alter_column('slices', 'created_on',
118+
existing_type=sa.DATETIME(),
119+
nullable=False)
120+
op.alter_column('slices', 'changed_on',
121+
existing_type=sa.DATETIME(),
122+
nullable=False)
123+
op.drop_constraint(None, 'metrics', type_='foreignkey')
124+
op.drop_constraint(None, 'metrics', type_='foreignkey')
125+
op.drop_column('metrics', 'created_on')
126+
op.drop_column('metrics', 'created_by_fk')
127+
op.drop_column('metrics', 'changed_on')
128+
op.drop_column('metrics', 'changed_by_fk')
129+
op.alter_column('dbs', 'created_on',
130+
existing_type=sa.DATETIME(),
131+
nullable=False)
132+
op.alter_column('dbs', 'changed_on',
133+
existing_type=sa.DATETIME(),
134+
nullable=False)
135+
op.alter_column('datasources', 'created_on',
136+
existing_type=sa.DATETIME(),
137+
nullable=False)
138+
op.alter_column('datasources', 'created_by_fk',
139+
existing_type=sa.INTEGER(),
140+
nullable=False)
141+
op.alter_column('datasources', 'changed_on',
142+
existing_type=sa.DATETIME(),
143+
nullable=False)
144+
op.alter_column('datasources', 'changed_by_fk',
145+
existing_type=sa.INTEGER(),
146+
nullable=False)
147+
op.alter_column('dashboards', 'created_on',
148+
existing_type=sa.DATETIME(),
149+
nullable=False)
150+
op.alter_column('dashboards', 'changed_on',
151+
existing_type=sa.DATETIME(),
152+
nullable=False)
153+
op.alter_column('css_templates', 'created_on',
154+
existing_type=sa.DATETIME(),
155+
nullable=False)
156+
op.alter_column('css_templates', 'changed_on',
157+
existing_type=sa.DATETIME(),
158+
nullable=False)
159+
op.alter_column('columns', 'created_on',
160+
existing_type=sa.DATETIME(),
161+
nullable=False)
162+
op.alter_column('columns', 'changed_on',
163+
existing_type=sa.DATETIME(),
164+
nullable=False)

dashed/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1080,7 +1080,7 @@ def wrapper(*args, **kwargs):
10801080
return wrapper
10811081

10821082

1083-
class DruidMetric(Model):
1083+
class DruidMetric(Model, AuditMixinNullable):
10841084

10851085
"""ORM object referencing Druid metrics for a datasource"""
10861086

@@ -1105,7 +1105,7 @@ def json_obj(self):
11051105
return obj
11061106

11071107

1108-
class DruidColumn(Model):
1108+
class DruidColumn(Model, AuditMixinNullable):
11091109

11101110
"""ORM model for storing Druid datasource column metadata"""
11111111

0 commit comments

Comments
 (0)