Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

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

26

27

28

29

""" 

    marvin.fields 

    ~~~~~~~~~~~~~~~~~ 

 

    Some custom form field types used by marvin. 

 

""" 

 

from wtforms import widgets 

from wtforms.fields import Field 

import ujson as json 

 

 

class JSONField(Field): 

    """ A field that validates and processes JSON input. """ 

    widget = widgets.TextInput() 

 

    def process_formdata(self, valuelist): 

29        if valuelist: 

            try: 

                self.data = json.loads(valuelist[0]) 

                # don't accept anything else than javascript objects (like lists, strings, etc) 

                if not isinstance(self.data, dict): 

                    raise ValueError 

            except ValueError: 

                self.data = None 

                raise ValueError('Not valid JSON.') 

        else: 

            self.data = None