コード例 #1
0
ファイル: abstract_list.py プロジェクト: javfg/indico
    def _process(self):
        is_invited = request.args.get('invited') == '1'
        abstract_form_class = make_abstract_form(self.event,
                                                 session.user,
                                                 notification_option=True,
                                                 management=self.management,
                                                 invited=is_invited)
        cloned_fields = self.clone_fields(
            self.abstract) if self.abstract else {}
        form = abstract_form_class(event=self.event,
                                   management=self.management,
                                   invited=is_invited,
                                   **cloned_fields)
        if is_invited:
            del form.submitted_contrib_type
            del form.attachments
            del form.send_notifications
            del form.person_links

        if form.validate_on_submit():
            data = form.data
            submitter = None
            if is_invited:
                if form.users_with_no_account.data == 'existing':
                    submitter = data['submitter']
                else:
                    submitter = User(first_name=data['first_name'],
                                     last_name=data['last_name'],
                                     email=data['email'],
                                     is_pending=True)
                    db.session.add(submitter)
                    db.session.flush()

                data.pop('first_name')
                data.pop('last_name')
                data.pop('email')
                data.pop('users_with_no_account')
                data.pop('submitter')

            send_notifications = data.pop('send_notifications', is_invited)
            abstract = create_abstract(self.event,
                                       *get_field_values(data),
                                       send_notifications=send_notifications,
                                       submitter=submitter,
                                       is_invited=is_invited)
            flash(
                _("Abstract '{}' created successfully").format(abstract.title),
                'success')
            tpl_components = self.list_generator.render_list(abstract)
            if tpl_components.get('hide_abstract'):
                self.list_generator.flash_info_message(abstract)
            return jsonify_data(**tpl_components)
        return jsonify_form(
            form,
            back=_('Cancel'),
            disabled_until_change=(not self.abstract or is_invited),
            form_header_kwargs={'action': request.relative_url})