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 })
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, })
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 })
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)
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
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})
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 })
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, })
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
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 })
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 })
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 })
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 })
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
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, })
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 })