Beispiel #1
0
def signup(request):
    # Optional queries
    membership_type = request.GET.get('type', None)
    membership_level = request.GET.get('level', None)
    payment_frequency = request.GET.get('freq', None)
    
    form = f.CreateAccountForm(initial={'membership_type': membership_type,
        'membership_level': membership_level, 'payment_frequency': payment_frequency})
    
    if request.method == 'POST':
        form = f.CreateAccountForm(data=request.POST, files=request.FILES)
        if form.is_valid():
            response = redirect('update')
            if form.cleaned_data.get('membership_level') != 'A':
                """
                If SKU exists in the query string and the SKU fits with the membership type, 
                add that product to the cart and redirect the user to the checkout
                """
                membership_type = form.cleaned_data.get('membership_type')[:3].upper()
                sku = '%s-%s-%s' % (membership_type, form.cleaned_data.get('membership_level'), form.cleaned_data.get('payment_frequency'))
                variation = ProductVariation.objects.get(sku=sku)
                request.cart.add_item(variation, 1)
                recalculate_cart(request)
                response = redirect('shop_checkout')
            form.save()
            
            subscribe(request, 'af67fb20e3', form.cleaned_data.get('email')) # Members list
            
            if form.cleaned_data.get('in_mailing_list'):
                subscribe(request, '8aebc01ca2', form.cleaned_data.get('email')) # News Letter
            
            new_user = authenticate(username=form.cleaned_data.get('username'), 
                                    password=form.cleaned_data.get('password1'))
            auth_login(request, new_user)
            
            # Send welcome message
            send_welcome(new_user)
            send_moderate("New user signed up.", context={'user': new_user})
            
            success(request, 'User created successfully! Welcome to the BCCF community %s' % form.instance.get_full_name())
            return response
    
    context = RequestContext(request, locals())
    return render_to_response('accounts/account_signup.html', {}, context)
Beispiel #2
0
def profile_update(request, tab='home'):
    user = request.user
    profile = user.profile
    photo_form = f.PhotoForm()
    order = profile.membership_order
    membership = profile.membership_product_variation
    expiration = profile.membership_expiration_datetime
            
    page = request.GET.get('page', 1)

    if tab == 'orders':
        from cartridge.shop.models import Order
        """
        Grab all the orders that the user has made
        """
        objects = Order.objects.filter(user_id=user.pk)
        orders = get_page(objects, page)
    elif tab == 'home':
        """
        Grabs the proper upgrade products for the current user.
        """
        upgrades = get_upgrades(profile)
    elif tab == 'members':
        """
        Grabs all the members asssociated with this account
        """
        objects = User.objects.filter(profile__organization=profile)
        members = get_page(objects, page)
    elif tab == 'attending':
        from bccf.models import EventRegistration
        """
        Grabs all the events the user is registered for.
        """
        objects = EventRegistration.objects.filter(user=user)
        events = get_page(objects, page)

    if request.method == 'POST':
        if 'update-photo' in request.POST:
           photo_form = f.PhotoForm(request.POST, request.FILES, instance=profile)
           if photo_form.is_valid():
                user = photo_form.save()
                success(request, 'Photo Updated Successfully')
           photo_form = f.PhotoForm()
        else:
            if tab == 'account':
                form = f.AccountInformationForm(request.POST, instance=user)
            elif tab == 'contact':
                form = f.ContactInformationForm(request.POST, instance=profile)
            elif tab == 'profile':
                form = f.ProfessionalProfileForm(request.POST, instance=profile)
            elif tab == 'social':
                form = f.SocialMediaForm(request.POST, instance=profile)
            elif tab == 'preferences':
                form = f.AccountPreferencesForm(request.POST, instance=profile)
            elif tab == 'forum':
                form = f.ForumPreferencesForm(request.POST, request.FILES, instance=profile)
            elif tab == 'adduser':
                form = f.AddUserForm(request.POST)
            elif tab == 'register':
                form = f.RegisterUserForm(request, data=request.POST)
                request.session['register_selected_members'] = request.POST.getlist('members')
                request.session['register_selected_event'] = request.POST.get('event')
                return redirect(reverse('register-event'))
            if form.is_valid():
                ping()
                user = form.save()
                success(request, 'Account Updated Successfully')
                if tab == 'preferences':
                    if form.cleaned_data.get('in_mailing_list'):
                        subscribe(request, '8aebc01ca2', request.user.email) # News letter
                    else:
                        unsubscribe(request, '8aebc01ca2', request.user.email)
                        
                elif tab == 'adduser':
                    form = None
            else:
                error(request, 'Please fix the form errors below')
            
    context = RequestContext(request, locals())
    return render_to_response('accounts/accounts_base_profile_update.html', {}, context)