Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Pydantic alias issue #560

Merged
merged 2 commits into from
Mar 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions src/aleph/web/controllers/messages.py
Original file line number Diff line number Diff line change
@@ -1,52 +1,49 @@
import logging
from typing import List, Optional, Any, Dict, Iterable
from typing import Any, Dict, Iterable, List, Optional

import aio_pika.abc
import aiohttp.web_ws
from aiohttp import web, WSMsgType
from aleph_message.models import MessageType, ItemHash, Chain
from pydantic import BaseModel, Field, validator, ValidationError, root_validator

import aleph.toolkit.json as aleph_json
from aiohttp import WSMsgType, web
from aleph.db.accessors.messages import (
get_matching_messages,
count_matching_messages,
get_message_status,
get_message_by_item_hash,
get_forgotten_message,
get_matching_messages,
get_message_by_item_hash,
get_message_status,
get_rejected_message,
)
from aleph.db.accessors.pending_messages import get_pending_messages
from aleph.db.models import MessageStatusDb, MessageDb
from aleph.db.models import MessageDb, MessageStatusDb
from aleph.schemas.api.messages import (
format_message,
AlephMessage,
ForgottenMessage,
ForgottenMessageStatus,
MessageWithStatus,
PendingMessage,
PendingMessageStatus,
ProcessedMessageStatus,
ForgottenMessageStatus,
ForgottenMessage,
RejectedMessageStatus,
PendingMessage,
AlephMessage,
format_message,
format_message_dict,
)
from aleph.toolkit.shield import shielded
from aleph.types.db_session import DbSessionFactory, DbSession
from aleph.types.db_session import DbSession, DbSessionFactory
from aleph.types.message_status import MessageStatus
from aleph.types.sort_order import SortOrder, SortBy
from aleph.types.sort_order import SortBy, SortOrder
from aleph.web.controllers.app_state_getters import (
get_session_factory_from_request,
get_config_from_request,
get_mq_ws_channel_from_request,
get_session_factory_from_request,
)
from aleph.web.controllers.utils import (
DEFAULT_MESSAGES_PER_PAGE,
DEFAULT_PAGE,
)
from aleph.web.controllers.utils import (
LIST_FIELD_SEPARATOR,
mq_make_aleph_message_topic_queue,
)
from aleph_message.models import Chain, ItemHash, MessageType
from pydantic import BaseModel, Field, ValidationError, root_validator, validator

LOGGER = logging.getLogger(__name__)

Expand Down Expand Up @@ -140,6 +137,9 @@ def split_str(cls, v):
return v.split(LIST_FIELD_SEPARATOR)
return v

class Config:
allow_population_by_field_name = True


class MessageQueryParams(BaseMessageQueryParams):
pagination: int = Field(
Expand Down
22 changes: 12 additions & 10 deletions src/aleph/web/controllers/posts.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
from typing import Optional, List, Any, Dict
from typing import Any, Dict, List, Optional

from aiohttp import web
from aleph_message.models import ItemHash
from pydantic import BaseModel, Field, root_validator, validator, ValidationError
from sqlalchemy import select

from aleph.db.accessors.posts import (
get_matching_posts,
MergedPost,
MergedPostV0,
count_matching_posts,
get_matching_posts,
get_matching_posts_legacy,
MergedPostV0,
)
from aleph.db.models import message_confirmations, ChainTxDb
from aleph.types.db_session import DbSessionFactory, DbSession
from aleph.types.sort_order import SortOrder, SortBy
from aleph.db.models import ChainTxDb, message_confirmations
from aleph.types.db_session import DbSession, DbSessionFactory
from aleph.types.sort_order import SortBy, SortOrder
from aleph.web.controllers.utils import (
DEFAULT_MESSAGES_PER_PAGE,
DEFAULT_PAGE,
Expand All @@ -23,6 +19,9 @@
cond_output,
get_path_page,
)
from aleph_message.models import ItemHash
from pydantic import BaseModel, Field, ValidationError, root_validator, validator
from sqlalchemy import select


class PostQueryParams(BaseModel):
Expand Down Expand Up @@ -104,6 +103,9 @@ def split_str(cls, v):
return v.split(LIST_FIELD_SEPARATOR)
return v

class Config:
allow_population_by_field_name = True


def merged_post_to_dict(merged_post: MergedPost) -> Dict[str, Any]:
return {
Expand Down
20 changes: 10 additions & 10 deletions tests/api/test_list_messages.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
import datetime as dt
import itertools
from collections import defaultdict
from typing import Any, Dict, Iterable, List, Optional, Sequence, Union, Tuple
from typing import Any, Dict, Iterable, List, Optional, Sequence, Tuple, Union

import aiohttp
import pytest
from aleph_message.models import Chain, ItemType, MessageType, InstanceContent
from aleph.db.models import MessageDb, PostDb
from aleph.toolkit.timestamp import timestamp_to_datetime
from aleph.types.channel import Channel
from aleph.types.db_session import DbSessionFactory
from aleph_message.models import Chain, InstanceContent, ItemType, MessageType
from aleph_message.models.execution.environment import (
MachineResources,
FunctionEnvironment,
MachineResources,
)
from aleph_message.models.execution.instance import RootfsVolume
from aleph_message.models.execution.volume import ImmutableVolume, ParentVolume

from aleph.db.models import MessageDb, PostDb
from aleph.toolkit.timestamp import timestamp_to_datetime
from aleph.types.channel import Channel
from aleph.types.db_session import DbSessionFactory
from .utils import get_messages_by_keys

MESSAGES_URI = "/api/v0/messages.json"
Expand Down Expand Up @@ -272,8 +272,8 @@ async def fetch_messages_filter_time(
) -> aiohttp.ClientResponse:

params: Dict[str, Union[float, int, str]] = {
"sortBy": sort_by,
"sortOrder": sort_order,
"sort_by": sort_by,
"sort_order": sort_order,
}
if start:
params["startDate"] = start
Expand Down Expand Up @@ -373,7 +373,7 @@ async def fetch_messages_with_pagination(
):
return await api_client.get(
MESSAGES_URI,
params={"page": page, "pagination": pagination, "sortOrder": sort_order},
params={"page": page, "pagination": pagination, "sort_order": sort_order},
)


Expand Down
Loading