Giter Club home page Giter Club logo

Comments (5)

aaugustin avatar aaugustin commented on July 29, 2024

Tests pass on Django 3.2 (see 32fdc0e).

Could you please provide :

  1. the complete stack trace of the exception
  2. the value of the DEFAULT_AUTO_FIELD and SESAME_PACKER settings (if they're defined)
  3. the output of from django.contrib.auth import get_user_model; get_user_model()._meta.pk.get_internal_type()

from django-sesame.

thomascenni avatar thomascenni commented on July 29, 2024

Hello,

  1. Complete stack
Traceback (most recent call last):
  File "/projects/p1/.env/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/projects/p1/.env/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/projects/p1/app/views.py", line 100, in SetupUserView
    profile_url = generate_token_url(request, user, scope, serial_id)
  File "/projects/p1/app/utils.py", line 23, in generate_token_url
    token_url += get_query_string(user, scope=scope)
  File "/projects/p1/.env/lib/python3.8/site-packages/sesame/utils.py", line 25, in get_query_string
    return "?" + urlencode(get_parameters(user, scope))
  File "/projects/p1/.env/lib/python3.8/site-packages/sesame/utils.py", line 17, in get_parameters
    return {settings.TOKEN_NAME: get_token(user, scope)}
  File "/projects/p1/.env/lib/python3.8/site-packages/sesame/tokens.py", line 16, in create_token
    return tokens.create_token(user, scope)
  File "/projects/p1/.env/lib/python3.8/site-packages/sesame/tokens_v2.py", line 129, in create_token
    primary_key = packers.packer.pack_pk(user.pk)
  File "/projects/p1/.env/lib/python3.8/site-packages/sesame/packers.py", line 59, in pack_pk
    return struct.pack(cls.fmt, user_pk)
struct.error: required argument is not an integer
  1. DEFAULT_AUTO_FIELD = 'hashid_field.BigHashidAutoField' from https://github.com/nshafer/django-hashid-field (django-hashid-field==3.2.1)
    SESAME_PACKER not defined
  2. The output is 'BigAutoField'

Going back to Django 3.1.8, everything works correctly (the development started in an earlier version, I really got the problem when upgrading to Django 3.2).

from django-sesame.

thomascenni avatar thomascenni commented on July 29, 2024

Hello,
Just found the error, I need to define the
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
djang-sesame was not able to get user_pk because it was getting a Hashid object.

from django-sesame.

aaugustin avatar aaugustin commented on July 29, 2024

Maybe django-hashid-field has a different behavior on Django 3.2?

Anyway, the problem is that django-hashid-field's BigHashidAutoField pretends that it's native BigAutoField: https://github.com/nshafer/django-hashid-field/blob/cc0287119b1093015816954bf3e5dca21a44b8ec/hashid_field/field.py#L184-L185

But it's quite different: unlike BigAutoField its value cannot be used as an int, which trips django-sesame.

Forcing BigAutoField solves the problem but you may be losing behaviors that you expect from django-hashid-field.

If you want to use BigHashidAutoField, you can set SESAME_PACKER to something appropriate for the underlying type, maybe sesame.packers.StrPacker.

from django-sesame.

thomascenni avatar thomascenni commented on July 29, 2024

Thanks for the hints.
Actually my user model is a custom one (it extends AbstractUser), but it doesn't have a hashid-field.
The BigHashidAutoField is used in another model, but I suppose django-sesame was using the DEFAULT_AUTO_FIELD setting.

from django-sesame.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.