def send(cls, req, data): check_access(req) start_dt = data['start_dt_override'] or req.event.start_dt end_dt = data['end_dt_override'] or req.event.end_dt if data['start_dt_override']: data['start_dt_override'] = data['start_dt_override'].isoformat() if data['end_dt_override']: data['end_dt_override'] = data['end_dt_override'].isoformat() times_changed = False if req.id is not None: old_start_dt, old_end_dt = get_access_dates(req) if old_start_dt != start_dt or old_end_dt != end_dt: times_changed = True super(CERNAccessRequestDefinition, cls).send(req, data) update_access_request(req) req.state = RequestState.accepted if times_changed: handle_event_time_update(req.event) link = "https://indico-user-docs.web.cern.ch/indico-user-docs/cern/cern_access/#granting-access-to-participants" message = _( 'Please note that even though your request has been accepted, you still have to ' 'request badges for each one of your participants. {link}More details here.{endlink}' ).format(link='<a href="{}">'.format(link), endlink='</a>') flash(Markup(message), 'warning')
def render(cls, event): start_dt, end_dt = get_access_dates(get_last_request(event)) if start_dt.date() == end_dt.date(): return to_unicode(format_datetime(start_dt, format='d MMM YYY', locale='en_GB')) else: return "{} - {}".format(to_unicode(format_datetime(start_dt, format='d MMM YYY', locale='en_GB')), to_unicode(format_datetime(end_dt, format='d MMM YYY', locale='en_GB')))
def _get_personal_data_form(self, event, regform, management, registration=None, **kwargs): if management or registration is not None: return if regform.cern_access_request and regform.cern_access_request.is_active: req = get_last_request(event) if not req.data['during_registration']: return required = req.data['during_registration_required'] form_cls = AccessIdentityDataForm if required else RegistrationFormPersonalDataForm form = g.get('personal_data_form') if not form: form = form_cls() if req.data['during_registration_preselected'] and not required: form.request_cern_access.data = True start_dt, end_dt = get_access_dates(req) return render_plugin_template('regform_identity_data_section.html', event=event, form=form, start_dt=start_dt, end_dt=end_dt, registration=registration, required=required)
def render(cls, event): start_dt, end_dt = get_access_dates(get_last_request(event)) if start_dt.date() == end_dt.date(): return format_datetime(start_dt, format='d MMM YYY', locale='en_GB') else: return '{} - {}'.format(format_datetime(start_dt, format='d MMM YYY', locale='en_GB'), format_datetime(end_dt, format='d MMM YYY', locale='en_GB'))
def _get_personal_data_form(self, event, regform, management, registration=None, **kwargs): if management or registration is not None: return if regform.cern_access_request and regform.cern_access_request.is_active: req = get_last_request(event) mode = req.data.get('regform_data_mode') if mode not in (RegformDataMode.during_registration, RegformDataMode.during_registration_required): return required = mode == RegformDataMode.during_registration_required form_cls = AccessIdentityDataForm if required else RegistrationFormPersonalDataForm form = g.get('personal_data_form') or form_cls() start_dt, end_dt = get_access_dates(req) return render_plugin_template('regform_identity_data_section.html', event=event, form=form, start_dt=start_dt, end_dt=end_dt, registration=registration, required=required)
def _process(self): start_dt, end_dt = get_access_dates(self.cern_access_request) expired = now_utc() > end_dt form = AccessIdentityDataForm() access_request = self.registration.cern_access_request email_ticket = self.registration.registration_form.ticket_on_email if access_request is not None and not access_request.has_identity_info and form.validate_on_submit( ): if expired: raise Forbidden form.populate_obj(access_request) db.session.flush() if email_ticket: send_ticket(self.registration) return redirect( url_for('.access_identity_data', self.registration.locator.uuid)) return WPAccessRequestDetails.render_template( 'identity_data_form.html', self.event, form=form, access_request=access_request, start_dt=start_dt, end_dt=end_dt, expired=expired, email_ticket=email_ticket)
def render(cls, param, regform, registration): locale_data = { 'en': {'locale': 'en_GB', 'separator': 'to'}, 'fr': {'locale': 'fr_FR', 'separator': 'au'}, } start_dt, end_dt = get_access_dates(get_last_request(registration.event)) tpl = get_template_module('cern_access:_common.html') return Markup(tpl.render_access_dates(start_dt, end_dt, **locale_data[param]))
def _process(self): form = AccessIdentityDataForm() access_request = self.registration.cern_access_request if access_request is not None and not access_request.has_identity_info and form.validate_on_submit(): form.populate_obj(access_request) db.session.flush() send_ticket(self.registration) return redirect(url_for('.access_identity_data', self.registration.locator.uuid)) start_dt, end_dt = get_access_dates(get_last_request(self.event)) return WPAccessRequestDetails.render_template('identity_data_form.html', self.event, form=form, access_request=access_request, start_dt=start_dt, end_dt=end_dt)
def send(cls, req, data): check_access(req) start_dt = data['start_dt_override'] or req.event.start_dt end_dt = data['end_dt_override'] or req.event.end_dt if data['start_dt_override']: data['start_dt_override'] = data['start_dt_override'].isoformat() if data['end_dt_override']: data['end_dt_override'] = data['end_dt_override'].isoformat() times_changed = False if req.id is not None: old_start_dt, old_end_dt = get_access_dates(req) if old_start_dt != start_dt or old_end_dt != end_dt: times_changed = True super(CERNAccessRequestDefinition, cls).send(req, data) update_access_request(req) req.state = RequestState.accepted if times_changed: handle_event_time_update(req.event)
def _process(self): start_dt, end_dt = get_access_dates(self.cern_access_request) expired = now_utc() > end_dt form = AccessIdentityDataForm() access_request = self.registration.cern_access_request email_ticket = self.registration.registration_form.ticket_on_email if access_request is not None and not access_request.has_identity_info and form.validate_on_submit( ): if expired: raise Forbidden form.populate_obj(access_request, skip={'license_plate'}) access_request.license_plate = ( sanitize_license_plate(form.license_plate.data) if form.by_car.data and form.license_plate.data else None) db.session.flush() # if the user has entered car plate info, we have to provide it to ADAMS if form.by_car.data: send_adams_post_request(self.event, [self.registration], update=True) if email_ticket: send_ticket(self.registration) return redirect( url_for('.access_identity_data', self.registration.locator.uuid)) return WPAccessRequestDetails.render_template( 'identity_data_form.html', self.event, form=form, access_request=access_request, start_dt=start_dt, end_dt=end_dt, expired=expired, email_ticket=email_ticket)
def _is_past_event(self, event): end_dt = get_access_dates(get_last_request(event))[1] return end_dt < now_utc()