Fix Model Typing
This commit is contained in:
@@ -46,6 +46,10 @@ def init_orm():
|
||||
|
||||
# # List Entries
|
||||
db.mapper(ListEntry, list_entries, properties={
|
||||
'product': db.relationship(
|
||||
Product,
|
||||
back_populates='entries'
|
||||
),
|
||||
'shoppingList': db.relationship(
|
||||
ShoppingList,
|
||||
back_populates='entries',
|
||||
@@ -54,6 +58,11 @@ def init_orm():
|
||||
|
||||
# Products
|
||||
db.mapper(Product, products, properties={
|
||||
'entries': db.relationship(
|
||||
ListEntry,
|
||||
back_populates='product',
|
||||
cascade='all, delete-orphan',
|
||||
),
|
||||
'locations': db.relationship(
|
||||
ProductLocation,
|
||||
back_populates='product',
|
||||
|
||||
@@ -4,8 +4,9 @@ Simple Grocery List (Sigl) | sigl.app
|
||||
Copyright (c) 2022 Asymworks, LLC. All Rights Reserved.
|
||||
"""
|
||||
|
||||
from dataclasses import dataclass
|
||||
from dataclasses import dataclass, field
|
||||
from datetime import datetime
|
||||
from typing import List
|
||||
|
||||
__all__ = ('AccessKey', 'AccessToken')
|
||||
|
||||
@@ -24,6 +25,8 @@ class AccessKey:
|
||||
may also be used for throttling.
|
||||
"""
|
||||
key: str = None
|
||||
|
||||
# Client Information
|
||||
clientId: str = None
|
||||
clientIP: str = None
|
||||
userAgent: str = None
|
||||
@@ -38,8 +41,8 @@ class AccessKey:
|
||||
revokedAt: datetime = None
|
||||
restoredAt: datetime = None
|
||||
|
||||
# Populated by ORM
|
||||
# tokens: List['AccessToken'] = None
|
||||
# Relationship Fields
|
||||
tokens: List['AccessToken'] = field(default_factory=list)
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -56,7 +59,11 @@ class AccessToken:
|
||||
User Agent string are logged for future auditing purposes.
|
||||
"""
|
||||
token: str = None
|
||||
|
||||
# Relationship Fields
|
||||
accessKey: 'AccessKey' = None
|
||||
|
||||
# Client Information
|
||||
clientIP: str = None
|
||||
userAgent: str = None
|
||||
|
||||
|
||||
@@ -4,8 +4,10 @@ Simple Grocery List (Sigl) | sigl.app
|
||||
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 .product import Product
|
||||
|
||||
@@ -25,8 +27,8 @@ class ListEntry(NotesMixin, TimestampMixin):
|
||||
deleted: bool = False
|
||||
|
||||
# Relationship Fields
|
||||
shoppingList: 'ShoppingList' = None
|
||||
product: Product = None
|
||||
shoppingList: 'ShoppingList' = None
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -36,8 +38,8 @@ class ShoppingList(NotesMixin, TimestampMixin):
|
||||
Contains a collection of `ListEntry` items which are intended to be
|
||||
purchased.
|
||||
"""
|
||||
accessKey: str = None
|
||||
accessKey: AccessKey = None
|
||||
name: str = None
|
||||
|
||||
# Populated by ORM
|
||||
# entries: List[ListEntry] = None
|
||||
# Relationship Fields
|
||||
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.
|
||||
"""
|
||||
|
||||
from dataclasses import dataclass
|
||||
from dataclasses import dataclass, field
|
||||
from typing import List, TYPE_CHECKING
|
||||
|
||||
from .accessKey import AccessKey
|
||||
from .mixins import NotesMixin, TimestampMixin
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .list import ListEntry
|
||||
|
||||
__all__ = ('Product', 'ProductLocation')
|
||||
|
||||
|
||||
@@ -23,11 +28,11 @@ class Product(NotesMixin, TimestampMixin):
|
||||
category: str = None
|
||||
|
||||
# Access Control
|
||||
accessKey: str = None
|
||||
accessKey: AccessKey = None
|
||||
|
||||
# Populated by ORM
|
||||
# locations: List['ProductLocation'] = []
|
||||
# shoppingLists: List['ShoppingList'] = []
|
||||
# Relationship Fields
|
||||
entries: List['ListEntry'] = field(default_factory=list)
|
||||
locations: List['ProductLocation'] = field(default_factory=list)
|
||||
|
||||
|
||||
@dataclass
|
||||
|
||||
Reference in New Issue
Block a user