Example #1
0
    def __init__(self, *args, **kwargs):
        emitter_format = kwargs.pop("emitter_format", "json")
        super(RESTHandler, self).__init__(*args, **kwargs)

        self.emitter_class, ct = Emitter.get(emitter_format)
        self.set_header("Content-Type", ct)
Example #2
0
    def default(self, o):
        if isinstance(o, ObjectId):
            return str(o)
        else:
            return super(MongoJSONEncoder, self).default(o)


class MongoJSONEmitter(Emitter):
    def render(self, request):
        return simplejson.dumps(self.data,
                                cls=MongoJSONEncoder,
                                ensure_ascii=False,
                                indent=4)


Emitter.register('json', MongoJSONEmitter, 'application/json; charset=utf-8')


class MongoCollectionHandler(RESTHandler):
    def retrieve(self, db, collection):
        db = self.application.connection[db]

        #TODO: Encontrar una forma mejor de hacer esto Esto es re peligros estoy evaluando lo que viene en la query
        criteria = db.eval(self.get_argument('criteria', '{}'))
        fields = db.eval(self.get_argument('fields', 'null'))
        skip = int(db.eval(self.get_argument('skip', '0')))
        limit = int(db.eval(self.get_argument('limit', '0')))

        col = db[collection]
        data = list(col.find(criteria, fields, skip, limit))
        self.write(data)
Example #3
0
from pymongo.objectid import ObjectId, InvalidId
import simplejson

class MongoJSONEncoder(DateTimeAwareJSONEncoder):

    def default(self, o):
        if isinstance(o, ObjectId):
            return str(o)
        else:
            return super(MongoJSONEncoder, self).default(o)

class MongoJSONEmitter(Emitter):
    def render(self, request):
        return simplejson.dumps(self.data, cls=MongoJSONEncoder, ensure_ascii=False, indent=4)
    
Emitter.register('json', MongoJSONEmitter, 'application/json; charset=utf-8')

class MongoCollectionHandler(RESTHandler):
    
    def retrieve(self, db, collection):
        db = self.application.connection[db]
        
        #TODO: Encontrar una forma mejor de hacer esto Esto es re peligros estoy evaluando lo que viene en la query
        criteria = db.eval(self.get_argument('criteria', '{}'))
        fields = db.eval(self.get_argument('fields', 'null'))
        skip = int(db.eval(self.get_argument('skip', '0')))
        limit = int(db.eval(self.get_argument('limit', '0')))
        
        col = db[collection]
        data = list(col.find(criteria, fields, skip, limit))
        self.write(data)
Example #4
0
    def __init__(self, *args, **kwargs):
        emitter_format = kwargs.pop('emitter_format', 'json')
        super(RESTHandler, self).__init__(*args, **kwargs)

        self.emitter_class, ct = Emitter.get(emitter_format)
        self.set_header('Content-Type', ct)