Skip to content

Commit 4f818bb

Browse files
committed
Add Roles to export cache
1 parent 4f06f7f commit 4f818bb

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

src/ggrc/converters/base_block.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ def __init__(self, converter, **options):
9797
# The protected access is a false warning for inflector access.
9898
self._mapping_cache = None
9999
self._owners_cache = None
100+
self._roles_cache = None
100101
self._ca_definitions_cache = None
101102
self.converter = converter
102103
self.offset = options.get("offset", 0)
@@ -239,6 +240,13 @@ def get_mapping_cache(self):
239240
self._mapping_cache = self._create_mapping_cache()
240241
return self._mapping_cache
241242

243+
def get_role(self, name):
244+
"""Get role from local cache for a given name."""
245+
if not self._roles_cache:
246+
self._roles_cache = {role.name: role for role in
247+
models.all_models.Role.query}
248+
return self._roles_cache[name]
249+
242250
def _create_owners_cache(self):
243251
"""Create a cache of emails for all object owners."""
244252
owner_ids = set()

src/ggrc_basic_permissions/converters/handlers.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,48 +70,48 @@ def insert_object(self):
7070
class ProgramOwnerColumnHandler(ObjectRoleColumnHandler):
7171

7272
def __init__(self, row_converter, key, **options):
73-
self.role = Role.query.filter_by(name="ProgramOwner").one()
73+
self.role = row_converter.block_converter.get_role("ProgramOwner")
7474
super(ProgramOwnerColumnHandler, self).__init__(
7575
row_converter, key, **options)
7676

7777

7878
class ProgramEditorColumnHandler(ObjectRoleColumnHandler):
7979

8080
def __init__(self, row_converter, key, **options):
81-
self.role = Role.query.filter_by(name="ProgramEditor").one()
81+
self.role = row_converter.block_converter.get_role("ProgramEditor")
8282
super(ProgramEditorColumnHandler, self).__init__(
8383
row_converter, key, **options)
8484

8585

8686
class ProgramReaderColumnHandler(ObjectRoleColumnHandler):
8787

8888
def __init__(self, row_converter, key, **options):
89-
self.role = Role.query.filter_by(name="ProgramReader").one()
89+
self.role = row_converter.block_converter.get_role("ProgramReader")
9090
super(ProgramReaderColumnHandler, self).__init__(
9191
row_converter, key, **options)
9292

9393

9494
class WorkflowOwnerColumnHandler(ObjectRoleColumnHandler):
9595

9696
def __init__(self, row_converter, key, **options):
97-
self.role = Role.query.filter_by(name="WorkflowOwner").one()
97+
self.role = row_converter.block_converter.get_role("WorkflowOwner")
9898
super(WorkflowOwnerColumnHandler, self).__init__(
9999
row_converter, key, **options)
100100

101101

102102
class WorkflowMemberColumnHandler(ObjectRoleColumnHandler):
103103

104104
def __init__(self, row_converter, key, **options):
105-
self.role = Role.query.filter_by(name="WorkflowMember").one()
105+
self.role = row_converter.block_converter.get_role("WorkflowMember")
106106
super(WorkflowMemberColumnHandler, self).__init__(
107107
row_converter, key, **options)
108108

109109

110110
class AuditAuditorColumnHandler(ObjectRoleColumnHandler):
111111

112112
def __init__(self, row_converter, key, **options):
113-
self.role = Role.query.filter_by(name="Auditor").one()
114-
self.reader = Role.query.filter_by(name="ProgramReader").one()
113+
self.role = row_converter.block_converter.get_role("Auditor")
114+
self.reader = row_converter.block_converter.get_role("ProgramReader")
115115
super(AuditAuditorColumnHandler, self).__init__(
116116
row_converter, key, **options)
117117

@@ -192,6 +192,7 @@ def insert_object(self):
192192
db.session.add(user_role)
193193
self.dry_run = True
194194

195+
195196
COLUMN_HANDLERS = {
196197
"default": {
197198
"program_editor": ProgramEditorColumnHandler,

0 commit comments

Comments
 (0)