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.

Reply via email to