Enhancements
This commit is contained in:
+50
-13
@@ -3,13 +3,14 @@ from sqlalchemy.types import TypeDecorator, VARCHAR, Integer, CHAR
|
||||
from sqlalchemy_utils import EmailType
|
||||
from sqlalchemy.orm import relationship
|
||||
#from models.database import Base
|
||||
from sustApp.models.database import Base
|
||||
from .database import Base
|
||||
|
||||
import datetime
|
||||
|
||||
class TrimChar(TypeDecorator):
|
||||
impl = CHAR
|
||||
cache_key = False
|
||||
cache_ok = True
|
||||
|
||||
def process_result_value(self, value, dialect):
|
||||
if value:
|
||||
@@ -59,20 +60,27 @@ class Members(Base):
|
||||
member_geo_longitude = Column(Float, nullable=True)
|
||||
member_deliveries = relationship('Deliveries', backref='members')
|
||||
member_payments = relationship('Payments', backref='members')
|
||||
#member_deliveries: Mapped[List["Deliveries"]] = relationship()
|
||||
#current_state_code = Column(String, index=True)
|
||||
#current_state_name = relationship('MemberStates', backref='state_code')
|
||||
|
||||
current_state_code = Column(TrimChar, index=True) # No foreign key
|
||||
current_state_changed_at = Column(DateTime)
|
||||
|
||||
# Use primaryjoin to specify the join condition
|
||||
current_state = relationship(
|
||||
'MemberStates',
|
||||
primaryjoin='Members.current_state_code == MemberStates.state_code',
|
||||
foreign_keys=[current_state_code]
|
||||
spouse_id = Column(Integer, ForeignKey('members.id'), nullable=True)
|
||||
spouse = relationship(
|
||||
"Members",
|
||||
remote_side=[id],
|
||||
foreign_keys=[spouse_id],
|
||||
backref="spouse_of",
|
||||
single_parent=True
|
||||
)
|
||||
|
||||
current_state_code = Column(TrimChar, index=True)
|
||||
# current_state = relationship(
|
||||
# 'MemberStates',
|
||||
# foreign_keys=[current_state_code],
|
||||
# # primaryjoin="foreign(Members.current_state_code) == remote(MemberStates.state_code)",
|
||||
# viewonly=True
|
||||
# )
|
||||
|
||||
current_state_changed_at = Column(DateTime)
|
||||
member_primary = Column(Boolean, default=True)
|
||||
|
||||
def __repr__(self):
|
||||
return f'<Comment "{self.content[:20]}...">'
|
||||
|
||||
@@ -118,6 +126,7 @@ class Payments_CSV(Base):
|
||||
pc_currency = Column(String)
|
||||
pc_timestamp = Column(DateTime)
|
||||
pc_processed = Column(Boolean, default=False)
|
||||
pc_year = Column(DateTime)
|
||||
|
||||
class MemberStates(Base):
|
||||
__tablename__ = 'member_states'
|
||||
@@ -126,6 +135,7 @@ class MemberStates(Base):
|
||||
state_name = Column(String(20), nullable=False)
|
||||
description = Column(String)
|
||||
created_at = Column(DateTime)
|
||||
# members = relationship("Members", back_populates="current_state")
|
||||
|
||||
class MemberStateLog(Base):
|
||||
__tablename__ = 'member_state_log'
|
||||
@@ -139,4 +149,31 @@ class MemberStateLog(Base):
|
||||
|
||||
# Relationships
|
||||
member = relationship('Members', backref='state_history')
|
||||
state = relationship('MemberStates')
|
||||
state = relationship('MemberStates')
|
||||
|
||||
class MembersPaidYears(Base):
|
||||
"""View for members and their payment years"""
|
||||
__tablename__ = 'members_paid_years'
|
||||
__table_args__ = {'extend_existing': True}
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
member_firstname = Column(String)
|
||||
member_surname = Column(String)
|
||||
member_suffix = Column(String)
|
||||
member_email = Column(String)
|
||||
member_active = Column(Boolean)
|
||||
# payment_year = Column(DateTime)
|
||||
# payment_amount = Column(Float)
|
||||
# payment_date = Column(DateTime)
|
||||
member_active = Column(Boolean, default=True)
|
||||
current_state_code = Column(TrimChar, index=True)
|
||||
# current_state = relationship(
|
||||
# 'MemberStates', # Ensure this matches the CLASS name exactly
|
||||
# primaryjoin='Members.current_state_code == MemberStates.state_code',
|
||||
# foreign_keys='[Members.current_state_code]', # Use a string here to avoid registry issues
|
||||
# viewonly=True # Recommended if there is no actual ForeignKey constraint in DB
|
||||
# )
|
||||
member_membership_start = Column(DateTime)
|
||||
paid_2024 = Column(Boolean, default=False)
|
||||
paid_2025 = Column(Boolean, default=False)
|
||||
paid_2026 = Column(Boolean, default=False)
|
||||
Reference in New Issue
Block a user