1 | from datetime import datetime, date |
---|
2 | from decimal import Decimal |
---|
3 | from ..adapters.sqlite import SQLite |
---|
4 | from .base import ListsParser, DateParser, TimeParser, DateTimeParser, JSONParser |
---|
5 | from . import parsers, for_type, before_parse |
---|
6 | |
---|
7 | |
---|
8 | @parsers.register_for(SQLite) |
---|
9 | class SQLiteParser(ListsParser, DateParser, TimeParser, DateTimeParser, JSONParser): |
---|
10 | @before_parse("decimal") |
---|
11 | def decimal_extras(self, field_type): |
---|
12 | return {"decimals": field_type[8:-1].split(",")[1].strip()} |
---|
13 | |
---|
14 | @for_type("decimal") |
---|
15 | def _decimal(self, value, decimals): |
---|
16 | value = "{0:.{precision}f}".format(value, precision=decimals) |
---|
17 | return Decimal(value) |
---|
18 | |
---|
19 | @for_type("date") |
---|
20 | def _date(self, value): |
---|
21 | if not isinstance(value, date): |
---|
22 | return DateParser._declared_parsers_["_date"].f(self, value) |
---|
23 | return value |
---|
24 | |
---|
25 | @for_type("datetime") |
---|
26 | def _datetime(self, value): |
---|
27 | if not isinstance(value, datetime): |
---|
28 | return DateTimeParser._declared_parsers_["_datetime"].f(self, value) |
---|
29 | return value |
---|