コード例 #1
0
ファイル: event.py プロジェクト: alkadis/vcv
    def all(self, format="html"):
        if c.instance is None:
            require.perm("event.index_all")

        events = (
            model.Event.all_q(
                instance=c.instance, include_hidden=False, event_filter=request.params.getall("event_filter")
            )
            .order_by(model.Event.time.desc())
            .limit(min(int(request.params.get("count", 50)), 100))
            .all()
        )

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

        elif format == "ajax":
            query_params = request.params.copy()
            while True:
                try:
                    query_params.pop("count")
                except KeyError:
                    break

            more_url = h.base_url(instance=c.instance, member="event/all", query_params=query_params)
            return render_def("/event/tiles.html", "carousel", events=events, more_url=more_url)
        else:
            c.event_pager = pager.events(events, count=50)

            if format == "overlay":
                return render("/event/all.html", overlay=True, overlay_size=OVERLAY_SMALL)
            else:
                return render("/event/all.html")
コード例 #2
0
ファイル: category.py プロジェクト: dwt/adhocracy
    def events(self, id, format=u'html'):
        if not c.instance.display_category_pages:
            abort(404)
        category = get_entity_or_abort(model.CategoryBadge, id)

        events = h.category.event_q(
            category,
            event_filter=request.params.getall('event_filter'),
            count=min(int(request.params.get('count', 50)), 100),
        ).all()

        enable_sorts = asbool(request.params.get('enable_sorts', 'true'))
        enable_pages = asbool(request.params.get('enable_pages', 'true'))
        row_type = request.params.get('row_type', 'row')

        if row_type not in ['row', 'profile_row', 'sidebar_row', 'tiny_row']:
            abort(400)

        data = {
            'event_pager': pager.events(events,
                                        enable_sorts=enable_sorts,
                                        enable_pages=enable_pages,
                                        row_type=row_type),
        }
        return render('/category/events.html', data,
                      overlay=format == 'overlay',
                      overlay_size=OVERLAY_SMALL)
コード例 #3
0
ファイル: instance.py プロジェクト: phihag/adhocracy
    def show(self, id, format='html'):
        c.page_instance = get_entity_or_abort(model.Instance, id)
        require.instance.show(c.page_instance)

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

        if format == 'rss':
            return self.activity(id, format)

        if c.page_instance != c.instance:
            redirect(h.entity_url(c.page_instance))

        c.tile = tiles.instance.InstanceTile(c.page_instance)
        proposals = model.Proposal.all(instance=c.page_instance)
        c.new_proposals_pager = pager.proposals(
            proposals, size=7, enable_sorts=False,
            enable_pages=False, default_sort=sorting.entity_newest)

        c.sidebar_delegations = (_('Delegations are enabled.') if
                                 c.page_instance.allow_delegate else
                                 _('Delegations are disabled.'))

        #pages = model.Page.all(instance=c.page_instance,
        #        functions=[model.Page.NORM])
        #c.top_pages_pager = pager.pages(
        #    pages, size=7, enable_sorts=False,
        #    enable_pages=False, default_sort=sorting.norm_selections)
        #tags = model.Tag.popular_tags(limit=40)
        #c.tags = sorted(text.tag_cloud_normalize(tags),
        #                key=lambda (k, c, v): k.name)

        if asbool(config.get('adhocracy.show_instance_overview_milestones')) \
           and c.page_instance.milestones:

            number = asint(config.get(
                'adhocracy.number_instance_overview_milestones', 3))
            
            milestones = model.Milestone.all_future_q(
                instance=c.page_instance).limit(number).all()

            c.next_milestones_pager = pager.milestones(
                milestones, size=number, enable_sorts=False,
                enable_pages=False, default_sort=sorting.milestone_time)

        events = model.Event.find_by_instance(c.page_instance, limit=3)

        c.events_pager = pager.events(events,
                                      enable_pages=False, 
                                      enable_sorts=False)

        c.stats = {
            'comments': model.Comment.all_q().count(),
            'proposals': model.Proposal.all_q(
                instance=c.page_instance).count(),
            'members': model.Membership.all_q().count()
        }
        c.tutorial_intro = _('tutorial_instance_show_intro')
        c.tutorial = 'instance_show'
        return render("/instance/show.html")
