Giter Club home page Giter Club logo

e-cart's Introduction

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

e-cart's People

Contributors

nimeshkverma avatar rohitkhatana avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.