def count(self): col = self.get_collection() ret = yield col.find(self._filters, sort=self._sort, skip=self._skip, limit=self._limit).count() raise gen.Return(ret)
def connect(cfg): """connect to mongo database :param cfg: Dictionary containing configuration for MongoDB connection :type cfg: dict """ args = { 'tz_aware': cfg.get('tz_aware', False), 'replicaset': cfg.get('replicaset', cfg.get('replica_set')) } if 'uri' in cfg: args['host'] = cfg['uri'] else: args['host'] = cfg.get('host', 'localhost') args['port'] = int(cfg.get('port', 27017)) client = MotorClient(*args) if cfg.get('user'): yield client[cfg['db']].authenticate(cfg['user'], cfg['password']) if cfg.get('read_preference'): read_preference = cfg['read_preference'].upper() client.read_preference = getattr( pymongo.read_preferences.ReadPreference, read_preference) raise gen.Return(client)
def find_one(self, *args, **kwargs): col = self.get_collection() filters = copy(self._filters) filters.update(kwargs) if args: filters.update(args[0]) # if len(args) > 1: # self._fields = args[1] ret = yield col.find_one(filters, sort=self._sort, skip=self._skip, limit=self._limit) if ret: raise gen.Return(self.col_cls(**ret)) else: raise gen.Return(None)
def login(self, handler): email = handler.get_argument('email') password = handler.get_argument('password') user = yield model.User.find_one({'email': email}) if user and user.check_password(password): self.set_current(user) raise gen.Return(user)
def current(self, handler): rwuser = handler.get_secure_cookie('rwuser') if rwuser: rwuser = yield model.User.by_id(rwuser) if rwuser is None: rwuser = perm.Anonymous() raise gen.Return(rwuser)
def register(self, handler): email = handler.get_argument('email') password = handler.get_argument('password') user = model.User() user.email = email user.set_password(password) yield user.insert() raise gen.Return(user)
def insert(self): """Save entry in collection (updates or creates) returns Future""" ret = yield self.get_collection().insert(self) # creating a new entry without an _id MongoDB will # generate an id in ObjectId format. if not '_id' in self and isinstance(ret, bson.ObjectId): self['_id'] = ret raise gen.Return(ret)
def sync_db(self, upsert=False): """update entry in collection (updates or creates) returns Future""" if upsert and '_id' not in self: ret = yield self.get_collection().insert(self) else: ret = yield self.get_collection().update({'_id': self['_id']}, self, upsert=upsert) raise gen.Return(ret)
def connect(cfg): """connect to mongo database :param cfg: Dictionary containing configuration for MongoDB connection :type cfg: dict """ LOG.info("connecting to %s", cfg['host']) client = MotorClient(host=cfg.get('host', 'localhost'), port=cfg.get('port', 27017), tz_aware=cfg.get('tz_aware', False), replicaset=cfg.get('replicaset', cfg.get('replica_set'))) if cfg.get('user'): yield client[cfg['db']].authenticate(cfg['user'], cfg['password']) if cfg.get('read_preference'): read_preference = cfg['read_preference'].upper() client.read_preference = getattr( pymongo.read_preferences.ReadPreference, read_preference) raise gen.Return(client)
def next(self): ret = yield self.db_cursor.fetch_next if ret: raise gen.Return(self.col_cls(**self.db_cursor.next_object())) else: raise gen.Return(None)
def to_dict(self, length): data = yield self.db_cursor.to_list(length) raise gen.Return({e['_id']: self.col_cls(**e) for e in data})
def to_list(self, length): data = yield self.db_cursor.to_list(length) raise gen.Return([self.col_cls(**e) for e in data])
def remove(self): ret = yield self.get_collection().remove({'_id': self['_id']}) raise gen.Return(ret)
def first(self): result = yield self.to_list(1) raise gen.Return(result[0] if result else None)