Пример #1
0
def detail(request, order_number):
    if not request.user.member.is_email_verified:
        return HttpResponseRedirect(reverse('membership:verify'))
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    order = PurchaseOrder.objects.get(order_number=order_number.upper())
    products = order.item_in_order.all()

    token = get_token(request)
    return render(
        request, 'purchase_order/order_detail.html', {
            'wishlist': wishlist_object,
            'products': products,
            'cart': cart_object,
            'hlinks': hlinks,
            'flinks': flinks,
            'token': token,
            'order': order
        })
Пример #2
0
def home(request):
    header_links = HeaderLink.objects.all()
    articles = Article.objects.all().order_by('created_date')
    if len(articles) > 5:
        articles = articles[:5]
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    products = Product.objects.filter(is_archived=False).order_by('-pk')[:4]
    featured_products = Product.objects.filter(
        is_featured=True).order_by('-pk')[0]
    categories = Category.objects.all()
    brands = Brand.objects.all()
    return render(
        request, 'keskei/index.html', {
            'articles': articles,
            'hlinks': hlinks,
            'flinks': flinks,
            'cart': cart_object,
            'brands': brands,
            'categories': categories,
            'products': products,
            'featured_products': featured_products
        })
Пример #3
0
def profile_page(request, uname='none'):
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    cart = carts.get_cart(request)['cart_object']
    wishlist = wishlists.get_wishlist(request)['wishlist_object']
    link_edit = ''

    if uname == 'none' or uname == request.user.username:
        link_edit = reverse('membership:edit_profile')
        user = request.user
    else:
        user = get_object_or_404(User, username=uname)

    return render(
        request, 'kei_store/akun.html', {
            'user': user,
            'cart': cart,
            'hlinks': hlinks,
            'flinks': flinks,
            'wishlist': wishlist,
            'link_edit': link_edit,
        })
Пример #4
0
def pre_register_page(request, *args, **kwargs):
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    referal_code = False
    link = {
        'member': reverse('membership:register', current_app='member_backend'),
        'guest': reverse('membership:register', current_app='guest_backend'),
    }
    if request.get_host() != settings.DEFAULT_HOST:
        referal_code = check_host(request, pass_variable=True)
        if not referal_code:
            return HttpResponseRedirect(
                request.scheme + "://" + settings.DEFAULT_HOST +
                reverse('membership:pre_register',
                        current_app=request.resolver_match.namespace))
    else:
        try:
            referal_code = kwargs['referal_code'].lower()
            if referal_code:
                link = {
                    'member':
                    reverse('membership:register',
                            current_app='member_backend',
                            kwargs={'referal_code': referal_code.lower()}),
                    'guest':
                    reverse('membership:register',
                            current_app='guest_backend',
                            kwargs={'referal_code': referal_code.lower()}),
                }
        except:
            pass

    if request.user.is_authenticated:
        return HttpResponseRedirect(reverse('membership:profile'))

    next = request.GET.get('next') if request.GET.get('next') else False
    return render(
        request, 'membership/pre_register.html', {
            'link': link,
            'hlinks': hlinks,
            'flinks': flinks,
            'wishlist': wishlist_object,
            'cart': cart_object,
            'next': next
        })
Пример #5
0
def checkout(request):
    if not request.user.member.is_email_verified:
        return HttpResponseRedirect(reverse('membership:verify'))
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    if not cart_object.get_total_items_in_cart():
        return HttpResponseRedirect(reverse('cart:index'))
    products = cart_object.get_items_in_cart()

    discount = 0
    discounted_price = 0

    if request.user.is_authenticated:
        discounted_price = cart_object.get_total_price()
        if not request.user.member.member_type == Member.GUEST and \
            not request.user.member.member_type == Member.NEW_MEMBER:
            benefit = request.user.member.get_level()['BENEFIT']
            discount = cart_object.get_total_price() * discount / 100
            discounted_price = cart_object.get_total_price() * (100 - discount) / 100
            if discount <= 0:
                discount = int(discount)
                discounted_price = int(discounted_price)
      
    order = PurchaseOrder.objects.get_or_create(user=request.user, is_paid=False, is_checked_out=False)[0]

    for item in products:
        order_item = PurchaseOrderItem.objects.get_or_create(purchase_order = order, product=item.product)[0]
        order_item.quantity = item.quantity
        order_item.product_referal = item.product_referal
        order_item.save()

    order.total_price = discounted_price
    order.discount = discount
    order.shipping_cost = cart_object.shipping_cost
    order.total_payment = discounted_price + cart_object.shipping_cost
    if not cart_object.shipping_address and not cart_object.is_set_as_dropship:
        order.alamat_tujuan = request.user.member.get_home_address()
    else:
        order.is_set_as_dropship = cart_object.is_set_as_dropship
        order.customer = cart_object.customer
        order.alamat_tujuan = cart_object.shipping_address
    order.service = cart_object.shipping_service.upper()
    order.sub_service = cart_object.shipping_sub_service
    order.save()
    order_detail = {key: format_order(key, value) for (key, value) in model_to_dict(order, 
            fields=["order_number",
                    "total_price", 
                    "total_payment", 
                    "shipping_cost", 
                    "alamat_tujuan",
                    "service",
                    "sub_service",
                    "discount"]).items()}
    return JsonResponse(order_detail, safe=False)
