def update(self, queue, subscription_id, project=None, **kwargs): names = ('subscriber', 'ttl', 'options') key_transform = lambda x: 'u' if x == 'subscriber' else x[0] fields = common_utils.fields(kwargs, names, pred=lambda x: x is not None, key_transform=key_transform) assert fields, ('`subscriber`, `ttl`, ' 'or `options` not found in kwargs') new_ttl = fields.get('t', None) if new_ttl is not None: now = timeutils.utcnow_ts() now_dt = datetime.datetime.utcfromtimestamp(now) expires = now_dt + datetime.timedelta(seconds=new_ttl) fields['e'] = expires try: res = self._collection.update( { '_id': utils.to_oid(subscription_id), 'p': project }, {'$set': fields}, upsert=False) except pymongo.errors.DuplicateKeyError: raise errors.SubscriptionAlreadyExists() if not res['updatedExisting']: raise errors.SubscriptionDoesNotExist(subscription_id)
def get(self, queue, subscription_id, project=None): res = self._collection.find_one({'_id': utils.to_oid(subscription_id), 'p': project}) if not res: raise errors.SubscriptionDoesNotExist(subscription_id) return _normalize(res)
def confirm(self, queue, subscription_id, project=None, confirmed=True): res = self._collection.update({'_id': utils.to_oid(subscription_id), 'p': project}, {'$set': {'c': confirmed}}, upsert=False) if not res['updatedExisting']: raise errors.SubscriptionDoesNotExist(subscription_id)
def get(self, queue, subscription_id, project=None): res = self._collection.find_one({'_id': utils.to_oid(subscription_id), 'p': project}) if not res: raise errors.SubscriptionDoesNotExist(subscription_id) now = timeutils.utcnow_ts() return _basic_subscription(res, now)
def update(self, queue, subscription_id, project=None, **kwargs): names = ('subscriber', 'ttl', 'options') key_transform = lambda x: 'u' if x == 'subscriber' else x[0] fields = common_utils.fields(kwargs, names, pred=lambda x: x is not None, key_transform=key_transform) assert fields, ('`subscriber`, `ttl`, ' 'or `options` not found in kwargs') res = self._collection.update({'_id': utils.to_oid(subscription_id), 'p': project}, {'$set': fields}, upsert=False) if not res['updatedExisting']: raise errors.SubscriptionDoesNotExist(subscription_id)