first commit
This commit is contained in:
47
modules/marketing_automation/party.py
Normal file
47
modules/marketing_automation/party.py
Normal file
@@ -0,0 +1,47 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.model import ModelSQL, fields
|
||||
from trytond.pool import PoolMeta
|
||||
|
||||
from .mixin import MarketingAutomationMixin
|
||||
|
||||
|
||||
class Party(MarketingAutomationMixin, metaclass=PoolMeta):
|
||||
__name__ = 'party.party'
|
||||
|
||||
marketing_scenario_unsubscribed = fields.Many2Many(
|
||||
'party.party-unsubscribed-marketing.automation.scenario',
|
||||
'party', 'scenario', "Marketing Automation Scenario Unsubscribed")
|
||||
|
||||
def get_marketing_party(self, name):
|
||||
return self.id
|
||||
|
||||
@classmethod
|
||||
def search_marketing_party(cls, name, clause):
|
||||
_, operator, operand, *extra = clause[:3]
|
||||
nested = clause[0][len(name):]
|
||||
if not nested:
|
||||
if operator.endswith('where'):
|
||||
query = cls.search(operand, order=[], query=True)
|
||||
if operator.startswith('not'):
|
||||
return [('id', 'not in', query)]
|
||||
else:
|
||||
return [('id', 'in', query)]
|
||||
elif isinstance(operand, str):
|
||||
nested = 'rec_name'
|
||||
else:
|
||||
nested = 'id'
|
||||
else:
|
||||
nested = nested[1:]
|
||||
return [(nested, operator, operand, *extra)]
|
||||
|
||||
|
||||
class PartyUnsubscribedScenario(ModelSQL):
|
||||
__name__ = 'party.party-unsubscribed-marketing.automation.scenario'
|
||||
|
||||
party = fields.Many2One(
|
||||
'party.party', "Party", required=True, ondelete='CASCADE')
|
||||
scenario = fields.Many2One(
|
||||
'marketing.automation.scenario', "Scenario",
|
||||
required=True, ondelete='CASCADE')
|
||||
Reference in New Issue
Block a user