Create hierarchy levels with environment

This commit is contained in:
Yuriy Taraday 2015-12-18 18:23:53 +03:00
parent 3bee93dc4f
commit 92c2e02ef7
3 changed files with 43 additions and 6 deletions

View File

@ -111,6 +111,7 @@ class Component(flask_restful.Resource):
environment_fields = {
'id': fields.Integer,
'components': fields.List(fields.Integer(attribute='id')),
'hierarchy_levels': fields.List(fields.String(attribute='name')),
}
@ -127,7 +128,15 @@ class Environment(flask_restful.Resource):
def post(self):
component_ids = flask.request.json['components']
components = [db.Component.query.get_or_404(i) for i in component_ids]
environment = db.Environment(components=components)
hierarchy_levels = []
level = None
for name in flask.request.json['hierarchy_levels']:
level = db.EnvironmentHierarchyLevel(name=name, parent=level)
hierarchy_levels.append(level)
environment = db.Environment(components=components,
hierarchy_levels=hierarchy_levels)
db.db.session.add(environment)
db.db.session.commit()
return environment, 201

View File

@ -77,6 +77,23 @@ class Environment(db.Model):
components = db.relationship(Component, secondary=_environment_components)
class EnvironmentHierarchyLevel(db.Model):
id = pk()
environment_id = fk(Environment)
environment = db.relationship(Environment, backref='hierarchy_levels')
name = db.Column(db.String(128))
parent_id = db.Column(pk_type,
db.ForeignKey('environment_hierarchy_level.id'))
parent = db.relationship('EnvironmentHierarchyLevel',
backref=db.backref('child', uselist=False),
remote_side=[id])
__table_args__ = (
db.UniqueConstraint(environment_id, name),
db.UniqueConstraint(environment_id, parent_id),
)
class EnvironmentSchemaValues(db.Model):
environment_id = fk(Environment, primary_key=True)
schema_id = fk(Schema, primary_key=True)

View File

@ -68,6 +68,12 @@ class TestApp(base.TestCase):
)
db.db.session.add(component)
environment = db.Environment(id=9, components=[component])
hierarchy_levels = [
db.EnvironmentHierarchyLevel(name="lvl1"),
db.EnvironmentHierarchyLevel(name="lvl2"),
]
hierarchy_levels[1].parent = hierarchy_levels[0]
environment.hierarchy_levels = hierarchy_levels
db.db.session.add(environment)
db.db.session.commit()
@ -200,13 +206,15 @@ class TestApp(base.TestCase):
self._fixture()
res = self.client.get('/environments')
self.assertEqual(res.status_code, 200)
self.assertEqual(res.json, [{'id': 9, 'components': [7]}])
self.assertEqual(res.json, [{'id': 9, 'components': [7],
'hierarchy_levels': ['lvl1', 'lvl2']}])
def test_get_one_environment(self):
self._fixture()
res = self.client.get('/environments/9')
self.assertEqual(res.status_code, 200)
self.assertEqual(res.json, {'id': 9, 'components': [7]})
self.assertEqual(res.json, {'id': 9, 'components': [7],
'hierarchy_levels': ['lvl1', 'lvl2']})
def test_get_one_environment_404(self):
res = self.client.get('/environments/9')
@ -214,13 +222,16 @@ class TestApp(base.TestCase):
def test_post_environment(self):
self._fixture()
res = self.client.post('/environments', data={'components': [7]})
json = {'components': [7], 'hierarchy_levels': ['lvla', 'lvlb']}
res = self.client.post('/environments', data=json)
self.assertEqual(res.status_code, 201)
self.assertEqual(res.json, {'id': 10, 'components': [7]})
json['id'] = 10
self.assertEqual(res.json, json)
def test_post_environment_404(self):
self._fixture()
res = self.client.post('/environments', data={'components': [8]})
json = {'components': [8], 'hierarchy_levels': ['lvla', 'lvlb']}
res = self.client.post('/environments', data=json)
self.assertEqual(res.status_code, 404)
def test_delete_environment(self):