Ejemplo n.º 1
0
    def _process(self):
        if self.editable:
            raise UserValueError(_('Editable already exists'))

        args = parser.parse({
            'files':
            EditingFilesField(self.event,
                              self.contrib,
                              self.editable_type,
                              required=True)
        })
        service_url = editing_settings.get(self.event, 'service_url')
        initial_state = InitialRevisionState.new if service_url else InitialRevisionState.ready_for_review

        editable = create_new_editable(self.contrib, self.editable_type,
                                       session.user, args['files'],
                                       initial_state)
        if service_url:
            try:
                service_handle_new_editable(editable, session.user)
            except ServiceRequestFailed:
                raise ServiceUnavailable(
                    _('Submission failed, please try again later.'))

        return '', 201
Ejemplo n.º 2
0
    def _process(self, action, comment):
        argmap = {'tags': EditingTagsField(self.event, missing=set())}
        if action in (EditingReviewAction.update,
                      EditingReviewAction.update_accept):
            argmap['files'] = EditingFilesField(self.event,
                                                self.contrib,
                                                self.editable_type,
                                                allow_claimed_files=True,
                                                required=True)
        args = parser.parse(argmap, unknown=EXCLUDE)
        service_url = editing_settings.get(self.event, 'service_url')

        new_revision = review_editable_revision(self.revision, session.user,
                                                action, comment, args['tags'],
                                                args.get('files'))

        publish = True
        if service_url:
            try:
                resp = service_handle_review_editable(self.editable,
                                                      session.user, action,
                                                      self.revision,
                                                      new_revision)
                publish = resp.get('publish', True)
            except ServiceRequestFailed:
                raise ServiceUnavailable(
                    _('Failed processing review, please try again later.'))

        if publish and action in (EditingReviewAction.accept,
                                  EditingReviewAction.update_accept):
            publish_editable_revision(new_revision or self.revision)
        return '', 204
Ejemplo n.º 3
0
def _parse_review_args(event, review_type):
    args_schema = {
        'proposed_action': EnumField(PaperAction, required=True),
        'comment': fields.String(missing='')
    }

    for question in event.cfp.get_questions_for_review_type(review_type):
        attrs = {}
        if question.is_required:
            attrs['required'] = True
        else:
            attrs['missing'] = None

        if question.field_type == 'rating':
            field_cls = fields.Integer
        elif question.field_type == 'text':
            validators = []
            if question.field_data['max_length']:
                validators.append(validate.Length(max=question.field_data['max_length']))
            if question.field_data['max_words']:
                validators.append(max_words(question.field_data['max_words']))

            attrs['validate'] = validators
            field_cls = fields.String
        elif question.field_type == 'bool':
            field_cls = fields.Bool
        else:
            raise Exception('Invalid question field type: {}'.format(question.field_type))
        args_schema['question_{}'.format(question.id)] = field_cls(**attrs)

    data = parser.parse(args_schema)
    questions_data = {k: v for k, v in data.iteritems() if k.startswith('question_')}
    review_data = {k: v for k, v in data.iteritems() if not k.startswith('question_')}
    return questions_data, review_data
Ejemplo n.º 4
0
    def _process(self):
        args = parser.parse({
            'files': EditingFilesField(self.event, self.contrib, allow_claimed_files=True, required=True)
        })

        create_submitter_revision(self.revision, session.user, args['files'])
        return '', 204
Ejemplo n.º 5
0
 def _process_args(self):
     RHManageEventBase._process_args(self)
     args = parser.parse({
         'values': PrincipalDict(allow_groups=True, allow_external_users=True, allow_event_roles=True,
                                 allow_category_roles=True, event_id=self.event.id, missing={})
     })
     self.values = args['values']
Ejemplo n.º 6
0
    def _process(self, comment):
        args = parser.parse({
            'files': EditingFilesField(self.event, self.contrib, allow_claimed_files=True, required=True)
        })

        replace_revision(self.revision, session.user, comment, args['files'])
        return '', 204