Пример #6
0
def paginate_results(request, product_list, product_title):
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    categories = Category.objects.all()
    brands = Brand.objects.all()
    max_page = 4
    min_page = 0
    products = ''
    if product_list:
        try:
            paginator = Paginator(product_list, 12)
            page = request.GET.get('page', 1)
            try:
                products = paginator.page(page)
            except PageNotAnInteger:
                products = paginator.page(1)
            except EmptyPage:
                products = paginator.page(paginator.num_pages)

            max_page = products.number + 4
            min_page = products.number - 4
        except:
            pass

    response = render(
        request, 'storefront/product_all.html', {
            'hlinks': hlinks,
            'flinks': flinks,
            'cart': cart_object,
            'brands': brands,
            'categories': categories,
            'wishlist': wishlist_object,
            'products': products,
            'categories': categories,
            'product_title': product_title,
            'max_page': max_page,
            'min_page': min_page
        })
    return response
Пример #7
0
def wishlist_index(request):
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links :
        if not link.page:
            hlinks['%s'%link.pos] = {
                'addr':link.addr, 
                'name':link.name
            }
        else:
            hlinks['%s'%link.pos] = {
                'addr':link.page.get_url(), 
                'name':link.page.title
            }
    flinks = FooterLink.objects.all()
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    item_list = wishlist_object.get_items_in_wishlist()
    paginator = Paginator(item_list,6)
    page = request.GET.get('page', 1)
    max_page = 4
    min_page = 0
    try:
        products = paginator.page(page)
    except PageNotAnInteger:
        products = paginator.page(1)
    except EmptyPage:
        products = paginator.page(paginator.num_pages)
        
    max_page = products.number + 4
    min_page = products.number - 4

    if request.method == 'POST':
        item=""
        try :
            if request.POST['item'] :
                item_pk = request.POST['item'].split('_')[1]
                item = WishListItem.objects.get(pk=item_pk)
                item.delete()
        except:
            pass

    return render(request, 'shopping_cart/wishlist_show_all.html', 
        {'wishlist': wishlist_object,
        'cart':cart_object,
        'products':products,
        'hlinks':hlinks,
        'flinks':flinks, 
        'max_page':max_page,
        'min_page':min_page})
Пример #8
0
def pay(request):
    if not request.user.member.is_email_verified:
        return HttpResponseRedirect(reverse('membership:verify'))
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    if not cart_object.get_total_items_in_cart():
        return HttpResponseRedirect(reverse('cart:index'))
    cart_object.delete()
    order = PurchaseOrder.objects.filter(user=request.user, is_paid=False, is_checked_out = False)[0]
    order.is_checked_out = True
    order.is_paid = False
    order.is_verified = False
    order.payment_date = datetime.datetime.now()
    order.save()
    if request.user.is_authenticated:
        if not request.user.member.member_type == Member.GUEST and \
            not request.user.member.member_type == Member.NEW_MEMBER:
                count_point(request,order)
                check_purchasing_bonus(request)
    del request.session['shopping_cart']
    cart = carts.get_cart(request)
    return HttpResponseRedirect(reverse('order:history'))
Пример #9
0
def history(request):
    if not request.user.member.is_email_verified:
        return HttpResponseRedirect(reverse('membership:verify'))
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    orders = PurchaseOrder.objects.filter(
        user=request.user).order_by('-created_date')
    """
    if not orders:
        return HttpResponseRedirect(reverse('cart:index'))
    """
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    paginator = Paginator(orders, 5)
    page = request.GET.get('page', 1)
    max_page = 4
    min_page = 0
    try:
        products = paginator.page(page)
    except PageNotAnInteger:
        products = paginator.page(1)
    except EmptyPage:
        products = paginator.page(paginator.num_pages)

    max_page = products.number + 4
    min_page = products.number - 4
    token = get_token(request)
    return render(
        request, 'purchase_order/order_history.html', {
            'wishlist': wishlist_object,
            'cart': cart_object,
            'token': token,
            'hlinks': hlinks,
            'flinks': flinks,
            'products': products,
            'max_page': max_page,
            'min_page': min_page
        })
Пример #10
0
def create_new_store(request):
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    if request.method == 'POST':
        form = CreateNewStoreForm(request.POST, request.FILES)
        if form.is_valid():
            data = form.cleaned_data
            store_name = data.get('name')
            store_description = data.get('description')
            store_photo = data.get('photo')

            store = Store.objects.create(owner=request.user,
                                         name=store_name,
                                         description=store_description,
                                         photo=store_photo)
            if store:
                return HttpResponseRedirect(
                    reverse('storefront:add_new_product'))
    elif request.method == 'GET':
        form = CreateNewStoreForm()

    return render(
        request, 'kei_store/buka_toko.html', {
            'form': form,
            'hlinks': hlinks,
            'flinks': flinks,
            'wishlist': wishlist_object,
            'cart': cart_object,
        })
