Skip to content

Instantly share code, notes, and snippets.

@lrvdijk
Created July 8, 2012 10:02
Show Gist options
  • Save lrvdijk/3070304 to your computer and use it in GitHub Desktop.
Save lrvdijk/3070304 to your computer and use it in GitHub Desktop.
Mezzanine models
from django.contrib import admin
from mezzanine.core.admin import StackedDynamicInlineAdmin
from mezzanine.pages.admin import PageAdmin
from helios3d.sponsors.models import Sponsor, SponsorCategory, SponsorPage
from copy import deepcopy
sponsor_admin_fieldsets = deepcopy(PageAdmin.fieldsets)
sponsor_admin_fieldsets[0][1]['fields'].insert(-3, 'categories')
sponsor_admin_fieldsets[0][1]['fields'].append('content')
class SponsorAdmin(admin.ModelAdmin):
list_display = ['title', 'website']
search_field = ['title', 'description']
fields = ['title', 'logo', 'website', 'content']
class SponsorAdminInline(StackedDynamicInlineAdmin):
model = Sponsor
extra = 1
fields = ['title', 'logo', 'website', 'content']
class SponsorCategoryAdmin(admin.ModelAdmin):
list_display = ['title']
search_fields = ['title']
fields = ['title']
inlines = (SponsorAdminInline,)
class SponsorPageAdmin(PageAdmin):
fieldsets = sponsor_admin_fieldsets
admin.site.register(Sponsor, SponsorAdmin)
admin.site.register(SponsorCategory, SponsorCategoryAdmin)
admin.site.register(SponsorPage, SponsorPageAdmin)
from mezzanine.core.models import Slugged, Orderable, RichText
from mezzanine.core.fields import FileField
from mezzanine.pages.models import RichTextPage
from mezzanine.utils.models import AdminThumbMixin
from django.db import models
from django.utils.translation import ugettext_lazy as _
class SponsorCategory(Orderable, Slugged):
"""
Represents a sponsor category (like Platinum, Gold, etc.)
"""
class Meta:
verbose_name = _("Category")
verbose_name_plural = _("Categories")
class Sponsor(Orderable, Slugged, RichText, AdminThumbMixin):
"""
Represents an actual sponsor
"""
category = models.ForeignKey(SponsorCategory, related_name="sponsors")
website = models.CharField(max_length=255)
logo = FileField(upload_to="sponsor_logos", format="Image", max_length=255)
admin_thumb_field = "logo"
class SponsorPage(RichTextPage):
"""
Represents the page with all sponsors
"""
categories = models.ManyToManyField(SponsorCategory, related_name="%(class)s_pages")
def get_categories_and_sponsors(self):
return self.categories.select_related(depth=1)
@stephenmcd
Copy link

Change:

class SponsorPage(RichTextPage):

To:

class SponsorPage(Page, RichText):

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment