Exemple #1
0
 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)
Exemple #2
0
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)
Exemple #3
0
 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)
Exemple #4
0
 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)
Exemple #5
0
 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)
Exemple #6
0
 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)
Exemple #7
0
    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)
Exemple #8
0
    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)
Exemple #9
0
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)
Exemple #10
0
 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)
Exemple #11
0
 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})
Exemple #12
0
 def to_list(self, length):
     data = yield self.db_cursor.to_list(length)
     raise gen.Return([self.col_cls(**e) for e in data])
Exemple #13
0
 def remove(self):
     ret = yield self.get_collection().remove({'_id': self['_id']})
     raise gen.Return(ret)
Exemple #14
0
 def first(self):
     result = yield self.to_list(1)
     raise gen.Return(result[0] if result else None)