コード例 #1
0
    def _process(self):
        # Current events, which are always shown by default are events of this month and of the previous month.
        # If there are no events in this range, it will include the last and next month containing events.
        past_threshold = self.now - relativedelta(months=1, day=1, hour=0, minute=0)
        future_threshold = self.now + relativedelta(months=1, day=1, hour=0, minute=0)
        next_event_start_dt = (db.session.query(Event.start_dt)
                               .filter(Event.start_dt >= self.now, Event.category_id == self.category.id)
                               .order_by(Event.start_dt.asc())
                               .first() or (None,))[0]
        previous_event_start_dt = (db.session.query(Event.start_dt)
                                   .filter(Event.start_dt < self.now, Event.category_id == self.category.id)
                                   .order_by(Event.start_dt.desc())
                                   .first() or (None,))[0]
        if next_event_start_dt is not None and next_event_start_dt > future_threshold:
            future_threshold = next_event_start_dt + relativedelta(months=1, day=1, hour=0, minute=0)
        if previous_event_start_dt is not None and previous_event_start_dt < past_threshold:
            past_threshold = previous_event_start_dt.replace(day=1, hour=0, minute=0)
        event_query = (Event.query.with_parent(self.category)
                       .options(*self._event_query_options)
                       .order_by(Event.start_dt.desc()))
        past_event_query = event_query.filter(Event.start_dt < past_threshold)
        future_event_query = event_query.filter(Event.start_dt >= future_threshold)
        current_event_query = event_query.filter(Event.start_dt >= past_threshold,
                                                 Event.start_dt < future_threshold)
        events = current_event_query.filter(Event.start_dt < future_threshold).all()
        events_by_month = self.group_by_month(events)

        future_event_count = future_event_query.count()
        past_event_count = past_event_query.count()

        show_past_events = bool(self.category.id in session.get('fetch_past_events_in', set()) or
                                (session.user and session.user.settings.get('show_past_events', False)))

        managers = sorted(self.category.get_manager_list(), key=attrgetter('principal_type.name', 'name'))

        threshold_format = '%Y-%m'
        params = {'event_count': len(events),
                  'events_by_month': events_by_month,
                  'format_event_date': self.format_event_date,
                  'future_event_count': future_event_count,
                  'future_threshold': future_threshold.strftime(threshold_format),
                  'happening_now': self.happening_now,
                  'is_recent': self.is_recent,
                  'managers': managers,
                  'past_event_count': past_event_count,
                  'show_past_events': show_past_events,
                  'past_threshold': past_threshold.strftime(threshold_format),
                  'atom_feed_url': url_for('.export_atom', self.category),
                  'atom_feed_title': _('Events of "{}"').format(self.category.title)}
        params.update(get_base_ical_parameters(session.user, 'category',
                                               '/export/categ/{0}.ics'.format(self.category.id), {'from': '-31d'}))

        if not self.category.is_root:
            return WPCategory.render_template('display/category.html', self.category, **params)

        news = get_recent_news()
        upcoming_events = get_upcoming_events()
        return WPCategory.render_template('display/root_category.html', self.category, news=news,
                                          upcoming_events=upcoming_events, **params)
コード例 #2
0
    def _process(self):
        params = get_category_view_params(self.category, self.now)
        if not self.category.is_root:
            return WPCategory.render_template('display/category.html', self.category, **params)

        news = get_recent_news()
        upcoming_events = get_upcoming_events()
        return WPCategory.render_template('display/root_category.html', self.category, news=news,
                                          upcoming_events=upcoming_events, **params)
コード例 #3
0
ファイル: display.py プロジェクト: indico/indico
    def _process(self):
        # Current events, which are always shown by default are events of this month and of the previous month.
        # If there are no events in this range, it will include the last and next month containing events.
        past_threshold = self.now - relativedelta(months=1, day=1, hour=0, minute=0)
        future_threshold = self.now + relativedelta(months=1, day=1, hour=0, minute=0)
        next_event_start_dt = (
            db.session.query(Event.start_dt)
            .filter(Event.start_dt >= self.now, Event.category_id == self.category.id)
            .order_by(Event.start_dt.asc())
            .first()
            or (None,)
        )[0]
        previous_event_start_dt = (
            db.session.query(Event.start_dt)
            .filter(Event.start_dt < self.now, Event.category_id == self.category.id)
            .order_by(Event.start_dt.desc())
            .first()
            or (None,)
        )[0]
        if next_event_start_dt is not None and next_event_start_dt > future_threshold:
            future_threshold = next_event_start_dt + relativedelta(months=1, day=1, hour=0, minute=0)
        if previous_event_start_dt is not None and previous_event_start_dt < past_threshold:
            past_threshold = previous_event_start_dt.replace(day=1, hour=0, minute=0)
        event_query = (
            Event.query.with_parent(self.category).options(*self._event_query_options).order_by(Event.start_dt.desc())
        )
        past_event_query = event_query.filter(Event.start_dt < past_threshold)
        future_event_query = event_query.filter(Event.start_dt >= future_threshold)
        current_event_query = event_query.filter(Event.start_dt >= past_threshold, Event.start_dt < future_threshold)
        events = current_event_query.filter(Event.start_dt < future_threshold).all()
        events_by_month = self.group_by_month(events)

        future_event_count = future_event_query.count()
        past_event_count = past_event_query.count()

        show_past_events = bool(
            self.category.id in session.get("fetch_past_events_in", set())
            or (session.user and session.user.settings.get("show_past_events", False))
        )

        managers = sorted(self.category.get_manager_list(), key=attrgetter("principal_type.name", "name"))

        threshold_format = "%Y-%m"
        params = {
            "event_count": len(events),
            "events_by_month": events_by_month,
            "format_event_date": self.format_event_date,
            "future_event_count": future_event_count,
            "future_threshold": future_threshold.strftime(threshold_format),
            "happening_now": self.happening_now,
            "is_recent": self.is_recent,
            "managers": managers,
            "past_event_count": past_event_count,
            "show_past_events": show_past_events,
            "past_threshold": past_threshold.strftime(threshold_format),
            "atom_feed_url": url_for(".export_atom", self.category),
            "atom_feed_title": _('Events of "{}"').format(self.category.title),
        }
        params.update(
            get_base_ical_parameters(
                session.user, "category", "/export/categ/{0}.ics".format(self.category.id), {"from": "-31d"}
            )
        )

        if not self.category.is_root:
            return WPCategory.render_template("display/category.html", self.category, **params)

        news = get_recent_news()
        upcoming_events = get_upcoming_events()
        return WPCategory.render_template(
            "display/root_category.html", self.category, news=news, upcoming_events=upcoming_events, **params
        )