def register(request): data = cartData(request) cartItems = data['cartItems'] order = data['order'] items = data['items'] if request.method == 'POST': form = UserRegisterForm(request.POST) if form.is_valid(): form.save() username = form.cleaned_data.get('username') messages.success( request, f'Your account has been created! You are now able to login.') return redirect('login') else: form = UserRegisterForm() context = { 'items': items, 'order': order, 'cartItems': cartItems, 'form': form } return render(request, 'users/register.html', context)
def category_products(request, pk): sort_by = request.GET.get('sort', None) sorting_list = ['price', '-price', 'name', '-name'] if sort_by and sort_by in sorting_list: products = Product.objects.filter(category__id=pk).order_by(sort_by) else: products = Product.objects.filter(category__id=pk) data = cartData(request) cartItems = data['cartItems'] paginator = Paginator(products, 6) page_number = request.GET.get('page', 1) try: page = paginator.page(page_number) except EmptyPage: page = page_number.page(1) context = { 'cartItems': cartItems, 'page': page, 'categoryid': pk, 'products': products } return render(request, 'products/category_products.html', context)
def GetProductHelp(request): data = cartData(request) cartItems = data['cartItems'] items = data['items'] order = data['order'] products = Product.objects.all() item_cat = Recommendations_for_you.objects.all() swip = Swiber_bags.objects.all() cat_menu = category.objects.all() myfilter = ProductFilter(request.GET, queryset=products) products = myfilter.qs paginator = Paginator(products, 11) # Show 25 contacts per page. page = request.GET.get('page') Page_number = paginator.get_page(page) context = { 'products': Page_number, 'cartItems': cartItems, 'cat_menu': cat_menu, 'item_cat': item_cat, 'swip': swip, 'myfilter': myfilter, 'items': items, 'order': order } return render(request, 'Get_product_help.html', context)
def get(self, request, *args, **kwargs): profile_edit = Customer.objects.get(user=request.user) form = self.form_class(request.POST, request.FILES, instance=profile_edit) if request.method == 'POST': if form.is_valid(): form = EditProfileForm(request.POST, instance=profile_edit) myprofile = form.save(commit=False) myprofile.user = request.user myprofile.save() return redirect(reverse('profile')) else: form = EditProfileForm(instance=profile_edit) data = cartData(request) cartItems = data['cartItems'] items = data['items'] order = data['order'] cat_menu = category.objects.all() return render( request, self.template_name, { 'profile_edit': profile_edit, 'form': form, 'cartItems': cartItems, 'items': items, 'order': order, 'cat_menu': cat_menu, })
def user_login(request): if request.method == "POST": form = LoginForm(request.POST) if form.is_valid(): user = authenticate(request, username=form.cleaned_data.get('username'), password=form.cleaned_data.get('password')) if user is None: return render(request, 'register/login.html', { 'error': "Login information is wrong", 'form': form }) else: login(request, user) data = cartData(request) cartItems = data['cartItems'] order = data['order'] items = data['items'] products = Product.objects.all() # return render(request, 'store/store.html', {"user":1, "first_name": user.first_name, "last_name": user.last_name, 'products':products, 'cartItems':cartItems}) return HttpResponseRedirect('/') else: form = LoginForm() return render(request, 'register/login.html', {'form': form})
def checkout(request): data = cartData(request) cartItems = data["cartItems"] order = data["order"] items = data["items"] context = {"items": items, "order": order, "cartItems": cartItems} return render(request, "store/checkout.html", context)
def my_order_list(request): customer = request.user.customer data = cartData(request) cartItems = data['cartItems'] orders = Order.objects.filter(customer=customer, complete=True).order_by('-date_ordered') context = {'orders': orders, 'cartItems': cartItems} return render(request, 'users/my_orders_list.html', context)
def favorite_list(request): data = cartData(request) cartItems = data['cartItems'] new = Product.objects.filter(favorites=request.user) return render(request, 'users/favorite_list.html', { 'new': new, 'cartItems': cartItems })
def categoriesPage(request): data = cartData(request) cartItems = data['cartItems'] categories = Category.objects.all() context = {'categories': categories, 'cartItems': cartItems} return render(request, 'products/categories.html', context)
def logout(request): data = cartData(request) cartItems = data['cartItems'] order = data['order'] items = data['items'] context = {'items': items, 'order': order, 'cartItems': cartItems} return render(request, 'users/logout.hmtl', context)
def store(request): data = cartData(request) cartItems = data["cartItems"] # order = data["order"] # items = data["items"] products = Product.objects.all() context = {"products": products, "cartItems": cartItems} return render(request, "store/store.html", context)
def product_details(request, slug): data = cartData(request) cartItems = data['cartItems'] items = data['items'] product = get_object_or_404(Product, slug=slug) context = {'cartItems': cartItems, 'product': product, 'items': items} return render(request, 'products/product_details.html', context)
def my_orders(request): data = cartData(request) cartItems = data['cartItems'] user = request.user.id orders = reversed(ProcessedOrders.objects.filter(customer=user)) context = {'cartItems': cartItems, 'orders':orders} return render(request, 'my-orders.html', context)
def profile(request): data = cartData(request) cartItems = data['cartItems'] profile = UserProfile.objects.get(user__username=request.user.username) print(profile.user.date_joined) print(profile.transations) context = {'profile': profile, 'cartItems': cartItems} return render(request, 'profiles/detail.html', context)
def store(request): data = cartData(request) cartItems = data['cartItems'] products = Product.objects.all() context = { 'products': products, 'cartItems': cartItems, } return render(request, 'store.html', context)
def Profile(request): data = cartData(request) cartItems = data['cartItems'] customer = request.user.customer form = CustomerForm(instance=customer) if request.method == 'POST': form = CustomerForm(request.POST, request.FILES, instance=customer) if form.is_valid(): form.save() context = {'form': form, 'cartItems': cartItems} return render(request, 'users/user_profile.html', context)
def checkout(request): data = cartData(request) cartItems = data['cartItems'] order = data['order'] items = data['items'] context = { 'items': items, 'order': order, 'cartItems': cartItems, } return render(request, 'checkout.html', context)
def collections(request): data = cartData(request) cartItems = data['cartItems'] order = data['order'] items = data['items'] collection_previews = CollectionPreview.objects.all() context = { 'cartItems': cartItems, 'collection_previews': collection_previews } return render(request, 'aesthetic/collections.html', context)
def ProfileViwe(request): data = cartData(request) cartItems = data['cartItems'] items = data['items'] order = data['order'] cat_menu = category.objects.all() context = { 'cartItems': cartItems, 'cat_menu': cat_menu, 'items': items, 'order': order } return render(request, "profile.html", context)
def order_detail(request, id): data = cartData(request) cartItems = data['cartItems'] customer = request.user.customer order = Order.objects.get(id=id, customer=customer) shippingAddress = ShippingAddress.objects.get(customer=customer, order=order) orderItems = OrderItem.objects.filter(order=order) context = { 'order': order, 'orderItems': orderItems, 'cartItems': cartItems, 'shippingAddress': shippingAddress } return render(request, 'users/order_detail.html', context)
def get(self, request, *args, **kwargs): profile = Customer.objects.all() page_user = get_object_or_404(Customer, id=self.kwargs['pk']) data = cartData(request) cartItems = data['cartItems'] items = data['items'] order = data['order'] cat_menu = category.objects.all() return render( request, self.template_name, { 'cartItems': cartItems, 'items': items, 'order': order, 'cat_menu': cat_menu, 'page_user': page_user, })
def register_seller(request): data = cartData(request) cartItems = data['cartItems'] if request.POST: form = RegistrationForm(request.POST) if form.is_valid(): form.save() email = form.cleaned_data.get('email') raw_password = form.cleaned_data.get('password1') account = authenticate(email=email, password=raw_password) login(request, account) return redirect("/login/") else: context = {'cartItems':cartItems,"registration_form":form} else: form = RegistrationForm() context = {'cartItems':cartItems,"registration_form":form} return render(request, 'utilisateurs/registerAsSeller.html', context)
def contact(request): if request.method == 'GET': form = contactForm() data = cartData(request) cartItems = data['cartItems'] context = {'form': form, 'cartItems': cartItems} else: """When a user submits the form it starts here. """ form = contactForm(request.POST) if form.is_valid(): from_email = form.cleaned_data['from_email'] from_name = form.cleaned_data['from_name'] subject = form.cleaned_data['subject'] try: """Once the forms been validated it then is processed to be send using the credentials in the settings.py file. """ send_to = settings.DEFAULT_SEND_TO message = "Name: {0} \nEmail: {1} \n\nMessage: {2}".format( from_name, from_email, form.cleaned_data['message']) send_mail(subject, message, from_email, [send_to], from_name) messages.success( request, "Your email has been sent, we'll get back to you soon as possible." ) return redirect(home) except BadHeaderError: return HttpResponse('Invalid header found.') return redirect(contact) else: messages.error( request, "There was a problem with your e-mail address, please double check it's correct." ) return render(request, 'contact.html', {'form': form}) return render(request, "contact.html", context)
def my_account(request): data = cartData(request) cartItems = data['cartItems'] order = data['order'] items = data['items'] if request.method == 'POST': u_form = UserUpdateForm(request.POST, instance=request.user) if u_form.is_valid(): u_form.save() messages.success(request, f'Your account has been updated!') return redirect('my_account') else: u_form = UserUpdateForm(instance=request.user) context = { 'items': items, 'order': order, 'cartItems': cartItems, 'u_form': u_form } return render(request, 'users/my_account.html', context)
def detail(request, collection_id): data = cartData(request) cartItems = data['cartItems'] order = data['order'] items = data['items'] collection = get_object_or_404(Collection, pk=collection_id) products = store_models.Product.objects.all().filter(collection=collection) collection_images = CollectionImage.objects.all().filter( collection=collection) images = [] i = 0 if len(products) > len(collection_images): while i < len(collection_images): images.append(products[i]) images.append(collection_images[i]) i += 1 images.append(products[i]) elif len(products) == len(collection_images): while i < len(collection_images): images.append(products[i]) images.append(collection_images[i]) i += 1 else: while i < len(products): images.append(collection_images[i]) images.append(products[i]) i += 1 images.append(collection_images[i]) context = { 'collection': collection, 'images': images, 'cartItems': cartItems } return render(request, 'aesthetic/detail.html', context)
def login_view(request): data = cartData(request) cartItems = data['cartItems'] user = request.user if user.is_authenticated: return redirect("home") if request.POST: form = AccountAuthenticationForm(request.POST) if form.is_valid(): email = request.POST['email'] password = request.POST['password'] user = authenticate(email=email, password=password) if user: login(request, user) return redirect("home") else: form = AccountAuthenticationForm() context = {'cartItems':cartItems,"login_form":form} return render(request, "utilisateurs/login.html", context)
def user_profile(request): ''' This gets the profile page for the logged in User. If it doesn't exist it'll return to the homepage. ''' if request.user.is_authenticated: try: user = UserProfile.objects.get(pk=request.user.id) except Exception as e: messages.error(request, "No profile was found, please contact the company.") return render(request, 'home.html') if request.method == 'GET': """The user's profile""" formUser = userProfileForm(instance=user) data = cartData(request) cartItems = data['cartItems'] # This matches the logged in user to the address table which then renders the form with the correct data. try: address = UserAddress.objects.get(person=user) formAddress = userAddressForm(instance=address) except: formAddress = userAddressForm() context = {'formUser' : formUser,'formAddress' : formAddress, 'profile' : user, 'cartItems': cartItems} else: # Requests the form and files data. formUser = userProfileForm(request.POST) formAddress = userAddressForm(request.POST) if formUser.is_valid() and formAddress.is_valid(): # Sets the unique user profile instance up. try: address = UserAddress.objects.get(person=user) except: uar = UserAddress() uar.person = UserProfile.objects.get(user=user) uar.save() address = UserAddress.objects.get(person=user) up = user ua = address try: up.first_name = formUser.cleaned_data['first_name'] up.last_name = formUser.cleaned_data['last_name'] up.phone_number = formUser.cleaned_data['phone_number'] up.email = formUser.cleaned_data['email'] up.gender = formUser.cleaned_data['gender'] ua.town_city = formAddress.cleaned_data['town_city'] ua.street_address1 = formAddress.cleaned_data['street_address1'] ua.street_address2 = formAddress.cleaned_data['street_address2'] ua.postcode = formAddress.cleaned_data['postcode'] ua.country = formAddress.cleaned_data['country'] up.save() ua.save() messages.success(request, "Your profile was updated successfully!") return redirect(user_profile) except Exception as e: # If an error occurs it throws up a message and asks to retry. messages.error(request, "Failed to update: " + str(e)) return render(request, 'profile.html', context) return render(request, 'profile.html', context) # If the user isn't logged in then redirect them to the log in page. else: return render(request, 'login.html')
def dashboardContent(request): data = cartData(request) cartItems = data['cartItems'] customers = Customer.objects.all() orderItem = OrderItem.objects.all().order_by("-date") if len(orderItem) >= 5: orderItems = [orderItem[i] for i in range(0, 5)] else: orderItems = [orderItem[i] for i in range(0, len(orderItem))] if len(customers) >= 6: customers = [customers[i] for i in range(1, 6)] else: customers = [customers[i] for i in range(1, len(customers))] delivered = orderItem.filter(status='Delivered').count() pending = orderItem.filter(status='Pending').count() shipping = orderItem.filter(status='Shipping').count() accepted = orderItem.filter(status='Accepted').count() # for order analysis x = [] for item in orderItem: if item.date.date() not in x: x.append(item.date.date()) y = [] for i in x: a = [y.order for y in orderItem if y.date.date() == i] y.append(len(a)) orderChart = get_bar(x, y) # for transaction transaction = [] for i in x: a = [float(y.product.discountPrice) for y in orderItem if y.date.date() == i] transaction.append(sum(a)) transactionChart = get_plot(x, transaction) total_payment = sum(transaction) profit = (len(orderItem)*60)//100 categories = Category.objects.all() cat_list = [] for category in categories: cat_list.append(category.category) category_wise_quantity =[] for keyL in cat_list: cat_sort = [] for ordr in orderItem: if ordr.product.category.category == keyL: cat_sort.append(ordr.product.category.category) category_wise_quantity .append(len(cat_sort)) pie_chart = get_pie(category_wise_quantity, cat_list) return { 'cartItems': cartItems, 'customers': customers, 'orderItems': orderItems, 'total_order': orderItem.count(), 'delivered': delivered, 'pending': pending, 'accepted': accepted, 'shipping': shipping, 'chart':orderChart, 'tchart':transactionChart, 'total_payment':total_payment, 'profit':profit, 'pie_chart':pie_chart, }
def bot_search(request): query = request.GET.get('query') data = cartData(request) cartItems = data['cartItems'] order = data['order'] items = data['items'] i = 0 data_name = [] headers = { 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:79.0) Gecko/20100101 Firefox/79.0' } url = f'https://www.meijer.com/shop/en/search/?text={query}' response = requests.get(url, headers=headers) try: response.raise_for_status() except requests.exceptions.HTTPError: print('Connection Error') # In case the connection fails else: soup = BeautifulSoup(response.text, "html.parser") product_container_list = soup.find_all('div', class_='product-tile-container', limit=5) if not product_container_list: print('Nothing found!') else: for product in product_container_list: try: name = product.find('a', class_='h7').get_text(strip=True) except AttributeError: print('Nothing found!') break try: #price = '$' + product.find('span', {'itemprop': 'price'}).get_text(strip=True) price = product.find('span', { 'itemprop': 'price' }).get_text(strip=True) except AttributeError: price_sale = product.find( 'div', class_='display-price sale-price') price = "".join([ t for t in price_sale.contents if type(t) == element.NavigableString ]).strip() # In case the image is not parsed correctly just ignore it (it's useless anyway) image_link = product.find('img')['src'] if product.find( 'img')['src'].startswith('https') else '' print(f'{name}\n{price}\n{image_link}\n') i += 1 data_name.append({ 'name': name, 'price': price, 'image': image_link, 'id': i, 'website': "Meijer" }) return JsonResponse({ 'data_name': data_name['name'], 'query': query, 'cartItems': cartItems })
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) data = cartData(self.request) cartItems = data['cartItems'] context['cartItems'] = data['cartItems'] return context