瀏覽代碼

Merge pull request #55 from wagtail/22_modeladmingroup

Refactor WagtailBakery admin menu item(s)
David Ray 8 年之前
父節點
當前提交
cfa0a868eb
共有 3 個文件被更改,包括 63 次插入22 次删除
  1. 0 21
      bakerydemo/base/models.py
  2. 62 0
      bakerydemo/base/wagtail_hooks.py
  3. 1 1
      bakerydemo/breads/models.py

+ 0 - 21
bakerydemo/base/models.py

@@ -5,8 +5,6 @@ from django.db import models
 from modelcluster.fields import ParentalKey
 from modelcluster.models import ClusterableModel
 
-from wagtail.contrib.modeladmin.options import (
-    ModelAdmin, ModelAdminGroup, modeladmin_register)
 from wagtail.wagtailadmin.edit_handlers import (
     FieldPanel, FieldRowPanel, InlinePanel, MultiFieldPanel,
     PageChooserPanel, StreamFieldPanel,
@@ -247,22 +245,3 @@ class FormPage(AbstractEmailForm):
             FieldPanel('subject'),
         ], "Email"),
     ]
-
-
-class PeopleModelAdmin(ModelAdmin):
-    model = People
-    menu_label = 'People'  # ditch this to use verbose_name_plural from model
-    menu_icon = 'fa-people'  # change as required
-    list_display = ('first_name', 'last_name', 'job_title', 'thumb_image')
-
-
-class MyModelAdminGroup(ModelAdminGroup):
-    menu_label = 'WagtailBakery'
-    menu_icon = 'folder-open-inverse'  # change as required
-    menu_order = 200  # will put in 3rd place (000 being 1st, 100 2nd)
-    items = (PeopleModelAdmin,)
-
-
-# When using a ModelAdminGroup class to group several ModelAdmin classes together,
-# you only need to register the ModelAdminGroup class with Wagtail:
-modeladmin_register(MyModelAdminGroup)

+ 62 - 0
bakerydemo/base/wagtail_hooks.py

@@ -0,0 +1,62 @@
+from wagtail.contrib.modeladmin.options import (
+    ModelAdmin, ModelAdminGroup, modeladmin_register)
+
+from bakerydemo.breads.models import Country, BreadType
+from bakerydemo.base.models import People, FooterText
+
+'''
+N.B. To see what icons are available for use in Wagtail menus and StreamField block types,
+enable the styleguide in settings:
+
+INSTALLED_APPS = (
+   ...
+   'wagtail.contrib.wagtailstyleguide',
+   ...
+)
+
+or see http://kave.github.io/general/2015/12/06/wagtail-streamfield-icons.html
+
+This demo project includes the full font-awesome set via CDN in base.html, so the entire
+font-awesome icon set is available to you. Options are at http://fontawesome.io/icons/.
+'''
+
+
+class BreadTypeAdmin(ModelAdmin):
+    # These stub classes allow us to put various models into the custom "Wagtail Bakery" menu item
+    # rather than under the default Snippets section.
+    model = BreadType
+
+
+class BreadCountryAdmin(ModelAdmin):
+    model = Country
+
+
+class BreadModelAdminGroup(ModelAdminGroup):
+    menu_label = 'Bread Categories'
+    menu_icon = 'fa-suitcase'  # change as required
+    menu_order = 200  # will put in 3rd place (000 being 1st, 100 2nd)
+    items = (BreadTypeAdmin, BreadCountryAdmin)
+
+
+class PeopleModelAdmin(ModelAdmin):
+    model = People
+    menu_label = 'People'  # ditch this to use verbose_name_plural from model
+    menu_icon = 'fa-users'  # change as required
+    list_display = ('first_name', 'last_name', 'job_title', 'thumb_image')
+
+
+class FooterTextAdmin(ModelAdmin):
+    model = FooterText
+
+
+class BakeryModelAdminGroup(ModelAdminGroup):
+    menu_label = 'Bakery Misc'
+    menu_icon = 'fa-cutlery'  # change as required
+    menu_order = 300  # will put in 4th place (000 being 1st, 100 2nd)
+    items = (PeopleModelAdmin, FooterTextAdmin)
+
+
+# When using a ModelAdminGroup class to group several ModelAdmin classes together,
+# you only need to register the ModelAdminGroup class with Wagtail:
+modeladmin_register(BreadModelAdminGroup)
+modeladmin_register(BakeryModelAdminGroup)

+ 1 - 1
bakerydemo/breads/models.py

@@ -1,5 +1,5 @@
-from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
 from django.db import models
+from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
 
 from wagtail.wagtailadmin.edit_handlers import FieldPanel, StreamFieldPanel
 from wagtail.wagtailcore.fields import StreamField