-# May get used later...
-#class PurchaseRecord(SQLModel, table=True):
-# id: int | None = Field(default=None, primary_key=True)
-# name: str = Field(default=None, unique=True)
-# price: Decimal | None = Field(decimal_places=2)
-# store: Store = Relationship(back_populates="purchase_history")
-# purchase_date: dt | None = Field(default=None)
+ def get_pretty_shopping_list(self) -> List[str]:
+ results = []
+ results.append(f' ## {self.name}')
+ items = self.shopping_list
+ if not items:
+ results.append(f'-- Nothing to shop for at {self.name} --')
+ else:
+ for item in items:
+ if(item.purchase_date):
+ results.append(f' - [x] {item}')
+ else:
+ results.append(f' - [ ] {item}')
+ return results
+
+
+class PurchaseRecord(SQLModel, table=True):
+ '''Tracks when and where items were purchased.'''
+ id: int | None = Field(default=None, primary_key=True)
+ name: str = Field(default=None)
+ price: Decimal | None = Field(decimal_places=2)
+ store: str | None = Field(default=None)
+ purchase_date: dt | None = Field(default=None)
+ def __str__(self):
+ date = self.purchase_date.strftime(DATE_FORMAT)
+ return f'Bought {self.name} at {self.store} on {date}'