Exemplo n.º 1
0
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
    )
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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"))
Exemplo n.º 6
0
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"))
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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)
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
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"]))
Exemplo n.º 12
0
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"]))
Exemplo n.º 13
0
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)
Exemplo n.º 14
0
 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
                            )
Exemplo n.º 15
0
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)
Exemplo n.º 16
0
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
                           )
Exemplo n.º 17
0
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
Exemplo n.º 18
0
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
Exemplo n.º 19
0
 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)
Exemplo n.º 20
0
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)