コード例 #4
0
ファイル: event.py プロジェクト: veryrandomname/adhocracy
    def all(self, format='html'):
        events = model.Event.all_q(
            include_hidden=False,
            event_filter=request.params.getall('event_filter'))\
            .order_by(model.Event.time.desc())\
            .limit(min(int(request.params.get('count', 50)), 100)).all()

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

        elif format == 'ajax':
            query_params = request.params.copy()
            while True:
                try:
                    query_params.pop('count')
                except KeyError:
                    break

            more_url = h.base_url(instance=None,
                                  member='event/all',
                                  query_params=query_params)
            return render_def('/event/tiles.html', 'carousel',
                              events=events, more_url=more_url)
        else:
            c.event_pager = pager.events(events, count=50)

            if format == 'overlay':
                return render('/event/all.html', overlay=True,
                              overlay_size=OVERLAY_SMALL)
            else:
                return render('/event/all.html')
コード例 #5
0
ファイル: category.py プロジェクト: alkadis/vcv
    def events(self, id, format=u'html'):
        if not c.instance.display_category_pages:
            abort(404)
        category = get_entity_or_abort(model.CategoryBadge, id)

        events = h.category.event_q(
            category,
            event_filter=request.params.getall('event_filter'),
            count=min(int(request.params.get('count', 50)), 100),
        ).all()

        enable_sorts = asbool(request.params.get('enable_sorts', 'true'))
        enable_pages = asbool(request.params.get('enable_pages', 'true'))
        row_type = request.params.get('row_type', 'row')

        if row_type not in ['row', 'profile_row', 'sidebar_row', 'tiny_row']:
            abort(400)

        data = {
            'event_pager':
            pager.events(events,
                         enable_sorts=enable_sorts,
                         enable_pages=enable_pages,
                         row_type=row_type),
        }
        return render('/category/events.html',
                      data,
                      overlay=format == 'overlay',
                      overlay_size=OVERLAY_SMALL)
コード例 #6
0
ファイル: instance.py プロジェクト: vigri/adhocracy
    def show(self, id, format="html"):
        c.page_instance = get_entity_or_abort(model.Instance, id)
        require.instance.show(c.page_instance)

        if format == "json":
            return render_json(c.page_instance)

        if format == "rss":
            return self.activity(id, format)

        if c.page_instance != c.instance:
            redirect(h.entity_url(c.page_instance))

        c.tile = tiles.instance.InstanceTile(c.page_instance)
        proposals = model.Proposal.all(instance=c.page_instance)
        c.new_proposals_pager = pager.proposals(
            proposals, size=7, enable_sorts=False, enable_pages=False, default_sort=sorting.entity_newest
        )

        c.sidebar_delegations = (
            _("Delegations are enabled.") if c.page_instance.allow_delegate else _("Delegations are disabled.")
        )

        # pages = model.Page.all(instance=c.page_instance,
        #        functions=[model.Page.NORM])
        # c.top_pages_pager = pager.pages(
        #    pages, size=7, enable_sorts=False,
        #    enable_pages=False, default_sort=sorting.norm_selections)
        # tags = model.Tag.popular_tags(limit=40)
        # c.tags = sorted(text.tag_cloud_normalize(tags),
        #                key=lambda (k, c, v): k.name)

        if asbool(config.get("adhocracy.show_instance_overview_milestones")) and c.page_instance.milestones:

            number = asint(config.get("adhocracy.number_instance_overview_milestones", 3))

            milestones = model.Milestone.all_future_q(instance=c.page_instance).limit(number).all()

            c.next_milestones_pager = pager.milestones(
                milestones, size=number, enable_sorts=False, enable_pages=False, default_sort=sorting.milestone_time
            )

        events = model.Event.find_by_instance(c.page_instance, limit=3)

        c.events_pager = pager.events(events, enable_pages=False, enable_sorts=False)

        c.stats = {
            "comments": model.Comment.all_q().count(),
            "proposals": model.Proposal.all_q(instance=c.page_instance).count(),
            "members": model.Membership.all_q().count(),
        }
        c.tutorial_intro = _("tutorial_instance_show_intro")
        c.tutorial = "instance_show"
        return render("/instance/show.html")
