source: OpenRLabs-Git/deploy/rlabs-docker/web2py-rlabs/gluon/packages/dal/pydal/parsers/oracle.py

main
Last change on this file was 42bd667, checked in by David Fuertes <dfuertes@…>, 4 years ago

Historial Limpio

  • Property mode set to 100755
File size: 1.6 KB
Line 
1from ..adapters.oracle import Oracle
2import json
3from .base import BasicParser, ListsParser
4from datetime import datetime, date, time, timedelta
5from base64 import b64decode
6from .._compat import to_native
7from . import parsers, for_type
8
9
10class OracleParser(BasicParser):
11    @for_type("integer")
12    def _integer(self, value):
13        return int(value)
14
15    @for_type("text")
16    def _text(self, value):
17        return value
18
19    @for_type("clob")
20    def _clob(self, value):
21        return value
22
23    @for_type("blob")
24    def _blob(self, value):
25        decoded = b64decode(value.read())
26        try:
27            decoded = to_native(decoded)
28        except:
29            pass
30        return decoded
31
32    @for_type("json")
33    def _json(self, value):
34        return json.loads(value)
35
36    @for_type("date")
37    def _date(self, value):
38        if isinstance(value, datetime):
39            return value.date()
40        (y, m, d) = map(int, str(value)[:10].strip().split("-"))
41        return date(y, m, d)
42
43    @for_type("list:reference")
44    def _list_references(self, value, field_type):
45        return super(OracleParser, self)._list_references.f(self, value, field_type)
46
47
48class OracleListsParser(ListsParser):
49    @for_type("list:integer")
50    def _list_integers(self, value):
51        return super(OracleListsParser, self)._list_integers.f(self, value)
52
53    @for_type("list:string")
54    def _list_strings(self, value):
55        return super(OracleListsParser, self)._list_strings.f(self, value)
56
57
58@parsers.register_for(Oracle)
59class OracleCommonparser(OracleParser, OracleListsParser):
60    pass
Note: See TracBrowser for help on using the repository browser.