Пример #1
0
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)
Пример #2
0
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))
Пример #3
0
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'))
Пример #4
0
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))
Пример #5
0
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))
Пример #6
0
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))