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 <paul....@gmail.com 
> <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 <paul....@gmail.com> 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 mezzanine-use...@googlegroups.com.
>>>>
>>>> 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 mezzanine-use...@googlegroups.com <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 mezzanine-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to