feat: attrs on product
This commit is contained in:
@@ -2,7 +2,9 @@ from .article_attribute_getter import ArticleAttributeGetter
|
||||
from .brand_attribute_getter import BrandAttributeGetter
|
||||
from .client_name_attribute_getter import ClientNameAttributeGetter
|
||||
from .color_attribute_getter import ColorAttributeGetter
|
||||
from .company_name_attribute_getter import CompanyNameAttributeGetter
|
||||
from .composition_attribute_getter import CompositionAttributeGetter
|
||||
from .inn_attribute_getter import InnAttributeGetter
|
||||
from .name_attribute_getter import NameAttributeGetter
|
||||
|
||||
|
||||
@@ -16,6 +18,10 @@ class AttributeWriterFactory:
|
||||
return ArticleAttributeGetter()
|
||||
case 'client.name':
|
||||
return ClientNameAttributeGetter()
|
||||
case 'client.company_name':
|
||||
return CompanyNameAttributeGetter()
|
||||
case 'client.inn':
|
||||
return InnAttributeGetter()
|
||||
case 'brand':
|
||||
return BrandAttributeGetter()
|
||||
case 'color':
|
||||
|
||||
11
barcodes/attributes/company_name_attribute_getter.py
Normal file
11
barcodes/attributes/company_name_attribute_getter.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from barcodes.attributes.base import BaseAttributeGetter
|
||||
from models import Product, Client
|
||||
|
||||
|
||||
class CompanyNameAttributeGetter(BaseAttributeGetter):
|
||||
def get_value(self, product: Product):
|
||||
client: Client = product.client
|
||||
result = client.company_name
|
||||
if not result:
|
||||
result = ''
|
||||
return result
|
||||
12
barcodes/attributes/inn_attribute_getter.py
Normal file
12
barcodes/attributes/inn_attribute_getter.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from barcodes.attributes.base import BaseAttributeGetter
|
||||
from models import Product, Client, ClientDetails
|
||||
|
||||
|
||||
class InnAttributeGetter(BaseAttributeGetter):
|
||||
def get_value(self, product: Product):
|
||||
client: Client = product.client
|
||||
client_details: ClientDetails = client.details
|
||||
result = client_details.inn
|
||||
if not result:
|
||||
result = ''
|
||||
return result
|
||||
@@ -8,10 +8,18 @@ class Client(BaseModel):
|
||||
__tablename__ = 'clients'
|
||||
id = Column(Integer, autoincrement=True, primary_key=True, index=True)
|
||||
name = Column(String, nullable=False, unique=True, comment='Название клиента')
|
||||
|
||||
# TODO replace with additional model
|
||||
company_name = Column(String,
|
||||
nullable=False,
|
||||
server_default='',
|
||||
comment='Название компании')
|
||||
|
||||
created_at = Column(DateTime, nullable=False, comment='Дата создания')
|
||||
|
||||
products = relationship('Product', back_populates='client')
|
||||
details = relationship('ClientDetails', uselist=False, back_populates='client', cascade='all, delete')
|
||||
details = relationship('ClientDetails', uselist=False, back_populates='client', cascade='all, delete',
|
||||
lazy='joined')
|
||||
|
||||
barcode_template_id = Column(Integer, ForeignKey('barcode_templates.id'), nullable=True)
|
||||
barcode_template = relationship('BarcodeTemplate', lazy='selectin')
|
||||
|
||||
@@ -21,6 +21,7 @@ class ClientDetailsSchema(CustomModelCamel):
|
||||
class ClientSchema(CustomModelCamel):
|
||||
id: int
|
||||
name: str
|
||||
company_name: str
|
||||
barcode_template: BarcodeTemplateSchema | None = None
|
||||
details: ClientDetailsSchema | None = None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user