예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
    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,
            })
예제 #5
0
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})
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
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
    })
예제 #9
0
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)
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
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)
예제 #13
0
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)
예제 #14
0
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)
예제 #15
0
def store(request):

    data = cartData(request)
    cartItems = data['cartItems']

    products = Product.objects.all()
    context = {
        'products': products,
        'cartItems': cartItems,
    }
    return render(request, 'store.html', context)
예제 #16
0
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)
예제 #17
0
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)
예제 #19
0
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)
예제 #20
0
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)
예제 #21
0
 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,
         })
예제 #22
0
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)
예제 #23
0
파일: views.py 프로젝트: 99ron/ScentQueen
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)
예제 #24
0
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)
예제 #26
0
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)
예제 #27
0
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')
예제 #28
0
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,

    }
예제 #29
0
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
    })
예제 #30
0
 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