Fix Model Typing
This commit is contained in:
@@ -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',
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user