Пример #11
0
def home(request):
    header_links = HeaderLink.objects.all()
    articles = Article.objects.all().order_by('created_date')
    form = MemberRegisterForm()
    if len(articles) > 5:
        articles = articles[:5]
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    try:
        products = Product.objects.filter(
            is_archived=False).order_by('-pk')[:4]
    except:
        products = {}
    categories = Category.objects.all()
    stores = Store.objects.all()
    return render(
        request, 'kei_store/index.html', {
            'form': form,
            'articles': articles,
            'hlinks': hlinks,
            'flinks': flinks,
            'cart': cart_object,
            'stores': stores,
            'categories': categories,
            'products': products,
        })
Пример #12
0
def product_detail(request, product_pk, **kwargs):
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    referal_code = redirect_referal_code(request, kwargs=kwargs)
    if referal_code['code']:
        referer = Member.objects.get(referal_code=referal_code['code'])
    else:
        referer = ''

    if referal_code['message'] == "redirect_to_default":
        return HttpResponseRedirect(
            request.scheme + "://" + settings.DEFAULT_HOST +
            reverse('storefront:product_detail',
                    kwargs={'product_pk': product_pk},
                    current_app=request.resolver_match.namespace))
    elif referal_code['message'] == 'redirect_to_referal':
        return HttpResponseRedirect(
            request.scheme + "://" + referer.user.username + '.' +
            settings.DEFAULT_HOST +
            reverse('storefront:product_detail',
                    kwargs={'product_pk': product_pk},
                    current_app=request.resolver_match.namespace))

    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    categories = Category.objects.all()
    brands = Brand.objects.all()
    all_product = Product.objects.filter(is_archived=False).exclude(
        pk=product_pk)
    is_wishlist = False
    if len(all_product) >= 5:
        other_product = random.sample(list(all_product), 4)
    else:
        other_product = random.sample(list(all_product), len(all_product))

    product = Product.objects.get(pk=product_pk)
    is_in_wishlist = False

    if request.method == 'POST':
        method = ''
        try:
            method = request.POST['method']
        except:
            pass

        if method == 'wishlist':
            is_wishlist = True
            wishlist_item = WishListItem.objects.get_or_create(
                wishlist=wishlist_object, product=product)[0]

        elif method == 'cart':
            form = ProductCartForm(request.POST)
            if form.is_valid():
                data = form.cleaned_data
                quantity = data.get('quantity')
                cart_item = False
                try:
                    cart_item = CartItem.objects.get_or_create(
                        cart=cart_object, product=product)[0]
                except:
                    pass

                if not cart_item.quantity:
                    cart_item.quantity = quantity
                else:
                    cart_item.quantity += int(quantity)

                if request.user.is_authenticated:
                    if referer and not referer == request.user.member:
                        cart_item.product_referal = referer
                else:
                    if referer:
                        cart_item.product_referal = referer

                cart_item.save()

            return HttpResponseRedirect(
                reverse('cart:index',
                        current_app=request.resolver_match.namespace))

    form = ProductCartForm()

    product = Product.objects.get(pk=product_pk)

    discount = 0
    discounted_price = product.price

    if request.user.is_authenticated:
        if not request.user.member.member_type == Member.GUEST and \
            not request.user.member.member_type == Member.NEW_MEMBER:
            discount = request.user.member.get_level()['BENEFIT']
            discounted_price = product.price * (100 - discount) / 100

    products_in_wishlist = [
        x.product.id for x in wishlist_object.item_in_wishlist.all()
    ]
    for pk in products_in_wishlist:
        if product_pk == pk:
            is_in_wishlist = True

    if is_wishlist:
        response = HttpResponseRedirect(
            reverse("storefront:product_detail",
                    kwargs={'product_pk': product_pk})[:-1] + "#formQuantity")
    else:
        response = render(
            request, 'storefront/product_detail.html', {
                'hlinks': hlinks,
                'flinks': flinks,
                'product': product,
                'other_product': other_product,
                'cart': cart_object,
                'wishlist': wishlist_object,
                'form': form,
                'brands': brands,
                'categories': categories,
                'is_in_wishlist': is_in_wishlist,
                'discount': discount,
                'discounted_price': int(discounted_price)
            })

    return response
