def test_save_settings_missing_sessiondata(self): def save_settings(status, settings): pass qualifiesforexam_plugins.add( id = 'devilry_qualifiesforexam.test.plugin', url = '/some/url', title = 'Test', uses_settings = True, description = 'A test', post_statussave = save_settings ) self.assertEquals(Status.objects.count(), 0) 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, 400) self.assertEqual(content['detail'], u'The "devilry_qualifiesforexam.test.plugin"-plugin requires settings - no settings found in the session.') self.assertEquals(Status.objects.count(), 0) # The database rolled back because of the error
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)
def setUp(self): self.testhelper = TestHelper() self.testhelper.add(nodes='uni:admin(uniadmin)', subjects=['sub'], periods=[ 'oldperiod:admin(periodadmin):begins(-12):ends(2)', 'p1:admin(periodadmin):begins(-3):ends(6)', 'p2:admin(periodadmin):begins(-1):ends(6)']) self.client = RestClient() self.url = reverse('devilry_qualifiesforexam-rest-status') self.testhelper.create_superuser('superuser') qualifiesforexam_plugins.add( id = 'devilry_qualifiesforexam.test.noop-plugin', url = '/some/noop-url', title = 'Noop', post_statussave=noop, description = 'noop', pluginsettings_summary_generator = lambda status: 'noop summary' )
def test_fail_verification(self): def post_statussave(status, settings): raise PluginResultsFailedVerification('Invalid') qualifiesforexam_plugins.add( id = 'devilry_qualifiesforexam.test.plugin', url = '/some/url', title = 'Test', description = 'A test', post_statussave = post_statussave ) self.assertEquals(Status.objects.count(), 0) 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, 400) self.assertEqual(content['detail'], u'Invalid') self.assertEquals(Status.objects.count(), 0) # The database rolled back because of the error
from devilry_qualifiesforexam.registry import qualifiesforexam_plugins from django.core.urlresolvers import reverse_lazy from django.utils.translation import ugettext_lazy as _ from .post_statussave import post_statussave_subset, post_statussave_all from .summarygenerator import make_settings_summary_subset qualifiesforexam_plugins.add( id = 'devilry_qualifiesforexam_approved.all', url = reverse_lazy('devilry_qualifiesforexam_approved_all'), title = _('Students must pass ALL assignments'), description = _('Choose this option if you require your students to get a passing grade on all their assignments to qualify for final exams.'), post_statussave=post_statussave_all ) qualifiesforexam_plugins.add( id = 'devilry_qualifiesforexam_approved.subset', url = reverse_lazy('devilry_qualifiesforexam_approved_subset'), title = _('Students must pass a set of assignments selected by you'), description = _('Choose this option if you require your students to get a passing grade on a subset of their assignments to qualify for final exams. You select the assignments on the next page.'), post_statussave = post_statussave_subset, pluginsettings_summary_generator = make_settings_summary_subset, uses_settings = True )
from devilry_qualifiesforexam.registry import qualifiesforexam_plugins from django.core.urlresolvers import reverse_lazy from django.utils.translation import ugettext_lazy as _ from .summarygenerator import make_settings_summary_points qualifiesforexam_plugins.add( id = 'devilry_qualifiesforexam_select', url = reverse_lazy('devilry_qualifiesforexam_select'), title = _('Select manually'), description = _('Choose this option if you want to select the students that qualify for final exams manually.'), pluginsettings_summary_generator = make_settings_summary_points, uses_settings = False )
from devilry_qualifiesforexam.registry import qualifiesforexam_plugins from django.core.urlresolvers import reverse_lazy from django.utils.translation import ugettext_lazy as _ from .post_statussave import post_statussave from .summarygenerator import make_settings_summary_points qualifiesforexam_plugins.add( id = 'devilry_qualifiesforexam_points', url = reverse_lazy('devilry_qualifiesforexam_points'), title = _('Students must get a minimum number of points'), description = _('Choose this option if you require your students to get a minimum number of points in total on all or some of their assignments to qualify for final exams. You select the assignments on the next page.'), post_statussave = post_statussave, pluginsettings_summary_generator = make_settings_summary_points, uses_settings = True )