예제 #1
0
 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)
예제 #2
0
 def get(self, request, *args, **kwargs):
     """
     Retrieve App Config
     """
     initial = get_values()
     initial['data'] = json.loads(initial['data'])
     return Response(initial)
예제 #3
0
 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
예제 #4
0
 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)
예제 #5
0
 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)
예제 #6
0
 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)
예제 #7
0
 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')
예제 #8
0
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}
예제 #9
0
 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)
예제 #10
0
    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
        })
예제 #11
0
    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
            })
예제 #12
0
    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),
            })
예제 #13
0
 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)
예제 #14
0
    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)
예제 #15
0
    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)
예제 #16
0
 def get(self, request, *args, **kwargs):
     """
     Retrieve App Config
     """
     initial = get_values()
     return JsonResponse(initial)
예제 #17
0
 def setUp(self):
     self.initial_values = get_values()
예제 #18
0
 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