コード例 #7
0
    def activity(self, id, format='html'):
        c.page_instance = get_entity_or_abort(model.Instance, id)
        require.instance.show(c.page_instance)

        if format == 'sline':
            ret_abort(u'Sparkline data is not available anymore.', code=410)

        events = model.Event.find_by_instance(c.page_instance, limit=50)

        if format == 'rss':
            return event.rss_feed(events, _('%s News' % c.page_instance.label),
                                  h.base_url(c.page_instance),
                                  _("News from %s") % c.page_instance.label)

        c.tile = tiles.instance.InstanceTile(c.page_instance)
        c.events_pager = pager.events(events)
        return render("/instance/activity.html")
コード例 #8
0
ファイル: instance.py プロジェクト: vigri/adhocracy
    def activity(self, id, format="html"):
        c.page_instance = get_entity_or_abort(model.Instance, id)
        require.instance.show(c.page_instance)

        if format == "sline":
            ret_abort(u"Sparkline data is not available anymore.", code=410)

        events = model.Event.find_by_instance(c.page_instance, limit=50)

        if format == "rss":
            return event.rss_feed(
                events, _("%s News" % c.page_instance.label), h.base_url(), _("News from %s") % c.page_instance.label
            )

        c.tile = tiles.instance.InstanceTile(c.page_instance)
        c.events_pager = pager.events(events)
        return render("/instance/activity.html")
コード例 #9
0
    def all(self, format='html'):
        query = model.meta.Session.query(model.Event)\
            .join(model.Instance)\
            .filter(model.Instance.hidden == False)  # noqa
        query = query.order_by(model.Event.time.desc())\
            .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 = pager.events(query.all(), count=50)
        if format == 'overlay':
            return render('/event/all.html', overlay=True)
        else:
            return render('/event/all.html')
コード例 #10
0
ファイル: instance.py プロジェクト: AnonOnWarpath/adhocracy
    def activity(self, id, format='html'):
        c.page_instance = get_entity_or_abort(model.Instance, id)
        require.instance.show(c.page_instance)

        if format == 'sline':
            sline = event.sparkline_samples(instance_activity, c.page_instance)
            return render_json(dict(activity=sline))

        events = model.Event.find_by_instance(c.page_instance)

        if format == 'rss':
            return event.rss_feed(events, _('%s News' % c.page_instance.label),
                                  h.base_url(c.page_instance),
                                  _("News from %s") % c.page_instance.label)

        c.tile = tiles.instance.InstanceTile(c.page_instance)
        c.events_pager = pager.events(events)
        return render("/instance/activity.html")
コード例 #11
0
ファイル: instance.py プロジェクト: AnonOnWarpath/adhocracy
    def activity(self, id, format='html'):
        c.page_instance = get_entity_or_abort(model.Instance, id)
        require.instance.show(c.page_instance)

        if format == 'sline':
            sline = event.sparkline_samples(instance_activity,
                                            c.page_instance)
            return render_json(dict(activity=sline))

        events = model.Event.find_by_instance(c.page_instance)

        if format == 'rss':
            return event.rss_feed(events,
                                  _('%s News' % c.page_instance.label),
                                  h.base_url(c.page_instance),
                                  _("News from %s") % c.page_instance.label)

        c.tile = tiles.instance.InstanceTile(c.page_instance)
        c.events_pager = pager.events(events)
        return render("/instance/activity.html")
