def to_neo4j_datetime(dt): return _Neo4jDateTimeInput(year=dt.year, month=dt.month, day=dt.day, hour=dt.hour, minute=dt.minute, second=dt.second)
def _build_sample_bill(): bill = Bill(None) bill.name = '公文書等の管理に関する法律の一部を改正する法律案' bill.bill_number = '第195回衆法第4号' bill.invalid_field = 'このfieldはmerge_billに使われない' bill.submitted_date = _Neo4jDateTimeInput(year=2020, month=1, day=1) bill.id = idgen(bill) return bill
def _build_sample_minutes(): minutes = Minutes(None) minutes.name = '第201回国会衆議院環境委員会第4号' minutes.topics = ["天気について", "カレーライスの件"] minutes.start_date_time = _Neo4jDateTimeInput(year=2020, month=1, day=20) minutes.id = idgen(minutes) return minutes
def test_idgen(): assert idgen('test') == 'str:CY9rzUYh03PK3k6DJie09g' assert idgen('test') == idgen('test') assert idgen('test') != idgen('test2') member = Member({'name': 'test'}) assert idgen(member) == 'Member:CY9rzUYh03PK3k6DJie09g' timeline = Timeline(None) timeline.date = _Neo4jDateTimeInput(year=2020, month=2, day=20) assert idgen(timeline) == 'Timeline:20200220'
def find(self, text, dt=None): op = Operation(Query) minutes_filter = _MinutesFilter(None) minutes_filter.name_contains = text if dt: minutes_filter.start_date_time = _Neo4jDateTimeInput( year=dt.year, month=dt.month, day=dt.day) op.minutes(filter=minutes_filter) data = self.client.endpoint(op) GraphQLClient.validate_response_or_raise(data) minutes = (op + data).minutes return minutes
def main(): gql_client = GraphQLClient() bill_list = gql_client.get_all_bills(['id'] + BILL_DATE_FIELDS) LOGGER.info(f'fetched {len(bill_list)} bills') minutes_list = gql_client.get_all_minutes(['id'] + MINUTES_DATE_FIELD) LOGGER.info(f'fetched {len(minutes_list)} minutes') news_list = gql_client.get_all_news(['id', 'is_timeline'] + NEWS_DATE_FIELD, start_date=args.start_date, end_date=args.end_date) LOGGER.info(f'fetched {len(news_list)} news') date2bill = build_date_dict(bill_list, BILL_DATE_FIELDS) date2minutes = build_date_dict(minutes_list, MINUTES_DATE_FIELD) date2news = build_date_dict(news_list, NEWS_DATE_FIELD) dates = [ args.start_date + timedelta(i) for i in range((args.end_date - args.start_date).days) ] for date in tqdm(dates): timeline = Timeline(None) timeline.date = _Neo4jDateTimeInput(year=date.year, month=date.month, day=date.day) timeline.id = idgen(timeline) gql_client.merge(timeline) from_ids = [] for bill in date2bill[date]: from_ids.append(bill.id) for minutes in date2minutes[date]: from_ids.append(minutes.id) for news in date2news[date]: if news.is_timeline: from_ids.append(news.id) gql_client.bulk_link(from_ids, [timeline.id] * len(from_ids)) LOGGER.info(f'linked {len(from_ids)} events to {date}')
def to_neo4j_datetime(dt): return _Neo4jDateTimeInput(year=dt.year, month=dt.month, day=dt.day)
def _build_sample_activity(): activity = Activity(None) activity.member_id = 'Member:id' activity.datetime = _Neo4jDateTimeInput(year=2020, month=1, day=1) activity.id = idgen(activity) return activity
def _build_sample_timeline(): timeline = Timeline(None) timeline.date = _Neo4jDateTimeInput(year=2020, month=1, day=1) timeline.id = idgen(timeline) return timeline
def to_neo4j_datetime(dt_str): dt = datetime.strptime(dt_str, '%Y-%m-%d').date() return _Neo4jDateTimeInput(year=dt.year, month=dt.month, day=dt.day)
def test_basegen_minutes(): minutes = Minutes({'name': '参議院災害対策特別委員会'}) minutes.start_date_time = _Neo4jDateTimeInput(year=2020, month=1, day=20) assert _basegen_minutes(minutes) == _basegen_str('参議院災害対策特別委員会20200120')