This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

E-Cart is a framework agnostic, redis backed, cart system, built in Python. It is not a POS, or a full fledged ecommerce system.

Installation

pip install ecart

Requirements

As E-Cart harnesses the power of Redis.You should have running Redis Server. and installed redis-py redis-py package.

Basic Usage

  1. Import the Cart class from the ecart package:

    from ecart.ecart import Cart

  2. Create a new shopping cart:

    cart_obj = Cart(user_id, redis_connection, ttl)

    user_id : This a required parameter which acts as a unique identifier for the cart. If you don’t want a user to have more than one cart at a time, it’s generally best to set this to the user’s id.

    redis_connection: This too is a required field and is used to communicate with the Redis database. This is basically a redis connection object obtained by calling the redis.Redis() function of the redis package. An sample function to create such object is available at redis_connection.py

    ttl: This field used to set the expiry time of the user cart in the Redis in seconds. This is an optional field with a default value of 604800.

  3. To add an item to the cart:

    cart_obj.add(product_id, unit_cost, quantity)

    This function take product_id, unit_cost and quantity and other details (**kwargs) if you like. Once executed this function add the given product and its details into the user cart in redis db.

  4. To Retrieve the items:

cart_obj.get()

This function returns the complete cart of the user, basically a dictionary of product_id to product_details dictionary.

Functions Exposed

Following are the complete details of the methods exposed by cart_obj object:

  • add

    add(product_id, unit_cost, quantity, **extra_details)

    This function is the life blood of E-Cart. Below are the details of the arguments for the add function:

    • product_id: (required) to store the ID of the model you’re adding
    • quantity: (required) which will let you use the Cart#quantity and Cart#total methods without any extra configuration.
    • unit_cost: (required) which will help you to calculate total value of cart.
    • extra_details:(optional) if you want to store any extra information about the cart item just pass the details as **kwargs, ecart will take care of it.
  • remove

    remove(product_id)

    As you would have guessed, removes an item of the input product_id

  • contains

    contains(product_id)

    Returns a Boolean indicating whether an item of the given product_id is in the cart or not.

  • get_product

    get_product(product_id)

    For the input product_id, this function will return the Item dictionary with unit_cost, quantity etc details.

  • get

    get()

    This function returns the complete cart of the user, basically a dictionary of product_id to product_details dictionary.

  • total_cost

    total_cost()

    This will return the sum all of the cost return values of all of the items in the cart. For this to work, the :unit_cost and :quantity fields need to be set for all items.

  • count

    count()

    This will return the total number of items in the cart. Faster than cart.items.size because it doesn’t load all of the item data from redis.

  • quantity

    quantity()

    This will return the total quantity of all the items. The quantity field is set in the config block, by default it’s :quantity

  • get_ttl

    get_ttl()

    This will return the number of seconds until the cart expires.

  • set_ttl

    set_ttl(ttl_value)

    This will set the ttl of the user cart in redis to ttl_value. ttl_value must be integer and is in seconds

  • destroy

    destroy()

    This will delete the cart, and all the line_items out of it.

  • copy

    copy(new_id)

    This method will copy the current cart to the new unique_id. Will be useful for copying guest user’s cart to logged-in user’s cart or simply creating a copy of the cart.

Example

Lets walk through an example below:

from ecart.ecart import Cart
cart = Cart(user_id, reddis_connection) # ttl is optional default is 604800
cart.add(product_id, unit_cost, quantity) # quantity defaults to 1, also you can pass optional dict(extra info)
cart.total
cart.quantity

How to Contribute

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request
Release History

Release History

1.0.2

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
ecart-1.0.2.tar.gz (4.9 kB) Copy SHA256 Checksum SHA256 Source May 9, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting