|
|
self.env['slide.channel.partner'].flush_model()
self.env['slide.slide'].flush_model()
self.env['slide.slide.partner'].flush_model()
query = """
SELECT DISTINCT ON (SCP.id)
SCP.id AS id,
SS.id AS slide_id
FROM slide_channel_partner SCP
JOIN slide_slide SS
ON SS.channel_id = SCP.channel_id
AND SS.is_published = TRUE
AND SS.active = TRUE
AND SS.is_category = FALSE
AND NOT EXISTS (
SELECT 1
FROM slide_slide_partner
WHERE slide_id = SS.id
AND partner_id = SCP.partner_id
AND completed = TRUE
)
WHERE SCP.id IN %s
ORDER BY SCP.id, SS.sequence, SS.id
"""
self.env.cr.execute(query, [tuple(self.ids)])
next_slide_per_membership = {
line['id']: line['slide_id']
for line in self.env.cr.dictfetchall()
}
for membership in self:
membership.next_slide_id = next_slide_per_membership.get(membership.id, False)
|
|