Exemple #1
0
 def form_valid(self, form):
     if form.instance.dob.strftime("%Y-%m-%d") != self.request.POST.get(
             "dob_again", "") or form.instance.dob.year > 2008:
         messages.add_message(self.request, messages.ERROR,
                              "Check your date of birth!")
         return render(self.request,
                       template_name=self.template_name,
                       context=self.get_context_data())
     if form.instance.email != self.request.POST.get("email_again", ""):
         messages.add_message(self.request, messages.ERROR,
                              "Check your email address!")
         return render(self.request,
                       template_name=self.template_name,
                       context=self.get_context_data())
     form.instance.event = self.request.event
     form.instance.browser = self.request.META.get('HTTP_USER_AGENT', "")
     form.instance.ip = get_client_ip(self.request)
     form.instance.cookie = self.request.COOKIES.get("pretix_csrftoken")
     try:
         with transaction.atomic():
             ret = super().form_valid(form)
     except IntegrityError:
         messages.add_message(self.request, messages.ERROR,
                              "This email address is already registered!")
         return render(self.request,
                       template_name=self.template_name,
                       context=self.get_context_data())
     send_mail(event_id=self.request.event.id,
               to=[self.request.POST["email"]],
               subject=self.email_subject,
               body=self.email_message % self.request.POST.dict())
     return ret
Exemple #2
0
 def ratelimit_key(self):
     if not settings.HAS_REDIS:
         return None
     client_ip = get_client_ip(self.request)
     if not client_ip:
         return None
     try:
         client_ip = ipaddress.ip_address(client_ip)
     except ValueError:
         # Web server not set up correctly
         return None
     if client_ip.is_private:
         # This is the private IP of the server, web server not set up correctly
         return None
     return 'pretix_customer_registration_{}'.format(hashlib.sha1(str(client_ip).encode()).hexdigest())