def test_referee_insert(session, person_data): referees = [ mcp.Referees(**data) for key, records in person_data.items() for data in records if key in ['referees'] ] session.add_all(referees) referees_from_db = session.query(mcp.Referees) assert referees_from_db.count() == len(referees) persons_from_db = session.query(mcp.Persons) assert persons_from_db.count() == referees_from_db.count()
def referees(self, data_frame): referee_records = [] remote_ids = [] fields = [ 'known_first_name', 'first_name', 'middle_name', 'last_name', 'second_last_name', 'nick_name', 'birth_date', 'order', 'country_id' ] for indx, row in data_frame.iterrows(): referee_dict = { field: row[field] for field in fields if field in row and row[field] } if not self.record_exists(mcs.RefereeMap, remote_id=row['remote_id']): if not self.record_exists(mcp.Referees, **referee_dict): referee_records.append(mcp.Referees(**referee_dict)) remote_ids.append(row['remote_id']) else: referee_id = self.session.query( mcp.Referees).filter_by(**referee_dict).one().id map_record = mcs.RefereeMap(id=referee_id, remote_id=row['remote_id'], supplier_id=self.supplier_id) self.session.add(map_record) else: referee_id = self.session.query(mcs.RefereeMap).filter_by( remote_id=row['remote_id']).one().id if not self.record_exists(mcp.Referees, **referee_dict): updated_records = self.session.query(mcp.Referees). \ filter(mcp.Referees.person_id == mcp.Persons.person_id). \ filter(mcp.Referees.id == referee_id) for rec in updated_records: for field, value in referee_dict.items(): setattr(rec, field, value) if self.session.dirty: self.session.commit() self.session.add_all(referee_records) self.session.commit() map_records = [ mcs.RefereeMap(id=referee_record.id, remote_id=remote_id, supplier_id=self.supplier_id) for remote_id, referee_record in zip(remote_ids, referee_records) if remote_id ] self.session.add_all(map_records) self.session.commit()
def national_data(): mexico = mco.Countries(name=u"Mexico", confederation=enums.ConfederationType.north_america) england = mco.Countries(name=u"England", confederation=enums.ConfederationType.europe) france = mco.Countries(name=u"France", confederation=enums.ConfederationType.europe) italy = mco.Countries(name=u"Italy", confederation=enums.ConfederationType.europe) tz_london = mco.Timezones(name=u"Europe/London", offset=0.0, confederation=enums.ConfederationType.europe) return { 'date': date(1997, 11, 12), 'competition': mco.InternationalCompetitions( name=u"International Cup", level=1, confederation=enums.ConfederationType.fifa), 'season': mco.Seasons(start_year=mco.Years(yr=1997), end_year=mco.Years(yr=1998)), 'venue': mco.Venues(name=u"Emirates Stadium", city=u"London", country=england, timezone=tz_london), 'home_team': france, 'away_team': mexico, 'home_manager': mcp.Managers(first_name=u"Arsène", last_name=u"Wenger", birth_date=date(1949, 10, 22), country=france), 'away_manager': mcp.Managers(first_name=u"Gary", last_name=u"Simpson", birth_date=date(1961, 4, 11), country=england), 'referee': mcp.Referees(first_name=u"Pierluigi", last_name=u"Collina", birth_date=date(1960, 2, 13), country=italy) }
def match_data(comp_data, season_data, venue_data, person_data): return { "date": date(2012, 12, 12), "competition": mco.DomesticCompetitions(**comp_data['domestic']), "season": mco.Seasons(**{k: mco.Years(**v) for k, v in season_data.items()}), "venue": mco.Venues(**venue_data), "home_manager": mcp.Managers(**person_data['manager'][0]), "away_manager": mcp.Managers(**person_data['manager'][1]), "referee": mcp.Referees(**person_data['referee'][0]) }
def test_referee_representation(session, person_data): referees = [ mcp.Referees(**data) for key, records in person_data.items() for data in records if key in ['referee'] ] session.add_all(referees) english_referee = session.query(mcp.Referees).join( mco.Countries).filter(mco.Countries.name == u"England").one() assert unicode( english_referee ) == u"<Referee(name=Christopher Foy, DOB=1962-11-20, country=England)>" turkish_referee = session.query(mcp.Referees).join( mco.Countries).filter(mco.Countries.name == u"Turkey").one() assert unicode( turkish_referee ) == u"<Referee(name=Cüneyt Çakır, DOB=1976-11-23, country=Turkey)>"
def club_data(): england = mco.Countries(name=u"England", confederation=enums.ConfederationType.europe) france = mco.Countries(name=u"France", confederation=enums.ConfederationType.europe) tz_london = mco.Timezones(name=u"Europe/London", offset=0.0, confederation=enums.ConfederationType.europe) return { 'date': date(2015, 1, 1), 'competition': mco.DomesticCompetitions(name=u'Test Competition', level=1, country=england), 'season': mco.Seasons(start_year=mco.Years(yr=2014), end_year=mco.Years(yr=2015)), 'venue': mco.Venues(name=u"Emirates Stadium", city=u"London", country=england, timezone=tz_london), 'home_team': mc.Clubs(name=u"Arsenal FC", country=england), 'away_team': mc.Clubs(name=u"Lincoln City FC", country=england), 'home_manager': mcp.Managers(first_name=u"Arsène", last_name=u"Wenger", birth_date=date(1949, 10, 22), country=france), 'away_manager': mcp.Managers(first_name=u"Gary", last_name=u"Simpson", birth_date=date(1961, 4, 11), country=england), 'referee': mcp.Referees(first_name=u"Mark", last_name=u"Clattenburg", birth_date=date(1975, 3, 13), country=england) }