Beispiel #1
0
    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')
Beispiel #2
0
 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')))
Beispiel #3
0
    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'))
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #7
0
 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)
Beispiel #9
0
 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)
Beispiel #11
0
 def _is_past_event(self, event):
     end_dt = get_access_dates(get_last_request(event))[1]
     return end_dt < now_utc()