Пример #13
0
def index(request):
    # if not request.user.member.is_email_verified:
    #     return HttpResponseRedirect(reverse('membership:verify'))
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    services = ''
    selected_service = ''
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    set_as_dropship = False
    chosen_customer = ''

    if not cart_object.get_total_items_in_cart():
        return HttpResponseRedirect(reverse('cart:index'))

    products = cart_object.get_items_in_cart()
    discount = 0
    discounted_price = 0
    shipping_origin = ''  #ShippingOrigin.objects.filter(is_default = True)[0]
    if 'old_cart_weight' in request.session:
        if request.session['old_cart_weight'] != cart_object.get_total_weight(
        ):
            cart_object.shipping_cost = 0
            cart_object.save()
            request.session['old_cart_weight'] = cart_object.get_total_weight()
    else:
        request.session['old_cart_weight'] = cart_object.get_total_weight()

    if request.method == 'POST':
        method = request.POST.get('method', 'remove')
        item = ""
        if method == 'check_shipping':
            costs_list = ''
            costs_list = get_cost(request.user,
                                  request.POST.get('courier', 'jne').lower())
            if costs_list:
                services = [x for x in costs_list]
                selected_service = request.POST['courier']
                cart_object.shipping_service = selected_service
                cart_object.save()
                request.session['services'] = services

            return JsonResponse(list(services), safe=False)
        elif method == 'set_shipping':
            if 'services' in request.session:
                services = request.session['services']
            user_selected_service = request.POST.get('service')
            for s in services:
                if s['service'] == user_selected_service:
                    cart_object.shipping_sub_service = user_selected_service
                    cart_object.shipping_cost = s['cost'][0]['int_value']
                    cart_object.save()
                    break
        elif method == 'add_dropship_address':
            form = CustomerAddForm(request.POST)
            if form.is_valid():
                data = form.cleaned_data
                try:
                    customer = Customer()
                    customer.name = data.get('name')
                    customer.home_provinsi = data.get('provinsi_home').name
                    customer.kota_provinsi = Kota.objects.get(
                        pk=request.POST.get('kota_home')).name
                    customer.home_kecamatan = Kecamatan.objects.get(
                        pk=request.POST.get('kecamatan_home')).name
                    customer.home_kelurahan = Kelurahan.objects.get(
                        pk=request.POST.get('kelurahan_home')).name
                    customer.home_address = data.get('home_address')
                    customer.seller = request.user.member
                    customer.save()
                    cart_object.is_set_as_dropship = True
                    cart_object.customer = customer
                    cart_object.shipping_address = customer.get_home_address()
                    shipping_cost = cart_object.shipping_cost = 0
                    cart_object.save()
                except:
                    pass

        elif method == 'cancel_dropship':
            cart_object.is_set_as_dropship = False
            cart_object.customer = None
            cart_object.shipping_address = ''
            shipping_cost = cart_object.shipping_cost = 0
            cart_object.save()

        elif method == 'set_dropship_address':
            try:
                customer = Customer.objects.get(
                    id=request.POST.get('customer'))
                if customer:
                    cart_object.is_set_as_dropship = True
                    cart_object.customer = customer
                    cart_object.shipping_address = customer.get_home_address()
                    shipping_cost = cart_object.shipping_cost = 0
                    cart_object.save()
            except:
                pass

        if cart_object.shipping_cost != 0 and cart_object.get_total_items_in_cart(
        ) == 0:
            shipping_cost = 0
        else:
            shipping_cost = cart_object.shipping_cost

    elif request.method == 'GET':
        if cart_object.shipping_cost != 0 and cart_object.get_total_items_in_cart(
        ) == 0:
            cart_object.shipping_cost = 231
            cart_object.save()

        shipping_cost = cart_object.shipping_cost

    if request.user.is_authenticated:
        discounted_price = cart_object.get_total_price()
        # if not request.user.member.member_type == Member.GUEST and \
        #     not request.user.member.member_type == Member.NEW_MEMBER:
        #     benefit = request.user.member.get_level()['BENEFIT']
        #     discount = cart_object.get_total_price() * discount / 100
        #     discounted_price = cart_object.get_total_price() * (100 - discount) / 100
        #     if discount <= 0:
        #         discount = int(discount)
        #         discounted_price = int(discounted_price)

    if shipping_cost:
        discounted_price += shipping_cost

    couriers = get_courier()
    token = get_token(request)

    # customers = Customer.objects.filter(seller=request.user.member)
    # form = CustomerAddForm()
    return render(
        request,
        'kei_store/order.html',
        {
            'wishlist': wishlist_object,
            # 'customers':customers,
            'cart': cart_object,
            'products': products,
            'discount': discount,
            'hlinks': hlinks,
            'flinks': flinks,
            'discounted_price': discounted_price,
            'couriers': couriers,
            'shipping_cost': shipping_cost,
            'services': services,
            'shipping_origin': shipping_origin,
            'selected_service': selected_service,
            'token': token,
            # 'form':form
        })
