From 41e5496301cd02bff34dad877d20b2dd30349866 Mon Sep 17 00:00:00 2001 From: Jayaram Pai Date: Thu, 5 Dec 2013 21:25:35 +0530 Subject: something works :) --- drupal_auth/backends.py | 23 +++++++++++++++++++++++ drupal_auth/managers.py | 26 ++++++++++++++++++++++++++ drupal_auth/models.py | 28 ++++++++++++++++++++++++++++ drupal_auth/routers.py | 18 ++++++++++++++++++ forums/settings.py | 6 ++++-- static/website/templates/index.html | 1 + website/models.py | 13 +------------ website/views.py | 3 ++- 8 files changed, 103 insertions(+), 15 deletions(-) create mode 100644 drupal_auth/backends.py create mode 100644 drupal_auth/managers.py create mode 100644 drupal_auth/models.py create mode 100644 drupal_auth/routers.py diff --git a/drupal_auth/backends.py b/drupal_auth/backends.py new file mode 100644 index 0000000..1caa1f0 --- /dev/null +++ b/drupal_auth/backends.py @@ -0,0 +1,23 @@ +from django.contrib.auth.models import User +from django.contrib.auth import get_user_model +from django.shortcuts import render_to_response, get_object_or_404 + +User = get_user_model() + +class DrupalAuthBackend(object): + def authenticate(self, username=None, password=None): + try: + user = User(name='cheese') + user.is_active = True + user.is_authenticated = True + return user + except Exception, e: + print e.message + print "blaj"*1000 + + def get_user(self, user_id): + try: + print "Hello"*1000 + return User.objects.get(pk=user_id) + except User.DoesNotExist: + return None diff --git a/drupal_auth/managers.py b/drupal_auth/managers.py new file mode 100644 index 0000000..d1dc662 --- /dev/null +++ b/drupal_auth/managers.py @@ -0,0 +1,26 @@ +import md5 + +from django.db import models +from django.contrib.auth.models import ( + BaseUserManager, AbstractBaseUser +) + +class DrupalUserManager(BaseUserManager): + def create_user(self, password=None): + user = self.model() + if not email: + raise ValueError('Users must have an email address') + + user.set_password(password) + user.save(using=self._db) + return user + + def create_superuser(self, name, password): + user = self.model() + user.name= name + p = md5.new() + p.update(password) + user.pass_field= p.hexdigest() + user.is_admin = True + user.save(using=self._db) + return user diff --git a/drupal_auth/models.py b/drupal_auth/models.py new file mode 100644 index 0000000..e3fab6b --- /dev/null +++ b/drupal_auth/models.py @@ -0,0 +1,28 @@ +from django.db import models +from django.contrib.auth.models import User +from django.contrib.auth.models import ( + BaseUserManager, AbstractBaseUser +) + +from drupal_auth.managers import DrupalUserManager + +class Users(models.Model): + name = models.CharField(max_length=60L, unique=True, primary_key=True) + pass_field = models.CharField(max_length=32L, db_column='pass') # Field renamed because it was a Python reserved word. + last_login = models.DateTimeField(auto_now_add=True) + + USERNAME_FIELD = 'name' + REQUIRED_FIELDS = [] + objects = DrupalUserManager() + + class Meta: + db_table = 'users' + + def is_authenticated(self): + return True +#class Test(AbstractBaseUser): +# username = models.CharField(max_length=40, unique=True, db_index=True) +# USERNAME_FIELD = 'username' +# REQUIRED_FIELDS = [] +# +# objects = DrupalUserManager() diff --git a/drupal_auth/routers.py b/drupal_auth/routers.py new file mode 100644 index 0000000..c125f73 --- /dev/null +++ b/drupal_auth/routers.py @@ -0,0 +1,18 @@ +class DrupalAuthRouter(object): + def db_for_read(self, model, **hints): + if model._meta.app_label == 'drupal_auth': + print '######################################### read_spoken' + return 'spoken' + return 'default' + + def db_for_write(self, model, **hints): + if model._meta.app_label == 'drupal_auth': + print '######################################### write_spoken' + return 'spoken' + return 'default' + + def allow_relation(self, **hints): + return True + + def allow_syncdb(self, db, model): + return True diff --git a/forums/settings.py b/forums/settings.py index 6a82a19..dc2bb08 100644 --- a/forums/settings.py +++ b/forums/settings.py @@ -144,6 +144,7 @@ INSTALLED_APPS = ( # 'django.contrib.admindocs', 'website', 'widget_tweaks', + 'drupal_auth', ) # A sample logging configuration. The only tangible logging @@ -175,5 +176,6 @@ LOGGING = { } } -AUTHENTICATION_BACKENDS = ( 'drupal_auth.backend.DrupalAuthBackend', ) -AUTH_USER_MODEL = 'website.Test' +AUTH_USER_MODEL = 'drupal_auth.Users' +AUTHENTICATION_BACKENDS = ( 'drupal_auth.backends.DrupalAuthBackend', ) +DATABASE_ROUTERS = ['drupal_auth.routers.DrupalAuthRouter'] diff --git a/static/website/templates/index.html b/static/website/templates/index.html index ddc9078..5fcfec8 100644 --- a/static/website/templates/index.html +++ b/static/website/templates/index.html @@ -1,6 +1,7 @@ {% extends 'website/templates/base.html' %} {% block content %}