from django.contrib import admin
from nested_admin.nested import NestedAdmin, NestedStackedInline

from democracy import models


# Inlines


class HearingImageInline(NestedStackedInline):
    model = models.HearingImage
    extra = 0


class SectionImageInline(NestedStackedInline):
    model = models.SectionImage
    extra = 0


class SectionInline(NestedStackedInline):
    model = models.Section
    extra = 1
    inlines = [SectionImageInline]


# Admins


class HearingAdmin(NestedAdmin):
    inlines = [HearingImageInline, SectionInline]
    list_display = ("id", "published", "title", "open_at", "close_at", "force_closed")
    list_filter = ("published",)
    search_fields = ("id", "title")


# Wire it up!


admin.site.register(models.Label)
admin.site.register(models.Hearing, HearingAdmin)

from django.contrib import admin
from django.utils.translation import ugettext_lazy as _
from nested_admin.nested import NestedAdmin, NestedStackedInline

from democracy import models


# Inlines


class HearingImageInline(NestedStackedInline):
    model = models.HearingImage
    extra = 0
    exclude = ("public", "title")


class SectionImageInline(NestedStackedInline):
    model = models.SectionImage
    extra = 0
    exclude = ("public", "title")


class SectionInline(NestedStackedInline):
    model = models.Section
    extra = 1
    inlines = [SectionImageInline]
    exclude = ("public", "commenting",)


# Admins


class HearingAdmin(NestedAdmin):
    inlines = [HearingImageInline, SectionInline]
    list_display = ("id", "published", "title", "open_at", "close_at", "force_closed")
    list_filter = ("published",)
    search_fields = ("id", "title")
    fieldsets = (
        (None, {
            "fields": ("title", "abstract", "labels", "id")
        }),
        (_("Availability"), {
            "fields": ("published", "open_at", "close_at", "force_closed", "commenting")
        }),
    )

    def save_related(self, request, form, formsets, change):
        super().save_related(request, form, formsets, change)
        hearing = form.instance
        assert isinstance(hearing, models.Hearing)
        hearing.sections.update(commenting=hearing.commenting)


class LabelAdmin(admin.ModelAdmin):
    exclude = ("public",)


# Wire it up!


admin.site.register(models.Label, LabelAdmin)
admin.site.register(models.Hearing, HearingAdmin)

Hide unnecessary fields in the admins
Hide unnecessary fields in the admins

* Hide some unnecessary fields from Hearings
* Hide Public and Commenting flags from Sections
  (Section commenting option follows that of hearings.)
* Hide Public and Title fields from images
* Hide Public field from labels

Refs #118

  from django.contrib import admin
+ from django.utils.translation import ugettext_lazy as _
  from nested_admin.nested import NestedAdmin, NestedStackedInline
  
  from democracy import models
  
  
  # Inlines
  
  
  class HearingImageInline(NestedStackedInline):
      model = models.HearingImage
      extra = 0
+     exclude = ("public", "title")
  
  
  class SectionImageInline(NestedStackedInline):
      model = models.SectionImage
      extra = 0
+     exclude = ("public", "title")
  
  
  class SectionInline(NestedStackedInline):
      model = models.Section
      extra = 1
      inlines = [SectionImageInline]
+     exclude = ("public", "commenting",)
  
  
  # Admins
  
  
  class HearingAdmin(NestedAdmin):
      inlines = [HearingImageInline, SectionInline]
      list_display = ("id", "published", "title", "open_at", "close_at", "force_closed")
      list_filter = ("published",)
      search_fields = ("id", "title")
+     fieldsets = (
+         (None, {
+             "fields": ("title", "abstract", "labels", "id")
+         }),
+         (_("Availability"), {
+             "fields": ("published", "open_at", "close_at", "force_closed", "commenting")
+         }),
+     )
+ 
+     def save_related(self, request, form, formsets, change):
+         super().save_related(request, form, formsets, change)
+         hearing = form.instance
+         assert isinstance(hearing, models.Hearing)
+         hearing.sections.update(commenting=hearing.commenting)
+ 
+ 
+ class LabelAdmin(admin.ModelAdmin):
+     exclude = ("public",)
  
  
  # Wire it up!
  
  
- admin.site.register(models.Label)
+ admin.site.register(models.Label, LabelAdmin)
  admin.site.register(models.Hearing, HearingAdmin)
  
Hide unnecessary fields in the admins
## Code Before:
from django.contrib import admin
from nested_admin.nested import NestedAdmin, NestedStackedInline

from democracy import models


# Inlines


class HearingImageInline(NestedStackedInline):
    model = models.HearingImage
    extra = 0


class SectionImageInline(NestedStackedInline):
    model = models.SectionImage
    extra = 0


class SectionInline(NestedStackedInline):
    model = models.Section
    extra = 1
    inlines = [SectionImageInline]


# Admins


class HearingAdmin(NestedAdmin):
    inlines = [HearingImageInline, SectionInline]
    list_display = ("id", "published", "title", "open_at", "close_at", "force_closed")
    list_filter = ("published",)
    search_fields = ("id", "title")


# Wire it up!


admin.site.register(models.Label)
admin.site.register(models.Hearing, HearingAdmin)

## Instruction:
Hide unnecessary fields in the admins
## Code After:
from django.contrib import admin
from django.utils.translation import ugettext_lazy as _
from nested_admin.nested import NestedAdmin, NestedStackedInline

from democracy import models


# Inlines


class HearingImageInline(NestedStackedInline):
    model = models.HearingImage
    extra = 0
    exclude = ("public", "title")


class SectionImageInline(NestedStackedInline):
    model = models.SectionImage
    extra = 0
    exclude = ("public", "title")


class SectionInline(NestedStackedInline):
    model = models.Section
    extra = 1
    inlines = [SectionImageInline]
    exclude = ("public", "commenting",)


# Admins


class HearingAdmin(NestedAdmin):
    inlines = [HearingImageInline, SectionInline]
    list_display = ("id", "published", "title", "open_at", "close_at", "force_closed")
    list_filter = ("published",)
    search_fields = ("id", "title")
    fieldsets = (
        (None, {
            "fields": ("title", "abstract", "labels", "id")
        }),
        (_("Availability"), {
            "fields": ("published", "open_at", "close_at", "force_closed", "commenting")
        }),
    )

    def save_related(self, request, form, formsets, change):
        super().save_related(request, form, formsets, change)
        hearing = form.instance
        assert isinstance(hearing, models.Hearing)
        hearing.sections.update(commenting=hearing.commenting)


class LabelAdmin(admin.ModelAdmin):
    exclude = ("public",)


# Wire it up!


admin.site.register(models.Label, LabelAdmin)
admin.site.register(models.Hearing, HearingAdmin)
