Projet

Général

Profil

0001-sessions-unset-disabled-deleted-user-from-session-47.patch

Frédéric Péters, 17 octobre 2020 20:29

Télécharger (2,75 ko)

Voir les différences:

Subject: [PATCH] sessions: unset disabled/deleted user from session (#47818)

 tests/test_form_pages.py | 17 +++++++++++++++++
 wcs/forms/root.py        |  3 +--
 wcs/qommon/sessions.py   |  5 +++++
 3 files changed, 23 insertions(+), 2 deletions(-)
tests/test_form_pages.py
1244 1244
    assert emails.emails.get('New form (test)')['email_rcpt'] == ['foo@localhost']
1245 1245

  
1246 1246

  
1247
def test_form_submit_with_just_disabled_user(pub, emails):
1248
    user = create_user(pub)
1249
    formdef = create_formdef()
1250
    app = login(get_app(pub), username='foo', password='foo')
1251
    formdef.data_class().wipe()
1252
    resp = app.get('/test/')
1253
    resp = resp.form.submit('submit')
1254
    assert 'Check values then click submit.' in resp
1255
    user.is_active = False
1256
    user.store()
1257
    resp = resp.form.submit('submit')
1258
    resp = resp.follow()
1259
    assert 'The form has been recorded' in resp
1260
    assert formdef.data_class().count() == 1
1261
    assert formdef.data_class().select()[0].user_id is None
1262

  
1263

  
1247 1264
def test_form_titles(pub):
1248 1265
    formdef = create_formdef()
1249 1266
    formdef.fields = [
wcs/forms/root.py
1277 1277

  
1278 1278
        filled.data = self.formdef.get_data(form)
1279 1279
        session = get_session()
1280
        if session and session.user and not str(session.user).startswith('anonymous-'):
1281
            filled.user_id = get_request().user.id
1280
        filled.user = get_request().user
1282 1281

  
1283 1282
        if get_request().get_path().startswith('/backoffice/'):
1284 1283
            filled.user_id = None
wcs/qommon/sessions.py
222 222
                    return None
223 223
            if user.is_active:
224 224
                return user
225
            else:
226
                self.set_user(None)
227

  
225 228
        return None
226 229

  
227 230
    def set_user(self, user_id):
228 231
        self.id = None # force a new session id to be assigned
229 232
        self.extra_user_variables = None
230 233
        QuixoteSession.set_user(self, user_id)
234
        if user_id is None:
235
            return
231 236
        if str(user_id).startswith('anonymous-'):
232 237
            # do not store connection time for anonymous users
233 238
            return
234
-