Example #1
0
    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
Example #2
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)
Example #3
0
    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'
        )
Example #4
0
    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
)