source: OpenRLabs-Git/deploy/rlabs-docker/web2py-rlabs/gluon/packages/dal/pydal/representers/google.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.4 KB
Line 
1from .._compat import integer_types, to_unicode
2from ..adapters.google import GoogleDatastore
3from ..helpers.serializers import serializers
4from .base import NoSQLRepresenter
5from . import representers, pre, for_type
6
7long = integer_types[-1]
8
9
10@representers.register_for(GoogleDatastore)
11class GoogleDatastoreRepresenter(NoSQLRepresenter):
12    @pre(is_breaking=True)
13    def _keep_lists_for_in_operator(self, obj, field_type):
14        if (
15            isinstance(field_type, str)
16            and isinstance(obj, list)
17            and not field_type.startswith("list:")
18        ):
19            return True, [self.adapter.represent(v, field_type) for v in obj]
20        return False, obj
21
22    @for_type("json")
23    def _json(self, value):
24        return serializers.json(value)
25
26    @for_type("list:integer")
27    def _list_integer(self, value):
28        if not isinstance(value, list):
29            return int(value)
30        values = self._represent_list(value)
31        return list(map(int, values))
32
33    @for_type("list:string")
34    def _list_string(self, value):
35        if not isinstance(value, list):
36            return str(value)
37        values = self._represent_list(value)
38        return list(map(to_unicode, values))
39
40    @for_type("list:reference")
41    def _list_reference(self, value):
42        if not isinstance(value, list):
43            return long(value)
44        values = self._represent_list(value)
45        return list(map(long, values))
Note: See TracBrowser for help on using the repository browser.