Skip to content
Extraits de code Groupes Projets
Valider a83f09f8 rédigé par Rémi - Le Filament's avatar Rémi - Le Filament
Parcourir les fichiers

[UPD] remove old projects from portal and future events

parent 41e477ac
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -76,5 +76,21 @@ ...@@ -76,5 +76,21 @@
<field name="state">code</field> <field name="state">code</field>
<field name="code">model.cron_user_notification()</field> <field name="code">model.cron_user_notification()</field>
</record> </record>
<!-- Suppression des projets sortis depuis 15 jours -->
<record id="alterincub_end_incub_cron" forcecreate="True" model="ir.cron">
<field
name="name"
>AlterIncub - Partner : Ménage projets en fin d'accompagement</field>
<field eval="True" name="active" />
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="nextcall">2024-12-07 00:01:00</field>
<field name="model_id" ref="model_res_partner" />
<field name="state">code</field>
<field name="code">model.cron_end_incub(15)</field>
</record>
</data> </data>
</odoo> </odoo>
# © 2022 Le Filament (<http://www.le-filament.com>) # © 2022 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from datetime import datetime, timedelta
from odoo import api, fields, models from odoo import api, fields, models
...@@ -64,6 +66,44 @@ class ResPartner(models.Model): ...@@ -64,6 +66,44 @@ class ResPartner(models.Model):
action["domain"] = [("provider_id", "=", self.id)] action["domain"] = [("provider_id", "=", self.id)]
return action return action
# ------------------------------------------------------
# CRON methods
# ------------------------------------------------------
def cron_end_incub(self, delay=15):
"""
CRON permettant de supprimer les utilisateurs de projets en fin d'accompagnement
depuis x jours (variable delay)
Les projets en fin d'accompagnement sont retirés des évènements à venir
et les inscriptions associées
"""
delay_in_days = datetime.now() - timedelta(days=delay)
projects = self.search(
[
("project_state", "=", "9_done"),
("stop_date", "=", delay_in_days),
]
)
projects.child_ids.mapped("user_ids").unlink()
event_ids = self.env["event.event"].search(
[
("date_begin", ">", delay_in_days),
("stage_id", "!=", self.env.ref("event.event_stage_done").id),
]
)
registration_ids = self.env["event.registration"].search(
[
("event_id", "in", event_ids.ids),
]
)
for project in projects:
event_ids_to_unlink = event_ids.filtered(lambda e: project in e.project_ids) # noqa: B023
event_ids_to_unlink.update({"project_ids": [(3, project.id, 0)]})
registration_ids.filtered(
lambda r: r.partner_id.parent_id.id in projects.ids
).unlink()
# ------------------------------------------------------ # ------------------------------------------------------
# Inherit parent # Inherit parent
# ------------------------------------------------------ # ------------------------------------------------------
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter