source: OpenRLabs-Git/deploy/rlabs-docker/web2py-rlabs/gluon/packages/dal/pydal/representers/mongo.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.7 KB
Line 
1import datetime
2from .._compat import PY2, basestring, to_bytes
3from ..adapters.mongo import Mongo, MongoBlob
4from ..helpers.classes import Reference
5from ..objects import Row
6from .base import NoSQLRepresenter
7from . import representers, for_type
8
9
10@representers.register_for(Mongo)
11class MongoRepresenter(NoSQLRepresenter):
12    @for_type("id")
13    def _id(self, value):
14        return self.adapter.object_id(value)
15
16    @for_type("reference")
17    def _reference(self, value):
18        if isinstance(value, (Row, Reference)):
19            value = value["id"]
20        return self.adapter.object_id(value)
21
22    @for_type("date")
23    def _date(self, value):
24        # this piece of data can be stripped off based on the fieldtype
25        t = datetime.time(0, 0, 0)
26        # mongodb doesn't have a date object and so it must datetime,
27        # string or integer
28        return datetime.datetime.combine(value, t)
29
30    @for_type("time")
31    def _time(self, value):
32        # this piece of data can be stripped off based on the fieldtype
33        d = datetime.date(2000, 1, 1)
34        # mongodb doesn't have a time object and so it must datetime,
35        # string or integer
36        return datetime.datetime.combine(d, value)
37
38    @for_type("datetime")
39    def _datetime(self, value):
40        return value
41
42    @for_type("blob")
43    def _blob(self, value):
44        if isinstance(value, basestring) and value == "":
45            value = None
46        return MongoBlob(value) if PY2 else to_bytes(value)
47
48    @for_type("list:reference")
49    def _list_reference(self, value):
50        if not isinstance(value, list):
51            return self.adapter.object_id(value)
52        values = self._represent_list(value)
53        return list(map(self.adapter.object_id, values))
Note: See TracBrowser for help on using the repository browser.