summaryrefslogtreecommitdiffstats
path: root/keystone-moon/keystone/contrib/moon/backends/sql.py
diff options
context:
space:
mode:
authorWuKong <rebirthmonkey@gmail.com>2015-07-21 10:44:19 +0200
committerWuKong <rebirthmonkey@gmail.com>2015-07-21 10:44:19 +0200
commitd3283c0e06507999c6e2fc2445e41ffd55279d84 (patch)
treedf9e0152d249292eccbd868654c904740208b68b /keystone-moon/keystone/contrib/moon/backends/sql.py
parent03a25806960e9d264646d4d999b44ec8792c0c02 (diff)
review code
Change-Id: Id4e35498271093f44694b9640daeedbdca5a8c69 Signed-off-by: WuKong <rebirthmonkey@gmail.com>
Diffstat (limited to 'keystone-moon/keystone/contrib/moon/backends/sql.py')
-rw-r--r--keystone-moon/keystone/contrib/moon/backends/sql.py187
1 files changed, 31 insertions, 156 deletions
diff --git a/keystone-moon/keystone/contrib/moon/backends/sql.py b/keystone-moon/keystone/contrib/moon/backends/sql.py
index 272dc4ac..deacc420 100644
--- a/keystone-moon/keystone/contrib/moon/backends/sql.py
+++ b/keystone-moon/keystone/contrib/moon/backends/sql.py
@@ -226,11 +226,12 @@ class SubjectAssignment(sql.ModelBase, sql.DictBase):
class ObjectAssignment(sql.ModelBase, sql.DictBase):
__tablename__ = 'object_assignments'
- attributes = ['id', 'object_assignment', 'intra_extension_id', 'object_id']
+ attributes = ['id', 'object_assignment', 'intra_extension_id', 'object_id', 'object_category_id']
id = sql.Column(sql.String(64), primary_key=True)
object_assignment = sql.Column(sql.JsonBlob(), nullable=True)
intra_extension_id = sql.Column(sql.ForeignKey("intra_extensions.id"), nullable=False)
object_id = sql.Column(sql.ForeignKey("objects.id"), nullable=False)
+ object_category_id = sql.Column(sql.ForeignKey("object_categories.id"), nullable=False)
@classmethod
def from_dict(cls, d):
@@ -243,11 +244,12 @@ class ObjectAssignment(sql.ModelBase, sql.DictBase):
class ActionAssignment(sql.ModelBase, sql.DictBase):
__tablename__ = 'action_assignments'
- attributes = ['id', 'action_assignment', 'intra_extension_id', 'action_id']
+ attributes = ['id', 'action_assignment', 'intra_extension_id', 'action_id', 'action_category_id']
id = sql.Column(sql.String(64), primary_key=True)
action_assignment = sql.Column(sql.JsonBlob(), nullable=True)
intra_extension_id = sql.Column(sql.ForeignKey("intra_extensions.id"), nullable=False)
action_id = sql.Column(sql.ForeignKey("actions.id"), nullable=False)
+ action_category_id = sql.Column(sql.ForeignKey("action_categories.id"), nullable=False)
@classmethod
def from_dict(cls, d):
@@ -377,8 +379,8 @@ class IntraExtensionConnector(IntraExtensionDriver):
def get_intra_extensions_dict(self):
with sql.transaction() as session:
query = session.query(IntraExtension.id)
- intraextensions = query.all()
- return {intraextension.id: IntraExtension.to_dict(intraextension) for intraextension in intraextensions}
+ ref_list = query.all()
+ return {_ref.id: _ref.intraextension for _ref in ref_list}
# TODO (dthom): load_intra_extension(self):
@@ -402,10 +404,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
ref = query.first()
intra_extension_ref = ref.to_dict()
intra_extension_ref.update(intra_extension_dict)
- new_intra_extension = IntraExtension(
- id=intra_extension_id,
- intra_extension=intra_extension_ref
- )
+ new_intra_extension = IntraExtension(id=intra_extension_id, intra_extension=intra_extension_ref)
for attr in Tenant.attributes:
if attr != 'id':
setattr(ref, attr, getattr(new_intra_extension, attr))
@@ -418,7 +417,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
query = session.query(SubjectCategory)
query = query.filter_by(intra_extension_id=intra_extension_id)
ref_list = query.all()
- return {_ref.id: _ref.to_dict()['subject_category'] for _ref in ref_list}
+ return {_ref.id: _ref.subject_category for _ref in ref_list}
def set_subject_category_dict(self, intra_extension_id, subject_category_id, subject_category_dict):
with sql.transaction() as session:
@@ -450,7 +449,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
# Getter and Setter for object_category
- def get_object_category_dict(self, intra_extension_id):
+ def get_object_categories_dict(self, intra_extension_id):
with sql.transaction() as session:
query = session.query(ObjectCategory)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -459,8 +458,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
raise IntraExtensionUnknown()
return ref.to_dict()
- # TODO: to recheck
- def set_object_category_dict(self, intra_extension_id, object_categories):
+ def set_object_category_dict(self, intra_extension_id, object_category_id, object_category_dict):
with sql.transaction() as session:
query = session.query(ObjectCategory)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -481,29 +479,6 @@ class IntraExtensionConnector(IntraExtensionDriver):
setattr(ref, attr, getattr(new_ref, attr))
return ref.to_dict()
- def add_object_category(self, intra_extension_id, object_category_id, object_category_name):
- with sql.transaction() as session:
- query = session.query(ObjectCategory)
- query = query.filter_by(intra_extension_id=intra_extension_id)
- ref = query.first()
- if not ref:
- raise IntraExtensionUnknown()
- old_ref = ref.to_dict()
- object_categories = dict(old_ref["object_categories"])
- # TODO: object_categories[object_category_id] is a dict
- object_categories[object_category_id] = object_category_name
- new_ref = ObjectCategory.from_dict(
- {
- "id": old_ref["id"],
- 'object_categories': object_categories,
- 'intra_extension_id': old_ref["intra_extension_id"]
- }
- )
- for attr in ObjectCategory.attributes:
- if attr != 'id':
- setattr(ref, attr, getattr(new_ref, attr))
- return ref.to_dict()
-
def del_object_category(self, intra_extension_id, object_category_id):
with sql.transaction() as session:
query = session.query(ObjectCategory)
@@ -533,7 +508,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
# Getter and Setter for action_category
- def get_action_category_dict(self, intra_extension_id):
+ def get_action_categories_dict(self, intra_extension_id):
with sql.transaction() as session:
query = session.query(ActionCategory)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -542,8 +517,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
raise IntraExtensionUnknown()
return ref.to_dict()
- # TODO: to recheck
- def set_action_category_dict(self, intra_extension_id, action_categories):
+ def set_action_category_dict(self, intra_extension_id, action_category_id, action_category_dict):
with sql.transaction() as session:
query = session.query(ActionCategory)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -564,29 +538,6 @@ class IntraExtensionConnector(IntraExtensionDriver):
setattr(ref, attr, getattr(new_ref, attr))
return ref.to_dict()
- def add_action_category(self, intra_extension_id, action_category_id, action_category_name):
- with sql.transaction() as session:
- query = session.query(ActionCategory)
- query = query.filter_by(intra_extension_id=intra_extension_id)
- ref = query.first()
- if not ref:
- raise IntraExtensionUnknown()
- old_ref = ref.to_dict()
- action_categories = dict(old_ref["action_categories"])
- # TODO: action_categories[action_category_id] is a dict
- action_categories[action_category_id] = action_category_name
- new_ref = ActionCategory.from_dict(
- {
- "id": old_ref["id"],
- 'action_categories': action_categories,
- 'intra_extension_id': old_ref["intra_extension_id"]
- }
- )
- for attr in ActionCategory.attributes:
- if attr != 'id':
- setattr(ref, attr, getattr(new_ref, attr))
- return ref.to_dict()
-
def del_action_category(self, intra_extension_id, action_category_id):
with sql.transaction() as session:
query = session.query(ActionCategory)
@@ -651,7 +602,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
ref = query.first()
session.delete(ref)
- def get_object_dict(self, intra_extension_id):
+ def get_objects_dict(self, intra_extension_id):
with sql.transaction() as session:
query = session.query(Object)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -660,8 +611,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
raise IntraExtensionUnknown()
return ref.to_dict()
- # TODO: to recheck
- def set_object_dict(self, intraa_extension_id, object_id):
+ def set_object_dict(self, intra_extension_id, object_id, object_dict):
with sql.transaction() as session:
query = session.query(Object)
query = query.filter_by(intra_extension_id=intraa_extension_id)
@@ -682,29 +632,6 @@ class IntraExtensionConnector(IntraExtensionDriver):
setattr(ref, attr, getattr(new_ref, attr))
return ref.to_dict()
- def add_object(self, intra_extension_id, object_id, object_name):
- with sql.transaction() as session:
- query = session.query(Object)
- query = query.filter_by(intra_extension_id=intra_extension_id)
- ref = query.first()
- if not ref:
- raise IntraExtensionUnknown()
- old_ref = ref.to_dict()
- objects = dict(old_ref["objects"])
- # TODO: objects[object_id] is a dict
- objects[object_id] = object_name
- new_ref = Object.from_dict(
- {
- "id": old_ref["id"],
- 'objects': objects,
- 'intra_extension_id': old_ref["intra_extension_id"]
- }
- )
- for attr in Object.attributes:
- if attr != 'id':
- setattr(ref, attr, getattr(new_ref, attr))
- return ref.to_dict()
-
def del_object(self, intra_extension_id, object_id):
with sql.transaction() as session:
query = session.query(Object)
@@ -731,7 +658,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
if attr != 'id':
setattr(ref, attr, getattr(new_ref, attr))
- def get_action_dict(self, intra_extension_id):
+ def get_actions_dict(self, intra_extension_id):
with sql.transaction() as session:
query = session.query(Action)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -740,8 +667,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
raise IntraExtensionUnknown()
return ref.to_dict()
- # TODO: to recheck
- def set_action_dict(self, intra_extension_id, action_id):
+ def set_action_dict(self, intra_extension_id, action_id, action_dict):
with sql.transaction() as session:
query = session.query(Action)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -762,29 +688,6 @@ class IntraExtensionConnector(IntraExtensionDriver):
setattr(ref, attr, getattr(new_ref, attr))
return ref.to_dict()
- def add_action(self, intra_extension_id, action_id, action_name):
- with sql.transaction() as session:
- query = session.query(Action)
- query = query.filter_by(intra_extension_id=intra_extension_id)
- ref = query.first()
- if not ref:
- raise IntraExtensionUnknown()
- old_ref = ref.to_dict()
- actions = dict(old_ref["actions"])
- # TODO: actions[action_id] is a dict
- actions[action_id] = action_name
- new_ref = Action.from_dict(
- {
- "id": old_ref["id"],
- 'actions': actions,
- 'intra_extension_id': old_ref["intra_extension_id"]
- }
- )
- for attr in Action.attributes:
- if attr != 'id':
- setattr(ref, attr, getattr(new_ref, attr))
- return ref.to_dict()
-
def del_action(self, intra_extension_id, action_id):
with sql.transaction() as session:
query = session.query(Action)
@@ -853,7 +756,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
# Getter and Setter for object_category_scope
- def get_object_scope_dict(self, intra_extension_id, object_category_id):
+ def get_object_scopes_dict(self, intra_extension_id, object_category_id):
with sql.transaction() as session:
query = session.query(ObjectScope)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -865,7 +768,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
raise ObjectScopeUnknown()
return result
- def set_object_scope_dict(self, intra_extension_id, object_category_id, object_scope_id):
+ def set_object_scope_dict(self, intra_extension_id, object_category_id, object_scope_id, object_scope_dict):
with sql.transaction() as session:
query = session.query(ObjectScope)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -887,20 +790,6 @@ class IntraExtensionConnector(IntraExtensionDriver):
session.add(new_ref)
return new_ref.to_dict()
- def add_object_scope(self, intra_extension_id, object_category_id, object_scope_id, object_scope_name):
- with sql.transaction() as session:
- query = session.query(ObjectScope)
- query = query.filter_by(intra_extension_id=intra_extension_id)
- ref = query.first()
- if not ref:
- raise IntraExtensionUnknown()
- old_ref = ref.to_dict()
- scope = dict(old_ref["object_scope"])
- if object_category_id not in scope:
- scope[object_category_id] = dict()
- scope[object_category_id][object_scope_id] = object_scope_name
- return self.set_object_scope_dict(intra_extension_id, object_category_id, scope[object_category_id])
-
def del_object_scope(self, intra_extension_id, object_category_id, object_scope_id):
with sql.transaction() as session:
query = session.query(ObjectScope)
@@ -930,7 +819,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
# Getter and Setter for action_scope
- def get_action_scope_dict(self, intra_extension_id, action_category_id):
+ def get_action_scopes_dict(self, intra_extension_id, action_category_id):
with sql.transaction() as session:
query = session.query(ActionScope)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -942,7 +831,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
raise ActionScopeUnknown()
return result
- def set_action_scope_dict(self, intra_extension_id, action_category_id, action_scope_id):
+ def set_action_scope_dict(self, intra_extension_id, action_category_id, action_scope_id, action_scope_dict):
with sql.transaction() as session:
query = session.query(ActionScope)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -964,20 +853,6 @@ class IntraExtensionConnector(IntraExtensionDriver):
session.add(new_ref)
return new_ref.to_dict()
- def add_action_scope(self, intra_extension_id, action_category_id, action_scope_id, action_scope_name):
- with sql.transaction() as session:
- query = session.query(ActionScope)
- query = query.filter_by(intra_extension_id=intra_extension_id)
- ref = query.first()
- if not ref:
- raise IntraExtensionUnknown()
- old_ref = ref.to_dict()
- scope = dict(old_ref["action_scope"])
- if action_category_id not in scope:
- scope[action_category_id] = dict()
- scope[action_category_id][action_scope_id] = action_scope_name
- return self.set_action_scope_dict(intra_extension_id, action_category_id, scope[action_category_id])
-
def del_action_scope(self, intra_extension_id, action_category_id, action_scope_id):
with sql.transaction() as session:
query = session.query(ActionScope)
@@ -1049,7 +924,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
# Getter and Setter for object_category_assignment
- def get_object_assignment_dict(self, intra_extension_id, object_id):
+ def get_object_assignment_list(self, intra_extension_id, object_id, object_category_id):
""" From a object_uuid, return a dictionary of (category: scope for that object)
:param intra_extension_id: intra extension UUID
@@ -1072,7 +947,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
_ref["object_assignment"][object_id] = dict()
return _ref
- def set_object_assignment_dict(self, intra_extension_id, object_id=None, object_assignment_dict={}):
+ def set_object_assignment_list(self, intra_extension_id, object_id, object_category_id, object_assignment_list=[]):
with sql.transaction() as session:
query = session.query(ObjectAssignment)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -1099,7 +974,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
setattr(ref, attr, getattr(new_ref, attr))
return ref.to_dict()
- def add_object_assignment(self, intra_extension_id, object_id, object_category_id, object_scope_id):
+ def add_object_assignment_list(self, intra_extension_id, object_id, object_category_id, object_scope_id):
with sql.transaction() as session:
query = session.query(ObjectAssignment)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -1113,7 +988,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
assignments[object_id][object_category_id] = list()
if object_scope_id not in assignments[object_id][object_category_id]:
assignments[object_id][object_category_id].append(object_scope_id)
- return self.set_object_assignment_dict(
+ return self.set_object_assignment_list(
intra_extension_id,
object_id,
assignments[object_id])
@@ -1133,14 +1008,14 @@ class IntraExtensionConnector(IntraExtensionDriver):
old_ref["object_assignment"][object_id].pop(object_category_id)
if not old_ref["object_assignment"][object_id]:
old_ref["object_assignment"].pop(object_id)
- self.set_object_assignment_dict(
+ self.set_object_assignment_list(
intra_extension_id,
object_id,
old_ref["object_assignment"][object_id])
# Getter and Setter for action_category_assignment
- def get_action_assignment_dict(self, intra_extension_id, action_id):
+ def get_action_assignment_list(self, intra_extension_id, action_id, action_category_id):
""" From a action_id, return a dictionary of (category: scope for that action)
:param intra_extension_id: intra extension UUID
@@ -1163,7 +1038,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
_ref["action_assignment"][action_id] = dict()
return _ref
- def set_action_assignment_dict(self, intra_extension_id, action_id=None, action_assignment_dict={}):
+ def set_action_assignment_list(self, intra_extension_id, action_id, action_category_id, action_assignment_list=[]):
with sql.transaction() as session:
query = session.query(ActionAssignment)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -1190,7 +1065,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
setattr(ref, attr, getattr(new_ref, attr))
return ref.to_dict()
- def add_action_assignment(self, intra_extension_id, action_id, action_category_id, action_scope_id):
+ def add_action_assignment_list(self, intra_extension_id, action_id, action_category_id, action_scope_id):
with sql.transaction() as session:
query = session.query(ActionAssignment)
query = query.filter_by(intra_extension_id=intra_extension_id)
@@ -1204,7 +1079,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
assignments[action_id][action_category_id] = list()
if action_scope_id not in assignments[action_id][action_category_id]:
assignments[action_id][action_category_id].append(action_scope_id)
- return self.set_action_assignment_dict(
+ return self.set_action_assignment_list(
intra_extension_id,
action_id,
assignments[action_id])
@@ -1224,7 +1099,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
old_ref["action_assignment"][action_id].pop(action_category_id)
if not old_ref["action_assignment"][action_id]:
old_ref["action_assignment"].pop(action_id)
- self.set_action_assignment_dict(
+ self.set_action_assignment_list(
intra_extension_id,
action_id,
old_ref["action_assignment"][action_id])
@@ -1324,7 +1199,7 @@ class IntraExtensionConnector(IntraExtensionDriver):
setattr(ref, attr, getattr(new_ref, attr))
return self.get_rules_dict(intra_extension_id, sub_meta_rule_id)[rule_id]
- def del_rule_dict(self, intra_extension_id, sub_meta_rule_id, rule_id):
+ def del_rule(self, intra_extension_id, sub_meta_rule_id, rule_id):
with sql.transaction() as session:
query = session.query(Rule)
query = query.filter_by(rule_id=rule_id)