コード例 #12
0
ファイル: user.py プロジェクト: AnonOnWarpath/adhocracy
    def show(self, id, format='html'):
        c.page_user = get_entity_or_abort(model.User, id,
                                          instance_filter=False)
        require.user.show(c.page_user)

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

        query = model.meta.Session.query(model.Event)
        query = query.filter(model.Event.user == c.page_user)
        query = query.order_by(model.Event.time.desc())
        query = query.limit(10)
        if format == 'rss':
            return event.rss_feed(
                query.all(), "%s Latest Actions" % c.page_user.name,
                h.base_url(None, path='/user/%s' % c.page_user.user_name),
                c.page_user.bio)
        c.events_pager = pager.events(query.all())
        c.tile = tiles.user.UserTile(c.page_user)
        self._common_metadata(c.page_user, add_canonical=True)
        return render("/user/show.html")
コード例 #13
0
ファイル: event.py プロジェクト: alkadis/vcv
    def all(self, format='html'):
        if c.instance is None:
            require.perm('event.index_all')

        events = model.Event.all_q(
            instance=c.instance,
            include_hidden=False,
            event_filter=request.params.getall('event_filter'))\
            .order_by(model.Event.time.desc())\
            .limit(min(int(request.params.get('count', 50)), 100)).all()

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

        elif format == 'ajax':
            query_params = request.params.copy()
            while True:
                try:
                    query_params.pop('count')
                except KeyError:
                    break

            more_url = h.base_url(instance=c.instance,
                                  member='event/all',
                                  query_params=query_params)
            return render_def('/event/tiles.html',
                              'carousel',
                              events=events,
                              more_url=more_url)
        else:
            c.event_pager = pager.events(events, count=50)

            if format == 'overlay':
                return render('/event/all.html',
                              overlay=True,
                              overlay_size=OVERLAY_SMALL)
            else:
                return render('/event/all.html')
コード例 #14
0
ファイル: user.py プロジェクト: AnonOnWarpath/adhocracy
    def show(self, id, format='html'):
        c.page_user = get_entity_or_abort(model.User,
                                          id,
                                          instance_filter=False)
        require.user.show(c.page_user)

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

        query = model.meta.Session.query(model.Event)
        query = query.filter(model.Event.user == c.page_user)
        query = query.order_by(model.Event.time.desc())
        query = query.limit(10)
        if format == 'rss':
            return event.rss_feed(
                query.all(), "%s Latest Actions" % c.page_user.name,
                h.base_url(None, path='/user/%s' % c.page_user.user_name),
                c.page_user.bio)
        c.events_pager = pager.events(query.all())
        c.tile = tiles.user.UserTile(c.page_user)
        self._common_metadata(c.page_user, add_canonical=True)
        return render("/user/show.html")
コード例 #15
0
ファイル: instance.py プロジェクト: alex-obi/adhocracy
    def show(self, id, format='html'):
        c.page_instance = get_entity_or_abort(model.Instance, id)
        require.instance.show(c.page_instance)

        if format == 'json':
            return render_json(c.page_instance)
        elif format == 'rss':
            return self.activity(id, format)

        if c.page_instance != c.instance:
            redirect(h.entity_url(c.page_instance))

        c.tile = tiles.instance.InstanceTile(c.page_instance)
        c.sidebar_delegations = (_('Delegations are enabled.') if
                                 c.page_instance.allow_delegate else
                                 _('Delegations are disabled.'))

        overview_contents = config.get_list(
            'adhocracy.instance_overview_contents')
        overview_sidebar_contents = config.get_list(
            'adhocracy.instance_overview_sidebar_contents')

        if u'milestones' in overview_contents and c.page_instance.milestones:

            number = config.get_int(
                'adhocracy.number_instance_overview_milestones')

            milestones = model.Milestone.all_future_q(
                instance=c.page_instance).limit(number).all()

            c.next_milestones_pager = pager.milestones(
                milestones, size=number, enable_sorts=False,
                enable_pages=False, default_sort=sorting.milestone_time)

        c.events_pager = None
        if u'events' in overview_contents:
            events = model.Event.find_by_instance(c.page_instance, limit=10)
            c.events_pager = pager.events(events,
                                          enable_pages=False,
                                          enable_sorts=False)

        c.sidebar_events_pager = None
        if u'events' in overview_sidebar_contents:
            events = model.Event.find_by_instance(c.page_instance, limit=3)
            c.sidebar_events_pager = pager.events(events,
                                                  enable_pages=False,
                                                  enable_sorts=False,
                                                  row_type=u'sidebar_row')

        c.proposals_pager = None
        if u'proposals' in overview_contents:
            proposals = model.Proposal.all(instance=c.page_instance)

            if config.get_bool(
                    'adhocracy.show_instance_overview_proposals_all'):
                c.proposals_pager = pager.proposals(proposals, size=100,
                                                    initial_size=100)
            else:
                c.proposals_pager = pager.proposals(
                    proposals, size=7, enable_sorts=False,
                    enable_pages=False, default_sort=sorting.entity_newest)

        c.stats = None
        if config.get_bool('adhocracy.show_instance_overview_stats'):
            c.stats = {
                'comments': model.Comment.all_q().count(),
                'proposals': model.Proposal.all_q(
                    instance=c.page_instance).count(),
                'members': model.Membership.all_q().count()
            }

        c.tutorial_intro = _('tutorial_instance_show_intro')
        c.tutorial = 'instance_show'

        if c.page_instance.hidden:
            h.flash(_(u"This instance is not yet open for public "
                      u"participation."), 'warning')
        elif c.page_instance.frozen:
            h.flash(_(u"This instance is not active for use and is archived. "
                      u"It isn't possible to perform any changes to the "
                      u"instance, but all content is available to be read."),
                    'warning')

        if format == 'overlay':
            return render("/instance/show.html", overlay=True)
        else:
            return render("/instance/show.html")
