Added arrayfield field

This commit is contained in:
Antonio de la Rosa 2016-03-17 20:29:18 +01:00
parent d796511a50
commit 3f1942cbfb
4 changed files with 80 additions and 3 deletions

View file

@ -0,0 +1,46 @@
from paramecio.cromosoma.webmodel import PhangoField
import json
class ArrayField(PhangoField):
def __init__(self, name, field_type, required=False):
super().__init__(name, required)
self.field_type=field_type
def check(self, value):
if type(value).__name__=='str':
try:
value=json.loads(value)
except json.JSONDecodeError:
value=[]
self.error=True
self.txt_error='Sorry, the json array is invalid'
elif type(value).__name__!='list':
value=[]
self.error=True
self.txt_error='Sorry, the json array is invalid'
for k,v in enumerate(value):
value[k]=self.field_type.check(v)
final_value=json.dumps(value)
final_value=super().check(final_value)
return final_value
def get_type_sql(self):
return 'TEXT NOT NULL DEFAULT ""'
def show_formatted(self, value):
return ", ".join(value)

View file

@ -1,5 +1,5 @@
import os, sys, traceback, inspect
from importlib import import_module, reload
from importlib import import_module
from bottle import route, get, post, run, default_app, abort, request, static_file
from settings import config
from beaker.middleware import SessionMiddleware