arcology/generators/admin.py

74 lines
2.6 KiB
Python

# [[file:../generators.org::*Admin][Admin:1]]
from django.contrib import admin
from django import forms
from django.contrib.admin.widgets import FilteredSelectMultiple
from django.utils.translation import gettext as _
import generators.models
class DependencyInline(admin.TabularInline):
model = generators.models.EmacsSnippet.dependencies.through
fk_name = "dependent"
@admin.register(generators.models.EmacsEpkg)
@admin.register(generators.models.NixosModule)
@admin.register(generators.models.HomeManagerModule)
class GeneratorAdmin(admin.ModelAdmin):
list_display = ["destination", "org_file"]
filter_horizontal = ["excluded_roles", "roles"]
@admin.register(generators.models.EmacsSnippet)
class EmacsSnippetAdmin(admin.ModelAdmin):
list_display = ["destination", "org_file"]
filter_horizontal = ["excluded_roles", "roles"]
inlines = [ DependencyInline ]
class RoleAdminForm(forms.ModelForm):
emacs_modules = forms.ModelMultipleChoiceField(
queryset=generators.models.EmacsSnippet.objects.all(),
required=False,
widget=FilteredSelectMultiple(
verbose_name=_('Emacs Modules'),
is_stacked=False
)
)
emacs_packages = forms.ModelMultipleChoiceField(
queryset=generators.models.EmacsEpkg.objects.all(),
required=False,
widget=FilteredSelectMultiple(
verbose_name=_('Emacs Packages'),
is_stacked=False
)
)
nixos_modules = forms.ModelMultipleChoiceField(
queryset=generators.models.NixosModule.objects.all(),
required=False,
widget=FilteredSelectMultiple(
verbose_name=_('NixOS Modules'),
is_stacked=False
)
)
home_modules = forms.ModelMultipleChoiceField(
queryset=generators.models.HomeManagerModule.objects.all(),
required=False,
widget=FilteredSelectMultiple(
verbose_name=_('Home Manager Modules'),
is_stacked=False
)
)
def __init__(self, *args, **kwargs):
super(RoleAdminForm, self).__init__(*args, **kwargs)
if self.instance and self.instance.pk:
self.fields['emacs_modules'].initial = self.instance.emacs_modules.all()
self.fields['emacs_packages'].initial = self.instance.emacs_packages.all()
self.fields['nixos_modules'].initial = self.instance.nixos_modules.all()
self.fields['home_modules'].initial = self.instance.home_modules.all()
@admin.register(generators.models.GeneratorRole)
class RoleAdmin(admin.ModelAdmin):
form = RoleAdminForm
# Admin:1 ends here