Fix Model Typing

This commit is contained in:
2022-07-12 08:44:49 -07:00
parent edd129e532
commit b496633642
4 changed files with 36 additions and 13 deletions

View File

@@ -46,6 +46,10 @@ def init_orm():
# # List Entries # # List Entries
db.mapper(ListEntry, list_entries, properties={ db.mapper(ListEntry, list_entries, properties={
'product': db.relationship(
Product,
back_populates='entries'
),
'shoppingList': db.relationship( 'shoppingList': db.relationship(
ShoppingList, ShoppingList,
back_populates='entries', back_populates='entries',
@@ -54,6 +58,11 @@ def init_orm():
# Products # Products
db.mapper(Product, products, properties={ db.mapper(Product, products, properties={
'entries': db.relationship(
ListEntry,
back_populates='product',
cascade='all, delete-orphan',
),
'locations': db.relationship( 'locations': db.relationship(
ProductLocation, ProductLocation,
back_populates='product', back_populates='product',

View File

@@ -4,8 +4,9 @@ Simple Grocery List (Sigl) | sigl.app
Copyright (c) 2022 Asymworks, LLC. All Rights Reserved. Copyright (c) 2022 Asymworks, LLC. All Rights Reserved.
""" """
from dataclasses import dataclass from dataclasses import dataclass, field
from datetime import datetime from datetime import datetime
from typing import List
__all__ = ('AccessKey', 'AccessToken') __all__ = ('AccessKey', 'AccessToken')
@@ -24,6 +25,8 @@ class AccessKey:
may also be used for throttling. may also be used for throttling.
""" """
key: str = None key: str = None
# Client Information
clientId: str = None clientId: str = None
clientIP: str = None clientIP: str = None
userAgent: str = None userAgent: str = None
@@ -38,8 +41,8 @@ class AccessKey:
revokedAt: datetime = None revokedAt: datetime = None
restoredAt: datetime = None restoredAt: datetime = None
# Populated by ORM # Relationship Fields
# tokens: List['AccessToken'] = None tokens: List['AccessToken'] = field(default_factory=list)
@dataclass @dataclass
@@ -56,7 +59,11 @@ class AccessToken:
User Agent string are logged for future auditing purposes. User Agent string are logged for future auditing purposes.
""" """
token: str = None token: str = None
# Relationship Fields
accessKey: 'AccessKey' = None accessKey: 'AccessKey' = None
# Client Information
clientIP: str = None clientIP: str = None
userAgent: str = None userAgent: str = None

View File

@@ -4,8 +4,10 @@ Simple Grocery List (Sigl) | sigl.app
Copyright (c) 2022 Asymworks, LLC. All Rights Reserved. Copyright (c) 2022 Asymworks, LLC. All Rights Reserved.
""" """
from dataclasses import dataclass from dataclasses import dataclass, field
from typing import List
from .accessKey import AccessKey
from .mixins import NotesMixin, TimestampMixin from .mixins import NotesMixin, TimestampMixin
from .product import Product from .product import Product
@@ -25,8 +27,8 @@ class ListEntry(NotesMixin, TimestampMixin):
deleted: bool = False deleted: bool = False
# Relationship Fields # Relationship Fields
shoppingList: 'ShoppingList' = None
product: Product = None product: Product = None
shoppingList: 'ShoppingList' = None
@dataclass @dataclass
@@ -36,8 +38,8 @@ class ShoppingList(NotesMixin, TimestampMixin):
Contains a collection of `ListEntry` items which are intended to be Contains a collection of `ListEntry` items which are intended to be
purchased. purchased.
""" """
accessKey: str = None accessKey: AccessKey = None
name: str = None name: str = None
# Populated by ORM # Relationship Fields
# entries: List[ListEntry] = None entries: List[ListEntry] = field(default_factory=list)

View File

@@ -4,10 +4,15 @@ Simple Grocery List (Sigl) | sigl.app
Copyright (c) 2022 Asymworks, LLC. All Rights Reserved. Copyright (c) 2022 Asymworks, LLC. All Rights Reserved.
""" """
from dataclasses import dataclass from dataclasses import dataclass, field
from typing import List, TYPE_CHECKING
from .accessKey import AccessKey
from .mixins import NotesMixin, TimestampMixin from .mixins import NotesMixin, TimestampMixin
if TYPE_CHECKING:
from .list import ListEntry
__all__ = ('Product', 'ProductLocation') __all__ = ('Product', 'ProductLocation')
@@ -23,11 +28,11 @@ class Product(NotesMixin, TimestampMixin):
category: str = None category: str = None
# Access Control # Access Control
accessKey: str = None accessKey: AccessKey = None
# Populated by ORM # Relationship Fields
# locations: List['ProductLocation'] = [] entries: List['ListEntry'] = field(default_factory=list)
# shoppingLists: List['ShoppingList'] = [] locations: List['ProductLocation'] = field(default_factory=list)
@dataclass @dataclass