示例#1
0
文件: handler.py 项目: D3f0/txscada
    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)
示例#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)
示例#3
0
文件: mongo.py 项目: D3f0/txscada
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)
示例#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)