Files
tradon/modules/product_classification_taxonomic/product.py
2026-03-14 09:42:12 +00:00

61 lines
2.0 KiB
Python

# 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 DeactivableMixin, ModelSQL, ModelView, fields
from trytond.modules.product_classification.product import (
ClassificationMixin, classification_tree)
from trytond.pool import PoolMeta
class Template(metaclass=PoolMeta):
__name__ = 'product.template'
@classmethod
def _get_classification(cls):
return super()._get_classification() + [
'product.taxon', 'product.cultivar']
class Taxon(classification_tree('product.taxon'), ModelSQL, ModelView):
__name__ = 'product.taxon'
rank = fields.Selection([
(None, ""),
('domain', 'Domain'),
('kingdom', 'Kingdom'),
('phylum', 'Phylum'),
('division', 'Division'),
('class', 'Class'),
('order', 'Order'),
('family', 'Family'),
('tribe', 'Tribe'),
('genus', 'Genus'),
('section', 'Section'),
('series', 'Series'),
('species', 'Species'),
('variety', 'Variety'),
('form', 'Form'),
], "Type", sort=False)
class Cultivar(ClassificationMixin, ModelSQL, ModelView):
__name__ = 'product.cultivar'
taxon = fields.Many2One('product.taxon', 'Taxon', required=True)
groups = fields.Many2Many('product.cultivar-product.cultivar.group',
'cultivar', 'group', 'Groups')
class CultivarGroup(DeactivableMixin, ModelSQL, ModelView):
__name__ = 'product.cultivar.group'
name = fields.Char('Name', translate=True)
cultivars = fields.Many2Many('product.cultivar-product.cultivar.group',
'group', 'cultivar', 'Cultivars')
class Cultivar_CultivarGroup(ModelSQL):
__name__ = 'product.cultivar-product.cultivar.group'
cultivar = fields.Many2One(
'product.cultivar', "Cultivar", required=True)
group = fields.Many2One(
'product.cultivar.group', "Group", required=True)
# TODO Grex