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))
|
||||
|
||||
|
||||
def get(self, key, default=None):
|
||||
return super().get(key.title(), default)
|
||||
|
||||
|
||||
def as_dict(self):
|
||||
data = {}
|
||||
|
||||
|
|
|
@ -155,6 +155,9 @@ class Response:
|
|||
|
||||
def set_error(self, message, status=500):
|
||||
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',
|
||||
context = {
|
||||
'error_message': message,
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import json
|
||||
|
||||
from sqlalchemy import ForeignKey
|
||||
from sqlalchemy import (
|
||||
Column as sqlalchemy_column,
|
||||
|
@ -9,6 +11,12 @@ from ..dotdict import DotDict
|
|||
|
||||
ptype = type
|
||||
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):
|
||||
|
@ -34,7 +42,9 @@ class Column(sqlalchemy_column):
|
|||
except KeyError:
|
||||
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
|
||||
|
||||
options = [name, type]
|
||||
|
|
Loading…
Reference in a new issue