Exemple #1
0
    def _process(self):
        if self.event_new.type == 'conference':
            reviewing_status = get_reviewing_status(self.contrib, self._conf)
            show_paper = ((self._conf.getConfPaperReview().hasReviewing() and
                           self.contrib.can_manage(session.user, 'submit')) or reviewing_status == 'Accept')
            paper_upload_form = PaperUploadForm()
            paper_file_data = self.contrib.paper_files.filter_by(revision_id=None) if show_paper else None
        else:
            reviewing_status = paper_upload_form = paper_file_data = None
            show_paper = False

        ical_params = get_base_ical_parameters(session.user, 'contributions',
                                               '/export/event/{0}.ics'.format(self.event_new.id))
        contrib = (Contribution.query
                   .filter_by(id=self.contrib.id)
                   .options(joinedload('type'),
                            joinedload('session'),
                            joinedload('subcontributions'),
                            joinedload('timetable_entry').lazyload('*'))
                   .one())
        return self.view_class.render_template('display/contribution_display.html', self._conf,
                                               contribution=contrib,
                                               event=self.event_new,
                                               reviewing_status=reviewing_status,
                                               show_paper=show_paper,
                                               can_submit_paper=self.contrib.can_manage(session.user, 'submit'),
                                               paper_files=paper_file_data,
                                               paper_upload_form=paper_upload_form,
                                               **ical_params)
Exemple #2
0
    def _process(self):
        if self.event_new.type == 'conference':
            reviewing_status = get_reviewing_status(self.contrib, self._conf)
            show_paper = ((self._conf.getConfPaperReview().hasReviewing()
                           and self.contrib.can_manage(session.user, 'submit'))
                          or reviewing_status == 'Accept')
            paper_upload_form = PaperUploadForm()
            paper_file_data = self.contrib.paper_files.filter_by(
                revision_id=None) if show_paper else None
        else:
            reviewing_status = paper_upload_form = paper_file_data = None
            show_paper = False

        ical_params = get_base_ical_parameters(
            session.user, 'contributions',
            '/export/event/{0}.ics'.format(self.event_new.id))
        contrib = (Contribution.query.filter_by(id=self.contrib.id).options(
            joinedload('type'), joinedload('session'),
            joinedload('subcontributions'),
            joinedload('timetable_entry').lazyload('*')).one())
        return self.view_class.render_template(
            'display/contribution_display.html',
            self._conf,
            contribution=contrib,
            event=self.event_new,
            reviewing_status=reviewing_status,
            show_paper=show_paper,
            can_submit_paper=self.contrib.can_manage(session.user, 'submit'),
            paper_files=paper_file_data,
            paper_upload_form=paper_upload_form,
            **ical_params)
Exemple #3
0
def _render_event_ical_export(event, **kwargs):
    from indico.modules.events.util import get_base_ical_parameters
    return render_template('events/display/event_ical_export.html',
                           item=event,
                           ics_url=url_for('events.export_event_ical', event),
                           **get_base_ical_parameters(session.user, event,
                                                      'events'))
Exemple #4
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)
Exemple #5
0
 def _process(self):
     ical_params = get_base_ical_parameters(session.user, 'contributions',
                                            '/export/event/{0}.ics'.format(self.event_new.id))
     contrib = (Contribution.query
                .filter_by(id=self.contrib.id)
                .options(joinedload('type'),
                         joinedload('session'),
                         joinedload('subcontributions'),
                         joinedload('timetable_entry').lazyload('*'))
                .one())
     return self.view_class.render_template('display/contribution_display.html', self._conf,
                                            contribution=contrib, **ical_params)
Exemple #6
0
 def _process(self):
     ical_params = get_base_ical_parameters(session.user, 'contributions',
                                            '/export/event/{0}.ics'.format(self.event.id))
     contrib = (Contribution.query
                .filter_by(id=self.contrib.id)
                .options(joinedload('type'),
                         joinedload('session'),
                         joinedload('subcontributions'),
                         joinedload('timetable_entry').lazyload('*'))
                .one())
     return self.view_class.render_template('display/contribution_display.html', self.event,
                                            contribution=contrib,
                                            show_author_link=_author_page_active(self.event),
                                            **ical_params)
