# 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 Pool from trytond.transaction import Transaction class Many2Many(ModelSQL): 'Many2Many' __name__ = 'test.many2many' targets = fields.Many2Many('test.many2many.relation', 'origin', 'target', 'Targets') class Many2ManyTarget(ModelSQL): 'Many2Many Target' __name__ = 'test.many2many.target' name = fields.Char('Name') class Many2ManyRelation(ModelSQL): 'Many2Many Relation' __name__ = 'test.many2many.relation' origin = fields.Many2One('test.many2many', 'Origin') target = fields.Many2One('test.many2many.target', 'Target') class Many2ManyRequired(ModelSQL): 'Many2Many Required' __name__ = 'test.many2many_required' targets = fields.Many2Many('test.many2many_required.relation', 'origin', 'target', 'Targets', required=True) class Many2ManyRequiredTarget(ModelSQL): 'Many2Many Required Target' __name__ = 'test.many2many_required.target' name = fields.Char('Name') class Many2ManyRequiredRelation(ModelSQL): 'Many2Many Required Relation' __name__ = 'test.many2many_required.relation' origin = fields.Many2One('test.many2many_required', 'Origin') target = fields.Many2One('test.many2many_required.target', 'Target') class Many2ManyReference(ModelSQL): 'Many2Many Reference' __name__ = 'test.many2many_reference' targets = fields.Many2Many('test.many2many_reference.relation', 'origin', 'target', 'Targets') class Many2ManyReferenceTarget(ModelSQL): 'Many2Many Reference Target' __name__ = 'test.many2many_reference.target' name = fields.Char('Name') class Many2ManyReferenceRelation(ModelSQL): 'Many2Many Relation' __name__ = 'test.many2many_reference.relation' origin = fields.Reference('Origin', [ (None, ''), ('test.many2many_reference', 'Many2Many Reference'), ]) target = fields.Many2One('test.many2many_reference.target', 'Reference Target') class Many2ManySize(ModelSQL): 'Many2Many Size Relation' __name__ = 'test.many2many_size' targets = fields.Many2Many('test.many2many_size.relation', 'origin', 'target', 'Targets', size=3) class Many2ManySizeTarget(ModelSQL): 'Many2Many Size Target' __name__ = 'test.many2many_size.target' name = fields.Char('Name') class Many2ManySizeRelation(ModelSQL): 'Many2Many Size Relation' __name__ = 'test.many2many_size.relation' origin = fields.Many2One('test.many2many_size', 'Origin') target = fields.Many2One('test.many2many_size.target', 'Target') class Many2ManyDomain(ModelSQL): "Many2Many Domain" __name__ = 'test.many2many_domain' targets = fields.Many2Many( 'test.many2many_domain.relation', 'origin', 'target', "Targets", domain=[ ('value', '=', 42), ]) class Many2ManyDomainTarget(ModelSQL): "Many2Many Domain Target" __name__ = 'test.many2many_domain.target' value = fields.Integer("Value") class Many2ManyDomainRelation(ModelSQL): "Many2Many Domain Relation" __name__ = 'test.many2many_domain.relation' origin = fields.Many2One('test.many2many_domain', "Origin") target = fields.Many2One('test.many2many_domain.target', "Target") class Many2ManyFilter(ModelSQL): 'Many2Many Filter Relation' __name__ = 'test.many2many_filter' targets = fields.Many2Many('test.many2many_filter.relation', 'origin', 'target', 'Targets') filtered_targets = fields.Many2Many('test.many2many_filter.relation', 'origin', 'target', 'Targets', filter=[('value', '>', 2)]) or_filtered_targets = fields.Many2Many('test.many2many_filter.relation', 'origin', 'target', 'Targets', filter=['OR', ('value', '>', 2), ('value', '<', 0)]) class Many2ManyFilterTarget(ModelSQL): 'Many2Many Filter Target' __name__ = 'test.many2many_filter.target' value = fields.Integer('Value') class Many2ManyFilterRelation(ModelSQL): 'Many2Many Filter Relation' __name__ = 'test.many2many_filter.relation' origin = fields.Many2One('test.many2many_filter', 'Origin') target = fields.Many2One('test.many2many_filter.target', 'Target') class Many2ManyFilterDomain(ModelSQL): 'Many2Many Filter Domain Relation' __name__ = 'test.many2many_filter_domain' targets = fields.Many2Many('test.many2many_filter_domain.relation', 'origin', 'target', 'Targets', domain=[('value', '<', 10)]) filtered_targets = fields.Many2Many( 'test.many2many_filter_domain.relation', 'origin', 'target', 'Targets', domain=[('value', '<', 10)], filter=[('value', '>', 2)]) class Many2ManyFilterDomainTarget(ModelSQL): 'Many2Many Filter Domain Target' __name__ = 'test.many2many_filter_domain.target' value = fields.Integer('Value') class Many2ManyFilterDomainRelation(ModelSQL): 'Many2Many Filter Domain Relation' __name__ = 'test.many2many_filter_domain.relation' origin = fields.Many2One('test.many2many_filter_domain', 'Origin') target = fields.Many2One('test.many2many_filter.target', 'Target') class Many2ManyTree(ModelSQL): 'Many2Many Tree' __name__ = 'test.many2many_tree' parents = fields.Many2Many('test.many2many_tree.relation', 'child', 'parent', 'Parents') children = fields.Many2Many('test.many2many_tree.relation', 'parent', 'child', 'Children') class Many2ManyTreeRelation(ModelSQL): 'Many2Many Tree Relation' __name__ = 'test.many2many_tree.relation' parent = fields.Many2One('test.many2many_tree', 'Parent') child = fields.Many2One('test.many2many_tree', 'Child') class Many2ManyContext(ModelSQL): "Many2Many Context" __name__ = 'test.many2many_context' targets = fields.Many2Many( 'test.many2many_context.relation', 'origin', 'target', "Targets", context={'test': 'foo'}) class Many2ManyContextRelation(ModelSQL): "Many2Many Context Relation" __name__ = 'test.many2many_context.relation' origin = fields.Many2One('test.many2many_context', "Origin") target = fields.Many2One('test.many2many_context.target', "Target") class Many2ManyContextTarget(ModelSQL): "Many2Many Context Target" __name__ = 'test.many2many_context.target' context = fields.Function(fields.Char("context"), 'get_context') def get_context(self, name): context = Transaction().context return context.get('test') def register(module): Pool.register( Many2Many, Many2ManyTarget, Many2ManyRelation, Many2ManyRequired, Many2ManyRequiredTarget, Many2ManyRequiredRelation, Many2ManyReference, Many2ManyReferenceTarget, Many2ManyReferenceRelation, Many2ManySize, Many2ManySizeTarget, Many2ManySizeRelation, Many2ManyDomain, Many2ManyDomainTarget, Many2ManyDomainRelation, Many2ManyFilter, Many2ManyFilterTarget, Many2ManyFilterRelation, Many2ManyFilterDomain, Many2ManyFilterDomainTarget, Many2ManyFilterDomainRelation, Many2ManyTree, Many2ManyTreeRelation, Many2ManyContext, Many2ManyContextTarget, Many2ManyContextRelation, module=module, type_='model')