Exemplo n.º 1
0
    def test_save_settings(self):

        savedsettings = {}
        def save_settings(status, settings):
            savedsettings['status'] = status
            savedsettings['settings'] = settings

        qualifiesforexam_plugins.add(
            id = 'devilry_qualifiesforexam.test.plugin',
            url = '/some/url',
            title = 'Test',
            description = 'A test',
            uses_settings=True,
            post_statussave = save_settings
        )
        self.client.login(username='******', password='******')
        session = self.client.session
        session[create_settings_sessionkey('tst')] = {'test': 'settings'}
        session.save()
        content, response = self._postas('periodadmin', {
            'period': self.testhelper.sub_p1.id,
            'status': 'ready',
            'plugin': 'devilry_qualifiesforexam.test.plugin',
            'pluginsessionid': 'tst',
            'passing_relatedstudentids': []
        })
        self.assertEqual(response.status_code, 201)
        self.assertEqual(len(savedsettings), 2)
        self.assertEqual(savedsettings['settings'], {'test': 'settings'})
        self.assertIsInstance(savedsettings['status'], Status)
Exemplo n.º 2
0
 def _invoke_post_statussave(self, status):
     pluginsessionid = self.CONTENT['pluginsessionid']
     settings = None
     if qualifiesforexam_plugins.uses_settings(status.plugin):
         try:
             settings = self.request.session.pop(create_settings_sessionkey(pluginsessionid))
         except KeyError:
             msg = 'The "{0}"-plugin requires settings - no settings found in the session.'.format(status.plugin)
             raise ErrorResponse(statuscodes.HTTP_400_BAD_REQUEST, {'detail': msg})
     try:
         qualifiesforexam_plugins.post_statussave(status, settings)
     except PluginResultsFailedVerification as e:
         raise ErrorResponse(statuscodes.HTTP_400_BAD_REQUEST, {'detail': str(e)})