Пример #14
0
def profile_page(request, uname='none'):
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    target = 0
    current_target = 0
    member_target = 0
    cart = carts.get_cart(request)['cart_object']
    wishlist = wishlists.get_wishlist(request)['wishlist_object']
    referal_code = False
    default_host = settings.DEFAULT_HOST

    default_register_page = request.scheme+"://"+ default_host + \
                                reverse('membership:profile',
                                    current_app=request.resolver_match.namespace)

    if request.get_host() != settings.DEFAULT_HOST:
        referal_code = check_host(request, pass_variable=True)
        if not referal_code:
            return HttpResponseRedirect(default_register_page)

    namespace = request.resolver_match.namespace
    member_type = namespace.split('_')[0]
    link_edit = ''

    if uname == 'none' or uname == request.user.username:
        if request.user.member.get_member_type_display() != 'Guest' and \
            request.resolver_match.namespace != 'member_backend':
            return HttpResponseRedirect(
                reverse('membership:profile', current_app='member_backend'))
        if request.user.member.get_member_type_display() == 'Guest' and \
            request.resolver_match.namespace != 'guest_backend':
            return HttpResponseRedirect(
                reverse('membership:profile', current_app='guest_backend'))

        link_edit = reverse('membership:edit_profile', current_app=namespace)
        user = request.user
    else:
        user = get_object_or_404(User, username=uname)
        if user.member.get_member_type_display() != 'Guest' and \
                request.resolver_match.namespace != 'member_backend':
            return HttpResponseRedirect("%s%s" % (reverse(
                'membership:profile', current_app='member_backend'), uname))
        if user.member.get_member_type_display() == 'Guest' and \
                request.resolver_match.namespace != 'guest_backend':
            return HttpResponseRedirect("%s%s" % (reverse(
                'membership:profile', current_app='guest_backend'), uname))

    if user.member.get_member_type_display() != 'Guest':
        current_target = user.member.reward.get_current_purchasing()
        current_selling_target = user.member.reward.get_current_selling()
        member_target = user.member.get_level()['TARGET']
        member_selling_target = user.member.get_level()['TARGET']
        target = round(current_target / member_target * 100, 2)
        selling_target = round(
            current_selling_target / member_selling_target * 100, 2)
        user.member.reward.get_purchasing_bonus(request)
        user.member.reward.get_selling_bonus(request)
    else:
        target = 0
        current_target = 0
        member_target = 0
        selling_target = 0
        current_selling_target = 0
        member_selling_target = 0
    link_sponsor = ''
    if user.member.sponsor:
        sponsor = Member.objects.get(referal_code=user.member.sponsor_code)
        link_sponsor = sponsor.get_absolute_url()

    return render(
        request, 'membership/profile_member.html', {
            'user': user,
            'target': target,
            'current_target': current_target,
            'member_target': member_target,
            'selling_target': selling_target,
            'current_selling_target': current_selling_target,
            'member_selling_target': member_selling_target,
            'cart': cart,
            'hlinks': hlinks,
            'flinks': flinks,
            'default_host': default_host,
            'wishlist': wishlist,
            'link_edit': link_edit,
            'link_sponsor': link_sponsor
        })
Пример #15
0
def login_page(request):
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    welcome_message = ""
    try:
        if 'cart' in request.META['HTTP_REFERER']:
            welcome_message = "Login untuk Menyelesaikan Pembayaran"
    except:
        pass

    referal_code = False
    if request.get_host() != settings.DEFAULT_HOST:
        referal_code = check_host(request, pass_variable=True)
        if not referal_code:
            return HttpResponseRedirect(
                request.scheme + "://" + settings.DEFAULT_HOST +
                reverse('membership:login',
                        current_app=request.resolver_match.namespace))
    form_messages = ''
    if request.method == 'POST':
        if request.user.is_authenticated:
            return HttpResponseRedirect(reverse('membership:profile'))
        form = MemberLoginForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            username = data.get('username')
            password = data.get('password')
            user = authenticate(username=username, password=password)
            if not user:
                try:
                    user = User.objects.get(email=username)
                except:
                    user = ''
                if user:
                    user = authenticate(username=user.username,
                                        password=password)
            if not user:
                try:
                    member = Member.objects.get(phone_number=username)
                except:
                    member = ''
                if member:
                    user = authenticate(username=member.user.username,
                                        password=password)

            if not user:
                form_messages = 'username atau password salah'
            else:
                anon_cart = carts.get_cart(request)['cart_object']
                anon_wishlist = wishlists.get_wishlist(
                    request)['wishlist_object']
                login(request, user)
                transfer_cart = carts.transfer_cart(request, anon_cart)
                transfer_wishlist = wishlists.transfer_wishlist(
                    request, anon_wishlist)
                cart = transfer_cart['cart_object']
                wishlist = transfer_wishlist['wishlist_object']
                try:
                    if request.GET.get('next'):
                        return HttpResponseRedirect(request.GET.get('next'))
                except:
                    pass
                return HttpResponseRedirect(reverse('membership:profile'))

    elif request.method == 'GET':
        if request.user.is_authenticated:
            return HttpResponseRedirect(reverse('membership:profile'))
        form = MemberLoginForm()

    next = request.GET.get('next') if request.GET.get('next') else False
    return render(
        request, 'membership/login.html', {
            'wishlist': wishlist_object,
            'cart': cart_object,
            'next': next,
            'form': form,
            'hlinks': hlinks,
            'flinks': flinks,
            'form_messages': form_messages,
            'welcome_message': welcome_message
        })
