Added support back for Django 1.3 as well as 1.4
This commit is contained in:
		| @@ -1,11 +1,35 @@ | ||||
| import datetime | ||||
|  | ||||
| from mongoengine import * | ||||
|  | ||||
| from django.utils.encoding import smart_str | ||||
| from django.contrib.auth.models import AnonymousUser | ||||
| from django.contrib.auth.hashers import check_password, make_password | ||||
| from django.utils.translation import ugettext_lazy as _ | ||||
|  | ||||
| import datetime | ||||
| try: | ||||
|     from django.contrib.auth.hashers import check_password, make_password | ||||
| except ImportError: | ||||
|     """Handle older versions of Django""" | ||||
|  | ||||
|     def get_hexdigest(algorithm, salt, raw_password): | ||||
|         raw_password, salt = smart_str(raw_password), smart_str(salt) | ||||
|         if algorithm == 'md5': | ||||
|             return md5_constructor(salt + raw_password).hexdigest() | ||||
|         elif algorithm == 'sha1': | ||||
|             return sha_constructor(salt + raw_password).hexdigest() | ||||
|         raise ValueError('Got unknown password algorithm type in password') | ||||
|  | ||||
|     def check_password(raw_password, password): | ||||
|         algo, salt, hash = password.split('$') | ||||
|         return hash == get_hexdigest(algo, salt, raw_password) | ||||
|  | ||||
|     def make_password(raw_password): | ||||
|         from random import random | ||||
|         algo = 'sha1' | ||||
|         salt = get_hexdigest(algo, str(random()), str(random()))[:5] | ||||
|         hash = get_hexdigest(algo, salt, raw_password) | ||||
|         return '%s$%s$%s' % (algo, salt, hash) | ||||
|  | ||||
|  | ||||
| REDIRECT_FIELD_NAME = 'next' | ||||
|  | ||||
|   | ||||
| @@ -1,3 +1,6 @@ | ||||
| from datetime import datetime | ||||
|  | ||||
| from django.conf import settings | ||||
| from django.contrib.sessions.backends.base import SessionBase, CreateError | ||||
| from django.core.exceptions import SuspiciousOperation | ||||
| from django.utils.encoding import force_unicode | ||||
| @@ -6,18 +9,18 @@ from mongoengine.document import Document | ||||
| from mongoengine import fields | ||||
| from mongoengine.queryset import OperationError | ||||
| from mongoengine.connection import DEFAULT_CONNECTION_NAME | ||||
| from django.conf import settings | ||||
| from datetime import datetime | ||||
|  | ||||
|  | ||||
| MONGOENGINE_SESSION_DB_ALIAS = getattr( | ||||
|     settings, 'MONGOENGINE_SESSION_DB_ALIAS', | ||||
|     DEFAULT_CONNECTION_NAME) | ||||
|  | ||||
|  | ||||
| class MongoSession(Document): | ||||
|     session_key = fields.StringField(primary_key=True, max_length=40) | ||||
|     session_data = fields.StringField() | ||||
|     expire_date = fields.DateTimeField() | ||||
|      | ||||
|  | ||||
|     meta = {'collection': 'django_session', | ||||
|             'db_alias': MONGOENGINE_SESSION_DB_ALIAS, | ||||
|             'allow_inheritance': False} | ||||
| @@ -41,7 +44,7 @@ class SessionStore(SessionBase): | ||||
|  | ||||
|     def create(self): | ||||
|         while True: | ||||
|             self._session_key = self._get_new_session_key() | ||||
|             self.session_key = self._get_new_session_key() | ||||
|             try: | ||||
|                 self.save(must_create=True) | ||||
|             except CreateError: | ||||
| @@ -51,9 +54,9 @@ class SessionStore(SessionBase): | ||||
|             return | ||||
|  | ||||
|     def save(self, must_create=False): | ||||
|         if self._session_key is None: | ||||
|         if self.session_key is None: | ||||
|             self.create() | ||||
|         s = MongoSession(session_key=self._session_key) | ||||
|         s = MongoSession(session_key=self.session_key) | ||||
|         s.session_data = self.encode(self._get_session(no_load=must_create)) | ||||
|         s.expire_date = self.get_expiry_date() | ||||
|         try: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user