Cool, thanks Josh. Paul
On Tuesday, 1 April 2014 17:55:00 UTC+1, Josh Cartmell wrote: > > Hey Paul, I would probably have Events subclass Displayable rather than > page. Page's are good for static content that belong in the menus, but not > so good for content that has some sort of natural order (like dates for > events). > > I would look at how Mezzanine's BlogPosts work and do something similar. > > > On Tue, Apr 1, 2014 at 9:30 AM, Paullo <[email protected] > <javascript:>>wrote: > >> Hi Josh, >> >> I currently have a single "Events" page which I can add individual events >> too. When I change it to use the "Mezzanine" way I can only add events as >> separate pages. I'm missing something :) >> >> Paul >> >> >> >> On Tuesday, 1 April 2014 17:09:48 UTC+1, Josh Cartmell wrote: >> >>> Hey Paullo, at this point if you go to Content -> Pages in the admin you >>> should be able to choose Event in the "Add" dropdown. What sort of >>> functionality are you looking for? >>> >>> >>> On Tue, Apr 1, 2014 at 7:05 AM, Paullo <[email protected]> wrote: >>> >>>> 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. >>>> >>> >>> -- >> 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] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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.
