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')
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")
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')