def dataset_with_slug(slug): dataset = queries.get_dataset(slug, {"_id": False}) is_modal = request.args.get('modal', default=0, type=int) provider = queries.col_providers().find_one( {"name": dataset['provider_name']}, {"metadata": False}) #count_series = queries.col_series().count({"provider_name": dataset['provider_name'], # "dataset_code": dataset['dataset_code']}) url_provider = url_for('.explorer_p', provider=provider["slug"]) url_dataset = url_for('.explorer_d', dataset=dataset["slug"]) url_dataset_direct = url_for('.dataset-by-slug', slug=dataset["slug"], _external=True) return render_template( "dataset-unit-modal.html", is_modal=is_modal, url_provider=url_provider, url_dataset=url_dataset, url_dataset_direct=url_dataset_direct, dataset=dataset, provider=provider, #count=count_series )
def ajax_providers_list(): query = {"enable": True} projection = {"_id": False, "slug": True, "name": True} docs = [ doc for doc in queries.col_providers().find(query, projection).sort( "name", ASCENDING) ] return json_tools.json_response(docs)
def all_providers(): cursor = queries.col_providers().find({}) providers = [doc for doc in cursor] datasets_counters = queries.datasets_counter_status() return render_template("admin/providers.html", providers=providers, datasets_counters=datasets_counters)
def change_status_provider(slug): query = {"slug": slug} provider = queries.col_providers().find_one(query) if not provider: abort(404) query_update = {} if provider["enable"]: query_update["enable"] = False else: query_update["enable"] = True queries.col_providers().find_one_and_update(query, {"$set": query_update}) datasets_query = {"provider_name": provider["name"]} queries.col_datasets().update_many(datasets_query, {"$set": query_update}) return redirect(url_for(".providers"))
def sitemap_providers(): query = {"enable": True} providers = queries.col_providers().find(query, { '_id': False, 'slug': True }) for doc in providers: yield ('views.explorer_p', { 'provider': doc['slug'] }, None, "weekly", 0.9)
def stats_series(): cursor = queries.col_providers().find({}, {"name": True}) provider_names = [doc["name"] for doc in cursor] result = [] total = 0 for provider in provider_names: r = {"_id": provider, "count": queries.col_series().count({"provider_name": provider})} result.append(r) total += r["count"] #result = list(queries.col_series().aggregate([{"$group": {"_id": "$provider_name", "count": {"$sum": 1}}}, {"$sort": {"count": -1} }], allowDiskUse=True)) return render_template("admin/stats-series.html", result=result, total=total)
def all_datasets_for_provider_slug(slug): provider = queries.col_providers().find_one({"slug": slug}) if not provider: abort(404) projection = {"dimension_list": False, "attribute_list": False, "concepts": False, "codelists": False} datasets = queries.col_datasets().find({"provider_name": provider["name"]}, projection) series_counters = queries.series_counter(match={"provider_name": provider["name"]}) return render_template("admin/datasets.html", provider=provider, series_counters=series_counters, datasets=datasets)
def index(): cursor = queries.col_providers().find({}, {"metadata": False}) providers = [doc for doc in cursor] total_datasets = 0 total_series = 0 datas = {} for provider in providers: #provider["count_datasets"] = queries.col_datasets().count({"provider_name": provider["name"]}) #provider["count_series"] = queries.col_series().count({"provider_name": provider["name"]}) datas[provider["slug"]] = provider #total_datasets += provider["count_datasets"] #total_series += provider["count_series"] return render_template("index.html", providers=datas, total_datasets=total_datasets, total_series=total_series)
def change_status_dataset(slug): query = {"slug": slug} dataset = queries.col_datasets().find_one(query) if not dataset: abort(404) query_update = {} if dataset["enable"]: query_update["enable"] = False else: query_update["enable"] = True queries.col_datasets().find_one_and_update(query, {"$set": query_update}) query = {"name": dataset["provider_name"]} provider = queries.col_providers().find_one(query) return redirect(url_for(".datasets", slug=provider["slug"]))
def stats_series(): cursor = queries.col_providers().find({}, {"name": True}) provider_names = [doc["name"] for doc in cursor] result = [] total = 0 for provider in provider_names: r = { "_id": provider, "count": queries.col_series().count({"provider_name": provider}) } result.append(r) total += r["count"] #result = list(queries.col_series().aggregate([{"$group": {"_id": "$provider_name", "count": {"$sum": 1}}}, {"$sort": {"count": -1} }], allowDiskUse=True)) return render_template("admin/stats-series.html", result=result, total=total)
def index(): cursor = queries.col_providers().find({}, {"metadata": False}) providers = [doc for doc in cursor] total_datasets = 0 total_series = 0 datas = {} for provider in providers: #provider["count_datasets"] = queries.col_datasets().count({"provider_name": provider["name"]}) #provider["count_series"] = queries.col_series().count({"provider_name": provider["name"]}) datas[provider["slug"]] = provider #total_datasets += provider["count_datasets"] #total_series += provider["count_series"] return render_template("index.html", providers=datas, total_datasets=total_datasets, total_series=total_series )
def all_datasets_for_provider_slug(slug): provider = queries.col_providers().find_one({"slug": slug}) if not provider: abort(404) projection = { "dimension_list": False, "attribute_list": False, "concepts": False, "codelists": False } datasets = queries.col_datasets().find({"provider_name": provider["name"]}, projection) series_counters = queries.series_counter( match={"provider_name": provider["name"]}) return render_template("admin/datasets.html", provider=provider, series_counters=series_counters, datasets=datasets)
def dataset_with_slug(slug): dataset = queries.get_dataset(slug, {"_id": False}) is_modal = request.args.get('modal', default=0, type=int) provider = queries.col_providers().find_one({"name": dataset['provider_name']}, {"metadata": False}) #count_series = queries.col_series().count({"provider_name": dataset['provider_name'], # "dataset_code": dataset['dataset_code']}) url_provider = url_for('.explorer_p', provider=provider["slug"]) url_dataset = url_for('.explorer_d', dataset=dataset["slug"]) url_dataset_direct = url_for('.dataset-by-slug', slug=dataset["slug"], _external=True) return render_template("dataset-unit-modal.html", is_modal=is_modal, url_provider=url_provider, url_dataset=url_dataset, url_dataset_direct=url_dataset_direct, dataset=dataset, provider=provider, #count=count_series )
def series_with_slug(slug, version): """ Dans tous les cas: - charger la version latest - charger toutes les révisions antérieurs à la version latest """ is_modal = request.args.get('modal', default=0, type=int) is_debug = request.args.get('debug') #_version = request.args.get('version', default="latest") is_latest = True query = {"slug": slug} '''Load always latest series from col series''' series_latest = queries.col_series().find_one(query) if not series_latest: abort(404) if version >= 0 and version != series_latest['version']: query['version'] = version store = queries.col_series_archives().find_one(query) if not store: abort(404) series = series_archives_load(store) is_latest = False else: series = series_latest provider = queries.col_providers().find_one( {"name": series_latest['provider_name']}, {"metadata": False}) if not provider: abort(404) if provider["enable"] is False: abort(307) dataset = queries.col_datasets().find_one( { 'provider_name': series_latest['provider_name'], "dataset_code": series_latest['dataset_code'] }, {"metadata": False}) if not dataset: abort(404) if dataset["enable"] is False: abort(307) if is_debug: '''debug mode''' result_provider = render_template_string("{{ provider|pprint|safe }}", provider=provider) result_dataset = render_template_string("{{ dataset|pprint|safe }}", dataset=dataset) result_series = render_template_string("{{ series|pprint|safe }}", series=series) return current_app.jsonify( dict(provider=result_provider, dataset=result_dataset, series=result_series)) '''Load revisions < current version''' revisions = [] if "version" in series: query_revisions = {"slug": slug, "version": {"$lt": series["version"]}} count_values = len(series['values']) for store in queries.col_series_archives().find(query_revisions).sort( 'version', DESCENDING): series_rev = series_archives_load(store) values = series_rev['values'] empty_element = count_values - len(values) values.reverse() for i in range(empty_element): values.insert(0, None) revisions.append({ "last_update_ds": series_rev['last_update_ds'], "version": series_rev['version'], "values": values, "name": series_rev["name"], "url": url_for('.series-by-slug-version', slug=slug, version=series_rev['version']) }) else: series["version"] = 0 if not "last_update_ds" in series: series["last_update_ds"] = dataset["last_update"] series["last_update_widu"] = dataset["last_update"] #view_explorer = url_for('.explorer_s', series=slug, _external=True) url_provider = url_for('.explorer_p', provider=provider["slug"]) url_dataset = url_for('.explorer_d', dataset=dataset["slug"]) url_dataset_direct = url_for('.dataset-by-slug', slug=dataset["slug"], _external=True) url_series = url_for('.series-by-slug-version', slug=slug, version=series["version"], _external=True) url_series_latest = url_for('.series-by-slug-version', slug=slug, version=series_latest["version"]) url_series_plot = url_for('.ajax_series_plot', slug=slug) url_export_csv = url_for('.export-series-csv', slug=slug) dimension_filter = ".".join( [series["dimensions"][key] for key in dataset["dimension_keys"]]) result = render_template( "series-unit-modal.html", url_provider=url_provider, url_dataset=url_dataset, url_dataset_direct=url_dataset_direct, url_series=url_series, url_series_latest=url_series_latest, url_series_plot=url_series_plot, url_export_csv=url_export_csv, series=series, is_modal=is_modal, provider=provider, dataset=dataset, is_latest=is_latest, revisions=revisions, #max_version=max_version, #view_explorer=view_explorer, dimension_filter=dimension_filter.upper(), #is_reverse=is_reverse, #obs_attributes_keys=list(set(obs_attributes_keys)), #obs_attributes_values=list(set(obs_attributes_values)), #revision_dates=list(set(revision_dates)), #max_revisions=max_revisions ) return result
def series_with_slug(slug, version): """ Dans tous les cas: - charger la version latest - charger toutes les révisions antérieurs à la version latest """ is_modal = request.args.get('modal', default=0, type=int) is_debug = request.args.get('debug') #_version = request.args.get('version', default="latest") is_latest = True query = {"slug": slug} '''Load always latest series from col series''' series_latest = queries.col_series().find_one(query) if not series_latest: abort(404) if version >= 0 and version != series_latest['version']: query['version'] = version store = queries.col_series_archives().find_one(query) if not store: abort(404) series = series_archives_load(store) is_latest = False else: series = series_latest provider = queries.col_providers().find_one({"name": series_latest['provider_name']}, {"metadata": False}) if not provider: abort(404) if provider["enable"] is False: abort(307) dataset = queries.col_datasets().find_one({'provider_name': series_latest['provider_name'], "dataset_code": series_latest['dataset_code']}, {"metadata": False}) if not dataset: abort(404) if dataset["enable"] is False: abort(307) if is_debug: '''debug mode''' result_provider = render_template_string("{{ provider|pprint|safe }}", provider=provider) result_dataset = render_template_string("{{ dataset|pprint|safe }}", dataset=dataset) result_series = render_template_string("{{ series|pprint|safe }}", series=series) return current_app.jsonify(dict(provider=result_provider, dataset=result_dataset, series=result_series)) '''Load revisions < current version''' revisions = [] if "version" in series: query_revisions = {"slug": slug, "version": {"$lt": series["version"]}} count_values = len(series['values']) for store in queries.col_series_archives().find(query_revisions).sort('version', DESCENDING): series_rev = series_archives_load(store) values = series_rev['values'] empty_element = count_values - len(values) values.reverse() for i in range(empty_element): values.insert(0, None) revisions.append({ "last_update_ds": series_rev['last_update_ds'], "version": series_rev['version'], "values": values, "name": series_rev["name"], "url": url_for('.series-by-slug-version', slug=slug, version=series_rev['version'])}) else: series["version"] = 0 if not "last_update_ds" in series: series["last_update_ds"] = dataset["last_update"] series["last_update_widu"] = dataset["last_update"] #view_explorer = url_for('.explorer_s', series=slug, _external=True) url_provider = url_for('.explorer_p', provider=provider["slug"]) url_dataset = url_for('.explorer_d', dataset=dataset["slug"]) url_dataset_direct = url_for('.dataset-by-slug', slug=dataset["slug"], _external=True) url_series = url_for('.series-by-slug-version', slug=slug, version=series["version"], _external=True) url_series_latest = url_for('.series-by-slug-version', slug=slug, version=series_latest["version"]) url_series_plot = url_for('.ajax_series_plot', slug=slug) url_export_csv = url_for('.export-series-csv', slug=slug) dimension_filter = ".".join([series["dimensions"][key] for key in dataset["dimension_keys"]]) result = render_template( "series-unit-modal.html", url_provider=url_provider, url_dataset=url_dataset, url_dataset_direct=url_dataset_direct, url_series=url_series, url_series_latest=url_series_latest, url_series_plot=url_series_plot, url_export_csv=url_export_csv, series=series, is_modal=is_modal, provider=provider, dataset=dataset, is_latest=is_latest, revisions=revisions, #max_version=max_version, #view_explorer=view_explorer, dimension_filter=dimension_filter.upper(), #is_reverse=is_reverse, #obs_attributes_keys=list(set(obs_attributes_keys)), #obs_attributes_values=list(set(obs_attributes_values)), #revision_dates=list(set(revision_dates)), #max_revisions=max_revisions ) return result
def sitemap_providers(): query = {"enable": True} providers = queries.col_providers().find(query, {'_id': False, 'slug': True}) for doc in providers: yield ('views.explorer_p', {'provider': doc['slug']}, None, "weekly", 0.9)
def ajax_providers_list(): query = {"enable": True} projection = {"_id": False, "slug": True, "name": True} docs = [doc for doc in queries.col_providers().find(query, projection).sort("name", ASCENDING)] return json_tools.json_response(docs)