コード例 #1
0
    def import_crimes(self):
        session = get_session()

        table = get_datatable(self.table_id)
        model = table.get_model(self.geo_level)
        geo_code_attr = '%s_code' % self.geo_level

        with open(filepath) as f:
            reader = csv.DictReader(f, delimiter=",")

            for row in reader:
                args = {}
                for key, val in row.iteritems():
                    key = key.lower()
                    if key == 'geo_code':
                        args[geo_code_attr] = val
                    elif key == 'total':
                        args['total'] = int(val)
                    else:
                        args[key] = val

                item = model(**args)
                session.add(item)

        session.commit()
コード例 #2
0
def get_election_data(geo_code, geo_level, election, session):
    party_data, total_valid_votes = get_stat_data(
        ['party'], geo_level, geo_code, session,
        table_dataset=election['dataset'],
        recode=lambda f, v: make_party_acronym(v),
        order_by='-total')

    results = {
        'name': election['name'],
        'party_distribution': party_data,
    }

    # voter registration and turnout
    table = get_datatable('voter_turnout_%s' % election['table_code']).table
    registered_voters, total_votes = session\
        .query(table.c.registered_voters,
               table.c.total_votes) \
        .filter(table.c.geo_level == geo_level) \
        .filter(table.c.geo_code == geo_code) \
        .one()

    results['registered_voters'] = {
        "name": "Number of registered voters",
        "values": {"this": registered_voters},
    }
    results['average_turnout'] = {
        "name": "Of registered voters cast their vote",
        "values": {"this": round(float(total_votes) / registered_voters * 100, 2)},
        "numerators": {"this": total_votes},
    }

    return results
コード例 #3
0
    def import_crimes(self):
        session = get_session()

        table = get_datatable(self.table_id)
        model = table.get_model(self.geo_level)
        geo_code_attr = '%s_code' % self.geo_level

        with open(filepath) as f:
            reader = csv.DictReader(f, delimiter=",")

            for row in reader:
                args = {}
                for key, val in row.iteritems():
                    key = key.lower()
                    if key == 'geo_code':
                        args[geo_code_attr] = val
                    elif key == 'total':
                        args['total'] = int(val)
                    else:
                        args[key] = val

                item = model(**args)
                session.add(item)

        session.commit()
コード例 #4
0
def get_election_data(geo_code, geo_level, election, session):
    party_data, total_valid_votes = get_stat_data(
        ["party"],
        geo_level,
        geo_code,
        session,
        table_name="party_votes_%s_%s" % (election["table_code"], geo_level),
        recode=lambda f, v: make_party_acronym(v),
        order_by="-total",
    )

    # voter registration and turnout
    table = get_datatable("voter_turnout_%s" % election["table_code"]).table
    registered_voters, total_votes = (
        session.query(table.c.registered_voters, table.c.total_votes)
        .filter(table.c.geo_level == geo_level)
        .filter(table.c.geo_code == geo_code)
        .one()
    )

    return {
        "name": election["name"],
        "party_distribution": party_data,
        "registered_voters": {"name": "Number of registered voters", "values": {"this": registered_voters}},
        "average_turnout": {
            "name": "Of registered voters cast their vote",
            "values": {"this": round(float(total_votes) / registered_voters * 100, 2)},
            "numerators": {"this": total_votes},
        },
    }
コード例 #5
0
def get_election_data(geo_code, geo_level, election, session):
    party_data, total_valid_votes = get_stat_data(
        ['party'],
        geo_level,
        geo_code,
        session,
        table_dataset=election['dataset'],
        recode=lambda f, v: make_party_acronym(v),
        order_by='-total')

    results = {
        'name': election['name'],
        'party_distribution': party_data,
    }

    # voter registration and turnout
    table = get_datatable('voter_turnout_%s' % election['table_code'])
    results['registered_voters'], _ = table.get_stat_data(
        geo_level,
        geo_code,
        'registered_voters',
        percent=False,
        recode={'registered_voters': 'Number of registered voters'})

    results['total_votes'], _ = table.get_stat_data(
        geo_level,
        geo_code,
        'total_votes',
        percent=True,
        total='registered_voters',
        recode={'total_votes': 'Of registered voters cast their vote'})

    return results
コード例 #6
0
ファイル: wazi.py プロジェクト: 233/censusreporter
    def get(self, request, *args, **kwargs):
        try:
            geo_ids = request.GET.get('geo_ids', 'country-ZA').split(',')
            data_geos, info_geos = self.get_geos(geo_ids)
        except LocationNotFound as e:
            return render_json_error(e.message, 404)

        try:
            table_ids = request.GET.get('table_ids', '').split(',')
            tables = [get_datatable(t) for t in table_ids]
        except KeyError as e:
            return render_json_error('Unknown table: %s' % e.message, 404)

        dataset = ', '.join(sorted(list(set(t.dataset_name for t in tables))))
        years = ', '.join(sorted(list(set(t.year for t in tables))))

        data = self.get_data(data_geos, tables)

        return render_json_to_response({
            'release': {
                'name': dataset,
                'years': years,
            },
            'tables': dict((t.id.upper(), t.as_dict()) for t in tables),
            'data': data,
            'geography': dict((g.full_geoid, g.as_dict()) for g in chain(data_geos, info_geos)),
            })