コード例 #16
0
ファイル: instance.py プロジェクト: whausen/part
    def show(self, id, format='html'):
        c.page_instance = get_entity_or_abort(model.Instance, id)
        require.instance.show(c.page_instance)

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

        if format == 'rss':
            return self.activity(id, format)

        if c.page_instance != c.instance:
            redirect(h.entity_url(c.page_instance))

        c.tile = tiles.instance.InstanceTile(c.page_instance)
        c.sidebar_delegations = (_('Delegations are enabled.') if
                                 c.page_instance.allow_delegate else
                                 _('Delegations are disabled.'))

        if asbool(config.get('adhocracy.show_instance_overview_milestones')) \
                and c.page_instance.milestones:

            number = asint(config.get(
                'adhocracy.number_instance_overview_milestones', 3))

            milestones = model.Milestone.all_future_q(
                instance=c.page_instance).limit(number).all()

            c.next_milestones_pager = pager.milestones(
                milestones, size=number, enable_sorts=False,
                enable_pages=False, default_sort=sorting.milestone_time)

        c.events_pager = None
        if asbool(config.get('adhocracy.show_instance_overview_events',
                             'true')):
            events = model.Event.find_by_instance(c.page_instance, limit=3)
            c.events_pager = pager.events(events,
                                          enable_pages=False,
                                          enable_sorts=False)

        proposals = model.Proposal.all(instance=c.page_instance)

        show_new_proposals_cfg = config.get(
            'adhocracy.show_instance_overview_proposals_new')
        if show_new_proposals_cfg is None:
            # Fall back to legacy option
            show_new_proposals = asbool(config.get(
                'adhocracy.show_instance_overview_proposals', 'true'))
        else:
            show_new_proposals = asbool(show_new_proposals_cfg)
        c.new_proposals_pager = None
        if asbool(show_new_proposals):
            c.new_proposals_pager = pager.proposals(
                proposals, size=7, enable_sorts=False,
                enable_pages=False, default_sort=sorting.entity_newest)

        c.all_proposals_pager = None
        if asbool(config.get('adhocracy.show_instance_overview_proposals_all',
                             'false')):
            c.all_proposals_pager = pager.proposals(proposals)

        c.stats = None
        if asbool(config.get('adhocracy.show_instance_overview_stats',
                             'true')):
            c.stats = {
                'comments': model.Comment.all_q().count(),
                'proposals': model.Proposal.all_q(
                    instance=c.page_instance).count(),
                'members': model.Membership.all_q().count()
            }

        c.tutorial_intro = _('tutorial_instance_show_intro')
        c.tutorial = 'instance_show'
        return render("/instance/show.html")