Beispiel #1
0
def species(group_code):
    from art17.species import get_dal
    species_dataset = get_dal()
    if not species_dataset:
        flask.flash('No active consultation', 'danger')
        return flask.redirect('/')
    user_id = flask.g.identity.id
    data_by_region = (
        species_dataset
        .get_subject_region_overview_consultation(user_id)
    )
    relevant_regions = set(reg for n, reg in data_by_region)
    bioreg_list = [
        r for r in dal.get_biogeo_region_list()
        if r.code in relevant_regions
    ]

    return flask.render_template(
        'consultation/species.html', **{
        'bioreg_list': bioreg_list,
        'tabmenu_data': list(get_tabmenu_data()),
        'species_group': dal.get_species_group(group_code),
        'species_list': dal.get_species_list(group_code=group_code),
        'data_by_region': data_by_region,
    })
Beispiel #2
0
    def get_context_data(self):
        dal_object = self.ds_model(self.dataset_id)
        dataset = models.Dataset.query.get_or_404(self.dataset_id)
        object_regions = dal_object.get_subject_region_overview_aggregation()

        relevant_regions = set(reg for n, reg in object_regions)
        bioreg_list = dal.get_biogeo_region_list(relevant_regions)

        if dataset.preview:
            tabmenu = get_tabmenu_preview(dataset)
        else:
            tabmenu = list(get_tabmenu_data(dataset))
        return {
            'current_tab': self.current_tab,
            'bioreg_list': bioreg_list,
            'tabmenu_data': tabmenu,
            'dataset_url': flask.url_for('.dashboard',
                                         dataset_id=self.dataset_id),
            'dataset_id': self.dataset_id,
            'object_list': self.get_object_list(dataset),
            'object_regions': object_regions,
            'dataset': dataset,
            'habitat_count': dataset.agg_habitat.count(),
            'species_count': dataset.agg_species.count(),
        }
Beispiel #3
0
    def get_context(self, **kwargs):
        checklist_id = get_reporting_id()
        current_checklist = get_checklist(checklist_id)
        checklist_id = current_checklist.id

        species_refvals = load_species_refval()
        species_checklist = get_species_checklist(dataset_id=checklist_id)
        species_data = parse_checklist_ref(species_checklist)

        species_list = get_species_checklist(groupped=True,
                                             dataset_id=checklist_id)

        habitat_refvals = load_habitat_refval()
        habitat_checklist = get_habitat_checklist(dataset_id=checklist_id)
        habitat_data = parse_checklist_ref(habitat_checklist)
        habitat_list = get_habitat_checklist(distinct=True,
                                             dataset_id=checklist_id,
                                             groupped=True)
        relevant_regions = (
            {s.bio_region for s in species_checklist}.union(
                {h.bio_region for h in habitat_checklist}
            ))
        bioreg_list = dal.get_biogeo_region_list(relevant_regions)

        groups = dict(
            LuGrupSpecie.query
            .with_entities(LuGrupSpecie.code, LuGrupSpecie.description)
        )

        return dict(
            species_refvals=species_refvals,
            species_data=species_data,
            species_list=species_list,
            habitat_refvals=habitat_refvals,
            habitat_data=habitat_data,
            habitat_list=habitat_list,
            bioreg_list=bioreg_list,
            GROUPS=groups,
            current_checklist=current_checklist,
            page='refvalues',
        )
Beispiel #4
0
def aggregation_missing_data_report(dataset_id):
    dataset = models.Dataset.query.get_or_404(dataset_id)

    species = dataset.species_objs.filter_by(cons_role=ROLE_MISSING)
    habitats = dataset.habitat_objs.filter_by(cons_role=ROLE_MISSING)

    species_list = set([s.species for s in species])
    habitat_list = set([h.habitat for h in habitats])
    species_regions = {(s.subject_id, s.region): 0 for s in species}
    habitat_regions = {(h.subject_id, h.region): 0 for h in habitats}
    relevant_regions = [
        a[1] for a in species_regions.keys() + habitat_regions.keys()
    ]
    bioreg_list = dal.get_biogeo_region_list(relevant_regions)

    return {
        'missing_species': species,
        'species_regions': species_regions,
        'species_list': species_list,
        'habitat_list': habitat_list,
        'missing_habitats': habitats,
        'habitat_regions': habitat_regions,
        'bioreg_list': bioreg_list,
    }
