Skip to content

Commit

Permalink
Improve query admin interface
Browse files Browse the repository at this point in the history
  • Loading branch information
jochenklar committed Sep 10, 2024
1 parent 28caa59 commit 860cd58
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 6 deletions.
34 changes: 28 additions & 6 deletions daiquiri/query/admin.py
Original file line number Diff line number Diff line change
@@ -1,35 +1,57 @@
from django.contrib import admin
from django.forms import ModelForm, ChoiceField

from daiquiri.jobs.admin import JobAdmin

from .models import QueryJob, DownloadJob, QueryArchiveJob, Example
from .utils import get_query_language_choices, get_queue_choices, get_query_download_format_choices


class QueryJobForm(ModelForm):
queue = ChoiceField(choices=get_queue_choices())
query_language = ChoiceField(choices=get_query_language_choices())


class DownloadJobForm(ModelForm):
format_key = ChoiceField(choices=get_query_download_format_choices())


class ExampleForm(ModelForm):
query_language = ChoiceField(choices=get_query_language_choices())


@admin.register(QueryJob)
class QueryJobAdmin(JobAdmin):
form = QueryJobForm

search_fields = JobAdmin.search_fields + ['schema_name', 'table_name']
list_display = JobAdmin.list_display + ['schema_name', 'table_name', 'nrows']
list_filter = JobAdmin.list_filter + ['query_language', 'queue']
actions = ['abort_job', 'archive_job']


@admin.register(DownloadJob)
class DownloadJobAdmin(JobAdmin):
form = DownloadJobForm

search_fields = JobAdmin.search_fields + ['query_job__schema_name', 'query_job__table_name', 'format_key']
list_display = JobAdmin.list_display + ['query_job', 'file_path']
list_filter = JobAdmin.list_filter + ['format_key']
actions = ['abort_job', 'archive_job']


@admin.register(QueryArchiveJob)
class QueryArchiveJobAdmin(JobAdmin):
search_fields = JobAdmin.search_fields + ['query_job__schema_name', 'query_job__table_name', 'column_name', 'files']
list_display = JobAdmin.list_display + ['query_job', 'file_path']
actions = ['abort_job', 'archive_job']


@admin.register(Example)
class ExampleAdmin(admin.ModelAdmin):
form = ExampleForm

search_fields = ('name', 'query_string')
list_display = ('order', 'name', 'query_string')
list_display_links = ('name', )


admin.site.register(QueryJob, QueryJobAdmin)
admin.site.register(DownloadJob, DownloadJobAdmin)
admin.site.register(QueryArchiveJob, QueryArchiveJobAdmin)
admin.site.register(Example, ExampleAdmin)
list_filter = ('query_language', )
18 changes: 18 additions & 0 deletions daiquiri/query/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -360,3 +360,21 @@ def get_query_form_adapter(form):
return import_class(form['adapter'])()
except AttributeError:
raise RuntimeError(f'Query form adapter "{adapter_class}"" could not be imported.')


def get_query_language_choices():
return [
(query_language['key'], query_language['label']) for query_language in settings.QUERY_LANGUAGES
]


def get_queue_choices():
return [
(queue['key'], queue['label']) for queue in settings.QUERY_QUEUES
]


def get_query_download_format_choices():
return [
(download_format['key'], download_format['label']) for download_format in settings.QUERY_DOWNLOAD_FORMATS
]

0 comments on commit 860cd58

Please sign in to comment.