Ejemplo n.º 1
0
    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})
Ejemplo n.º 2
0
    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