Skip to content

Commit

Permalink
Merge pull request #1 from diegoaces/tasks_admin_add_columns
Browse files Browse the repository at this point in the history
Add list display, filter and search to tasks admin
  • Loading branch information
diegoaces authored Aug 22, 2022
2 parents 869d577 + 1ce13af commit 77c117b
Showing 1 changed file with 35 additions and 16 deletions.
51 changes: 35 additions & 16 deletions app/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,26 +25,35 @@

admin.site.register(Project, GuardedModelAdmin)


class TaskAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
return False

list_display = ('id', 'project', 'processing_node', 'created_at', 'status', 'last_error')
list_filter = ('status', 'project',)
search_fields = ('id', 'project__name')


admin.site.register(Task, TaskAdmin)


class ImageUploadAdmin(admin.ModelAdmin):
readonly_fields = ('image',)

admin.site.register(ImageUpload, ImageUploadAdmin)

admin.site.register(Preset, admin.ModelAdmin)


class SettingAdmin(admin.ModelAdmin):


def has_add_permission(self, request):
# if there's already an entry, do not allow adding
count = Setting.objects.all().count()
return count == 0


admin.site.register(Setting, SettingAdmin)


Expand All @@ -64,11 +73,12 @@ class ThemeModelForm(forms.ModelForm):
html_after_body = forms.CharField(help_text=_("HTML that will be displayed after the body tag"),
label=_("HTML (after body)"),
required=False,
widget=CodeMirrorEditor(options={'mode': 'xml', 'lineNumbers': True}))
html_footer = forms.CharField(help_text=_("HTML that will be displayed in the footer. You can also use the special tags such as {ORGANIZATION} and {YEAR}."),
label=_("HTML (footer)"),
required=False,
widget=CodeMirrorEditor(options={'mode': 'xml', 'lineNumbers': True}))
widget=CodeMirrorEditor(options={'mode': 'xml', 'lineNumbers': True}))
html_footer = forms.CharField(help_text=_(
"HTML that will be displayed in the footer. You can also use the special tags such as {ORGANIZATION} and {YEAR}."),
label=_("HTML (footer)"),
required=False,
widget=CodeMirrorEditor(options={'mode': 'xml', 'lineNumbers': True}))

class Meta:
model = Theme
Expand All @@ -85,11 +95,12 @@ class ThemeAdmin(admin.ModelAdmin):

class PluginAdmin(admin.ModelAdmin):
list_display = ("name", "description", "version", "author", "enabled", "plugin_actions")
readonly_fields = ("name", )
readonly_fields = ("name",)
change_list_template = "admin/change_list_plugin.html"

def has_add_permission(self, request):
return False

def has_delete_permission(self, request, obj=None):
return False

Expand Down Expand Up @@ -141,27 +152,32 @@ def plugin_enable(self, request, plugin_name, *args, **kwargs):
try:
p = enable_plugin(plugin_name)
if p.requires_restart():
messages.warning(request, _("Restart required. Please restart WebODM to enable %(plugin)s") % {'plugin': plugin_name})
messages.warning(request, _("Restart required. Please restart WebODM to enable %(plugin)s") % {
'plugin': plugin_name})
except Exception as e:
messages.warning(request, _("Cannot enable plugin %(plugin)s: %(message)s") % {'plugin': plugin_name, 'message': str(e)})
messages.warning(request, _("Cannot enable plugin %(plugin)s: %(message)s") % {'plugin': plugin_name,
'message': str(e)})

return HttpResponseRedirect(reverse('admin:app_plugin_changelist'))

def plugin_disable(self, request, plugin_name, *args, **kwargs):
try:
p = disable_plugin(plugin_name)
if p.requires_restart():
messages.warning(request, _("Restart required. Please restart WebODM to fully disable %(plugin)s") % {'plugin': plugin_name})
messages.warning(request, _("Restart required. Please restart WebODM to fully disable %(plugin)s") % {
'plugin': plugin_name})
except Exception as e:
messages.warning(request, _("Cannot disable plugin %(plugin)s: %(message)s") % {'plugin': plugin_name, 'message': str(e)})
messages.warning(request, _("Cannot disable plugin %(plugin)s: %(message)s") % {'plugin': plugin_name,
'message': str(e)})

return HttpResponseRedirect(reverse('admin:app_plugin_changelist'))

def plugin_delete(self, request, plugin_name, *args, **kwargs):
try:
delete_plugin(plugin_name)
except Exception as e:
messages.warning(request, _("Cannot delete plugin %(plugin)s: %(message)s") % {'plugin': plugin_name, 'message': str(e)})
messages.warning(request, _("Cannot delete plugin %(plugin)s: %(message)s") % {'plugin': plugin_name,
'message': str(e)})

return HttpResponseRedirect(reverse('admin:app_plugin_changelist'))

Expand Down Expand Up @@ -193,10 +209,13 @@ def plugin_upload(self, request, *args, **kwargs):
plugin_name = folders[0]
plugin_path = os.path.join(tmp_extract_path, plugin_name)
if not valid_plugin(plugin_path):
raise ValueError("This doesn't look like a plugin. Are plugin.py and manifest.json in the proper place?")
raise ValueError(
"This doesn't look like a plugin. Are plugin.py and manifest.json in the proper place?")

if os.path.exists(get_plugins_persistent_path(plugin_name)):
raise ValueError("A plugin with the name {} already exist. Please remove it before uploading one with the same name.".format(plugin_name))
raise ValueError(
"A plugin with the name {} already exist. Please remove it before uploading one with the same name.".format(
plugin_name))

# Move
shutil.move(plugin_path, get_plugins_persistent_path())
Expand All @@ -217,13 +236,13 @@ def plugin_upload(self, request, *args, **kwargs):

return HttpResponseRedirect(reverse('admin:app_plugin_changelist'))


def plugin_actions(self, obj):
plugin = get_plugin_by_name(obj.name, only_active=False)
return format_html(
'<a class="button" href="{}" {}>{}</a>&nbsp;'
'<a class="button" href="{}" {}>{}</a>'
+ ('&nbsp;<a class="button" href="{}" onclick="return confirm(\'Are you sure you want to delete {}?\')"><i class="fa fa-trash"></i></a>' if not plugin.is_persistent() else '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;')
+ (
'&nbsp;<a class="button" href="{}" onclick="return confirm(\'Are you sure you want to delete {}?\')"><i class="fa fa-trash"></i></a>' if not plugin.is_persistent() else '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;')
,
reverse('admin:plugin-disable', args=[obj.pk]) if obj.enabled else '#',
'disabled' if not obj.enabled else '',
Expand Down

0 comments on commit 77c117b

Please sign in to comment.