Exemple #7
0
 def _process(self):
     ical_params = get_base_ical_parameters(session.user, 'contributions',
                                            '/export/event/{0}.ics'.format(self.event.id))
     contrib = (Contribution.query
                .filter_by(id=self.contrib.id)
                .options(joinedload('type'),
                         joinedload('session'),
                         joinedload('subcontributions'),
                         joinedload('timetable_entry').lazyload('*'))
                .one())
     can_manage = self.event.can_manage(session.user)
     owns_abstract = contrib.abstract.user_owns(session.user) if contrib.abstract else None
     field_values = filter_field_values(contrib.field_values, can_manage, owns_abstract)
     return self.view_class.render_template('display/contribution_display.html', self.event,
                                            contribution=contrib,
                                            show_author_link=_author_page_active(self.event),
                                            field_values=field_values,
                                            **ical_params)
Exemple #8
0
 def _process(self):
     ical_params = get_base_ical_parameters(session.user, self.event_new, 'sessions', self.session)
     tz = timezone(DisplayTZ(session.user, self._conf).getDisplayTZ())
     contributions_strategy = subqueryload('contributions')
     _contrib_tte_strategy = contributions_strategy.joinedload('timetable_entry')
     _contrib_tte_strategy.lazyload('*')
     contributions_strategy.joinedload('person_links')
     blocks_strategy = joinedload('blocks')
     blocks_strategy.joinedload('person_links')
     _block_tte_strategy = blocks_strategy.joinedload('timetable_entry')
     _block_tte_strategy.lazyload('*')
     _block_tte_strategy.joinedload('children')
     sess = (Session.query
             .filter_by(id=self.session.id)
             .options(contributions_strategy, blocks_strategy)
             .one())
     return self.view_class.render_template('display/session_display.html', self._conf, sess=sess,
                                            event=self.event_new, timezone=tz, **ical_params)
Exemple #9
0
 def _process(self):
     ical_params = get_base_ical_parameters(session.user, 'contributions',
                                            '/export/event/{0}.ics'.format(self.event.id))
     contrib = (Contribution.query
                .filter_by(id=self.contrib.id)
                .options(joinedload('type'),
                         joinedload('session'),
                         joinedload('subcontributions'),
                         joinedload('timetable_entry').lazyload('*'))
                .one())
     can_manage = self.event.can_manage(session.user)
     owns_abstract = contrib.abstract.user_owns(session.user) if contrib.abstract else None
     field_values = filter_field_values(contrib.field_values, can_manage, owns_abstract)
     return self.view_class.render_template('display/contribution_display.html', self.event,
                                            contribution=contrib,
                                            show_author_link=_author_page_active(self.event),
                                            field_values=field_values,
                                            **ical_params)
Exemple #10
0
 def _process(self):
     ical_params = get_base_ical_parameters(session.user, 'sessions',
                                            '/export/event/{0}/session/{1}.ics'.format(self.event.id,
                                                                                       self.session.id))
     contributions_strategy = subqueryload('contributions')
     contributions_strategy.joinedload('track')
     _contrib_tte_strategy = contributions_strategy.joinedload('timetable_entry')
     _contrib_tte_strategy.lazyload('*')
     contributions_strategy.joinedload('person_links')
     blocks_strategy = joinedload('blocks')
     blocks_strategy.joinedload('person_links')
     _block_tte_strategy = blocks_strategy.joinedload('timetable_entry')
     _block_tte_strategy.lazyload('*')
     _block_tte_strategy.joinedload('children')
     sess = (Session.query
             .filter_by(id=self.session.id)
             .options(contributions_strategy, blocks_strategy)
             .one())
     return self.view_class.render_template('display/session_display.html', self.event, sess=sess, **ical_params)
