def edit_profile(request, profile_name_slug): context_dict = {} context_dict['edited'] = False author = Author.objects.get(slug = profile_name_slug) context_dict['author'] = author context_dict['profile_name'] = author.user.username context_dict['profile_email'] = author.user.email if request.method == 'POST': if request.POST['username']: username_for_validation = request.POST['username'] if not simplenation_username_validation(username_for_validation): context_dict['profile_edit_error_message'] = "Username is a bit invalid, try something awesome like "+"'"+random.choice(awesomeUsernames)+"'" context_dict['next'] = request.GET.get('next', '') return render(request, 'simplenation/edit_profile.html', context_dict) username = request.POST['username'] users = User.objects.filter(username = username) if users: for user in users: if user.id != request.user.id: context_dict['profile_edit_error_message']="Username already exists." return render(request, 'simplenation/edit_profile.html', context_dict) author.user.username = username if request.POST['email']: email_for_validation = request.POST['email'] if not simplenation_email_validation(email_for_validation): context_dict['profile_edit_error_message'] = "Please enter correct email." context_dict['next'] = request.GET.get('next', '') return render(request, 'simplenation/edit_profile.html', context_dict) email = request.POST['email'] users = User.objects.filter(email = email) if users: for user in users: if user.id != request.user.id: context_dict['profile_edit_error_message']="Email already exists." return render(request, 'simplenation/edit_profile.html', context_dict) author.user.email = request.POST['email'] if 'picture' in request.FILES: author.picture = request.FILES['picture'] author.user.save() author.save() context_dict['edited'] = True return HttpResponseRedirect('/simplenation/profile/'+author.slug) else: context_dict['profile_edit_error_message']= None return render(request, 'simplenation/edit_profile.html', context_dict)
def user_login(request): context_dict = {} if request.user.is_active: if request.GET.get('next', ''): next = request.GET.get('next', '') else: next = '/simplenation/' return HttpResponseRedirect(next) if request.method == 'POST': if not 'email_or_username' in request.POST: context_dict['login_error_message'] = 'Please enter username or email.' context_dict['next'] = request.GET.get('next', '') return render(request, 'simplenation/signin.html', context_dict) if not 'password' in request.POST: context_dict['login_error_message'] = 'Please enter your password.' context_dict['next'] = request.GET.get('next', '') return render(request, 'simplenation/signin.html', context_dict) email_or_username = request.POST['email_or_username'] password = request.POST['password'] if simplenation_email_validation(email_or_username): email = request.POST['email_or_username'] user_by_email = User.objects.get(email=email) username = user_by_email.username user = authenticate(username=username, password=password) elif simplenation_username_validation(email_or_username): username = request.POST['email_or_username'] user = authenticate(username=username, password=password) else: context_dict['login_error_message'] = 'Invalid username/email or password.' context_dict['next'] = request.GET.get('next', '') return render(request, 'simplenation/signin.html', context_dict) if user: if user.is_active: login(request,user) if request.POST["next"] is not "": return HttpResponseRedirect(request.POST["next"]) else: return HttpResponseRedirect('/simplenation/') else: messages.error(request, 'Your account has been disabled.') context_dict['login_error_message'] = 'Your account has been disabled.' else: messages.error(request, 'Invalid username or password.') context_dict['login_error_message'] = 'Invalid username or password.' context_dict['next'] = request.GET.get('next', '') return render(request, 'simplenation/signin.html', context_dict)
def log_user_while_post(request): response = {} if request.method == 'POST': if not 'email_or_username' in request.POST: response['success'] = False response['error_message'] = 'Please enter username or email.' return response if not 'password' in request.POST: response['success'] = False response['error_message'] = 'Please enter your password.' return response email_or_username = request.POST['email_or_username'] password = request.POST['password'] if simplenation_email_validation(email_or_username): email = request.POST['email_or_username'] user_by_email = User.objects.get(email=email) username = user_by_email.username user = authenticate(username=username, password=password) elif simplenation_username_validation(email_or_username): username = request.POST['email_or_username'] user = authenticate(username=username, password=password) else: response['error_message'] = 'Invalid username/email or password.' response['success'] = False return response if user: if user.is_active: login(request,user) response['success'] = True response['user'] = user else: response['success'] = False response['error_message'] = 'Your account has been disabled.' else: response['success'] = False response['error_message'] = 'Invalid username or password.' return response
def register_user_while_post(request): response = {} response['success'] = False if request.method == 'POST': user_form = UserForm(data=request.POST) profile_form = ProfileForm(data=request.POST) if not 'username' in request.POST: response['error_message'] = "Please enter username." response['user_form'] = user_form response['profile_form'] = profile_form return response if not 'email' in request.POST: response['error_message'] = "Please enter email." response['user_form'] = user_form response['profile_form'] = profile_form return response if not 'password1' in request.POST: response['error_message'] = "Please enter password." response['user_form'] = user_form response['profile_form'] = profile_form return response email_for_validation = request.POST['email'] if not simplenation_email_validation(email_for_validation): response['error_message'] = "Please enter correct email." response['user_form'] = user_form response['profile_form'] = profile_form return response username_for_validation = request.POST['username'] if not simplenation_username_validation(username_for_validation): response['error_message'] = "Username is a bit invalid, try something awesome like "+"'"+random.choice(awesomeUsernames)+"'" response['user_form'] = user_form response['profile_form'] = profile_form return response if user_form.is_valid() and profile_form.is_valid(): user = user_form.save() username = user_form.cleaned_data['username'] email = user_form.cleaned_data['email'] salt = hashlib.sha1(str(random.random())).hexdigest()[:5] account_deletion_key = hashlib.sha1(salt+email).hexdigest() user.save() profile = profile_form.save(commit=False) profile.user = user profile.account_deletion_key = account_deletion_key if 'picture' in request.FILES: profile.picture = request.FILES['picture'] profile.save() email_data = { 'email': email, 'domain': request.META['HTTP_HOST'], 'site_name': SITE_NAME, 'account_deletion_key': account_deletion_key, 'receiver_username': username, 'site_email': EMAIL_HOST_USER, 'protocol': 'http', } subject_template_name='simplenation/registration_notification_subject.txt' email_template_name='simplenation/registration_notification_email.html' if not send_email(email_data, subject_template_name, email_template_name): response['error_message'] = "Couldn't send confirmation email." response['user_form'] = user_form response['profile_form'] = profile_form return response new_user = authenticate(username = request.POST['username'], password = request.POST['password1']) login(request, new_user) response['success'] = True response['user'] = new_user else: response['error_message'] = None else: user_form = UserForm() profile_form = ProfileForm() response['user_form'] = user_form response['profile_form'] = profile_form return response