File: fields.py

package info (click to toggle)
python-django-constance 4.3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 796 kB
  • sloc: python: 2,080; makefile: 25; javascript: 23; sh: 6
file content (25 lines) | stat: -rw-r--r-- 584 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import json

from django.forms import fields
from django.forms import widgets


class JsonField(fields.CharField):
    widget = widgets.Textarea

    def __init__(self, rows: int = 5, **kwargs):
        self.rows = rows
        super().__init__(**kwargs)

    def widget_attrs(self, widget: widgets.Widget):
        attrs = super().widget_attrs(widget)
        attrs['rows'] = self.rows
        return attrs

    def to_python(self, value):
        if value:
            return json.loads(value)
        return {}

    def prepare_value(self, value):
        return json.dumps(value)