Misc. tweaks to product-related schema, for sake of generating SQL
e.g. from IFPS data
This commit is contained in:
		
							parent
							
								
									29638c062c
								
							
						
					
					
						commit
						ff428c4635
					
				
					 1 changed files with 27 additions and 4 deletions
				
			
		| 
						 | 
					@ -24,6 +24,7 @@
 | 
				
			||||||
Data model for CORE POS "office_op" DB
 | 
					Data model for CORE POS "office_op" DB
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import datetime
 | 
				
			||||||
import logging
 | 
					import logging
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import sqlalchemy as sa
 | 
					import sqlalchemy as sa
 | 
				
			||||||
| 
						 | 
					@ -37,6 +38,23 @@ log = logging.getLogger(__name__)
 | 
				
			||||||
Base = declarative_base()
 | 
					Base = declarative_base()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class StringableDateTime(sa.TypeDecorator):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Sort of a hack, to let us string-ify certain DateTime values when
 | 
				
			||||||
 | 
					    generating "raw" SQL output.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cf. https://docs.sqlalchemy.org/en/14/faq/sqlexpressions.html#rendering-bound-parameters-inline
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    impl = sa.DateTime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def process_literal_param(self, value, dialect):
 | 
				
			||||||
 | 
					        if value is None:
 | 
				
			||||||
 | 
					            return 'NULL'
 | 
				
			||||||
 | 
					        if isinstance(value, datetime.datetime):
 | 
				
			||||||
 | 
					            return "'{}'".format(value.strftime('%Y-%m-%d %H:%M:%S'))
 | 
				
			||||||
 | 
					        raise NotImplementedError
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Change(Base):
 | 
					class Change(Base):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Represents a changed (or deleted) record, which is pending synchronization
 | 
					    Represents a changed (or deleted) record, which is pending synchronization
 | 
				
			||||||
| 
						 | 
					@ -135,11 +153,11 @@ class Department(Base):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    modified_by_id = sa.Column('modifiedby', sa.Integer(), nullable=True)
 | 
					    modified_by_id = sa.Column('modifiedby', sa.Integer(), nullable=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    margin = sa.Column(sa.Float(), nullable=False, default=0)
 | 
					    margin = sa.Column(sa.Float(), nullable=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sales_code = sa.Column('salesCode', sa.Integer(), nullable=False, default=0)
 | 
					    sales_code = sa.Column('salesCode', sa.Integer(), nullable=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    member_only = sa.Column('memberOnly', sa.SmallInteger(), nullable=False, default=0)
 | 
					    member_only = sa.Column('memberOnly', sa.SmallInteger(), nullable=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __str__(self):
 | 
					    def __str__(self):
 | 
				
			||||||
        return self.name or ''
 | 
					        return self.name or ''
 | 
				
			||||||
| 
						 | 
					@ -488,6 +506,8 @@ class Product(Base):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    mix_match_code = sa.Column('mixmatchcode', sa.String(length=13), nullable=True)
 | 
					    mix_match_code = sa.Column('mixmatchcode', sa.String(length=13), nullable=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    created = sa.Column(StringableDateTime(), nullable=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    modified = sa.Column(sa.DateTime(), nullable=True)
 | 
					    modified = sa.Column(sa.DateTime(), nullable=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # advertised = sa.Column(sa.Boolean(), nullable=True)
 | 
					    # advertised = sa.Column(sa.Boolean(), nullable=True)
 | 
				
			||||||
| 
						 | 
					@ -649,7 +669,7 @@ class ProductUser(Base):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    enable_online = sa.Column('enableOnline', sa.Boolean(), nullable=True)
 | 
					    enable_online = sa.Column('enableOnline', sa.Boolean(), nullable=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sold_out = sa.Column('soldOut', sa.Boolean(), nullable=True, default=False)
 | 
					    sold_out = sa.Column('soldOut', sa.Boolean(), nullable=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # TODO: this was not in some older DBs
 | 
					    # TODO: this was not in some older DBs
 | 
				
			||||||
    # sign_count = sa.Column('signCount', sa.SmallInteger(), nullable=True, default=1)
 | 
					    # sign_count = sa.Column('signCount', sa.SmallInteger(), nullable=True, default=1)
 | 
				
			||||||
| 
						 | 
					@ -657,6 +677,9 @@ class ProductUser(Base):
 | 
				
			||||||
    # TODO: this was not in some older DBs
 | 
					    # TODO: this was not in some older DBs
 | 
				
			||||||
    # narrow = sa.Column(sa.Boolean(), nullable=True, default=False)
 | 
					    # narrow = sa.Column(sa.Boolean(), nullable=True, default=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __str__(self):
 | 
				
			||||||
 | 
					        return str(self.product or '')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class VendorItem(Base):
 | 
					class VendorItem(Base):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue