def test_datetime_custom(self): initial_values = get_values() f = ConstanceForm(initial=initial_values) value = initial_values['DATETIME_VALUE'] field = f.fields['DATETIME_VALUE'] clean_value = field.clean(field.to_python((value.date(), value.time()))) self.assertEqual(initial_values['DATETIME_VALUE'], clean_value)
def get(self, request, *args, **kwargs): """ Retrieve App Config """ initial = get_values() initial['data'] = json.loads(initial['data']) return Response(initial)
def get_public_dynamic_settings(): """ Returns constance keys that are public """ result = OrderedDict() for c_key, c_value in get_values().items(): if c_key in settings.CONSTANCE_EXPOSED_SETTINGS: result[c_key] = c_value return result
def get(self, request, *args, **kwargs): """ Retrieve App Config data """ initial = get_values() result = json.loads(initial['data']) param = request.GET.get('param') if param: result = {param: result.get(param)} return Response(result)
def test_save(self): initial_values = self.initial_values data = get_values().copy() data["version"] = 'test' now = datetime.datetime(2018, 1, 1, 23, 0, 0) data['DATETIME_VALUE_0'] = now.date() data['DATETIME_VALUE_1'] = now.time() del data['DATETIME_VALUE'] f = ConstanceForm(initial=initial_values, data=data) self.assertTrue(f.is_valid(), msg=f.errors.as_data()) f.save() self.assertEqual(f.cleaned_data['DATETIME_VALUE'], now)
def post(self, request, *args, **kwargs): initial = get_values() form = self.form_class(data=request.POST, initial=initial) if form.is_valid(): form.save() messages.add_message( request, messages.SUCCESS, _('Application settings updated successfully.'), ) return HttpResponseRedirect('.') return super().post(request, *args, **kwargs)
def test_newlines_normalization(self): self.client.login(username='******', password='******') request = self.rf.post('/admin/constance/config/', data={ "MULTILINE": "Hello\r\nWorld", "version": "123", }) request.user = self.superuser request._dont_enforce_csrf_checks = True with mock.patch("django.contrib.messages.add_message"): response = self.options.changelist_view(request, {}) self.assertIsInstance(response, HttpResponseRedirect) self.assertEqual(get_values()['MULTILINE'], 'Hello\nWorld')
def get_bulk_values(keys: List[str]): """ Instead of a single key, this will allow you to get multiple (if not all) values in one go. This saves a ton of individual queries. :param keys: :return: """ from constance import admin # retrieves everything, pretty quickly values = admin.get_values() # and now extract the keys we want to have return {k: values[k] for k in keys if k in values}
def post(self, request, *args, **kwargs): """ Update App Config\n POST params: - auto_login: bool - standard_optional_locators: list[str] see settings.OPTIONAL_LOCATORS """ initial = get_values() form = ConstanceForm(data=request.data, initial=initial) form.data['version'] = initial.get('version') if form.is_valid(): form.save() message = 'Application settings updated successfully.' else: message = form.errors return JsonResponse(message, safe=False)
def test_get_values(self): self.assertEqual(get_values(), { 'FLOAT_VALUE': 3.1415926536, 'BOOL_VALUE': True, 'EMAIL_VALUE': '*****@*****.**', 'INT_VALUE': 1, 'CHOICE_VALUE': 'yes', 'TIME_VALUE': datetime.time(23, 59, 59), 'DATE_VALUE': datetime.date(2010, 12, 24), 'LINEBREAK_VALUE': 'Spam spam', 'DECIMAL_VALUE': Decimal('0.1'), 'STRING_VALUE': 'Hello world', 'UNICODE_VALUE': u'Rivière-Bonjour', 'DATETIME_VALUE': datetime.datetime(2010, 8, 23, 11, 29, 24), 'LONG_VALUE': 123456 })
def test_get_values(self): self.assertEqual( get_values(), { 'FLOAT_VALUE': 3.1415926536, 'BOOL_VALUE': True, 'EMAIL_VALUE': '*****@*****.**', 'INT_VALUE': 1, 'CHOICE_VALUE': 'yes', 'TIME_VALUE': datetime.time(23, 59, 59), 'DATE_VALUE': datetime.date(2010, 12, 24), 'LINEBREAK_VALUE': 'Spam spam', 'DECIMAL_VALUE': Decimal('0.1'), 'STRING_VALUE': 'Hello world', 'UNICODE_VALUE': u'Rivière-Bonjour რუსთაველი', 'DATETIME_VALUE': datetime.datetime(2010, 8, 23, 11, 29, 24), 'LONG_VALUE': 123456 })
def test_get_values(self): self.assertEqual( get_values(), { 'FLOAT_VALUE': 3.1415926536, 'BOOL_VALUE': True, 'EMAIL_VALUE': '*****@*****.**', 'INT_VALUE': 1, 'CHOICE_VALUE': 'yes', 'TIME_VALUE': datetime.time(23, 59, 59), 'DATE_VALUE': datetime.date(2010, 12, 24), 'TIMEDELTA_VALUE': datetime.timedelta( days=1, hours=2, minutes=3), 'LINEBREAK_VALUE': 'Spam spam', 'DECIMAL_VALUE': Decimal('0.1'), 'STRING_VALUE': 'Hello world', 'DATETIME_VALUE': datetime.datetime(2010, 8, 23, 11, 29, 24), })
def post(self, request, *args, **kwargs): """ Update App Config\n Params: - auto_login: bool - standard_optional_locators: list[str], see settings.OPTIONAL_LOCATORS - data: json, - custom settings for project """ initial = get_values() data = initial.copy() data.update(request.data) if 'data' in data: data['data'] = json.dumps(data['data']) form = ConstanceForm(data=data, initial=initial) form.data['version'] = initial.get('version') if form.is_valid(): form.save() return Response('Application settings updated successfully.') else: return Response(form.errors, status=500)
def post(self, request, *args, **kwargs): """ Update App Config data\n Params: dictionary {key1: val2, key2: val2, ...} - json, custom settings for project """ initial_config = get_values() data = json.loads(initial_config['data']) data.update(request.data) updated_config = initial_config.copy() updated_config['data'] = json.dumps(data) form = ConstanceForm(data=updated_config, initial=initial_config) form.data['version'] = initial_config.get('version') if form.is_valid(): form.save() return Response('Application settings updated successfully.') else: return Response(form.errors, status=500)
def delete(self, request, *args, **kwargs): """ Delete specific key from App Config data """ initial_config = get_values() param = request.data.get('param') if not param: raise APIException('Provide key to delete') data = json.loads(initial_config['data']) data.pop(param, None) updated_config = initial_config.copy() updated_config['data'] = json.dumps(data) form = ConstanceForm(data=updated_config, initial=initial_config) form.data['version'] = initial_config.get('version') if form.is_valid(): form.save() return Response('OK') else: return Response(form.errors, status=500)
def get(self, request, *args, **kwargs): """ Retrieve App Config """ initial = get_values() return JsonResponse(initial)
def setUp(self): self.initial_values = get_values()
def get_form(self, form_class=None): initial = get_values() form = self.form_class(initial=initial) form.fields = OrderedDict(sorted(form.fields.items())) return form