source: products/quintagroup.blog.star/trunk/quintagroup/blog/star/browser/blog.py @ 2656

Last change on this file since 2656 was 2656, checked in by chervol, 14 years ago

#27: Force blog_view accept additional query parameters

  • Property svn:eol-style set to native
File size: 2.2 KB
Line 
1from Products.Five import BrowserView
2from Products.CMFCore.utils import getToolByName
3from Products.CMFPlone.PloneBatch import Batch
4from quintagroup.blog.star.interfaces import IQGBlogEntryRetriever
5try:
6    from plone.app.discussion.interfaces import IConversation
7    USE_PAD = True
8except ImportError:
9    USE_PAD = False
10   
11class BlogView(BrowserView):
12    """
13    Blog view
14    """
15
16    def __init__(self, context, request):
17        self.context = context
18        self.request = request
19        self.portal_discussion = getToolByName(self.context, 'portal_discussion')
20       
21    def blogitems(self):
22        """List all blog items as brains"""
23        # XXX Could perhaps be cached?
24        year = int(self.request.form.get('year',0))
25        month = int(self.request.form.get('month',0))
26        subject = list(self.request.form.get('Subject',''))
27        return IQGBlogEntryRetriever(self.context).get_entries(
28            year=year, month=month, Subject=subject)
29
30    def batch(self):
31        portal_properties = getToolByName(self.context, 'portal_properties')
32        site_properties = getattr(portal_properties, 'site_properties')
33        b_size = site_properties.getProperty('blog_view_items', 10)
34        b_start = self.request.form.get('b_start', 0)
35        return Batch(self.blogitems(), b_size, b_start, orphan=2)
36
37    def commentsEnabled(self, ob):
38        if USE_PAD:
39            conversation = IConversation(ob)
40            return conversation.enabled()
41        else:
42            return self.portal_discussion.isDiscussionAllowedFor(ob)
43       
44    def commentCount(self, ob):
45        if USE_PAD:
46            conversation = IConversation(ob)
47            return len(conversation)
48        else:
49            discussion = self.portal_discussion.getDiscussionFor(ob)
50            return discussion.replyCount(ob)
51       
52    def item_url(self, item):
53        portal_properties = getToolByName(self.context, 'portal_properties')
54        site_properties = getattr(portal_properties, 'site_properties')
55        use_view = site_properties.getProperty('typesUseViewActionInListings')
56        url = item.getURL()
57        if item.portal_type in use_view:
58            return '%s/view' % url
59        return url
Note: See TracBrowser for help on using the repository browser.