Browse Source

Fix BaseTildesSchema bugs and lint errors

merge-requests/171/head
Andrew Shu 4 weeks ago
parent
commit
9459216a96
  1. 1
      tildes/tildes/resources/group.py
  2. 20
      tildes/tildes/schemas/base.py
  3. 1
      tildes/tildes/schemas/group.py
  4. 1
      tildes/tildes/schemas/user.py
  5. 3
      tildes/tildes/views/decorators.py
  6. 1
      tildes/tildes/views/login.py

1
tildes/tildes/resources/group.py

@ -10,7 +10,6 @@ from sqlalchemy_utils import Ltree
from tildes.models.group import Group, GroupWikiPage from tildes.models.group import Group, GroupWikiPage
from tildes.resources import get_resource from tildes.resources import get_resource
from tildes.schemas.context import TildesSchemaContext, TildesSchemaContextDict
from tildes.schemas.group import GroupSchema from tildes.schemas.group import GroupSchema
from tildes.views.decorators import use_kwargs from tildes.views.decorators import use_kwargs

20
tildes/tildes/schemas/base.py

@ -4,7 +4,7 @@
"""Base Marshmallow schema.""" """Base Marshmallow schema."""
from typing import Any
from typing import Any, Optional
from marshmallow import Schema from marshmallow import Schema
from tildes.schemas.context import TildesSchemaContext, TildesSchemaContextDict from tildes.schemas.context import TildesSchemaContext, TildesSchemaContextDict
@ -17,9 +17,21 @@ class BaseTildesSchema(Schema):
context: TildesSchemaContextDict context: TildesSchemaContextDict
def __init__(self, context: TildesSchemaContextDict = {}, **kwargs: Any):
def __init__(
self, context: Optional[TildesSchemaContextDict] = None, **kwargs: Any
):
"""Pass an optional context, and forward Schema arguments to superclass."""
super().__init__(**kwargs) super().__init__(**kwargs)
self.context = context
self.context = context if context else {}
def get_context_value(self, key: str) -> Any: def get_context_value(self, key: str) -> Any:
return TildesSchemaContext.get(default=self.context).get(key)
"""Get a value from the context dict.
Any active TildesSchemaContext, e.g. set using a "with" statement,
takes precedence. If there is no active TildesSchemaContext, then
it takes the value from the dict passed in __init__ instead.
"""
result = TildesSchemaContext.get(default=self.context).get(key)
if result:
return result
return self.context.get(key)

1
tildes/tildes/schemas/group.py

@ -13,7 +13,6 @@ from marshmallow.fields import DateTime
from marshmallow.types import UnknownOption from marshmallow.types import UnknownOption
from tildes.schemas.base import BaseTildesSchema from tildes.schemas.base import BaseTildesSchema
from tildes.schemas.context import TildesSchemaContext, TildesSchemaContextDict
from tildes.schemas.fields import Ltree, Markdown, SimpleString from tildes.schemas.fields import Ltree, Markdown, SimpleString

1
tildes/tildes/schemas/user.py

@ -14,7 +14,6 @@ from marshmallow.validate import Length, Regexp
from tildes.lib.password import is_breached_password from tildes.lib.password import is_breached_password
from tildes.schemas.base import BaseTildesSchema from tildes.schemas.base import BaseTildesSchema
from tildes.schemas.context import TildesSchemaContext, TildesSchemaContextDict
from tildes.schemas.fields import Markdown from tildes.schemas.fields import Markdown

3
tildes/tildes/views/decorators.py

@ -7,7 +7,6 @@ from collections.abc import Callable
from typing import Any from typing import Any
from marshmallow import EXCLUDE from marshmallow import EXCLUDE
from marshmallow.experimental.context import Context
from marshmallow.fields import Field from marshmallow.fields import Field
from marshmallow.schema import Schema from marshmallow.schema import Schema
from pyramid.httpexceptions import HTTPFound from pyramid.httpexceptions import HTTPFound
@ -15,8 +14,6 @@ from pyramid.request import Request
from pyramid.view import view_config from pyramid.view import view_config
from webargs import pyramidparser from webargs import pyramidparser
from tildes.schemas.context import TildesSchemaContext, TildesSchemaContextDict
def use_kwargs( def use_kwargs(
argmap: Schema | dict[str, Field], location: str = "query", **kwargs: Any argmap: Schema | dict[str, Field], location: str = "query", **kwargs: Any

1
tildes/tildes/views/login.py

@ -19,7 +19,6 @@ from tildes.enums import LogEventType
from tildes.metrics import incr_counter from tildes.metrics import incr_counter
from tildes.models.log import Log from tildes.models.log import Log
from tildes.models.user import User from tildes.models.user import User
from tildes.schemas.context import TildesSchemaContext, TildesSchemaContextDict
from tildes.schemas.user import UserSchema from tildes.schemas.user import UserSchema
from tildes.views.decorators import not_logged_in, rate_limit_view, use_kwargs from tildes.views.decorators import not_logged_in, rate_limit_view, use_kwargs

Loading…
Cancel
Save