Skip to content

Bug: Can't update team record when tags is not empty. #224

@hasansezertasan

Description

@hasansezertasan

Description

As title goes, I'm unable to update a team record.

URL to code causing the issue

No response

MCVE

I just followed these steps after cloning the repository:


make install
cp .env.local.example .env
make start-infra
app database upgrade
uv run app run --port 8089

Steps to reproduce

1. Go to http://localhost:8089/schema#tag/teams/post/api/teams
2. Test Request with:


{
  "name": "Problem",
  "description": "Problem",
  "tags": [
    "Problem"
  ]
}


3. Go to http://localhost:8089/schema#tag/teams/patch/api/teams/{team_id}
4. Test Request with:


{
  "name": "Real Problem",
  "description": "Real Problem",
  "tags": [
    ""
  ]
}


or


{
  "name": "Real Problem",
  "description": "Real Problem",
  "tags": [
    "not-empty"
  ]
}


5. See error

Screenshots

"In the format of: ![SCREENSHOT_DESCRIPTION](SCREENSHOT_LINK.png)"

Logs

Traceback (most recent call last):
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/.venv/lib/python3.13/site-packages/litestar/middleware/_internal/exceptions/middleware.py", line 158, in __call__
    await self.app(scope, receive, capture_response_started)
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 81, in handle
    response = await self._get_response_for_request(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        scope=scope, request=request, route_handler=route_handler, parameter_model=parameter_model
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 133, in _get_response_for_request
    return await self._call_handler_function(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        scope=scope, request=request, parameter_model=parameter_model, route_handler=route_handler
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 153, in _call_handler_function
    response_data, cleanup_group = await self._get_response_data(
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        route_handler=route_handler, parameter_model=parameter_model, request=request
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 191, in _get_response_data
    async with cleanup_group:
               ^^^^^^^^^^^^^
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/.venv/lib/python3.13/site-packages/litestar/_kwargs/cleanup.py", line 102, in __aexit__
    await self.throw(exc_val)
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/.venv/lib/python3.13/site-packages/litestar/_kwargs/cleanup.py", line 113, in throw
    await gen.athrow(exc)
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/.venv/lib/python3.13/site-packages/advanced_alchemy/extensions/litestar/providers.py", line 194, in provide_async_service
    yield service
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 195, in _get_response_data
    else await route_handler.fn(**parsed_kwargs)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/src/app/domain/teams/controllers/teams.py", line 80, in update_team
    db_obj = await teams_service.update(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<2 lines>...
    )
    ^
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/.venv/lib/python3.13/site-packages/advanced_alchemy/service/_async.py", line 699, in update
    data = await self.to_model(data, "update")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/.venv/lib/python3.13/site-packages/advanced_alchemy/service/_async.py", line 427, in to_model
    data = await op(data)
           ^^^^^^^^^^^^^^
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/src/app/domain/teams/services.py", line 53, in to_model_on_update
    return await self._populate_with_owner_and_tags(data, "update")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hasansezertasan/Developer/projects/bakimli_app/src/app/domain/teams/services.py", line 111, in _populate_with_owner_and_tags
    self.repository.session, name=tag_text.name, slug=slugify(tag_text.name)
                                  ^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'name'

Package Version

Commit: 960d634

Platform

  • Linux
  • Mac
  • Windows
  • Other (Please specify in the description above)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions