def export_policy(): policy_slugs = [p['slug'] for p in dal.get_policy_list()] cols = ['nume'] for policy_slug in policy_slugs: cols.extend([ policy_slug + '-procent', policy_slug + '-propuneri', policy_slug + '-intrebari', ]) ZERO = {'proposal_count': 0, 'question_count': 0, 'interest': 0} def policy_row(mandate_info): rv = {'nume': mandate_info['name']} person = dal.get_person(mandate_info['person_slug']) policy_map = {p['slug']: p for p in person.get_top_policies()} for policy_slug in policy_slugs: p = policy_map.get(policy_slug, ZERO) rv.update({ policy_slug + '-procent': p['interest'], policy_slug + '-propuneri': p['proposal_count'], policy_slug + '-intrebari': p['question_count'], }) return rv def mandates(): mandates_by_county = dal.get_2016_mandates_by_county() for county_list in mandates_by_county.values(): for mandate_info in county_list: yield mandate_info rows = (policy_row(m) for m in mandates()) data = buffer_on_disk(csv_lines(cols, rows)) return csv_response(data)
def question_dump(): cols = ['name', 'legislature', 'date', 'title', 'score'] ask_query = ( models.Ask.query .join(models.Ask.question) .options( joinedload('question'), joinedload('mandate'), joinedload('mandate.person'), joinedload('match_row'), ) .order_by(models.Question.date.desc()) ) def make_row(ask): score = ask.match.score return { 'name': ask.mandate.person.name, 'legislature': str(ask.mandate.year), 'date': str(ask.question.date), 'title': str(ask.question.title), 'score': '' if score is None else str(score), } rows = (make_row(ask) for ask in ask_query.yield_per(10)) data = buffer_on_disk(csv_lines(cols, rows)) return flask.Response(data, mimetype='text/csv')
def export_activity(year): if not perm.admin.can(): flask.abort(403) cols = [ 'nume', 'propuneri-total', 'propuneri-inlucru', 'propuneri-acceptate', 'propuneri-respinse', 'luari-de-cuvant', 'intrebari', 'intrebari-locale', ] rows = ( { 'nume': row['name'], 'propuneri-total': row['proposals_total'], 'propuneri-inlucru': row['proposals_inprogress'], 'propuneri-acceptate': row['proposals_approved'], 'propuneri-respinse': row['proposals_rejected'], 'luari-de-cuvant': row['transcripts'], 'intrebari': row['questions'], 'intrebari-locale': row['questions-local'], } for row in dal.get_mandate_activity(year=year) ) data = buffer_on_disk(csv_lines(cols, rows)) return csv_response(data)
def export_proposals(year): if not perm.admin.can(): flask.abort(403) cols = [ 'nr-cdep', 'nr-senat', 'nr-bpi', 'data-propunere', 'data-actualizare', 'status', 'titlu', 'url-cdep', 'url-senat', 'initiatori-cdep', 'initiatori-senat', ] rows = ( { 'nr-cdep': row['number_cdep'], 'nr-senat': row['number_senate'], 'nr-bpi': row['number_bpi'], 'data-propunere': row['date'].isoformat(), 'data-actualizare': row['modification_date'].isoformat(), 'status': PROPOSAL_STATUS_LABEL[row['status']], 'titlu': row['title'], 'url-cdep': row['url_cdep'], 'url-senat': row['url_senate'], 'initiatori-cdep': row['namelist_cdep'], 'initiatori-senat': row['namelist_senate'], } for row in dal.get_all_proposals(year=year) ) data = buffer_on_disk(csv_lines(cols, rows)) return csv_response(data)
def export_votes(year): cols = ['data', 'cod cdep', 'nume', 'vot', 'vot grup'] rows = ( { 'data': row['date'].isoformat(), 'cod cdep': row['cdeppk'], 'nume': row['name'], 'vot': VOTE_LABEL.get(row['choice'], ''), 'vot grup': VOTE_LABEL.get(row['group_choice'], ''), } for row in dal.get_all_votes(year=year) ) data = buffer_on_disk(csv_lines(cols, rows)) return csv_response(data)
def export_questions(year): cols = ['data', 'numar', 'tip', 'titlu', 'nume', 'destinatar', 'scor'] rows = ( { 'data': row['date'].isoformat(), 'numar': row['number'], 'tip': QUESTION_TYPE_LABEL[row['type']], 'titlu': row['title'], 'nume': row['name'], 'destinatar': row['addressee'], 'scor': int(row['local_score']), } for row in dal.get_all_questions(year=year) ) data = buffer_on_disk(csv_lines(cols, rows)) return csv_response(data)
def question_dump(): cols = ['name', 'legislature', 'date', 'title', 'score'] ask_query = ( models.Ask.query .options( joinedload('question'), joinedload('mandate'), joinedload('mandate.person'), joinedload('match_row'), ) ) def make_row(ask): score = ask.match.score return { 'name': ask.mandate.person.name, 'legislature': str(ask.mandate.year), 'date': str(ask.question.date), 'title': str(ask.question.title), 'score': '' if score is None else str(score), } rows = (make_row(ask) for ask in ask_query.yield_per(10)) data = buffer_on_disk(csv_lines(cols, rows)) return flask.Response(data, mimetype='text/csv')