Hi,

I've created modules that work as expected but I'm using the "django" way. 
I would like to use the "Mezzanine" way instead (Mainly to avoid having to 
create mobile templates..) but it doesn't show up in the admin panel. The 
docs state that inheriting from PageAdmin will only allow it to be added as 
a page rather than editable in the admin panel. How would I get the 
equivalent functionality using the Page model?

Here's the original "django":-

*models.py:*

from django.db import models
from django.utils import timezone
from django.forms import ValidationError

from mezzanine.core.models import Displayable, Ownable, RichText
from mezzanine.utils.models import AdminThumbMixin
from mezzanine.conf import settings

from phookit.apps.geocoders.models import Geocoder


def get_future_events():
    today = timezone.now()
    return Event.objects.filter(event_date__gte=today)
    
def get_expired_events(age_days):
    if( not age_days ):
        return []
    
    today = timezone.now()
    maxAge = timezone.now() - timezone.timedelta(days=age_days)
    return 
Event.objects.filter(event_date__gte=maxAge).exclude(event_date__gte=today).order_by("-event_date","-start_time")
    
        
class Event(Displayable, Ownable, RichText, AdminThumbMixin, Geocoder):
    event_date = models.DateField()
    start_time = models.TimeField()
    end_time = models.TimeField()
    
    class Meta:
        verbose_name = "Event"
        verbose_name_plural = "Events"
        ordering = ("event_date","start_time")


    @models.permalink
    def get_absolute_url(self):
        url_name = "events:detail"
        kwargs = {"event_id": self.id}
        return (url_name, (), kwargs)


*admin.py:*
from copy import deepcopy
from django.contrib import admin
from mezzanine.core.admin import DisplayableAdmin, OwnableAdmin

from .models import Event

# never show published or expiry date
eventFieldsets = deepcopy(DisplayableAdmin.fieldsets)
eventFieldsets[0][1]["fields"].remove( ('publish_date', 'expiry_date') )


class EventAdmin(DisplayableAdmin, OwnableAdmin):

    fieldsets = (
        deepcopy(eventFieldsets[0]),
            ("Event details",{
            'fields': ('address', 'content', 'event_date', ('start_time', 
'end_time'), 'mappable_location', ('lat', 'lon'))
            }),
        deepcopy(eventFieldsets[1]),
    )

    def save_form(self, request, form, change):
        """
        Super class ordering is important here - user must get saved first.
        """
        OwnableAdmin.save_form(self, request, form, change)
        return DisplayableAdmin.save_form(self, request, form, change)

admin.site.register(Event, EventAdmin)


And the stripped down "Mezzanine" way which isn't available in the control 
panel:


*models.py*
from django.db import models
from mezzanine.pages.models import Page
from mezzanine.pages.models import RichText

class Event(Page, RichText):
    event_date = models.DateField("Event date")       
    start_time = models.TimeField("Event start time")
    end_time = models.TimeField("Event end time")


*admin.py*
from django.contrib import 
admin                                                    
from mezzanine.pages.admin import 
PageAdmin                                         
from .models import Event
                                                                                
    

admin.site.register(Event, PageAdmin)

Cheers in advance




-- 
You received this message because you are subscribed to the Google Groups 
"Mezzanine Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to