Exemple #11
0
 def _process(self):
     ical_params = get_base_ical_parameters(session.user, 'sessions',
                                            f'/export/event/{self.event.id}/session/{self.session.id}.ics')
     contributions_strategy = subqueryload('contributions')
     contributions_strategy.joinedload('track')
     _contrib_tte_strategy = contributions_strategy.joinedload('timetable_entry')
     _contrib_tte_strategy.lazyload('*')
     contributions_strategy.joinedload('person_links')
     contributions_strategy.subqueryload('references')
     blocks_strategy = joinedload('blocks')
     blocks_strategy.joinedload('person_links')
     _block_tte_strategy = blocks_strategy.joinedload('timetable_entry')
     _block_tte_strategy.lazyload('*')
     _block_tte_strategy.joinedload('children')
     sess = (Session.query
             .filter_by(id=self.session.id)
             .options(contributions_strategy, blocks_strategy)
             .one())
     return self.view_class.render_template('display/session_display.html', self.event,
                                            sess=sess, page_title=sess.title, **ical_params)
Exemple #12
0
def _render_event_ical_export(event, **kwargs):
    from indico.modules.events.util import get_base_ical_parameters
    return render_template('events/display/event_ical_export.html', item=event,
                           ics_url=url_for('events.export_event_ical', event),
                           **get_base_ical_parameters(session.user, 'events', '/export/event/{0}.ics'.format(event.id)))
Exemple #13
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
        )
Exemple #14
0
def get_category_view_params(category, now):
    from .display import RHDisplayCategoryEventsBase

    # 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 = now - relativedelta(months=1, day=1, hour=0, minute=0)
    future_threshold = now + relativedelta(months=1, day=1, hour=0, minute=0)
    hidden_event_ids = {
        e.id
        for e in category.get_hidden_events(user=session.user)
    }
    next_event_start_dt = (db.session.query(Event.start_dt).filter(
        Event.start_dt >= now, Event.category_id == category.id,
        Event.id.notin_(hidden_event_ids)).order_by(Event.start_dt.asc(),
                                                    Event.id.asc()).first()
                           or (None, ))[0]
    previous_event_start_dt = (db.session.query(Event.start_dt).filter(
        Event.start_dt < now, Event.category_id == category.id,
        Event.id.notin_(hidden_event_ids)).order_by(Event.start_dt.desc(),
                                                    Event.id.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(category).options(
        *RHDisplayCategoryEventsBase._event_query_options).filter(
            Event.id.notin_(hidden_event_ids)).order_by(
                Event.start_dt.desc(), Event.id.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)
    json_ld_events = events = current_event_query.filter(
        Event.start_dt < future_threshold).all()

    future_event_count = future_event_query.count()
    past_event_count = past_event_query.count()
    has_hidden_events = bool(hidden_event_ids)

    if not session.user and future_event_count:
        json_ld_events = json_ld_events + future_event_query.all()

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

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

    threshold_format = '%Y-%m'
    params = {
        'event_count': len(events),
        'events_by_month': group_by_month(events, now, category.tzinfo),
        'format_event_date': make_format_event_date_func(category),
        'future_event_count': future_event_count,
        'show_future_events': show_future_events,
        'future_threshold': future_threshold.strftime(threshold_format),
        'happening_now': make_happening_now_func(now),
        'is_recent': make_is_recent_func(now),
        'managers': managers,
        'past_event_count': past_event_count,
        'show_past_events': show_past_events,
        'past_threshold': past_threshold.strftime(threshold_format),
        'has_hidden_events': has_hidden_events,
        'json_ld': list(map(serialize_event_for_json_ld, json_ld_events)),
        'atom_feed_url': url_for('.export_atom', category),
        'atom_feed_title': _('Events of "{}"').format(category.title)
    }
    params.update(
        get_base_ical_parameters(session.user, 'category',
                                 f'/export/categ/{category.id}.ics',
                                 {'from': '-31d'}))
    return params