def parse_from_csv(self, row: dict, lecture: Lecture) -> Tuple[Amendement, bool]: subdiv = parse_subdiv(row["Subdivision "], texte=lecture.texte) article, _ = lecture.find_or_create_article(subdiv) num, rectif = Amendement.parse_num(row["Numéro "]) amendement, created = lecture.find_or_create_amendement(num, article) modified = False modified |= self.update_rectif(amendement, rectif) modified |= self.update_corps(amendement, clean_html(row["Dispositif "])) modified |= self.update_expose(amendement, clean_html(row["Objet "])) modified |= self.update_sort(amendement, row["Sort "]) modified |= self.update_attributes( amendement, article=article, alinea=row["Alinéa"].strip(), auteur=row["Auteur "], matricule=extract_matricule(row["Fiche Sénateur"]), date_depot=parse_date(row["Date de dépôt "]), ) return amendement, created
def parse_from_csv(row: dict, session: str, num_texte: int, organe: str) -> Amendement: num, rectif = Amendement.parse_num(row["Numéro "]) subdiv_type, subdiv_num, subdiv_mult, subdiv_pos = _parse_subdiv( row["Subdivision "]) return Amendement( # type: ignore chambre="senat", session=session, num_texte=num_texte, organe=organe, num=num, rectif=rectif, subdiv_type=subdiv_type, subdiv_num=subdiv_num, subdiv_mult=subdiv_mult, subdiv_pos=subdiv_pos, alinea=row["Alinéa"].strip(), auteur=row["Auteur "], matricule=extract_matricule(row["Fiche Sénateur"]), date_depot=parse_date(row["Date de dépôt "]), sort=row["Sort "], dispositif=clean_html(row["Dispositif "]), objet=clean_html(row["Objet "]), )
def test_parse_date_long(): from zam_repondeur.fetch.dates import parse_date assert parse_date("2017-10-11T00:00:00.000+02:00") == date(2017, 10, 11)
def test_parse_date_short(): from zam_repondeur.fetch.dates import parse_date assert parse_date("2017-11-13") == date(2017, 11, 13)
def test_parse_date_empty_string(): from zam_repondeur.fetch.dates import parse_date assert parse_date("") is None
def to_date(text: Optional[str]) -> Optional[date]: if text is None: return None return parse_date(text)