bring over forms and views form pycon for now
This commit is contained in:
		
							parent
							
								
									3ca56663a4
								
							
						
					
					
						commit
						d31953b544
					
				
					 2 changed files with 79 additions and 0 deletions
				
			
		
							
								
								
									
										30
									
								
								symposion/forms.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								symposion/forms.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,30 @@
 | 
				
			||||||
 | 
					from django import forms
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import account.forms
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SignupForm(account.forms.SignupForm):
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    first_name = forms.CharField()
 | 
				
			||||||
 | 
					    last_name = forms.CharField()
 | 
				
			||||||
 | 
					    email_confirm = forms.EmailField(label="Confirm Email")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self, *args, **kwargs):
 | 
				
			||||||
 | 
					        super(SignupForm, self).__init__(*args, **kwargs)
 | 
				
			||||||
 | 
					        del self.fields["username"]
 | 
				
			||||||
 | 
					        self.fields.keyOrder = [
 | 
				
			||||||
 | 
					            "email",
 | 
				
			||||||
 | 
					            "email_confirm",
 | 
				
			||||||
 | 
					            "first_name",
 | 
				
			||||||
 | 
					            "last_name",
 | 
				
			||||||
 | 
					            "password",
 | 
				
			||||||
 | 
					            "password_confirm"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def clean_email_confirm(self):
 | 
				
			||||||
 | 
					        email = self.cleaned_data.get("email")
 | 
				
			||||||
 | 
					        email_confirm = self.cleaned_data["email_confirm"]
 | 
				
			||||||
 | 
					        if email:
 | 
				
			||||||
 | 
					            if email != email_confirm:
 | 
				
			||||||
 | 
					                raise forms.ValidationError("Email address must match previously typed email address")
 | 
				
			||||||
 | 
					        return email_confirm
 | 
				
			||||||
							
								
								
									
										49
									
								
								symposion/views.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								symposion/views.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,49 @@
 | 
				
			||||||
 | 
					import hashlib
 | 
				
			||||||
 | 
					import random
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.shortcuts import render, redirect
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.contrib.auth.models import User
 | 
				
			||||||
 | 
					from django.contrib.auth.decorators import login_required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import account.views
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import symposion.forms
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SignupView(account.views.SignupView):
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    form_class = symposion.forms.SignupForm
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def create_user(self, form, commit=True):
 | 
				
			||||||
 | 
					        user_kwargs = {
 | 
				
			||||||
 | 
					            "first_name": form.cleaned_data["first_name"],
 | 
				
			||||||
 | 
					            "last_name": form.cleaned_data["last_name"]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return super(SignupView, self).create_user(form, commit=commit, **user_kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def generate_username(self, form):
 | 
				
			||||||
 | 
					        def random_username():
 | 
				
			||||||
 | 
					            h = hashlib.sha1(form.cleaned_data["email"]).hexdigest()[:25]
 | 
				
			||||||
 | 
					            # don't ask
 | 
				
			||||||
 | 
					            n = random.randint(1, (10 ** (5 - 1)) - 1)
 | 
				
			||||||
 | 
					            return "%s%d" % (h, n)
 | 
				
			||||||
 | 
					        while True:
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                username = random_username()
 | 
				
			||||||
 | 
					                User.objects.get(username=username)
 | 
				
			||||||
 | 
					            except User.DoesNotExist:
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					        return username
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class LoginView(account.views.LoginView):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    form_class = account.forms.LoginEmailForm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@login_required
 | 
				
			||||||
 | 
					def dashboard(request):
 | 
				
			||||||
 | 
					    if request.session.get("pending-token"):
 | 
				
			||||||
 | 
					        return redirect("speaker_create_token", request.session["pending-token"])
 | 
				
			||||||
 | 
					    return render(request, "dashboard.html")
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue