summaryrefslogtreecommitdiff
path: root/gstudio/regbackend.py
diff options
context:
space:
mode:
authorKabir Kukreti <kabir@gnowledge.org>2012-04-20 19:24:51 +0530
committerKabir Kukreti <kabir@gnowledge.org>2012-04-20 19:24:51 +0530
commit4a120db766058797ea19313d0f691df150782bc1 (patch)
treed02f58e9fd07a71b346a959a6cabbe0182834ab5 /gstudio/regbackend.py
parent39e96894e6df7c0a1c3bf58b37d5b3c65a3f2e3f (diff)
downloadgnowsys-4a120db766058797ea19313d0f691df150782bc1.tar.gz
Django registration changed to mae registered users staff users with limted privilidges
Diffstat (limited to 'gstudio/regbackend.py')
-rw-r--r--gstudio/regbackend.py115
1 files changed, 115 insertions, 0 deletions
diff --git a/gstudio/regbackend.py b/gstudio/regbackend.py
new file mode 100644
index 0000000..d7ed566
--- /dev/null
+++ b/gstudio/regbackend.py
@@ -0,0 +1,115 @@
+from django.conf import settings
+from django.contrib.sites.models import RequestSite
+from django.contrib.sites.models import Site
+from django.contrib.auth.models import User,Group
+
+from registration import signals
+from registration.forms import RegistrationForm
+from registration.models import RegistrationProfile
+from django.contrib.auth.models import Group
+from gstudio.models import *
+
+
+class MyBackend(object):
+ def register(self, request, **kwargs):
+ """
+ Given a username, email address and password, register a new
+ user account, which will initially be inactive.
+
+ Along with the new ``User`` object, a new
+ ``registration.models.RegistrationProfile`` will be created,
+ tied to that ``User``, containing the activation key which
+ will be used for this account.
+
+ An email will be sent to the supplied email address; this
+ email should contain an activation link. The email will be
+ rendered using two templates. See the documentation for
+ ``RegistrationProfile.send_activation_email()`` for
+ information about these templates and the contexts provided to
+ them.
+
+ After the ``User`` and ``RegistrationProfile`` are created and
+ the activation email is sent, the signal
+ ``registration.signals.user_registered`` will be sent, with
+ the new ``User`` as the keyword argument ``user`` and the
+ class of this backend as the sender.
+
+ """
+ username, email, password, first_name, last_name = kwargs['username'], kwargs['email'], kwargs['password1'], kwargs['first_name'], kwargs['last_name']
+ if Site._meta.installed:
+ site = Site.objects.get_current()
+ else:
+ site = RequestSite(request)
+ new_user = RegistrationProfile.objects.create_inactive_user(username,email,password,site)
+
+
+ signals.user_registered.send(sender=self.__class__,
+ user=new_user,
+ request=request)
+ user = User.objects.get(username=username)
+ user.first_name=kwargs['first_name']
+ user.last_name=kwargs['last_name']
+
+ user.is_staff = True
+ # Add new user to 'non admin' group
+ nonadmin = Group.objects.get(name = 'non_admin_user')
+ user.groups.add(nonadmin)
+ user.save()
+
+ return new_user
+
+ def activate(self, request, activation_key):
+ """
+ Given an an activation key, look up and activate the user
+ account corresponding to that key (if possible).
+
+ After successful activation, the signal
+ ``registration.signals.user_activated`` will be sent, with the
+ newly activated ``User`` as the keyword argument ``user`` and
+ the class of this backend as the sender.
+
+ """
+ activated = RegistrationProfile.objects.activate_user(activation_key)
+ if activated:
+ signals.user_activated.send(sender=self.__class__,
+ user=activated,
+ request=request)
+ return activated
+
+ def registration_allowed(self, request):
+ """
+ Indicate whether account registration is currently permitted,
+ based on the value of the setting ``REGISTRATION_OPEN``. This
+ is determined as follows:
+
+ * If ``REGISTRATION_OPEN`` is not specified in settings, or is
+ set to ``True``, registration is permitted.
+
+ * If ``REGISTRATION_OPEN`` is both specified and set to
+ ``False``, registration is not permitted.
+
+ """
+ return getattr(settings, 'REGISTRATION_OPEN', True)
+
+ def get_form_class(self, request):
+ """
+ Return the default form class used for user registration.
+
+ """
+ return RegistrationForm
+
+ def post_registration_redirect(self, request, user):
+ """
+ Return the name of the URL to redirect to after successful
+ user registration.
+
+ """
+ return ('registration_complete', (), {})
+
+ def post_activation_redirect(self, request, user):
+ """
+ Return the name of the URL to redirect to after successful
+ account activation.
+
+ """
+ return ('registration_activation_complete', (), {})