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
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',

View File

@@ -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

View File

@@ -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)

View File

@@ -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