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] > <javascript:>>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] <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.
