Hey, Welcome to the mailing list. This is probably a little low-level as a feature request here. I think it is better submitted as a ticket as per https://docs.djangoproject.com/en/dev/internals/contributing/bugs-and-features/ :) Where on the docs did you read about django-developers?
As for your suggested feature - could you talk about your use case a little more? If Django is going to support sessions not attached to requests, it's likely this isn't the only thing that would need changing. And as you've seen in the source, the function you want right now is only one line (get_user_session_key). Thanks, Adam On Thu, 25 Jul 2019 at 14:09, 'andreymal' via Django developers (Contributions to Django itself) <[email protected]> wrote: > (Hello, the Django documentation says that I should send feature > requests to the django-developers mailing list, so I send it here.) > > I have a need to get a user object using a known session key without an > HTTP request. After reading the Django code, I did not find a clean way > to do this. > > Django has the "get_user" function that requires a request object. But > it actually uses only "request.session" and nothing else. So I suggest > refactoring it something like this: > > # > > https://github.com/django/django/blob/master/django/contrib/auth/__init__.py > def _get_user_session_key(session): > return get_user_model()._meta.pk.to_python(session[SESSION_KEY]) > > def get_user(request): > return get_user_by_session(request.session) > > def get_user_by_session_key(session_key): > SessionStore = import_module(settings.SESSION_ENGINE).SessionStore > return get_user_by_session(SessionStore(session_key)) > > def get_user_by_session(session): > from .models import AnonymousUser > user = None > try: > user_id = _get_user_session_key(session) > backend_path = session[BACKEND_SESSION_KEY] > except KeyError: > pass > else: > ... # the rest of the code > return user or AnonymousUser() > > Note that Django Channels has similar code so the "get_user_by_session" > function can help to deduplicate it: > https://github.com/django/channels/tree/master/channels/auth.py#L23 > > -- > You received this message because you are subscribed to the Google Groups > "Django developers (Contributions to Django itself)" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-developers/858abfe1-42b9-185b-e69c-c23d6058e762%40andreymal.org > . > -- Adam -- You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/CAMyDDM3vn6SP2q951_1keJnaQhAbTEY3rfK_X-FvSSLOtQoTCw%40mail.gmail.com.
