sql.table.Column: force default to be server_default, http_server_async.response.Response: return json response when appropriate
This commit is contained in:
parent
04e7fc258b
commit
6b45bb1ff6
|
@ -62,6 +62,10 @@ class Headers(DotDict):
|
||||||
super().__setitem__(key, HeaderItem(key, value))
|
super().__setitem__(key, HeaderItem(key, value))
|
||||||
|
|
||||||
|
|
||||||
|
def get(self, key, default=None):
|
||||||
|
return super().get(key.title(), default)
|
||||||
|
|
||||||
|
|
||||||
def as_dict(self):
|
def as_dict(self):
|
||||||
data = {}
|
data = {}
|
||||||
|
|
||||||
|
|
|
@ -155,6 +155,9 @@ class Response:
|
||||||
|
|
||||||
def set_error(self, message, status=500):
|
def set_error(self, message, status=500):
|
||||||
try:
|
try:
|
||||||
|
if self.request and 'json' in self.request.headers.getone('accept', ''):
|
||||||
|
return self.set_json({'error': message, 'code': status}, status=status)
|
||||||
|
|
||||||
return self.set_template('error.haml',
|
return self.set_template('error.haml',
|
||||||
context = {
|
context = {
|
||||||
'error_message': message,
|
'error_message': message,
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import json
|
||||||
|
|
||||||
from sqlalchemy import ForeignKey
|
from sqlalchemy import ForeignKey
|
||||||
from sqlalchemy import (
|
from sqlalchemy import (
|
||||||
Column as sqlalchemy_column,
|
Column as sqlalchemy_column,
|
||||||
|
@ -9,6 +11,12 @@ from ..dotdict import DotDict
|
||||||
|
|
||||||
ptype = type
|
ptype = type
|
||||||
SqlTypes = {t.lower(): getattr(Types, t) for t in dir(Types) if not t.startswith('_')}
|
SqlTypes = {t.lower(): getattr(Types, t) for t in dir(Types) if not t.startswith('_')}
|
||||||
|
default_types = {
|
||||||
|
dict: json.dumps,
|
||||||
|
list: json.dumps,
|
||||||
|
tuple: json.dumps,
|
||||||
|
bool: lambda data: "1" if data else "0"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class Column(sqlalchemy_column):
|
class Column(sqlalchemy_column):
|
||||||
|
@ -34,7 +42,9 @@ class Column(sqlalchemy_column):
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raise KeyError(f'Invalid SQL data type: {type}')
|
raise KeyError(f'Invalid SQL data type: {type}')
|
||||||
|
|
||||||
if kwargs.get('default'):
|
if 'default' in kwargs.keys():
|
||||||
|
value = kwargs.pop('default')
|
||||||
|
kwargs['server_default'] = default_types.get(ptype(value), str)(value)
|
||||||
kwargs['nullable'] = False
|
kwargs['nullable'] = False
|
||||||
|
|
||||||
options = [name, type]
|
options = [name, type]
|
||||||
|
|
Loading…
Reference in a new issue