def save_new_password(self):
     response = reply_object()
     user = self.request.user
     user.set_password(self.cleaned_data['password'])
     user.save()
     response["code"] = settings.APP_CODE["CALLBACK"]
     return response
def password_reset_submit_email(request):
    response = reply_object()
    form = PasswordEmailForm(request.POST)
    if form.is_valid():
        response = form.send_reset_link()
    else:
        response["code"] = settings.APP_CODE["FORM ERROR"]
        response["errors"] = form.errors

    return HttpResponse(simplejson.dumps(response))
def password_reset_submit_password(request):
    response = reply_object()
    form = PasswordResetForm(request.POST, request=request)
    if form.is_valid():
        response = form.save_new_password()
        response["code"] = settings.APP_CODE["CALLBACK"]
        response["redirect"] = reverse('home')
    else:
        response["code"] = settings.APP_CODE["FORM ERROR"]
        response["errors"] = form.errors

    return HttpResponse(simplejson.dumps(response))
def add_user(request):
    """
    Registration request handler
    """
    response = reply_object()
    form = CreateUserForm(request.POST)
    if form.is_valid():
        response = form.save_user()
        response["success_page"] = reverse('registration_success')
    else:
        response["code"] = settings.APP_CODE["FORM ERROR"]
        response["errors"] = form.errors
    return HttpResponse(simplejson.dumps(response))
 def update_user(self):
     """
     Updates a registered user. Can be used for updating profile
     """
     response = reply_object()
     user = User.objects.get(pk=self.cleaned_data["user_id"])
     user.username = self.cleaned_data["username"]
     user.email = self.cleaned_data["email"]
     user.set_password(self.cleaned_data["password1"])
     user.save()
     response["code"] = settings.APP_CODE["UPDATED"]
     response["user_id"] = user.id
     return response
def login_user(request):
    """
    Login request handler
    """
    response = reply_object()
    form = LoginForm(request.POST, request=request)

    if form.is_valid():
        response["code"] = settings.APP_CODE["LOGIN"]
        response["next_view"] = reverse('home')
    else:
        response["code"] = settings.APP_CODE["FORM ERROR"]
        response["errors"] = form.errors

    return HttpResponse(simplejson.dumps(response))
 def send_reset_link(self):
     response = reply_object()
     user = User.objects.get(email=self.cleaned_data["email"])
     if not user.is_active:
         response["code"] = settings.APP_CODE["SERVER MESSAGE"]
         response["server_message"] = "This account is inactive. Please contact site administrator"
         return response
     profile = user.get_profile()
     key_object = create_key(user.username, 2)
     profile.verification_key = key_object["key"]
     profile.key_expires = key_object["expiry"]
     send_password_reset_email(user.email, key_object["key"])
     profile.save()
     response["code"] = settings.APP_CODE["CALLBACK"]
     return response
    def save_user(self):
        """
        Creates if new registration. Updates if user id is given
        """
        response = reply_object()
        try:
            if self.cleaned_data["user_id"] == 0 or\
                self.cleaned_data["user_id"] == u'' or\
                self.cleaned_data["user_id"] == None:
                response = self.create_user()
            else:
                response = self.update_user()
        except:
            response["code"] = settings.APP_CODE["SYSTEM ERROR"]

        return response
    def create_user(self):
        """
        Creates a new user
        """
        response = reply_object()
        new_user = User.objects.create(username=self.cleaned_data["username"],
                                       email=self.cleaned_data["email"])

        new_user.set_password(self.cleaned_data["password1"])
        if settings.EMAIL_VERIFICATION_REQUIRED:
            new_user.is_active = False
        else:
            new_user.is_active = True
        new_user.save()
        response["code"] = settings.APP_CODE["REGISTERED"]
        response["user_id"] = new_user.id
        return response