def send_account_key(request, email=''): try: profile = ClientProfile.objects.get(user__email=email) except ClientProfile.DoesNotExist: profile = None if profile: if not profile.status == 'active': return HttpResponse( 'The profile does not have the Active status. Please re-check') if not profile.confirmed: return HttpResponse( 'The profile is not confirmed. Please re-check') if not len(profile.website_push_id): return HttpResponse( 'The profile does not have an Website Push ID. Please re-check' ) if not len(profile.url_format_string): return HttpResponse( 'The profile does not have an URL Format. Please re-check') email_manager = ClientsEmailManager() email_manager.send_account_key_email( to_email=profile.user.email, first_name=profile.user.first_name, account_key=profile.account_key) return HttpResponse('Email sent!') return HttpResponse('No profile associated to ' + email)
def register_confirm(request, confirmation_key=""): invalid_key = False confirmed = False form = AuthenticationForm(request) if not len(confirmation_key): invalid_key = True try: profile_confirmation = ProfileConfirmation.objects.get( confirmation_key=confirmation_key) profile_confirmation.confirmed_at = datetime.now() profile_confirmation.save() profile_confirmation.profile.confirmed = True profile_confirmation.profile.save() confirmed = True email_manager = ClientsEmailManager() user = profile_confirmation.profile.user email_manager.send_welcome_email(to_email=user.email, first_name=user.first_name) except ProfileConfirmation.DoesNotExist: invalid_key = True return render_to_response( 'clients/login.html', { 'invalid_key': invalid_key, 'confirmed': confirmed, 'form': form, 'action_url': reverse('login') }, RequestContext(request))
def websites_resend_invitation(request, website_id): website = Website.objects.get(id=website_id) invitation = WebsiteInvitation.objects.get(website=website) if invitation.resent > 2: messages.add_message(request, messages.ERROR, 'Already invited 3 times.') return HttpResponseRedirect(reverse('websites')) email_manager = ClientsEmailManager() email_manager.send_website_invitation(invitation.email, website.website_name, invitation.id) invitation.resent += 1 invitation.save() return HttpResponseRedirect(reverse('websites'))
def resend_confirm(request): MAX_CONFIRMATIONS = 5 error_message = None resent = False if request.method == "POST": form = ResendConfirmForm(data=request.POST) if form.is_valid(): email = form.cleaned_data.get('email') try: confirmation = ProfileConfirmation.objects.get( profile__user__email=email) if confirmation.number_of_resends >= MAX_CONFIRMATIONS: error_message = "You already sent too many confirmation emails. Something seems wrong. Please contact us at [email protected]" else: confirmation.number_of_resends += 1 confirmation.save() confirmation_key = confirmation.confirmation_key user = confirmation.profile.user confirmation_emails = [user.email] email_manager = ClientsEmailManager() email_manager.send_confirmation_link_email( to_email=user.email, first_name=user.first_name, confirmation_key=confirmation_key) resent = True except ProfileConfirmation.DoesNotExist: error_message = "There seems to be no account this this email registered." except ProfileConfirmation.MultipleObjectsReturned: error_message = "You already sent too many confirmation emails. Something seems wrong. Please contact us at [email protected]" else: form = ResendConfirmForm() return render_to_response('clients/resend-confirm.html', { 'form': form, 'error_message': error_message, 'resent': resent }, RequestContext(request))
def register(request, preselected_plan=None): registering = request.GET.get('registering', False) if request.method == 'POST': email_manager = ClientsEmailManager() user_form = UserForm(data=request.POST) profile_form = ClientProfileForm(data=request.POST) if user_form.is_valid() and profile_form.is_valid(): #UserForm user = user_form.save(commit=False) user.set_password(user.password) user.username = user.email[ 0: 28] #Because emails can be much longer than 30 chars, the limit for a username user.save() #ClientProfileForm profile = profile_form.save(commit=False) profile.user = user if preselected_plan: profile.preselected_plan = preselected_plan profile.save() #send email to ADMINS email_manager.send_admin_new_client(user.email) #create profile confirmation confirmation_key = hashlib.sha224(str(profile.id)).hexdigest() confirmation = ProfileConfirmation( profile=profile, confirmation_key=confirmation_key) confirmation.save() #affiliate affiliate_token = request.COOKIES.get( 'push_monkey_affiliate_token', None) if affiliate_token: try: affiliate_link = AffiliateLink.objects.get( token=affiliate_token) except AffiliateLink.DoesNotExist: affiliate_link = None if affiliate_link: registered_user = RegisteredUser( affiliate=affiliate_link.affiliate, registered_user=user) registered_user.save() #send confirmation email email_manager.send_confirmation_link_email( to_email=user.email, first_name=user.first_name, confirmation_key=confirmation_key) return HttpResponseRedirect( reverse('customise') + "?profile_id=" + str(profile.id)) else: website = request.GET.get('websiteURL', '') website_name = request.GET.get('websiteName', '') return_url = request.GET.get('returnURL', '') email = request.GET.get('email', '') first_name = request.GET.get('first_name', '') from_envato = request.GET.get('envato', False) user_form = UserForm(initial={ 'email': email, 'first_name': first_name, }) profile_form = ClientProfileForm( initial={ 'website': website, 'website_name': website_name, 'return_url': return_url, 'from_envato': from_envato, }) return render_to_response( 'clients/register.html', { 'user_form': user_form, 'profile_form': profile_form, 'registering': registering, }, RequestContext(request))
def websites(request): plan, has_only_expired_plans = Plan.objects.get_current_plan_for_user( request.user) if not plan or not plan.is_pro(): raise Http404("You don't have the Pro plan.") cluster, created = WebsiteCluster.objects.get_or_create( creator=request.user) profile = ClientProfile.objects.get(user=request.user) too_many_websites = False if cluster.website_set.count() >= cluster.max_number_of_websites: too_many_websites = True if created: default_website = website_from_profile(profile, cluster) if request.method == "POST": form = WebsiteForm(request.POST, request.FILES) if form.is_valid(): # create the website website = Website( website_url=form.cleaned_data.get('website_url'), cluster=cluster, website_name=form.cleaned_data.get('website_name')) website.save() # create the website icon website_icon = WebsiteIcon(website=website, image=form.cleaned_data.get('icon')) website_icon.save() # create an agent if required agent = form.cleaned_data.get("agent") if agent: email_manager = ClientsEmailManager() invitation = WebsiteInvitation.objects.create(website=website, email=agent) email_manager.send_website_invitation(agent, website.website_name, invitation.id) # associate a push package package_manager = PushPackageManager() package = package_manager.get_push_package(profile) if package: package.generate_zip( website.website_name, website.website_url, website_icon.image128_2x.path, website_icon.image128.path, website_icon.image32_2x.path, website_icon.image32.path, website_icon.image16_2x.path, website_icon.image16.path, ) website.account_key = package.identifier website.save() package.used = True package.save() return HttpResponseRedirect(reverse('websites')) else: form = WebsiteForm() return render_to_response( 'clients/websites.html', { "form": form, "cluster": cluster, 'plan': plan, 'too_many_websites': too_many_websites, 'profile': profile }, RequestContext(request))