Minimize the queries used when retrieve builds. Previously, we'd call out to SQL extra times per build.
This commit is contained in:
parent
e99ae67e58
commit
3627de103c
5 changed files with 34 additions and 17 deletions
|
@ -45,7 +45,7 @@ def user_view(user):
|
|||
'is_robot': user.robot,
|
||||
}
|
||||
|
||||
def trigger_view(trigger, can_read=False, can_admin=False):
|
||||
def trigger_view(trigger, can_read=False, can_admin=False, for_build=False):
|
||||
if trigger and trigger.uuid:
|
||||
build_trigger = BuildTriggerHandler.get_handler(trigger)
|
||||
build_source = build_trigger.config.get('build_source')
|
||||
|
@ -55,17 +55,28 @@ def trigger_view(trigger, can_read=False, can_admin=False):
|
|||
if can_admin:
|
||||
can_read = True
|
||||
|
||||
return {
|
||||
'service': trigger.service.name,
|
||||
'build_source': build_source if can_read else None,
|
||||
'config': build_trigger.config if can_admin else {},
|
||||
is_connected_user = False
|
||||
if (can_admin and get_authenticated_user() and
|
||||
trigger.connected_user_id == get_authenticated_user().id):
|
||||
is_connected_user = True
|
||||
|
||||
trigger_data = {
|
||||
'id': trigger.uuid,
|
||||
'connected_user': trigger.connected_user.username,
|
||||
'service': trigger.service.name,
|
||||
'is_active': build_trigger.is_active(),
|
||||
'pull_robot': user_view(trigger.pull_robot) if trigger.pull_robot else None,
|
||||
|
||||
'build_source': build_source if can_read else None,
|
||||
'repository_url': repo_url if can_read else None,
|
||||
|
||||
'config': build_trigger.config if can_admin else {},
|
||||
'is_connected_user': is_connected_user,
|
||||
}
|
||||
|
||||
if not for_build and can_admin and trigger.pull_robot:
|
||||
trigger_data['pull_robot'] = user_view(trigger.pull_robot)
|
||||
|
||||
return trigger_data
|
||||
|
||||
return None
|
||||
|
||||
|
||||
|
@ -111,7 +122,7 @@ def build_status_view(build_obj):
|
|||
'tags': job_config.get('docker_tags', []),
|
||||
'manual_user': job_config.get('manual_user', None),
|
||||
'is_writer': can_write,
|
||||
'trigger': trigger_view(build_obj.trigger, can_read, can_admin),
|
||||
'trigger': trigger_view(build_obj.trigger, can_read, can_admin, for_build=True),
|
||||
'trigger_metadata': job_config.get('trigger_metadata', None) if can_read else None,
|
||||
'resource_key': build_obj.resource_key,
|
||||
'pull_robot': user_view(build_obj.pull_robot) if build_obj.pull_robot else None,
|
||||
|
|
Reference in a new issue