Пример #1
0
    def show(self, id):
        if not c.instance.display_category_pages:
            abort(404)
        require.proposal.index()
        query = self.form_result.get('proposals_q')

        category = get_entity_or_abort(model.CategoryBadge, id)

        pages = model.Page.all_q(instance=c.instance,
                                 functions=model.Page.LISTED) \
            .join(model.DelegateableBadges) \
            .filter(model.DelegateableBadges.badge_id == category.id) \
            .all()
        pages = filter(lambda p: p.parent is None, pages)
        pages_pager = pager.pages(pages,
                                  enable_pages=False,
                                  enable_sorts=False)

        proposals_pager = pager.solr_proposal_pager(
            c.instance,
            {'text': query},
            extra_filter={'facet.delegateable.badgecategory': category.id})

        data = {
            'category': category,
            'pages_pager': pages_pager,
            'proposals_pager': proposals_pager,
        }
        return render('/category/show.html', data,
                      overlay=format == u'overlay')
Пример #2
0
 def dashboard_pages(self, id):
     '''Render all proposals for all instances the use is member'''
     #user object
     c.page_user = get_entity_or_abort(model.User, id,
                                       instance_filter=False)
     require.user.show(c.page_user)
     #instances
     instances = c.page_user.instances
     #pages
     require.page.index()
     pages = [model.Page.all(instance=i, functions=model.Page.LISTED)
              for i in instances]
     pages = pages and reduce(lambda x, y: x + y, pages)
     c.pages_pager = pager.pages(pages)
     #render result
     return render("/user/pages.html")
Пример #3
0
    def dashboard(self, id):
        '''Render a personalized dashboard for users'''

        if 'logged_in' in session:
            c.fresh_logged_in = True
            c.suppress_attention_getter = True
            del session['logged_in']
            if 'came_from' in session:
                c.came_from = session.get('came_from')
                del session['came_from']
                if isinstance(c.came_from, str):
                    c.came_from = unicode(c.came_from, 'utf-8')
            session.save()

        #user object
        c.page_user = get_entity_or_abort(model.User, id,
                                          instance_filter=False)
        require.user.show(c.page_user)
        #instances
        instances = c.page_user.instances
        #proposals
        proposals = [model.Proposal.all(instance=i) for i in instances]
        proposals = proposals and reduce(lambda x, y: x + y, proposals)
        c.proposals = proposals
        c.proposals_pager = pager.proposals(proposals, size=4,
                                            default_sort=sorting.entity_newest,
                                            enable_pages=False,
                                            enable_sorts=False)
        #polls
        polls = [p.adopt_poll for p in proposals if p.is_adopt_polling()]
        polls = filter(lambda p: p.has_ended() != True and
                                 p.is_deleted() != True,
                       polls)
        c.polls = polls
        c.polls_pager = pager.polls(polls,
                                    size=20,
                                    default_sort=sorting.entity_newest,
                                    enable_pages=False,
                                    enable_sorts=False,)
        #pages
        require.page.index()
        pages = [model.Page.all(instance=i, functions=model.Page.LISTED)
                 for i in instances]
        pages = pages and reduce(lambda x, y: x + y, pages)
        c.pages = pages
        c.pages_pager = pager.pages(pages, size=3,
                                    default_sort=sorting.entity_newest,
                                    enable_pages=False,
                                    enable_sorts=False)
        #watchlist
        require.watch.index()
        c.active_global_nav = 'user'
        watches = model.Watch.all_by_user(c.page_user)
        entities = [w.entity for w in watches if (w.entity is not None)
                    and (not isinstance(w.entity, unicode))]
        c.watchlist_pager = NamedPager(
            'watches', entities,
            tiles.dispatch_row_with_comments,
            size=3,
            enable_pages=False,
            enable_sorts=False,
            default_sort=sorting.entity_newest)

        #render result
        c.tutorial = 'user_dashboard'
        c.tutorial_intro = _('tutorial_dashboard_title')
        return render('/user/dashboard.html')