74 lines
2.6 KiB
Python
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
|