コード例 #7
0
ファイル: census.py プロジェクト: africanrhino/censusreporter
def get_crime_profile(geo_code, geo_level, session):
    child_crime, total = get_stat_data(
        ['crime'], geo_level, geo_code, session,
        only=['Neglect and ill-treatment of children'],
        percent=False)

    table = get_datatable(get_table_id(['crime']))

    return {
        'dataset': table.dataset_name,
        'crime_against_children': {
            'name': 'Crimes of neglect and ill-treatment of children in 2014',
            'values': {'this': total},
            'metadata': {'universe': 'Crimes in 2014'},
        },
    }
コード例 #8
0
ファイル: wazi.py プロジェクト: 4bic/censusreporter
    def get(self, request, *args, **kwargs):
        try:
            self.geo_ids = request.GET.get('geo_ids', 'country-ZA').split(',')
            self.data_geos, self.info_geos = self.get_geos(self.geo_ids)
        except LocationNotFound as e:
            return render_json_error(e.message, 404)

        try:
            self.table_ids = request.GET.get('table_ids', '').split(',')
            self.tables = [get_datatable(t) for t in self.table_ids]
        except KeyError as e:
            return render_json_error('Unknown table: %s' % e.message, 404)

        if kwargs.get('action') == 'show':
            return self.show(request)
        if kwargs.get('action') == 'download':
            return self.download(request)
コード例 #9
0
ファイル: wazi.py プロジェクト: Bhanditz/censusreporter
    def get(self, request, *args, **kwargs):
        try:
            self.geo_ids = request.GET.get('geo_ids', 'country-ZA').split(',')
            self.data_geos, self.info_geos = self.get_geos(self.geo_ids)
        except LocationNotFound as e:
            return render_json_error(e.message, 404)

        try:
            self.table_ids = request.GET.get('table_ids', '').split(',')
            self.tables = [get_datatable(t) for t in self.table_ids]
        except KeyError as e:
            return render_json_error('Unknown table: %s' % e.message, 404)

        if kwargs.get('action') == 'show':
            return self.show(request)
        if kwargs.get('action') == 'download':
            return self.download(request)
コード例 #10
0
ファイル: wazi.py プロジェクト: africanrhino/censusreporter
    def get(self, request, *args, **kwargs):
        try:
            self.geo_ids = request.GET.get("geo_ids", "country-ZA").split(",")
            self.data_geos, self.info_geos = self.get_geos(self.geo_ids)
        except LocationNotFound as e:
            return render_json_error(e.message, 404)

        try:
            self.table_ids = request.GET.get("table_ids", "").split(",")
            self.tables = [get_datatable(t) for t in self.table_ids]
        except KeyError as e:
            return render_json_error("Unknown table: %s" % e.message, 404)

        if kwargs.get("action") == "show":
            return self.show(request)
        if kwargs.get("action") == "download":
            return self.download(request)
コード例 #11
0
def get_election_data(geo_code, geo_level, election, session):
    party_data, total_valid_votes = get_stat_data(
        ['party'],
        geo_level,
        geo_code,
        session,
        table_name='party_votes_%s_%s' % (election['table_code'], geo_level),
        recode=lambda f, v: make_party_acronym(v),
        order_by='-total')

    # voter registration and turnout
    table = get_datatable('voter_turnout_%s' % election['table_code']).table
    registered_voters, total_votes = session\
            .query(table.c.registered_voters,
                   table.c.total_votes) \
            .filter(table.c.geo_level == geo_level) \
            .filter(table.c.geo_code == geo_code) \
            .one()

    return {
        'name': election['name'],
        'party_distribution': party_data,
        'registered_voters': {
            "name": "Number of registered voters",
            "values": {
                "this": registered_voters
            },
        },
        'average_turnout': {
            "name": "Of registered voters cast their vote",
            "values": {
                "this": round(float(total_votes) / registered_voters * 100, 2)
            },
            "numerators": {
                "this": total_votes
            },
        }
    }
コード例 #12
0
ファイル: elections.py プロジェクト: Code4SA/censusreporter
def get_election_data(geo_code, geo_level, election, session):
    party_data, total_valid_votes = get_stat_data(
        ['party'], geo_level, geo_code, session,
        table_dataset=election['dataset'],
        recode=lambda f, v: make_party_acronym(v),
        order_by='-total')

    results = {
        'name': election['name'],
        'party_distribution': party_data,
    }

    # voter registration and turnout
    table = get_datatable('voter_turnout_%s' % election['table_code'])
    results['registered_voters'], _ = table.get_stat_data(
        geo_level, geo_code, 'registered_voters', percent=False,
        recode={'registered_voters': 'Number of registered voters'})

    results['total_votes'], _ = table.get_stat_data(
        geo_level, geo_code, 'total_votes', percent=True, total='registered_voters',
        recode={'total_votes': 'Of registered voters cast their vote'})

    return results
コード例 #13
0
def get_crime_profile(geo_code, geo_level, session):
    child_crime, total = get_stat_data(
        ['crime'],
        geo_level,
        geo_code,
        session,
        only=['Neglect and ill-treatment of children'],
        percent=False)

    table = get_datatable(get_table_id(['crime']))

    return {
        'dataset': table.dataset_name,
        'crime_against_children': {
            'name': 'Crimes of neglect and ill-treatment of children in 2014',
            'values': {
                'this': total
            },
            'metadata': {
                'universe': 'Crimes in 2014'
            },
        },
    }