def apply(self, lecture: Lecture) -> FetchResult: amendement = lecture.find_amendement(self.amendement_num) if amendement is None: return FetchResult.create(errored={self.amendement_num}) article = self._get_article(lecture) parent = self._get_parent(lecture, article) if amendement.location.batch and amendement.article.pk != article.pk: BatchUnset.create(amendement=amendement, request=None) Source.update_rectif(amendement, self.rectif) Source.update_corps(amendement, self.corps) Source.update_expose(amendement, self.expose) Source.update_sort(amendement, self.sort) Source.update_attributes( amendement, article=article, parent=parent, position=self.position, tri_amendement=self.tri_amendement, id_discussion_commune=self.id_discussion_commune, id_identique=self.id_identique, matricule=self.matricule, groupe=self.groupe, auteur=self.auteur, mission_titre=self.mission_titre, mission_titre_court=self.mission_titre_court, date_depot=self.date_depot, ) return FetchResult.create(fetched={self.amendement_num})
def inspect_amendement( self, lecture: Lecture, amend_data: "ANAmendementData", position: Optional[int], id_discussion_commune: Optional[int], id_identique: Optional[int], ) -> Tuple[Optional["Amendement"], Optional[Action]]: parent_num_raw = amend_data.get_parent_raw_num() num = amend_data.get_num() rectif = amend_data.get_rectif() subdiv = amend_data.get_division() matricule = amend_data.get_matricule() groupe = amend_data.get_groupe() auteur = amend_data.get_auteur() mission_ref = amend_data.get_mission_ref() mission_titre = mission_ref.titre if mission_ref else None mission_titre_court = mission_ref.titre_court if mission_ref else None corps = amend_data.get_corps() expose = amend_data.get_expose() sort = amend_data.get_sort() date_depot = amend_data.get_date_depot() tri_amendement = amend_data.get_tri_amendement() amendement = lecture.find_amendement(num) action: Optional[Action] = None if amendement is None: action = CreateAmendement( subdiv=subdiv, parent_num_raw=parent_num_raw, num=num, rectif=rectif, position=position, tri_amendement=tri_amendement, id_discussion_commune=id_discussion_commune, id_identique=id_identique, matricule=matricule, groupe=groupe, auteur=auteur, mission_titre=mission_titre, mission_titre_court=mission_titre_court, corps=corps, expose=expose, sort=sort, date_depot=date_depot, ) return amendement, action old_parent_num_raw = str( amendement.parent.num) if amendement.parent else "" modified = any([ (amendement.article is None or subdiv != amendement.article.subdiv), parent_num_raw != old_parent_num_raw, rectif != amendement.rectif, corps != amendement.corps, expose != amendement.expose, sort != amendement.sort, tri_amendement != amendement.tri_amendement, id_discussion_commune != amendement.id_discussion_commune, id_identique != amendement.id_identique, matricule != amendement.matricule, groupe != amendement.groupe, auteur != amendement.auteur, mission_titre != amendement.mission_titre, mission_titre_court != amendement.mission_titre_court, corps != amendement.corps, expose != amendement.expose, sort != amendement.sort, date_depot != amendement.date_depot, ]) if modified: action = UpdateAmendement( amendement_num=amendement.num, subdiv=subdiv, parent_num_raw=parent_num_raw, rectif=rectif, position=position, tri_amendement=tri_amendement, id_discussion_commune=id_discussion_commune, id_identique=id_identique, matricule=matricule, groupe=groupe, auteur=auteur, mission_titre=mission_titre, mission_titre_court=mission_titre_court, corps=corps, expose=expose, sort=sort, date_depot=date_depot, ) return amendement, action