Beispiel #5
0
def habitats():
    from art17.habitat import get_dal
    habitat_dataset = get_dal()
    if not habitat_dataset:
        flask.flash('No active consultation', 'danger')
        return flask.redirect('/')
    user_id = flask.g.identity.id
    data_by_region = (
        habitat_dataset
        .get_subject_region_overview_consultation(user_id)
    )
    relevant_regions = set(reg for n, reg in data_by_region)
    bioreg_list = [
        r for r in dal.get_biogeo_region_list()
        if r.code in relevant_regions
    ]

    return flask.render_template(
        'consultation/habitat.html', **{
        'bioreg_list': bioreg_list,
        'tabmenu_data': list(get_tabmenu_data()),
        'habitat_list': dal.get_habitat_list(),
        'data_by_region': data_by_region,
    })
Beispiel #6
0
def aggregation_missing_data_report(dataset_id):
    dataset = models.Dataset.query.get_or_404(dataset_id)

    species = dataset.species_objs.filter_by(cons_role=ROLE_MISSING)
    habitats = dataset.habitat_objs.filter_by(cons_role=ROLE_MISSING)

    species_list = set([s.species for s in species])
    habitat_list = set([h.habitat for h in habitats])
    species_regions = {(s.subject_id, s.region): 0 for s in species}
    habitat_regions = {(h.subject_id, h.region): 0 for h in habitats}
    relevant_regions = [
        a[1] for a in species_regions.keys() + habitat_regions.keys()
    ]
    bioreg_list = dal.get_biogeo_region_list(relevant_regions)

    return {
        'missing_species': species,
        'species_regions': species_regions,
        'species_list': species_list,
        'habitat_list': habitat_list,
        'missing_habitats': habitats,
        'habitat_regions': habitat_regions,
        'bioreg_list': bioreg_list,
    }
Beispiel #7
0
def compare_datasets(dataset1, dataset2):
    d1 = models.Dataset.query.get_or_404(dataset1)
    d2 = models.Dataset.query.get_or_404(dataset2)

    conclusions_s_d1 = d1.species_objs.filter_by(cons_role=ROLE_FINAL)
    conclusions_s_d2 = d2.species_objs.filter_by(cons_role=ROLE_FINAL)

    relevant_regions = set([r[0] for r in (
        list(conclusions_s_d1.with_entities(models.DataSpeciesRegion.region)
             .distinct()) +
        list(conclusions_s_d2.with_entities(models.DataSpeciesRegion.region)
             .distinct())
    ) if r[0]])

    s_data = {}
    for r in conclusions_s_d1:
        if r.species not in s_data:
            s_data[r.species] = {'d1': {}, 'd2': {}}
        s_data[r.species]['d1'][r.region] = r
    for r in conclusions_s_d2:
        if r.species not in s_data:
            s_data[r.species] = {'d1': {}, 'd2': {}}
        s_data[r.species]['d2'][r.region] = r
    if None in s_data:
        del s_data[None]

    s_stat = {'objs': 0, 'diff': 0}
    for k, v in s_data.iteritems():
        for reg, ass in v['d1'].iteritems():
            ass2 = v['d2'].get(reg, None)
            if (not ass2 or
                    ass2.conclusion_assessment != ass.conclusion_assessment):
                s_stat['diff'] += 1
            s_stat['objs'] += 1

    conclusions_h_d1 = d1.habitat_objs.filter_by(cons_role=ROLE_FINAL)
    conclusions_h_d2 = d2.habitat_objs.filter_by(cons_role=ROLE_FINAL)

    h_data = {}
    for r in conclusions_h_d1:
        if r.habitat not in h_data:
            h_data[r.habitat] = {'d1': {}, 'd2': {}}
        h_data[r.habitat]['d1'][r.region] = r
    for r in conclusions_h_d2:
        if r.habitat not in h_data:
            h_data[r.habitat] = {'d1': {}, 'd2': {}}
        h_data[r.habitat]['d2'][r.region] = r
    if None in h_data:
        del h_data[None]

    h_stat = {'objs': 0, 'diff': 0}
    for k, v in h_data.iteritems():
        for reg, ass in v['d1'].iteritems():
            ass2 = v['d2'].get(reg, None)
            if (not ass2 or
                    ass2.conclusion_assessment != ass.conclusion_assessment):
                h_stat['diff'] += 1
            h_stat['objs'] += 1

    bioreg_list = dal.get_biogeo_region_list(relevant_regions)
    return render_template(
        'aggregation/compare_datasets.html',
        species_data=s_data, dataset1=d1, dataset2=d2, bioreg_list=bioreg_list,
        habitat_data=h_data, s_stat=s_stat, h_stat=h_stat,
        page='compare',
    )