2009-01-05 14:30:08 +02:00
from django . contrib . syndication . feeds import Feed , FeedDoesNotExist
2009-06-29 23:47:45 +03:00
from django . core . exceptions import ObjectDoesNotExist
2009-01-05 14:30:08 +02:00
from django . utils . feedgenerator import Atom1Feed
from django . core . urlresolvers import reverse
from django . utils . translation import ugettext_lazy as _
2009-03-31 00:03:16 +03:00
from forum . models import Post , Topic , Forum , Category
2009-01-05 14:30:08 +02:00
class ForumFeed ( Feed ) :
feed_type = Atom1Feed
def link ( self ) :
2009-03-31 00:03:16 +03:00
return reverse ( ' forum.views.index ' )
2009-01-05 14:30:08 +02:00
def item_guid ( self , obj ) :
return str ( obj . id )
def item_pubdate ( self , obj ) :
return obj . created
class LastPosts ( ForumFeed ) :
title = _ ( ' Latest posts on forum ' )
description = _ ( ' Latest posts on forum ' )
title_template = ' forum/feeds/posts_title.html '
description_template = ' forum/feeds/posts_description.html '
def items ( self ) :
return Post . objects . order_by ( ' -created ' ) [ : 15 ]
class LastTopics ( ForumFeed ) :
title = _ ( ' Latest topics on forum ' )
description = _ ( ' Latest topics on forum ' )
title_template = ' forum/feeds/topics_title.html '
description_template = ' forum/feeds/topics_description.html '
def items ( self ) :
return Topic . objects . order_by ( ' -created ' ) [ : 15 ]
class LastPostsOnTopic ( ForumFeed ) :
title_template = ' forum/feeds/posts_title.html '
description_template = ' forum/feeds/posts_description.html '
def get_object ( self , topics ) :
if len ( topics ) != 1 :
raise ObjectDoesNotExist
return Topic . objects . get ( id = topics [ 0 ] )
def title ( self , obj ) :
return _ ( ' Latest posts on %s topic ' % obj . name )
def link ( self , obj ) :
if not obj :
raise FeedDoesNotExist
return obj . get_absolute_url ( )
def description ( self , obj ) :
return _ ( ' Latest posts on %s topic ' % obj . name )
def items ( self , obj ) :
return Post . objects . filter ( topic__id__exact = obj . id ) . order_by ( ' -created ' ) [ : 15 ]
class LastPostsOnForum ( ForumFeed ) :
title_template = ' forum/feeds/posts_title.html '
description_template = ' forum/feeds/posts_description.html '
def get_object ( self , forums ) :
if len ( forums ) != 1 :
raise ObjectDoesNotExist
return Forum . objects . get ( id = forums [ 0 ] )
def title ( self , obj ) :
return _ ( ' Latest posts on %s forum ' % obj . name )
def link ( self , obj ) :
if not obj :
raise FeedDoesNotExist
return obj . get_absolute_url ( )
def description ( self , obj ) :
return _ ( ' Latest posts on %s forum ' % obj . name )
def items ( self , obj ) :
return Post . objects . filter ( topic__forum__id__exact = obj . id ) . order_by ( ' -created ' ) [ : 15 ]
class LastPostsOnCategory ( ForumFeed ) :
title_template = ' forum/feeds/posts_title.html '
description_template = ' forum/feeds/posts_description.html '
def get_object ( self , categories ) :
if len ( categories ) != 1 :
raise ObjectDoesNotExist
return Category . objects . get ( id = categories [ 0 ] )
def title ( self , obj ) :
return _ ( ' Latest posts on %s category ' % obj . name )
def description ( self , obj ) :
return _ ( ' Latest posts on %s category ' % obj . name )
def items ( self , obj ) :
return Post . objects . filter ( topic__forum__category__id__exact = obj . id ) . order_by ( ' -created ' ) [ : 15 ]