예제 #1
0
 def test_reset_view_staff(self):
     logged_in = self.client.login(username=self.staff['username'], password=self.staff['password'])
     self.assertTrue(logged_in)
     response = self.client.get('/reset/')
     self.assertEqual(response.status_code, 405)
     
     #set some setting
     dynamic_settings.set('TEST_SETTING1', 500, 'int')
     self.assertEqual(dynamic_settings.TEST_SETTING1, 500)
     response = self.client.post('/reset/', {'key': 'TEST_SETTING1'})
     self.assertEqual(response.status_code, 200)
     content_json = simplejson.loads(response.content)
     self.assertEqual(content_json['status'], 'success')
     self.assertEqual(content_json['value'], 73)
     self.assertEqual(content_json['type'], 'int')
     self.assertEqual(dynamic_settings.TEST_SETTING1, 73)
     #call view without key
     response = self.client.post('/reset/')
     self.assertEqual(response.status_code, 200)
     content_json = simplejson.loads(response.content)
     self.assertEqual(content_json['status'], 'error')
     #reset a key wjhich is already reseted
     response = self.client.post('/reset/', {'key': 'TEST_SETTING3'})
     self.assertEqual(response.status_code, 200)
     content_json = simplejson.loads(response.content)
     self.assertEqual(content_json['status'], 'error')
     self.assertEqual(dynamic_settings.TEST_SETTING1, 73)
     
     self.client.logout()
예제 #2
0
 def test_reset_view_normal(self):
     logged_in = self.client.login(username=self.normal['username'], password=self.normal['password'])
     self.assertTrue(logged_in)
     response = self.client.get('/reset/')
     #attempt to log the user into admin
     self.assertEqual(response.status_code, 200)
     
     dynamic_settings.set('TEST_SETTING1', 500, 'int')
     self.assertEqual(dynamic_settings.TEST_SETTING1, 500)
     response = self.client.post('/reset/', {'key': 'TEST_SETTING1'})
     self.assertEqual(response.status_code, 200)
     self.assertEqual(dynamic_settings.TEST_SETTING1, 500)
     dynamic_settings.reset('TEST_SETTING1')
     self.assertEqual(dynamic_settings.TEST_SETTING1, 73)
     
     self.client.logout()
예제 #3
0
def dynamicsettings_set(request):
    """A view to handle the POST request to 
    set a setting in the database
    
    Params:
        - ``request``: a django http request object
        
    Returns:
        - a response as JSON including the following fields:
            - ``status``: "success" if the setting was saved in
               the database, "error" in other cases
            - on success:
                - ``value``: the new value of the setting (which is
                  saved in the database)
                - ``type``: the new type of the setting, can only differ
                   from the original type if it was ``NoneType``
            - on error:
                - ``message``: the message describing the error
                - ``form``: the validated form rendered in a template
                  (will show the error in the form)
    """
    if request.method=='POST':
        response_dict = {}
        settings_form = forms.SettingsForm(request.POST)
        if settings_form.is_valid():
            form_data = settings_form.cleaned_data
            changed = settings.set(form_data['key'], form_data['value'], form_data['type'])
            if changed is True:
                value = settings.__getattr__(form_data['key'])
                if isinstance(value, (list, tuple, dict)):
                    value = simplejson.dumps(value, indent=4)
                response_dict.update({
                    'status': 'success',
                    'value': value,
                    'type': form_data['type'],
                })
        else:
            form_dict = {'settings_form': settings_form}
            form_dict.update(csrf_processor(request))
            settings_form_rendered = template.loader.render_to_string('dynamicsettings/settings_form.html', form_dict)
            response_dict.update({
                'status': 'error',
                'message': settings_form.errors['__all__'],
                'form': settings_form_rendered
            })
        return http.HttpResponse(simplejson.dumps(response_dict, indent=4), mimetype="text/plain")
    return http.HttpResponseNotAllowed(['GET', 'PUT', 'DELETE', 'HEAD', 'TRACE', 'OPTIONS', 'CONNECT', 'PATCH'])