Beispiel #1
0
    def test_profile_dynamic_fields(self):
        from oioioi.base.preferences import PreferencesFactory, \
                PreferencesSaved

        def callback_func(sender, **kwargs):
            self.assertEquals(sender.cleaned_data['dog'], 'Janusz')
            self.assertEquals(sender.cleaned_data['answer'], 42)

        try:
            PreferencesFactory.add_field(
                'dog',
                CharField,
                lambda n, u: 'Andrzej',
                label='Doggy'
            )
            PreferencesFactory.add_field(
                'answer',
                IntegerField,
                lambda n, u: 72,
                label="The answer to everything"
            )
            PreferencesSaved.connect(callback_func)

            self.client.login(username='******')
            url = reverse('edit_profile')

            response = self.client.get(url)

            for text in ['Doggy', 'Andrzej', '72', 'The answer to everything']:
                self.assertIn(text, response.content)

            data = {'username': '******', 'first_name': 'fn',
                    'last_name': 'ln', 'email': '*****@*****.**',
                    'dog': 'Janusz', 'answer': '42'}
            self.client.post(url, data, follow=True)
            # callback_func should be called already
        finally:
            PreferencesSaved.disconnect(callback_func)
            PreferencesFactory.clear_all_fields()