You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by bo...@apache.org on 2017/06/07 07:02:45 UTC
[2/3] incubator-airflow git commit: [AIRFLOW-1277] Forbid KE creation
with empty fields
[AIRFLOW-1277] Forbid KE creation with empty fields
KE = KnownEvent
Project: http://git-wip-us.apache.org/repos/asf/incubator-airflow/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-airflow/commit/65184a10
Tree: http://git-wip-us.apache.org/repos/asf/incubator-airflow/tree/65184a10
Diff: http://git-wip-us.apache.org/repos/asf/incubator-airflow/diff/65184a10
Branch: refs/heads/master
Commit: 65184a109e0179b50e4dae534a38c6d66bf080d8
Parents: d5d02ff
Author: Stanislav Kudriashev <st...@gmail.com>
Authored: Tue Jun 6 16:21:49 2017 +0300
Committer: Stanislav Kudriashev <st...@gmail.com>
Committed: Tue Jun 6 19:29:12 2017 +0300
----------------------------------------------------------------------
airflow/www/app.py | 2 +-
airflow/www/views.py | 29 +++++++++++++++++++++++++----
tests/www/test_views.py | 37 +++++++++++++++++++++++++------------
3 files changed, 51 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-airflow/blob/65184a10/airflow/www/app.py
----------------------------------------------------------------------
diff --git a/airflow/www/app.py b/airflow/www/app.py
index 80e9b87..1ae2731 100644
--- a/airflow/www/app.py
+++ b/airflow/www/app.py
@@ -72,7 +72,7 @@ def create_app(config=None, testing=False):
av(vs.QueryView(name='Ad Hoc Query', category="Data Profiling"))
av(vs.ChartModelView(
models.Chart, Session, name="Charts", category="Data Profiling"))
- av(vs.KnowEventView(
+ av(vs.KnownEventView(
models.KnownEvent,
Session, name="Known Events", category="Data Profiling"))
av(vs.SlaMissModelView(
http://git-wip-us.apache.org/repos/asf/incubator-airflow/blob/65184a10/airflow/www/views.py
----------------------------------------------------------------------
diff --git a/airflow/www/views.py b/airflow/www/views.py
index e16d201..aadd200 100644
--- a/airflow/www/views.py
+++ b/airflow/www/views.py
@@ -2140,7 +2140,7 @@ chart_mapping = (
chart_mapping = dict(chart_mapping)
-class KnowEventView(wwwutils.DataProfilingMixin, AirflowModelView):
+class KnownEventView(wwwutils.DataProfilingMixin, AirflowModelView):
verbose_name = "known event"
verbose_name_plural = "known events"
form_columns = (
@@ -2152,10 +2152,31 @@ class KnowEventView(wwwutils.DataProfilingMixin, AirflowModelView):
'description',
)
form_args = {
+ 'label': {
+ 'validators': [
+ validators.DataRequired(),
+ ],
+ },
+ 'event_type': {
+ 'validators': [
+ validators.DataRequired(),
+ ],
+ },
+ 'start_date': {
+ 'validators': [
+ validators.DataRequired(),
+ ],
+ },
'end_date': {
- 'validators': {
+ 'validators': [
+ validators.DataRequired(),
GreaterEqualThan(fieldname='start_date'),
- }
+ ],
+ },
+ 'reported_by': {
+ 'validators': [
+ validators.DataRequired(),
+ ],
}
}
column_list = (
@@ -2168,7 +2189,7 @@ class KnowEventView(wwwutils.DataProfilingMixin, AirflowModelView):
column_default_sort = ("start_date", True)
-class KnowEventTypeView(wwwutils.DataProfilingMixin, AirflowModelView):
+class KnownEventTypeView(wwwutils.DataProfilingMixin, AirflowModelView):
pass
http://git-wip-us.apache.org/repos/asf/incubator-airflow/blob/65184a10/tests/www/test_views.py
----------------------------------------------------------------------
diff --git a/tests/www/test_views.py b/tests/www/test_views.py
index 3e2fe61..5a20cbd 100644
--- a/tests/www/test_views.py
+++ b/tests/www/test_views.py
@@ -15,7 +15,7 @@
import unittest
from airflow import configuration
-from airflow.models import KnownEvent, Pool
+from airflow import models
from airflow.settings import Session
from airflow.www import app as application
@@ -28,8 +28,13 @@ class TestKnownEventView(unittest.TestCase):
def setUpClass(cls):
super(TestKnownEventView, cls).setUpClass()
session = Session()
- session.query(KnownEvent).delete()
+ session.query(models.KnownEvent).delete()
+ session.query(models.User).delete()
session.commit()
+ user = models.User(username='airflow')
+ session.add(user)
+ session.commit()
+ cls.user_id = user.id
session.close()
def setUp(self):
@@ -41,19 +46,27 @@ class TestKnownEventView(unittest.TestCase):
self.session = Session()
self.known_event = {
'label': 'event-label',
- 'event_type': 1,
+ 'event_type': '1',
'start_date': '2017-06-05 12:00:00',
'end_date': '2017-06-05 13:00:00',
- 'reported_by': 'airflow',
+ 'reported_by': self.user_id,
'description': '',
}
def tearDown(self):
- self.session.query(KnownEvent).delete()
+ self.session.query(models.KnownEvent).delete()
self.session.commit()
self.session.close()
super(TestKnownEventView, self).tearDown()
+ @classmethod
+ def tearDownClass(cls):
+ session = Session()
+ session.query(models.User).delete()
+ session.commit()
+ session.close()
+ super(TestKnownEventView, cls).tearDownClass()
+
def test_create_known_event(self):
response = self.app.post(
self.CREATE_ENDPOINT,
@@ -61,7 +74,7 @@ class TestKnownEventView(unittest.TestCase):
follow_redirects=True,
)
self.assertEqual(response.status_code, 200)
- self.assertEqual(self.session.query(KnownEvent).count(), 1)
+ self.assertEqual(self.session.query(models.KnownEvent).count(), 1)
def test_create_known_event_with_end_data_earlier_than_start_date(self):
self.known_event['end_date'] = '2017-06-05 11:00:00'
@@ -74,7 +87,7 @@ class TestKnownEventView(unittest.TestCase):
'Field must be greater than or equal to Start Date.',
response.data.decode('utf-8'),
)
- self.assertEqual(self.session.query(KnownEvent).count(), 0)
+ self.assertEqual(self.session.query(models.KnownEvent).count(), 0)
class TestPoolModelView(unittest.TestCase):
@@ -85,7 +98,7 @@ class TestPoolModelView(unittest.TestCase):
def setUpClass(cls):
super(TestPoolModelView, cls).setUpClass()
session = Session()
- session.query(Pool).delete()
+ session.query(models.Pool).delete()
session.commit()
session.close()
@@ -103,7 +116,7 @@ class TestPoolModelView(unittest.TestCase):
}
def tearDown(self):
- self.session.query(Pool).delete()
+ self.session.query(models.Pool).delete()
self.session.commit()
self.session.close()
super(TestPoolModelView, self).tearDown()
@@ -115,7 +128,7 @@ class TestPoolModelView(unittest.TestCase):
follow_redirects=True,
)
self.assertEqual(response.status_code, 200)
- self.assertEqual(self.session.query(Pool).count(), 1)
+ self.assertEqual(self.session.query(models.Pool).count(), 1)
def test_create_pool_with_same_name(self):
# create test pool
@@ -131,7 +144,7 @@ class TestPoolModelView(unittest.TestCase):
follow_redirects=True,
)
self.assertIn('Already exists.', response.data.decode('utf-8'))
- self.assertEqual(self.session.query(Pool).count(), 1)
+ self.assertEqual(self.session.query(models.Pool).count(), 1)
def test_create_pool_with_empty_name(self):
self.pool['pool'] = ''
@@ -141,7 +154,7 @@ class TestPoolModelView(unittest.TestCase):
follow_redirects=True,
)
self.assertIn('This field is required.', response.data.decode('utf-8'))
- self.assertEqual(self.session.query(Pool).count(), 0)
+ self.assertEqual(self.session.query(models.Pool).count(), 0)
if __name__ == '__main__':