34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
from datetime import datetime, date
|
|
from decimal import Decimal
|
|
from ..adapters.sqlite import SQLite
|
|
from .base import ListsParser, DateParser, TimeParser, DateTimeParser, \
|
|
JSONParser
|
|
from . import parsers, for_type, before_parse
|
|
|
|
|
|
@parsers.register_for(SQLite)
|
|
class SQLiteParser(
|
|
ListsParser, DateParser, TimeParser, DateTimeParser, JSONParser
|
|
):
|
|
@before_parse('decimal')
|
|
def decimal_extras(self, field_type):
|
|
return {'decimals': field_type[8:-1].split(',')[-1]}
|
|
|
|
@for_type('decimal')
|
|
def _decimal(self, value, decimals):
|
|
value = ('%.' + decimals + 'f') % value
|
|
return Decimal(value)
|
|
|
|
@for_type('date')
|
|
def _date(self, value):
|
|
if not isinstance(value, date):
|
|
return DateParser._declared_parsers_['_date'].f(self, value)
|
|
return value
|
|
|
|
@for_type('datetime')
|
|
def _datetime(self, value):
|
|
if not isinstance(value, datetime):
|
|
return DateTimeParser._declared_parsers_['_datetime'].f(
|
|
self, value)
|
|
return value
|