예제 #1
0
파일: tag.py 프로젝트: alkadis/vcv
    def show(self, id, format='html'):
        c.tag = get_entity_or_abort(model.Tag, id)
        require.tag.show(c.tag)
        require.proposal.index()
        require.page.index()

        if format == 'json':
            return render_json(c.tag)

        entities = libsearch.query.run(u'tag:' + c.tag.name,
                                       instance=c.instance)
        entities = [e for e in entities if (isinstance(e, model.Proposal) or
                                            isinstance(e, model.Page))]

        c.entities_pager = NamedPager(
            'entities', entities, tiles.dispatch_row,
            sorts={_("oldest"): sorting.entity_oldest,
                   _("newest"): sorting.entity_newest,
                   _("alphabetically"): sorting.delegateable_title,
                   _("relevance"): sorting.entity_stable},
            default_sort=sorting.entity_stable,
            q=c.query)

        tags = model.Tag.similar_tags(c.tag, limit=50)
        c.cloud_tags = sorted(h.tag.tag_cloud_normalize(tags),
                              key=lambda (k, c, v): k.name)

        if format == 'overlay':
            return render("/tag/show.html", overlay=True)
        else:
            return render("/tag/show.html")
예제 #2
0
    def watchlist(self, id, format='html'):
        require.watch.index()
        c.active_global_nav = 'watchlist'
        c.page_user = get_entity_or_abort(model.User,
                                          id,
                                          instance_filter=False)
        require.user.show(c.page_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.entities_pager = NamedPager('watches',
                                      entities,
                                      tiles.dispatch_row_with_comments,
                                      sorts={
                                          _("oldest"): sorting.entity_oldest,
                                          _("newest"): sorting.entity_newest
                                      },
                                      default_sort=sorting.entity_newest)

        if format == 'json':
            return render_json(c.entities_pager)

        self._common_metadata(c.page_user, member='watchlist')
        return render("/user/watchlist.html")
예제 #3
0
 def all(self):
     query = model.meta.Session.query(model.Event)
     query = query.order_by(model.Event.time.desc())
     query = query.limit(50)
     c.event_pager = NamedPager('events',
                                query.all(),
                                tiles.event.row,
                                count=50)
     return render('/event/all.html')
예제 #4
0
 def history(self, id, format='html'):
     c.comment = get_entity_or_abort(model.Comment, id)
     require.comment.show(c.comment)
     c.revisions_pager = NamedPager(
         'revisions', c.comment.revisions, tiles.revision.row, count=10,
         sorts={_("oldest"): sorting.entity_oldest,
                _("newest"): sorting.entity_newest},
                                  default_sort=sorting.entity_newest)
     if format == 'json':
         return render_json(c.revisions_pager)
     return render('/comment/history.html')
예제 #5
0
    def index(self, format='html'):
        require.comment.index()
        comments = model.Comment.all()
        c.comments_pager = NamedPager(
            'comments', comments, tiles.comment.row, count=10,
            sorts={_("oldest"): sorting.entity_oldest,
                   _("newest"): sorting.entity_newest},
            default_sort=sorting.entity_newest)
        if format == 'json':
            return render_json(c.comments_pager)

        return self.not_implemented(format=format)
예제 #6
0
파일: search.py 프로젝트: phihag/adhocracy
 def _query_pager(self):
     instance = c.instance if c.instance else None
     c.entities = libsearch.query.run(c.query, instance=instance)
     entity_filter = lambda e: not isinstance(e, Comment)
     c.entities = filter(entity_filter, c.entities)
     c.entities_pager = NamedPager(
         'serp', c.entities, tiles.dispatch_row,
         sorts={_("oldest"): sorting.entity_oldest,
                _("newest"): sorting.entity_newest,
                _("relevance"): sorting.entity_stable},
         default_sort=sorting.entity_stable,
         q=c.query)
예제 #7
0
파일: search.py 프로젝트: alkadis/vcv
 def _query_pager(self):
     instance = c.instance if c.instance else None
     c.entities = libsearch.query.run(c.query,
                                      instance=instance,
                                      excluded_entity_types=set([Comment]))
     c.entities_pager = NamedPager('serp',
                                   c.entities,
                                   tiles.dispatch_row,
                                   sorts={
                                       _("oldest"): sorting.entity_oldest,
                                       _("newest"): sorting.entity_newest,
                                       _("relevance"): sorting.entity_stable
                                   },
                                   default_sort=sorting.entity_stable,
                                   q=c.query)
예제 #8
0
파일: event.py 프로젝트: phihag/adhocracy
    def all(self, format='html'):
        query = model.meta.Session.query(model.Event)
        query = query.order_by(model.Event.time.desc())
        query = query.limit(50)

        if format == 'rss':
            events = query.all()
            return event.rss_feed(events, _('%s News' % h.site.name()),
                                  h.base_url(instance=None),
                                  _("News from %s") % h.site.name())

        c.event_pager = NamedPager('events',
                                   query.all(),
                                   tiles.event.row,
                                   count=50)
        return render('/event/all.html')
예제 #9
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')