def compute_collection(collection, sync=False): key = cache.object_key(Collection, collection.id, 'stats') if cache.get(key) and not sync: return cache.set(key, 'computed', expires=cache.EXPIRE - 60) log.info("Collection [%s] changed, computing...", collection.id) index.update_collection_stats(collection.id) index.index_collection(collection, sync=sync)
def compute_collection(collection, force=False, sync=False): key = cache.object_key(Collection, collection.id, "stats") if cache.get(key) is not None and not force: return refresh_collection(collection.id) log.info("[%s] Computing statistics...", collection) index.update_collection_stats(collection.id) cache.set(key, datetime.utcnow().isoformat()) index.index_collection(collection, sync=sync)
def compute_collection(collection, force=False, sync=False): key = cache.object_key(Collection, collection.id, "stats") if cache.get(key) is not None and not force: return refresh_collection(collection.id) log.info("[%s] Computing statistics...", collection) index.update_collection_stats(collection.id) cache.set(key, "computed", expires=cache.EXPIRE) index.index_collection(collection, sync=sync)
def iter_value_entities(type_, value): value = stringify(value) if type_.group is None or value is None: return key = cache.object_key(type(type_), value) degree_key = cache.object_key(type(type_), value, 'deg1') degree = cache.get(degree_key) if degree is not None: for item in cache.kv.sscan_iter(key): qname, entity_id = item.decode('utf-8').split('@', 1) prop = model.get_qname(qname) yield entity_id, prop else: degree = 0 pipe = cache.kv.pipeline() for entity_id, prop in _iter_value_entities(type_, value): yield entity_id, prop item = '@'.join((prop.qname, entity_id)) pipe.sadd(key, item) degree += 1 pipe.set(degree_key, degree, ex=cache.EXPIRE) pipe.execute()
def logout(): """Destroy the current authz session (state). --- post: summary: Destroy the current state. responses: '200': description: Done tags: - Role """ request.rate_limit = None redirect_url = settings.APP_UI_URL if settings.OAUTH: metadata = oauth.provider.load_server_metadata() logout_endpoint = metadata.get("end_session_endpoint") if logout_endpoint is not None: query = { "post_logout_redirect_uri": redirect_url, "id_token_hint": cache.get(_token_session(request.authz.token_id)), } redirect_url = logout_endpoint + "?" + urlencode(query) request.authz.destroy() return jsonify({"redirect": redirect_url})