django0 기반.96의 자동 테스트 기능 향상된 Login 기능

2208 단어 django
0.96 은 client 객체를 지원하지 않으며 데이터를 제출하기 전에 Login 을 실행합니다.따라서 trunk 참조로 Client 우선 적용
    def login_new(self, **credentials):
        """Set the Client to appear as if it has sucessfully logged into a site.

        Returns True if login is possible; False if the provided credentials
        are incorrect, or the user is inactive, or if the sessions framework is
        not available.
        """
        user = authenticate(**credentials)
        if user and user.is_active and 'django.contrib.sessions' in settings.INSTALLED_APPS:
            #engine = __import__(settings.SESSION_ENGINE, {}, {}, [''])

            # Create a fake request to store login details
            request = HttpRequest()
            #request.session = engine.SessionStore()
            from django.contrib.sessions.middleware import SessionMiddleware
            SessionMiddleware().process_request( request )
            login(request, user)

            obj = Session.objects.get_new_session_object()
            session_key = obj.session_key
            
            # Set the cookie to represent the session
            self.cookies[settings.SESSION_COOKIE_NAME] = session_key
            self.cookies[settings.SESSION_COOKIE_NAME]['max-age'] = None
            self.cookies[settings.SESSION_COOKIE_NAME]['path'] = '/'
            self.cookies[settings.SESSION_COOKIE_NAME]['domain'] = settings.SESSION_COOKIE_DOMAIN
            self.cookies[settings.SESSION_COOKIE_NAME]['secure'] = settings.SESSION_COOKIE_SECURE or None
            self.cookies[settings.SESSION_COOKIE_NAME]['expires'] = None

            # Save the session values
            #request.session.save()
            new_session = Session.objects.save(session_key, request.session._session,
                    datetime.datetime.now() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE))

            return True
        else:
            return False

좋은 웹페이지 즐겨찾기