Пример #16
0
def register_page(request, *args, **kwargs):
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    threshold = ''
    referal_code = False
    link_cancel = reverse('membership:pre_register',
                          current_app=request.resolver_match.namespace)

    if request.get_host() != settings.DEFAULT_HOST:
        referal_code = check_host(request, pass_variable=True)
        if not referal_code:
            return HttpResponseRedirect(
                request.scheme + "://" + settings.DEFAULT_HOST +
                reverse('membership:register',
                        current_app=request.resolver_match.namespace))
    else:
        try:
            referal_code = kwargs['referal_code'].upper()
        except:
            pass

    if request.user.is_authenticated:
        return HttpResponseRedirect(reverse('membership:profile'))

    namespace = reverse(
        'membership:register',
        current_app=request.resolver_match.namespace).split('/')[1]
    if namespace != 'guest':
        threshold = {
            k: v
            for k, v in Member.LEVEL.items() if k != 'MASTER_SELLER'
        }

    if request.method == 'POST':
        if namespace == 'guest':
            form = GuestRegisterForm(request.POST)
        else:
            form = MemberRegisterForm(request.POST, request.FILES)

        if form.is_valid():
            data = form.cleaned_data
            """
            */ alamat utama untuk pendaftaran member / guest
            */ disimpan di field ktp_address
            */ alamat ini akan digunakan untuk tujuan pengiriman default
            */ bagi user tipe guest, alamat berupa home_address
            """
            response = render(request,
                              'membership/register_%s.html' % (namespace), {
                                  'form': form,
                                  'threshold': threshold,
                                  'link_cancel': link_cancel
                              })

            if namespace != 'guest':
                try:
                    """
                    */ cek apakah semua field lengkap, jika tidak kembalikan form 
                    """
                    if request.POST['provinsi'] and request.POST['kota'] and \
                    request.POST['kecamatan'] and request.POST['kelurahan'] :
                        provinsi = Provinsi.objects.get(
                            pk=request.POST['provinsi']).name
                        kota = Kota.objects.get(pk=request.POST['kota']).name
                        kecamatan = Kecamatan.objects.get(
                            pk=request.POST['kecamatan']).name
                        kelurahan = Kelurahan.objects.get(
                            pk=request.POST['kelurahan']).name
                    else:
                        return response
                except:
                    return response
            else:
                try:
                    """
                    */ cek apakah semua field lengkap, jika tidak kembalikan form 
                    """
                    if request.POST['provinsi_home'] and request.POST['kota_home'] and \
                    request.POST['kecamatan_home'] and request.POST['kelurahan_home']:
                        pass
                    else:
                        return response
                except:
                    return response
            """
            */ alamat alternatif untuk pendaftaran member
            */ disimpan di field home_address
            */ alamat ini akan digunakan jika alamat rumah berbeda dengan alamat ktp
            """
            try:
                """
                */ cek apakah semua field lengkap, jika tidak kosongkan alamat rumah
                """
                if request.POST['provinsi_home'] and request.POST['kota_home'] and \
                request.POST['kecamatan_home'] and request.POST['kelurahan_home']:
                    provinsi_home = Provinsi.objects.get(
                        pk=request.POST['provinsi_home']).name
                    kota_home = Kota.objects.get(
                        pk=request.POST['kota_home']).name
                    kecamatan_home = Kecamatan.objects.get(
                        pk=request.POST['kecamatan_home']).name
                    kelurahan_home = Kelurahan.objects.get(
                        pk=request.POST['kelurahan_home']).name
            except:
                provinsi_home = ''
                kota_home = ''
                kecamatan_home = ''
                kelurahan_home = ''
            """
            */ Buat akun user baru dengan data yang diberikan pengguna
            """
            username = data.get('username').lower()
            email = data.get('email')
            password = data.get('password')

            user = User.objects.create_user(username=username,
                                            email=email,
                                            password=password)
            """
            */ Pisahkan nama menjadi first name dan last name
            """
            full_name = data.get('first_name').split(' ')
            user.last_name = full_name[-1]
            user.first_name = ' '.join([x for x in full_name[:-1]])
            """
            */ Dapatkan kode sponsor jika tidak ada berikan kode referal acak
            """
            if referal_code:
                user.member.sponsor_code = referal_code
                user.member.sponsor = Member.objects.get(
                    referal_code=referal_code).user
            else:
                sponsor_user = random.choice(User.objects.all())
                while sponsor_user.member.member_type == Member.GUEST:
                    sponsor_user = random.choice(User.objects.all())
                user.member.sponsor_code = sponsor_user.member.referal_code
                user.member.sponsor = sponsor_user
            """
            */ Tipe member pengguna yang baru daftar
            """
            if namespace == 'guest':
                user.member.member_type = 0
            else:
                user.member.member_type = data.get('member_type')
            """
            */ Masukan data-data pengguna
            """
            user.member.ktp_number = data.get('ktp_number')
            user.member.bank_name = data.get('bank_name')
            user.member.bank_account_number = data.get('bank_account_number')
            user.member.bank_book_photo = data.get('bank_book_photo')
            user.member.ktp_photo = data.get('ktp_photo')
            user.member.phone_number = data.get('phone_number')

            if namespace != 'guest':
                user.member.ktp_provinsi = provinsi
                user.member.ktp_kota = kota
                user.member.ktp_kecamatan = kecamatan
                user.member.ktp_kelurahan = kelurahan
                user.member.ktp_address = data.get('ktp_address')
            else:
                user.member.ktp_provinsi = provinsi_home
                user.member.ktp_kota = kota_home
                user.member.ktp_kecamatan = kecamatan_home
                user.member.ktp_kelurahan = kelurahan_home
                user.member.ktp_address = data.get('home_address')

            if data.get('home_address'):
                user.member.home_provinsi = provinsi_home
                user.member.home_kota = kota_home
                user.member.home_kecamatan = kecamatan_home
                user.member.home_kelurahan = kelurahan_home
                user.member.home_address = data.get('home_address')
            else:
                user.member.copy_address()

            user.save()
            send_mail(
                'Verifikasi email anda.',
                'Hi, %s !. Selamat bergabung di Kei-Partner' % (user.username),
                "Kei Partner Admin <*****@*****.**>", [user.email],
                html_message="<html>\
                <h2>Hi, %s !. Selamat Bergabung di Kei-Partner.com</h2>\
                <p>Silakan klik link dibawah ini untuk memverifikasi email anda.</p>\
                <p><a href='http://kei-partner.com/member/verify/%s/'>VERIFIKASI</a></p>\
                <p>Atau masukan kode dibawah ini : <br/>\
                   Kode Verifikasi = %s <br>\
                   Ke alamat berikut ini : <br>\
                   <a href='kei-partner.com/member/verify/'>https://kei-partner.com/member/verify/</a>\
                </p>\
                </html>" % (user.username, user.member.email_verification_code,
                            user.member.email_verification_code))
            reward = Reward(member=user.member)
            if user is not None:
                anon_cart = carts.get_cart(request)['cart_object']
                anon_wishlist = wishlists.get_wishlist(
                    request)['wishlist_object']
                logout(request)
                login(request, user)
                transfer_cart = carts.transfer_cart(request, anon_cart)
                transfer_wishlist = wishlists.transfer_wishlist(
                    request, anon_wishlist)
                cart = transfer_cart['cart_object']
                wishlist = transfer_wishlist['wishlist_object']

                reward = Reward(member=user.member)
                reward.save()
                next = request.GET.get('next') if request.GET.get(
                    'next') else False
                if next:
                    return HttpResponseRedirect(next)
                return HttpResponseRedirect(
                    reverse('membership:profile',
                            current_app=request.resolver_match.namespace))
            else:
                return HttpResponse("Create User Fail")

    elif request.method == 'GET':
        if namespace == 'guest':
            form = GuestRegisterForm()
        else:
            form = MemberRegisterForm()
        if referal_code:
            form.fields['sponsor_code'].default = referal_code
            form.fields['sponsor_code'].initial = referal_code
            form.fields['sponsor_code'].disabled = True
            form.fields['sponsor_code'].widget.attrs.update({
                'class':
                'input-text',
                'style':
                'width:100%'
            })
    return render(
        request, 'membership/register_%s.html' % (namespace), {
            'form': form,
            'hlinks': hlinks,
            'flinks': flinks,
            'wishlist': wishlist_object,
            'cart': cart_object,
            'threshold': threshold,
            'link_cancel': link_cancel
        })
