Projet

Général

Profil

0001-workflows-make-resubmit-work-with-anonymous-users-30.patch

Frédéric Péters, 18 février 2019 11:19

Télécharger (3,4 ko)

Voir les différences:

Subject: [PATCH] workflows: make resubmit work with anonymous users (#30724)

 tests/test_form_pages.py | 18 ++++++++++++++++++
 wcs/forms/root.py        |  6 ++++--
 wcs/wf/resubmit.py       |  4 +++-
 3 files changed, 25 insertions(+), 3 deletions(-)
tests/test_form_pages.py
4984 4984
    resp = resp.follow()
4985 4985
    assert resp.forms[1]['f2'].value == 'XXX'
4986 4986

  
4987
    # anonymous
4988
    formdef2.data_class().wipe()
4989
    app = get_app(pub)
4990
    resp = app.get('/form-title/')
4991
    resp.form['f1'] = 'foo'
4992
    resp = resp.form.submit('submit') # -> validation
4993
    resp = resp.form.submit('submit') # -> submission
4994
    resp = resp.follow()
4995
    resp = resp.form.submit('button_resubmit')
4996
    resp = resp.follow()
4997
    assert 'new draft' in resp.body
4998
    assert formdef2.data_class().select()[0].status == 'draft'
4999
    assert formdef2.data_class().select()[0].data.get('1') is None
5000
    assert formdef2.data_class().select()[0].data.get('2') == 'foo'
5001
    resp = resp.click('new draft')
5002
    resp = resp.follow()
5003
    assert resp.forms[1]['f2'].value == 'foo'
5004

  
4987 5005
def test_form_custom_select_template(pub):
4988 5006
    formdef = create_formdef()
4989 5007
    formdef.fields = [
wcs/forms/root.py
1259 1259
                return redirect(get_publisher().get_backoffice_url() + '/submission/')
1260 1260
            return PublicFormStatusPage(self.formdef, filled)
1261 1261

  
1262
        if not (get_request().is_in_backoffice() or self.has_draft_support()):
1262
        session = get_session()
1263
        if not (get_request().is_in_backoffice() or
1264
                self.has_draft_support() or
1265
                session.is_anonymous_submitter(filled)):
1263 1266
            # don't allow restoring drafts if drafts are no longer enabled for
1264 1267
            # this form.
1265 1268
            raise errors.AccessForbiddenError()
1266 1269

  
1267
        session = get_session()
1268 1270
        if not (get_request().is_in_backoffice() and filled.backoffice_submission):
1269 1271
            if session.is_anonymous_submitter(filled):
1270 1272
                pass
wcs/wf/resubmit.py
14 14
# You should have received a copy of the GNU General Public License
15 15
# along with this program; if not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from quixote import get_publisher, get_request
17
from quixote import get_publisher, get_request, get_session
18 18

  
19 19
from qommon import _
20 20
from wcs.workflows import WorkflowStatusItem, register_item_class
......
110 110
        }
111 111
        formdata.update_workflow_data(workflow_data)
112 112
        formdata.store()
113
        if formdata.user_id is None and not new_formdata.backoffice_submission:
114
            get_session().mark_anonymous_formdata(new_formdata)
113 115

  
114 116
    def add_parameters_widgets(self, form, parameters, prefix='', formdef=None):
115 117
        super(ResubmitWorkflowStatusItem, self).add_parameters_widgets(
116
-