• Stars
    star
    708
  • Rank 63,953 (Top 2 %)
  • Language
    Python
  • License
    BSD 2-Clause "Sim...
  • Created over 14 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ecommerce for Mezzanine

image

Created by Stephen McDonald

Overview

Cartridge is a shopping cart application built using the Django framework. It is BSD licensed, and designed to provide a clean and simple base for developing e-commerce websites. It purposely does not include every conceivable feature of an e-commerce website; instead, Cartridge focuses on providing core features common to most e-commerce websites.

This specific focus stems from the idea that every e-commerce website is different, is tailored to the particular business and products at hand, and should therefore be as easy to customize as possible. Cartridge achieves this goal with a code-base that is as simple as possible and implements only the core features of an e-commerce website.

Cartridge extends the Mezzanine content management platform. A live demo of Cartridge can be found by visiting the Mezzanine live demo.

Features

  • Hierarchical categories
  • Easily configurable product options (colours, sizes, etc.)
  • Hooks for tax/shipping calculations and payment gateways
  • Sale pricing
  • Promotional discount codes
  • PDF invoice generation (for packing slips)
  • Stock control
  • Product popularity
  • Thumbnail generation
  • Built-in test suite
  • Separation of presentation (no embedded markup)
  • Smart categories (by price range, colour, etc)
  • Registered or anonymous checkout
  • Configurable number of checkout steps
  • Denormalised data for accessibility and performance
  • Authenticated customer accounts with transaction history

Dependencies

Cartridge is designed as a plugin for the Mezzanine content management platform, and therefore requires Mezzanine to be installed. The integration of the two applications should occur automatically by following the installation instructions below.

Installation

The easiest method is to install directly from PyPI using pip by running the command below, which will also install the required dependencies mentioned above:

$ pip install -U cartridge

Otherwise, you can download Cartridge and install it directly from source:

$ python setup.py install

Once installed, the command mezzanine-project can be used to create a new Mezzanine project, with Cartridge installed, in similar fashion to django-admin.py:

$ mezzanine-project -a cartridge project_name
$ cd project_name
$ python manage.py createdb --noinput
$ python manage.py runserver

Here we specify the -a switch for the mezzanine-project command, which tells it to use an alternative package (cartridge) for the project template to use. Both Mezzanine and Cartridge contain a project template package containing the settings.py and urls.py modules for an initial project. If you'd like to add Cartridge to an existing Mezzanine or Django project, you'll need to manually configure these yourself. See the FAQ section of the Mezzanine documentation for more information.

Note

The createdb command is a shortcut for using Django's migrate command, which will also install some demo content, such as a contact form, image gallery, and more. If you'd like to omit this step, use the --nodata option with createdb.

You should then be able to browse to http://127.0.0.1:8000/admin/ and log in using the default account (username: admin, password: default). If you'd like to specify a different username and password during set up, simply exclude the --noinput option included above when running createdb.

Contributing

Cartridge is an open source project managed using both the Git and Mercurial version control systems. These repositories are hosted on both GitHub and Bitbucket respectively, so contributing is as easy as forking the project on either of these sites and committing back your enhancements.

Please note the following guidelines for contributing:

  • Contributed code must be written in the existing style. For Python (and to a decent extent, JavaScript as well), this is as simple as following the Django coding style and (most importantly) PEP 8. Front-end CSS should adhere to the Bootstrap CSS guidelines.
  • Contributions must be available on a separately named branch based on the latest version of the main branch.
  • Run the tests before committing your changes. If your changes cause the tests to break, they won't be accepted.
  • If you are adding new functionality, you must include basic tests and documentation.

Here's a quick start to hacking on Cartridge after forking it on GitHub, by using the internal "project_template" as your current project:

$ git clone https://github.com/your-github-username/cartridge/
$ cd cartridge
$ git checkout -b your-new-branch-name
$ cp cartridge/project_template/project_name/local_settings.py{.template,}
$ python setup.py develop
$ python cartridge/project_template/manage.py createdb --noinput
$ python cartridge/project_template/manage.py runserver

"hack hack hack"

$ python setup.py test
$ git commit -am "A message describing what you changed."
$ git push origin your-new-branch-name

Note

Cartridge's development branch often relies on features that exist in Mezzanine's development branch, but haven't yet made it into an official release. To install Mezzanine's development version in your environment, run:

$ pip install --upgrade git+https://github.com/stephenmcd/mezzanine.git#egg=Mezzanine

Language Translations

Cartridge makes full use of translation strings, which allow Cartridge to be translated into multiple languages using Django's internationalization methodology. Translations are managed on the Transiflex website but can also be submitted via GitHub or Bitbucket. Consult the documentation for Django's internationalization methodology for more information on creating translations and using them.

Third-party Modules

The following modules have been developed outside of Cartridge. If you have developed a module to integrate with Mezzanine or Cartridge, and would like it listed in the documentation, send an email to the mezzanine-users mailing list. You can also add modules to the Mezzanine Grid on djangopackages.com.