Пример #17
0
def product_detail(request, product_pk, **kwargs):
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()

    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    categories = Category.objects.all()
    stores = Store.objects.all()
    product = Product.objects.get(pk=product_pk)
    all_product = Product.objects.filter(
        is_archived=False, store=product.store).exclude(pk=product_pk)
    is_wishlist = False
    if len(all_product) >= 6:
        other_product = random.sample(list(all_product), 6)
    else:
        other_product = random.sample(list(all_product), len(all_product))

    is_in_wishlist = False

    if request.method == 'POST':
        method = ''
        try:
            method = request.POST['method']
        except:
            pass

        if method == 'wishlist':
            is_wishlist = True
            wishlist_item = WishListItem.objects.get_or_create(
                wishlist=wishlist_object, product=product)[0]

        elif method == 'cart':
            form = ProductCartForm(request.POST)
            if form.is_valid():
                data = form.cleaned_data
                quantity = data.get('quantity')
                cart_item = False
                try:
                    cart_item = CartItem.objects.get_or_create(
                        cart=cart_object, product=product)[0]
                except:
                    pass

                if not cart_item.quantity:
                    cart_item.quantity = quantity
                else:
                    cart_item.quantity += int(quantity)

                cart_item.save()

            return HttpResponseRedirect(
                reverse('cart:index',
                        current_app=request.resolver_match.namespace))

    form = ProductCartForm()

    product = Product.objects.get(pk=product_pk)

    products_in_wishlist = [
        x.product.id for x in wishlist_object.item_in_wishlist.all()
    ]
    for pk in products_in_wishlist:
        if product_pk == pk:
            is_in_wishlist = True

    if is_wishlist:
        response = HttpResponseRedirect(
            reverse("storefront:product_detail",
                    kwargs={'product_pk': product_pk})[:-1] + "#formQuantity")
    else:
        response = render(
            request, 'kei_store/detail.html', {
                'hlinks': hlinks,
                'flinks': flinks,
                'product': product,
                'other_product': other_product,
                'cart': cart_object,
                'wishlist': wishlist_object,
                'form': form,
                'stores': stores,
                'categories': categories,
                'is_in_wishlist': is_in_wishlist,
            })

    return response
