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