Donating

If you would like to make a donation to continue development of Cartridge, you can do so via the Mezzanine Project website.

Support

To report a security issue, please send an email privately to [email protected]. This gives us a chance to fix the issue and create an official release prior to the issue being made public.

For all other Cartridge support, the primary channel is the mezzanine-users mailing list. Questions, comments, and all related discussions take place here amongst knowledgeable members of the community.

If you're certain you've come across a bug, then please use the GitHub issue tracker. It's crucial that enough information is provided to reproduce the bug. This includes things such as the Python stack trace generated by error pages, as well as other aspects of the development environment used, such as operating system, database, Python version, etc. If you're not sure you've found a reproducable bug, then please try the mailing list first.

Finally, feel free to drop by the #mezzanine IRC channel on Freenode, for a chat!

Communications in all Cartridge and Mezzanine spaces are expected to conform to the Django Code of Conduct.

Sites Using Cartridge

More Repositories

1

mezzanine

CMS framework for Django
Python
4,757
star
2

django-socketio

WebSockets for Django
Python
1,318
star
3

django-forms-builder

Let users build forms in Django admin
Python
689
star
4

curiodb

Distributed NoSQL Database
Scala
511
star
5

drum

Reddit / Hacker News clone for Mezzanine
Python
387
star
6

hot-redis

Rich Python data types for Redis
Python
290
star
7

gnotty

IRC web client and bot framework
Python
159
star
8

django-overextends

Circular template inheritance for Django
Python
108
star
9

two-queues

Benchmarking Redis and ZeroMQ pub-sub, using Python and Go
Go
105
star
10

gunicorn-console

A curses application for managing gunicorn processes.
Python
90
star
11

django-postgres-fuzzycount

Fast / fuzzy PostgreSQL counts for Django
Python
89
star
12

django-email-extras

PGP encrypted / multipart templated emails for Django
Python
75
star
13

filebrowser-safe

File manager for Mezzanine
Python
41
star
14

hg-github

A Mercurial extension for working with GitHub repositories.
Python
40
star
15

vimeo-deck

Synchronize Speaker Deck presentations with Vimeo videos.
JavaScript
28
star
16

gamblor

An online casino app built for Django Dash 2012
JavaScript
26
star
17

grappelli-safe

Admin skin for Mezzanine
CSS
25
star
18

snazzymaps-browser

Android app for searching and browsing Snazzy Maps
Java
24
star
19

grillode

A web-based chat application written in CoffeeScript for Node.js
CoffeeScript
23
star
20

drawnby

Drawn By is a collaborative real-time sketching app built for the 2011 Django Dash.
JavaScript
23
star
21

babbler

A Twitter bot that polls an RSS feed and posts its entries as tweets, with auto-generated hashtags.
Python
21
star
22

tastypie-msgpack

MsgPack support for Django Tastypie.
Python
21
star
23

django-shotgun

Test entire Django sites
Python
17
star
24

linkedout

Build PDF resumes with the LinkedIn API
Ruby
15
star
25

sphinx-me

Wraps your README-only projects in a dynamic Sphinx shell for hosting on http://readthedocs.org
Python
12
star
26

readertray

Cross platform desktop notifications for RSS
Python
9
star
27

indexed-tree-map

JDK's enhanced red-black tree map algorithm to support access by index
Java
9
star
28

otr

Combined GitHub and Bitbucket API.
Ruby
8
star
29

aspchat

Classic ASP chat application
ASP
8
star
30

bitbucket-batch

A tool for bulk updating access to bitbucket.org repos.
Python
8
star
31

grillo

A terminal based chat server and client.
Python
7
star
32

mezzanine.jupo.org

Mezzanine/Cartridge project and demo site
Python
6
star
33

ratemyflight

A web app built for the Django Dash hackathon 2010.
JavaScript
6
star
34

klout-feed

Receive your daily Klout score via RSS.
Ruby
6
star
35

slbuddy

Tool for tracking sales data in Secondlife.com
Python
3
star
36

virtualboxing

Utilities for comparing timings on bulk operations across databases in a distributed environment.
Ruby
3
star
37

cryptopals

Matasano Crypto Challenges
Go
3
star
38

ghetto-life-stream

Parses items for a Google Buzz feed from various sources.
PHP
2
star
39

teamcity-client

Team City HTTP client.
Ruby
2
star
40

sydjango-damm

Code for my SyDjango talk "Django Admin: The Missing Manual"
Python
2
star
41

jquery-squeezebox

Replacement for jquery.ui.accordion to avoid dealing with jquery.ui theming.
JavaScript
2
star
42

lime

JavaScript framework, predates jQuery
JavaScript
1
star
43

cmdsvr

Toy web application server
Python
1
star
44

gedit-ftp-browser

FTP plugin for Gedit
Python
1
star