Пример #18
0
def add_new_product(request):
    try:
        store = request.user.store
    except:
        store = ''
    if not store:
        return HttpResponseRedirect(reverse('storefront:create_new_store'))
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    if request.method == 'POST':
        form = AddProductForm(request.POST, request.FILES)
        if form.is_valid():
            data = form.cleaned_data
            product_name = data.get('name')
            product_price = data.get('price')
            product_weight = data.get('unit_weight')
            product_brand = data.get('brand')
            product_description = data.get('description')
            product_photo = data.get('photo')
            product_photo_alt1 = data.get('photo_alt1')
            product_photo_alt2 = data.get('photo_alt2')
            product_categories = data.get('categories')
            product_provinsi = data.get('provinsi')
            product_kota = request.POST.get('kota')
            product = Product.objects.create(store=store,
                                             name=product_name,
                                             price=product_price,
                                             unit_weight=product_weight,
                                             description=product_description,
                                             photo=product_photo,
                                             photo_alt1=product_photo_alt1,
                                             photo_alt2=product_photo_alt2)

            if product:
                for cat in product_categories:
                    try:
                        category = Category.objects.get(name=cat)
                        product.categories.add(category)
                    except Exception as e:
                        print(e)
                        continue
                try:
                    product.provinsi = product_provinsi
                except Exception as e:
                    print(e)
                    pass
                try:
                    product.kota = Kota.objects.get(pk=product_kota)
                except Exception as e:
                    print(e)
                    pass
                product.save()
                return HttpResponseRedirect(store.get_url())

    elif request.method == 'GET':
        form = AddProductForm()

    return render(
        request, 'kei_store/tambah_produk.html', {
            'form': form,
            'hlinks': hlinks,
            'flinks': flinks,
            'token': get_token(request),
            'wishlist': wishlist_object,
            'cart': cart_object,
        })
Пример #19
0
def index(request):
    header_links = HeaderLink.objects.all()
    hlinks = {}
    for link in header_links:
        if not link.page:
            hlinks['%s' % link.pos] = {'addr': link.addr, 'name': link.name}
        else:
            hlinks['%s' % link.pos] = {
                'addr': link.page.get_url(),
                'name': link.page.title
            }
    flinks = FooterLink.objects.all()
    cart = carts.get_cart(request)
    cart_object = cart['cart_object']
    wishlist = wishlists.get_wishlist(request)
    wishlist_object = wishlist['wishlist_object']
    item_list = cart_object.get_items_in_cart()
    paginator = Paginator(item_list, 5)
    page = request.GET.get('page', 1)
    max_page = 4
    min_page = 0
    try:
        products = paginator.page(page)
    except PageNotAnInteger:
        products = paginator.page(1)
    except EmptyPage:
        products = paginator.page(paginator.num_pages)

    max_page = products.number + 4
    min_page = products.number - 4
    discount = 0
    discounted_price = 0

    if request.method == 'POST':
        method = request.POST.get('method', 'remove')
        item = ""
        if method == 'remove':
            try:
                if request.POST['item']:
                    item_pk = request.POST['item'].split('_')[1]
                    item = CartItem.objects.get(pk=item_pk)
                    item.delete()
            except:
                pass
        elif method == 'update':
            try:
                if request.POST['item']:
                    item_pk = request.POST['item'].split('_')[1]
                    item = CartItem.objects.get(pk=item_pk)
                    quantity = request.POST.get('quantity', 1)
                    if int(quantity) > 0:
                        item.quantity = quantity
                        item.save()
            except:
                pass

    discounted_price = cart_object.get_total_price()

    if request.user.is_authenticated:
        if not request.user.member.member_type == Member.GUEST and \
            not request.user.member.member_type == Member.NEW_MEMBER:
            benefit = request.user.member.get_level()['BENEFIT']
            discount = cart_object.get_total_price() * discount / 100
            discounted_price = cart_object.get_total_price() * (100 -
                                                                discount) / 100
            if discount <= 0:
                discount = int(discount)
                discounted_price = int(discounted_price)

    return render(
        request, 'shopping_cart/cart_show_all.html', {
            'wishlist': wishlist_object,
            'cart': cart_object,
            'products': products,
            'discount': discount,
            'hlinks': hlinks,
            'flinks': flinks,
            'discounted_price': discounted_price,
            'max_page': max_page,
            'min_page': min_page
        })