def post(self, request): data = None try: stream = StringIO.StringIO(request.body) data = JSONParser().parse(stream) data["app"] = request.META['app'] except Exception as e: self.logger.error("Unable to decode object. Error: %s"%str(e)) return Response({"detail": "Invalid object."}, status=status.HTTP_400_BAD_REQUEST, exception=True) new_user = AppUser(**data) try: new_user.full_clean() except ValidationError as e: return Response(e.message_dict, status=status.HTTP_400_BAD_REQUEST) # todo: decide if we need to verify users's email address if Site._meta.installed: site = Site.objects.get_current() else: site = RequestSite(request) data["site"] = site app = request.META["app"] try: app_settings = AppSettings.objects.get(app = app) data["verify_email"] = app_settings.verify_emails except AppSettings.DoesNotExist: pass new_user = AppUser.objects.create_user(**data) new_user.save() # Login the user user = authenticate(username=data["username"], password=data["password"]) login(request, user) request.session.save() return Response({settings.SESSION_COOKIE_NAME : request.session.session_key, "id" : user.id }, status=status.HTTP_201_CREATED)
def save(self, handler): login(self.user, self.cleaned_data['password'], handler) return self.user
def save(self, handler, user): user.set_password(self.cleaned_data['password']) user.save() login(user, self.cleaned_data['password'], handler) return user