Ejemplo n.º 7
0
 def _process(self, action, comment):
     argmap = {'tags': EditingTagsField(self.event, missing=set())}
     if action == EditingReviewAction.update:
         argmap['files'] = EditingFilesField(self.event, self.contrib, allow_claimed_files=True, required=True)
     args = parser.parse(argmap)
     review_editable_revision(self.revision, session.user, action, comment, args['tags'], args.get('files'))
     return '', 204
Ejemplo n.º 8
0
 def _process_args(self):
     RHEditingManagementBase._process_args(self)
     self.editable_type = EditableType[request.view_args['type']]
     self.editables = parser.parse({
         'editables': EditableList(required=True, event=self.event, editable_type=self.editable_type,
                                   validate=not_empty)
     })['editables']
Ejemplo n.º 9
0
    def _process_POST(self):
        if not self._can_register():
            raise ExpectedError(_('You cannot register for this event'))

        schema = make_registration_schema(self.regform)()
        form_data = parser.parse(schema)
        registration = create_registration(self.regform, form_data, self.invitation)
        return jsonify({'redirect': url_for('.display_regform', registration.locator.registrant)})
Ejemplo n.º 10
0
    def _process(self, comment, state):
        args = parser.parse({
            'tags': EditingTagsField(self.event, allow_system_tags=self.is_service_call, missing=set()),
            'files': EditingFilesField(self.event, self.contrib, self.editable_type, allow_claimed_files=True,
                                       required=True)
        })

        user = User.get_system_user() if self.is_service_call else session.user
        replace_revision(self.revision, user, comment, args['files'], args['tags'], state)
        return '', 204
Ejemplo n.º 11
0
    def _process(self):
        if self.editable:
            raise UserValueError(_('Editable already exists'))

        args = parser.parse({
            'files': EditingFilesField(self.event, self.contrib, required=True)
        })

        create_new_editable(self.contrib, self.editable_type, session.user, args['files'])
        return '', 201
Ejemplo n.º 12
0
    def _process_POST(self):
        optional_fields = self._get_optional_fields()
        schema = make_registration_schema(
            self.regform, management=self.management, registration=self.registration
        )(partial=optional_fields)
        form_data = parser.parse(schema)

        notify_user = not self.management or form_data.pop('notify_user', False)
        if self.management:
            session['registration_notify_user_default'] = notify_user
        modify_registration(self.registration, form_data, management=self.management, notify_user=notify_user)
        return jsonify({'redirect': self.success_url})
Ejemplo n.º 13
0
    def _process_POST(self, accept, reason):
        move_requests = parser.parse(
            {
                'requests':
                EventRequestList(
                    required=True, category=self.category, validate=not_empty)
            },
            unknown=EXCLUDE)['requests']

        for rq in move_requests:
            update_event_move_request(rq, accept, reason)
        notify_move_request_closure(move_requests, accept, reason)

        return '', 204
Ejemplo n.º 14
0
 def _process_POST(self):
     if self.regform.is_purged:
         raise Forbidden(
             _('Registration is disabled due to an expired retention period'
               ))
     schema = make_registration_schema(self.regform, management=True)()
     form = parser.parse(schema)
     session['registration_notify_user_default'] = notify_user = form.pop(
         'notify_user', False)
     create_registration(self.regform,
                         form,
                         management=True,
                         notify_user=notify_user)
     flash(_('The registration was created.'), 'success')
     return jsonify({'redirect': url_for('.manage_reglist', self.regform)})
Ejemplo n.º 15
0
    def _process(self):
        args = parser.parse({
            'files': EditingFilesField(self.event, self.contrib, self.editable_type, allow_claimed_files=True,
                                       required=True)
        })

        service_url = editing_settings.get(self.event, 'service_url')
        new_revision = create_submitter_revision(self.revision, session.user, args['files'])

        if service_url:
            try:
                service_handle_review_editable(self.editable, session.user, EditingReviewAction.update,
                                               self.revision, new_revision)
            except ServiceRequestFailed:
                raise ServiceUnavailable(_('Failed processing review, please try again later.'))
        return '', 204