From 4a120db766058797ea19313d0f691df150782bc1 Mon Sep 17 00:00:00 2001 From: Kabir Kukreti Date: Fri, 20 Apr 2012 19:24:51 +0530 Subject: Django registration changed to mae registered users staff users with limted privilidges --- gstudio/regbackend.py | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 gstudio/regbackend.py (limited to 'gstudio/regbackend.py') 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', (), {}) -- cgit v1.1