Beispiel #1
0
class CreateAnAccount(CreateView):
    template_name = "personalprofile/signup.html"
    model = User

    def setup(self):
        self.form = SignupForm(self.request.POST or None)

    def get_context(self):
        return {
            "page_id": "create_an_account",
            "title": "Create an account",
        }

    def get(self, request, *args, **kwargs):
        self.setup()
        context = self.get_context()
        context['form'] = self.form
        return render(request, self.template_name, context)

    def post(self, request, *args, **kwargs):
        self.setup()
        if request.method == "POST" and self.form.is_valid():
            email = self.form.cleaned_data["email"]
            if self.check_email(email):
                username_from_email = self.build_username(email)
                self.form.instance.username = username_from_email
                self.form.save()
                info(request, _("Successfully signed up"))
                return HttpResponseRedirect("/")
            else:
                error(self.request, _("You failed to signed up"))

        context = self.get_context()
        context['form'] = self.form
        return render(request, self.template_name, context)

    def build_username(self, email):
        username = slugify(email).lower()
        if len(username) > 30:
            username = username[:30]
        lookup = {"username__iexact": username}
        try:
            User.objects.exclude(id=self.form.instance.id).get(**lookup)
        except User.DoesNotExist:
            return username

    def check_email(self, email):
        qs = User.objects.exclude(id=self.form.instance.id).filter(email=email)
        if len(qs) == 0:
            return email
Beispiel #2
0
 def setup(self):
     self.form = SignupForm(self.request.POST or None)