Colophon

Authors

  • Stephen McDonald
  • Josh Cartmell
  • Lex Hider
  • Andrew Grigorev
  • Dominique Guardiola
  • Josh de Blank
  • Andrew Fisher
  • Ken Bolton
  • Sebastián Magrí
  • Luke Miller
  • Gary Reynolds
  • Sergi Almacellas Abellana
  • Kamal Mustafa
  • Nicola Larosa
  • Dmitry Falk
  • Kent Hauser
  • Damian Heard
  • Ross Laird
  • Alexander Hill
  • Yong Choi
  • Michal Kuffa
  • Josh VanderLinden
  • Thomas Wajs
  • Kenneth Love
  • Sachin Shende
  • Evan Leis
  • Wojtek Ruszczewski
  • Sam Kingston
  • Mahdi Bornazadeh
  • Mike Wakerly
  • Tzu-ping Chung
  • Ryan Lander
  • Breno Uchoa
  • Mehmet Özgür Bayhan
  • Ulrich Wagner
  • Justin McKeon
  • Pahaz Blinov
  • Jason Robinson
  • Markus Törnqvist
  • Krzysztof Klimonda
  • Sebastian Clemens
  • Eduardo Rivas

License

Copyright (c) Stephen McDonald and individual contributors. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Change Log

Version 0.8.4 (Sep 29, 2013)

  • added recalculate_billship_tax util to update billship_handler and tax_handler when cart is modified after first step - justin
  • removed extra spaces - justin
  • Combine recalculate_discount and recalculate_billship_tax into a single function recalculate_cart - Stephen McDonald
  • Update travis config - Stephen McDonald
  • Bump minimum Mezzanine version to 1.4.15 - Stephen McDonald

Version 0.8.3 (Aug 27, 2013)

  • Make wishlist optional by SHOP_USE_WISHLIST setting - Sam Kingston
  • Fix line length >80 - Sam Kingston
  • Pull currency for Stripe from the settings file. With Stripe launching in different countries, the currency should be located in the configuration rather than hard coded in the processor - mrbiscuits
  • Adding Card Verification Field - mrbiscuits
  • Make STRIPE_CURRENCY setting backwards compatible - Stephen McDonald
  • Add setting SHOP_ORDER_EMAIL_BCC. This should be set to an internal email address. All order receipt emails will be sent to this address via BCC, as well as being sent to the customer - Alex Hill
  • Ensure live stock lookup only uses unexpired carts - Stephen McDonald
  • Revert cart to old values if update is not valid - Tzu-ping Chung
  • Show invalid quantity in stock error in cart update, in prep for pr that resets cart form values - Stephen McDonald
  • Mark up cart errors for correct styling - Stephen McDonald
  • Maintain errors when creating new cart formset when cart update invalid - Stephen McDonald
  • Fix non-ascii chars in product option names. Closes #112 - Stephen McDonald
  • Increase cart item url size to allow for potentially long unicode slugs. Closes #113 - Stephen McDonald
  • Fix handling of ‘same shipping details’ checkbox - Stephen McDonald
  • Remove redundant import - Stephen McDonald
  • Fix UnicodeEncodeError in ProductVariation.__unicode__. field.verbose_name.decode(utf-8) raises UnicodeError if verbose_name can. not be encoded by ASCII. Add encode(utf-8) to fix it - Tzu-ping Chung
  • Allow large product image overlays to scroll. Closes #117 - Stephen McDonald
  • Increase description field lengths on SelectedProduct models - Stephen McDonald
  • Use richtext_filter for product content. Closes #119 - Stephen McDonald
  • Allow custom product templates matching product slugs - Stephen McDonald
  • Migrations for timestamp fields - Stephen McDonald

Version 0.8.2 (Mar 31, 2013)

  • Use set_default_images in product_db command - Stephen McDonald
  • Added another block to checkout.html, encapsulating the back/next buttons - Evan Leis
  • Fix text alignment - Stephen McDonald
  • Update travis env for Django 1.5 - Stephen McDonald
  • After POST data, check session for checkout step - Alex Hill
  • Keep step in session data up-to-date - Alex Hill
  • Handle exception when “order” isn’t in session - Alex Hill
  • Persist the remember field in the checkout form not being checked, throughout the other steps where it’s a hidden field, by removing its value if it isn’t checked - Stephen McDonald
  • Bunch of migration fixes. Closes #95 - Stephen McDonald
  • Fix remember field handling in checkout form - Stephen McDonald
  • Forget checkout step when user POSTs to cart - Alex Hill
  • Remove all use of django.conf.urls.defaults since we don’t support Django 1.3 anymore - Stephen McDonald
  • Forget checkout step every time the cart is shown - Alex Hill
  • Set session modified flag when remembering checkout step - Alex Hill
  • Forget checkout step only when creating new cart - Alex Hill
  • Show “Return to Checkout” if checkout in progress - Alex Hill
  • Make shop templates extend shop/base.html. The change allows a site to supply shop-specific base.html, potentially. overriding or extending the global base.html - mike wakerly
  • Add SHOP_USE_RATINGS (default True), allowing ratings to be disabled - mike wakerly
  • Remove deprecated ADMIN_MEDIA_PREFIX - Stephen McDonald
  • Use Django’s timezone support since Django 1.3 is not supported - Stephen McDonald
  • Update .po files for latest revision - Sebastián Ramírez Magrí
  • Bump Mezzanine version to 1.4.4 - Stephen McDonald

Version 0.8.1 (Feb 23, 2013)

  • Add a hidden_fields option for the fields_for tag. Useful if you want to display some field directly (without using the tag, for example iterating some payment type choices) and yet include all fields hidden for the current step - wrwrwr
  • Secondary block for checkout subtemplates for valid html - Evan Leis
  • Add before-form and after-form blocks - Evan Leis
  • Addd migration for rating sums - Stephen McDonald
  • Bump Mezzanine version to 1.4.2 - Stephen McDonald

Version 0.8.0 (Feb 17, 2013)

  • Provide better exception messages for required settings in each of the payment processors - Stephen McDonald
  • Pass amount to Stripe as integer intead of string. The Stripe API docs indicate that the “amount” passed to a Stripe. charge object should be an int, not a string. See https://stripe.com/docs/api?lang=python#create_charge - Lorin Hochstein
  • Don’t put payment specific settings in local_settings template - Stephen McDonald
  • Move dummy stripe key setting into its test - Stephen McDonald
  • Fix AttributeError with empty cart in Django 1.5. Django 1.5 looks for a pk in BaseInlineFormSet’s __init__, which it couldn’t find on EmptyCart. The fix adds the attribute with value None - Alex Hill
  • Only run stripe tests if its used, since it breaks Python 2.5 support (stripe package doesn’t work in 2.5) - Stephen McDonald
  • Fix class decorator for stripe tests for Python 2.5 - Stephen McDonald
  • Fix jquery.tools references for product image overlay. Closes #83 - Stephen McDonald
  • Added fields 'tax_type' and 'tax_total' and processors that mimic the functionality of 'shipping_type' and 'shipping_total' - Evan Leis
  • By default, tax_total is 0 - Evan Leis
  • tax_free session option is unnecessary, updated documentation on default_tax_handler - Evan Leis
  • Add OrderForm.preprocess() class method - Alex Hill
  • preprocess should be a class method, not static - Alex Hill
  • Removed redundant JS on checkout page - Alex Hill
  • Remove stray print() call - Alex Hill
  • Fix and add comments - Alex Hill
  • Move variable declarations around for clarity - Alex Hill
  • Remove unused variable - Alex Hill
  • Taxation defaults/settings tests - Evan Leis
  • Added test for set_tax - Evan Leis
  • Added documentation. Merged two tests as they are entirely co-dependent - Evan Leis
  • Fix rendering of payment fields when checkout steps aren’t split - Stephen McDonald
  • Implemented handling for the createdb –nodata management command option, splitting out fixtures into required/optional. Closes #29 - Stephen McDonald
  • Use dummy test data in order test, since form validation will fail if SHOP_CHECKOUT_STEPS_CONFIRMATION is False - Stephen McDonald
  • Added docs for the new tax handling - Stephen McDonald
  • Added a section about categories as pages to the docs - Stephen McDonald
  • Fix displaying product form with empty SHOP_OPTION_TYPE_CHOICES - wrwrwr
  • Bump Mezzanine version to 1.4.0 - Stephen McDonald

Version 0.7.0 (Dec 26, 2012)

  • Specify the product object in the product view to be the editable object to link to from the admin toolbar - Stephen McDonald
  • add featured image for category - Dmitry Falk
  • Update url templatetags for Django 1.5. See https://docs.djangoproject.com/en/1.4/releases/1.3/#changes-to-url-and-ssi. “{% load url from future %}” is omitted in favour of a global import in. mezzanine’s boot/__init__.py - Alex Hill
  • Load future tag lib explicitly in templates - Stephen McDonald
  • get child_categories via page_processor - Dmitry Falk
  • fix child categories css - Dmitry Falk
  • Initialize credit card expiry month to the current month - Josh Cartmell
  • Added Stripe Integration - Sean Voss
  • Rename stripe package and clean up some of the exception handling - Stephen McDonald
  • Fix imports - Stephen McDonald
  • Order.setup stores discount_code from session - Luke Miller
  • Add Mezzanine’s new 404 handler to project template’s urls.py - Stephen McDonald
  • Update .po files - Sebastián Ramírez Magrí
  • #66 - Execute the MySQL workaround code - Josh VanderLinden
  • Ensure valid cart in handling checkout steps. Fixes the case of session timeout in final step - Stephen McDonald
  • Use Mezzanine’s upload_to handler for configurable upload_to args on file fields - Stephen McDonald
  • Catch a missing key error. Since you can’t guarantee that every session has the order key in it,. put a try/except around the deletion - Kenneth Love
  • shensac: locale.currency was failing on Windows for GBP (£) as it returned hex string xa3 for the currency symbol. Added a platform check and if Windows convert the string to unicode using iso_8859_1 encoding - Sachin Shende
  • shensac: The previous commit made the build fail. The issue was with the length of line. Have fixed it now - Sachin Shende
  • Make the windows handling of currency symbol a bit drier - Stephen McDonald
  • Add the product model to Mezzanine’s new SEARCH_MODEL_CHOICES setting - Stephen McDonald
  • Add Mezzanine’s new site perms middleware to project_template's settings.py - Stephen McDonald
  • Updated comments in project_template's urls.py module from Mezzanine - Stephen McDonald
  • Added migration for Mezzanine’s Displayable.in_sitemap - Stephen McDonald
  • Remove editable settings commented out in project template’s settings.py since it led to confusion when updated via admin - Stephen McDonald
  • Bump mezzanine version to 1.3.0 - Stephen McDonald

Version 0.6.0 (Aug 05, 2012)

  • Remove old product class. Closes #42 - Stephen McDonald
  • add SHOP_USE_VARIATIONS option - Dmitry Falk
  • fix SKU field - Dmitry Falk
  • fix product saving - Dmitry Falk
  • update migrations - Dmitry Falk
  • update copy_default_variation method - Dmitry Falk
  • clear imports - Dmitry Falk
  • sales updates priced_objects after saving - Dmitry Falk
  • Allow the discount percentage to be 100%. Subclass DecimalField and define our own formfield method to ensure that in the admin the fields enfore the upper and lower bounds of 100 and 0 respectively - Gary Reynolds
  • Use the receiver decorator for the new sale signal - Stephen McDonald
  • Move sku/stock fields onto the Priced model so that these mimic variations and can be managed in the product change list view when SHOP_USE_VARIATIONS is False. Added a new update_stock method to the variations model, called when an order is complete, that also takes care of synchronising the stock field on the product model. Added a new copy_price_fields_to method on the Priced model, since this occurs in both directions now across products and variations - Stephen McDonald
  • update fixtures: added product sku - Dmitry Falk
  • Fix migrations - Stephen McDonald
  • Update fixtures for new Page.in_menus field - Stephen McDonald
  • Apply grouping option to currency filter - Yong Choi
  • Update comments referencing old location of default settings in Mezzanine - Stephen McDonald
  • ImageWidget.render now accept filenames with unicode - beezz
  • Add new Mezzanine _meta_title field to products - Stephen McDonald
  • Added meta title migration - Stephen McDonald
  • Added Django’s tx context processor to project_template's settings.py, and a commented out PAGE_MENU_TEMPLATES setting with comments - Stephen McDonald
  • add css control for price - Dmitry Falk
  • Force commit - Stephen McDonald
  • Change build IRC notifications to only occur if the build status changes - Stephen McDonald
  • Updated manage.py from Mezzanine - Stephen McDonald
  • More manage.py updates from Mezzanine - Stephen McDonald
  • really show default variation on product page - Dmitry Falk
  • fix related_products displaying - Dmitry Falk
  • Fix discount code form alignment on the cart page - Stephen McDonald
  • Fix travis installation - Stephen McDonald
  • Reduce queries and don’t assume default variation in product view - Stephen McDonald
  • Bump Mezzanine version to 1.2.0 - Stephen McDonald

Version 0.5.2 (Jun 05, 2012)

  • add some verbose names - Dmitry Falk
  • Bump Mezzanine version to 1.1.2 - Stephen McDonald

Version 0.5.1 (Jun 04, 2012)

  • removed dupe code - Luke Miller
  • Bump Mezzanine version to 1.1.1 - Stephen McDonald

Version 0.5.0 (Jun 03, 2012)

  • Make ACCOUNTS_ENABLED editable - Stephen McDonald
  • Wrap data access in migrations with checks against the dry_run arg - Stephen McDonald
  • Added migration for mezzanine.core.models.MetaData.gen_description - Stephen McDonald
  • Remove invalid examples of gettext in settings module - Stephen McDonald
  • Update .po files - Sebastián Ramírez Magrí
  • Dev started in 2009 - Stephen McDonald
  • update title/slug for Displayable model - Dmitry Falk
  • fix selected sorting option - Dmitry Falk
  • Update to the new mezzanine.accounts app - Stephen McDonald
  • User Mezzanine’s new auth backend - Stephen McDonald
  • Use dev version of Mezzanine for CI - Stephen McDonald
  • Updated settings to match changes in mezzanine/project_template - Kent Hauser
  • Accounts should be on by default in Cartridge - Stephen McDonald
  • Fixed exception handling in Sale.save() which result in Product and Variation sale_prices potentially fall out of sync. As it turns out this bug seems only to be relevant when using MySQL with DEBUG=True - DamianHeard
  • Upgraded date handling for timezone support - Stephen McDonald
  • Add multiple Django versions and IRC notifications to travis builds - Stephen McDonald
  • Fix trvis config - Stephen McDonald
  • fix i18n quantity label - Dmitry Falk
  • Added an order history page for logged-in users - Alex Hill
  • Added pagination to order history - Alex Hill
  • Grammatical corrections to descriptive snippets - Ross Laird
  • Cleaned up install description - Ross Laird
  • Added Mezzanine’s new PageMiddleware to settings - Stephen McDonald
  • Edited descriptions for clarity and concision - Ross Laird
  • add some verbose names - Dmitry Falk
  • Pre-populate checkout form with logged-in user fields if no previous orders available - Stephen McDonald
  • fix order history list: ‘Page’ object not iterable - Dmitry Falk
  • fix related products displaying in template - Dmitry Falk
  • fix upsell products displaying - Dmitry Falk
  • Allow profile fields to pre-populate checkout form - Stephen McDonald
  • Fix missing import - Stephen McDonald
  • Really fix import - Stephen McDonald
  • Don’t require debug for test data - Stephen McDonald
  • Don’t run signals on tests - Stephen McDonald
  • Clean up clears on brs - Stephen McDonald
  • fix get_profile exception - Dmitry Falk
  • Clean up imports - Stephen McDonald
  • Add a field to track the number of uses remaining for a given discount code. Include in the validity section of the admin - leaving the field blank will keep existing behaviour. Update the DiscountCodeManager to exclude any codes which have explicitly 0 uses remaining - Gary Reynolds
  • Update the Order.complete method to decrement the discount code’s uses_remaining field if necessary - Gary Reynolds
  • Fix up the auto generated migration - Gary Reynolds
  • Fix up the migration name - Gary Reynolds
  • Added handling for Mezzanine’s new cache setup - Stephen McDonald
  • reorder Product/Category models code - Dmitry Falk
  • set Product/Category bi-directional ManyToMany in admin - Dmitry Falk
  • Use Mezzanine’s AdminThumbMixin for the product admin thumbnail - Stephen McDonald
  • Allow cart items to be removed by entering 0 as quantity. Closes #38 - Stephen McDonald
  • Added missing docstring - Stephen McDonald
  • Add empty migration for defining Category.products - Stephen McDonald
  • Use a dummy cart object until items have actually been added to the cart, to avoid unnecessary db queries - Stephen McDonald
  • Bump Mezzanine version to 1.1.0 - Stephen McDonald

Version 0.4.9 (Mar 24, 2012)

  • Bump Mezzanine to 1.0.8 - Stephen McDonald

Version 0.4.8 (Mar 24, 2012)

  • Bump Mezzanine to 1.0.7 - Stephen McDonald

Version 0.4.7 (Mar 22, 2012)

  • Bump Mezzanine to 1.0.6 - Stephen McDonald

Version 0.4.6 (Mar 20, 2012)

  • Bump Mezzanine to 1.0.5 - Stephen McDonald

Version 0.4.5 (Mar 19, 2012)

  • Bump dependencies - Stephen McDonald

Version 0.4.4 (Mar 19, 2012)

  • Updated project_template's urls.py in line with Mezzanine’s - Stephen McDonald
  • Exclude static dir from package - Stephen McDonald
  • Use Mezzanine’s set_cookie and send_mail_template - Stephen McDonald
  • Bump dependencies - Stephen McDonald

Version 0.4.3 (Mar 12, 2012)

  • Fixed settings names in cartridge.shop.payment.authorizenet and added a clearer error when they’re not defined - Stephen McDonald
  • Fixed card year validation - year wasn’t being returned - Stephen McDonald

Version 0.4.2 (Mar 06, 2012)

  • Version bump to 0.4.2 - Stephen McDonald

Version 0.4.1 (Mar 06, 2012)

  • Update Mezzanine version - Stephen McDonald

Version 0.4.0 (Mar 03, 2012)

  • Make the subject line of the order receipt email editable - Gary Reynolds
  • Documentation updated - Gary Reynolds
  • If a request is made to /shop/cart/complete/ fails, raise 404 Not Found error instead of leaving an uncaught DoesNotExist to bubble up - Gary Reynolds
  • Added pre-purchase card expiry validation - Stephen McDonald
  • Ported default templates from 960.gs to Twitter Bootstrap - Stephen McDonald
  • Maintain a consistent grid size for category products - Stephen McDonald
  • Removed unused product search and changed product pagination to use Mezzanine’s - Stephen McDonald
  • Moved all include templates into includes directory - Stephen McDonald
  • Use bootstrap’s media-grid for product images - Stephen McDonald
  • Added overlay for full product image - Stephen McDonald
  • Changed LICENSE from 3-clause to 2-clause BSD - Stephen McDonald
  • Updated Mezzanine css - Stephen McDonald
  • Bump the required Mezzanine version - Stephen McDonald
  • Added complete handling for Django’s staticfiles app, in line with Mezzanine - Stephen McDonald
  • Updates required for Mezzanine’s device handling refactor - Stephen McDonald
  • Requirements version bumps - Stephen McDonald
  • Removed all uses of ifequal and ifnotequal templatetags - Stephen McDonald
  • Added model graph to docs - Stephen McDonald
  • Temp remove requirements - Stephen McDonald
  • Updated the project_template settings to reflect new mezzanine SSLMiddleware. Updated cartridge.shop.middleware.SSLRedirect deprecation warning to instruct the user to use mezzanine.core.middleware.SSLMiddleware - Josh Cartmell
  • Set defaults for SITE_FORCE_SSL_URL_PREFIXES - Josh Cartmell
  • Refactored setting default images for variations, and formset saving in ProductAdmin, to handle when images get deleted and are no longer valid selections for variations, which would raise errors. Closes #14 - Stephen McDonald
  • Removed account functionality - now implemented in Mezzanine - Stephen McDonald
  • Don’t import * from mezzanine.project_template.settings, just define everything explicitly in the settings module - Stephen McDonald
  • Update arg for the new format for Mezzanine’s ratings in the product template - Stephen McDonald
  • make default shipping handler respect free_shipping - lexual
  • Revert to previous format for Mezzanine’s rating_for templatetag, since a better approach for removing hard-coded rating field name has been implemented - Stephen McDonald
  • Add missing messages context processor for Django 1.4 - Stephen McDonald
  • Use a generic sqlite db name in local_settings.py - Stephen McDonald
  • Add the possibility of disabling the Payment step - pokoli
  • Upgrade to Bootstrap 2.0 - Stephen McDonald
  • Add deprecated fallback for SSLMiddleware - Stephen McDonald
  • check if field exists before deleting, refs https://github.com/stephenmcd/cartridge/issues/17 - Kamal Bin Mustafa
  • Fix step calculation when payments aren’t enabled - Stephen McDonald
  • Settings containing paths to code to run shouldn’t be editable. Smells like a vulnerability - Stephen McDonald
  • Update settings docs, model graphs - Stephen McDonald
  • Set up TravisCI - Stephen McDonald
  • Restore requirements - Stephen McDonald

Version 0.3.7 (Dec 09, 2011)

  • Discount should apply to each unit not just once per SKU. Previously only percentage based discounts worked for quantity greater than 1 - Gary Reynolds

Version 0.3.6 (Dec 09, 2011)

  • Fix for subquery update in MySQL. See http://dev.mysql.com/doc/refman/5.0/en/subquery-errors.html - Gary Reynolds

Version 0.3.5 (Dec 03, 2011)

  • Add the ability for a developer to replace the OrderForm class with a setting. This would usually be a subclass of cartridge.shops.forms.OrderForm however we do not enfore this and leave it to the developer to ensure that the interface requirements are met in the form they define - Gary Reynolds
  • Synchronize PO files with latest tip - Sebastián Ramírez Magrí
  • PayPal doDirectPayment Website Payments Pro NVP API payment processor - Ken Bolton
  • Fix mistake in the urllib2 request. Add COUNTRIES - Ken Bolton

Version 0.3.4 (Nov 13, 2011)

  • Refactored discount code calculation per product to not use DB queries per cart item - stephenmcd
  • Added handling for recalculating discount codes on cart changes - stephenmcd
  • Added discount code tests - stephenmcd
  • Added a note to docs about discounts per cart item versus entire cart - stephenmcd
  • Fixed incorrect calls for rerieving all products for a discount - stephenmcd

Version 0.3.3 (Nov 11, 2011)

  • Type fixes on shipping - stephenmcd

Version 0.3.2 (Nov 11, 2011)

  • DiscountCodes can be applied to specific products or categories - Luke Miller
  • tidy up code - Luke Miller
  • Fixed type error with decimal shipping values - stephenmcd
  • Added a payment handler for ANZ eGate - stephenmcd
  • Fixed egate exception handling - stephenmcd

Version 0.3.1 (Nov 05, 2011)

  • Fixed formset iteration for Django <= 1.2 - stephenmcd

Version 0.3 (Nov 05, 2011)

  • Added live_num_in_stock method to the variation model for displaying actual number of items available - stephenmcd
  • Added an extra guard in AddProductForm to ensure valid options are selected - stephenmcd
  • Made empty product options hidden in product edit view - stephenmcd
  • Fixed styling of long lists of product options - stephenmcd
  • Fixed upsell products to exclude items already in cart - stephenmcd
  • Added options for configuring where the discount field is located throughout the shop process - stephenmcd
  • Made relevant updates for Mezzanine’s install management command - stephenmcd
  • Fixed logic around displaying discount code field - stephenmcd
  • Made product images orderable - stephenmcd
  • Initial layout of editable cart formset - stephenmcd
  • Added error display to cart form - stephenmcd
  • Refined discount form styling - stephenmcd
  • Refactored AddProductForm to not use a wrapper function and to also handle adding items to the cart from the wishlist - stephenmcd
  • Refactored loading of cart and wishlist moving it from context processors into a single shop middleware shared with SSL redirection - stephenmcd
  • Cleaned up cart rendering logic - stephenmcd
  • Added next param to login/signup link on checkout - stephenmcd
  • Initial view for printable PDF invoices - stephenmcd
  • Added invoice links to order complete page and order admin list/change views - stephenmcd
  • Made the SHOP_CARD_TYPES setting available to templates - stephenmcd
  • Add lables to editable settings - Ken Bolton
  • Updated Mezzanine version requirement - stephenmcd

Version 0.2.2 (Jun 30, 2011)

  • Edited cartridge/shop/templates/shop/billing_shipping.html via GitHub - jdeblank
  • Remove extra quotation mark - jdeblank
  • If product has stock, show price. Else show an error message - jdeblank
  • Backout hiding price when no stock available - stephenmcd
  • Fixed an issue with Google Analytics where there was a type error and a variable misname. Ecom Analytics should work now - =

Version 0.2.1 (May 28, 2011)

  • Updated Mezzanine’s old DynamicInlineAdmin with the new TabularDynamicInlineAdmin. Fixes #6 - stephenmcd
  • Updated base template to include is_installed check for apps where applicable - stephenmcd
  • Updated 960.gs to fluid version - stephenmcd
  • Fixed footer alignment in base template - stephenmcd

Version 0.2 (Apr 30, 2011)

  • Added fieldset grouping of fields in checkout confirmation step - stephenmcd
  • Restored messages in templates - stephenmcd
  • Fixed settings name and sys.path change in dummy product script - stephenmcd
  • Fixed CHECKOUT_STEP_FIRST template variable name in checkout - stephenmcd
  • Added a SHOP_DEFAULT_SHIPPING_VALUE editable setting which is used in the default billing/shipping handler. Changed the prefix of default handlers from dummy_ to default_. Also changed the display of shipping to use the value of the shipping type - stephenmcd
  • Added a “Powered by Cartridge” link - stephenmcd
  • Hide the category add button in the product change form since the parent context of the category is not available - stephenmcd
  • Added “Buy now” link to cart panel - stephenmcd
  • added order_complete signal - Josh Cartmell
  • Updated payment handler to expect an order to be returned. By creating the order instance in the payment handler an order id can be sent to the payment gateway. The order is deleted if payment fails - Josh Cartmell
  • Changed shop.checkout.CHECKOUT_TEMPLATES to shop.checkout.CHECKOUT_STEPS which is a list of dicts. The template is now stored here along with a title and URL for each step. The steps are passed to the template and the title of each is used to replace the breadcrumb nav with a checkout progress indiciator. The URL for each step is assigned to a JavaScript variable which Mezzanine’s Google Anayltics code will check for and use as a virtual pageview to track, allowing each checkout step to be tracked uniquely - stephenmcd
  • added authorize.net payment module. It is functional but does not include the cost of shipping. Need to find a way to access shipping total - Josh Cartmell
  • moved order creation and deletion out of payment processor - Josh Cartmell
  • Changed the text against the discount amount to use the title of the discount - stephenmcd
  • Fixed free shipping discount by setting the shipping to free shipping when the discount is known - stephenmcd
  • Refactored the checkout view so that the order object is created with totals available prior to the payment handler being called - stephenmcd
  • Added Google Analytics order tracking - stephenmcd
  • Fixed shipping details and commented out unused vars in authorize.net payment handler - stephenmcd
  • Added tests for the order process - stephenmcd
  • Changed checkout handler loading to allow for no handlers to be explicitly specified - stephenmcd
  • Updated integration docs for latest version of checkout - stephenmcd
  • Added initial version of category filters - stephenmcd
  • Refactored category filters to ensure an empty explicit product list doesn’t cancel out all filters, and that variation based filters when combined are applied in combination to individual variations. Also removed reverse related products field on category since this doesn’t work in Django 1.2 and up - stephenmcd
  • Added default combined value to category fixture - stephenmcd
  • Refactored category.filters to not require extra products query if no filters are specified - stephenmcd
  • Added distinct calls to each use of category filters - stephenmcd
  • Added tests for category filters - stephenmcd
  • Added migrations for category filters - stephenmcd
  • Added initial versions of upsell and related products - stephenmcd
  • Renamed Order.prepare() to Order.setup() to avoid collision with Django checking for prepare methods on models - stephenmcd
  • Fixed the template logic around showing the cart/wishlist add form so that it isn’t shown unless valid variations exist - stephenmcd
  • Fixed CSS for related products - stephenmcd
  • Added checking for C locale as invalid for currency - stephenmcd
  • Added various Mezzanine and Cartridge settings, commented out, to the project template’s settings module - stephenmcd
  • Updated settings docs with new default for SHOP_SSL_ENABLED - stephenmcd
  • Add first working version of import script from csv files - lexual
  • import/export management command from/to csv - lexual
  • make change for python < 2.7 as dictionary comprehensions not supported ;( - lexual
  • Upgraded the default templates and CSS for the SITE_TITLE and SITE_TAGLINE settings - stephenmcd
  • Removed the SHOP_LOGIN_URL setting and handling for consistency with Mezzanine’s LOGIN_URL handling - stephenmcd
  • French locales - Dominique Guardiola
  • Fixed missing title in cart template - stephenmcd
  • Added migration for Mezzanine’s keywords and site fields - stephenmcd
  • Update settings to the latest version of Mezzanine - stephenmcd
  • Removed trailing white-space - stephenmcd
  • Upgraded CSS files to latest Mezzanine versions - stephenmcd
  • Added Mezzanine’s ratings to products - stephenmcd
  • Fixed INSTALLED_APP ordering - stephenmcd
  • Upgraded to Mezzanine’s RichText model - stephenmcd
  • Cleaned up white-space in docs - stephenmcd
  • Updated auto-generated settings docs - stephenmcd

Version 0.1.8 (Feb 04, 2011)

  • Fixed unicode errors with product names - stephenmcd
  • Change docs theme to Mezzanine’s - stephenmcd
  • Move settings docs into a sub-section - stephenmcd
  • Use Mezzanine’s settings and CHANGELOG generation - stephenmcd
  • Add Mezzanine to sys.path when generating docs - stephenmcd
  • Update to new path setting names from Mezzanine - stephenmcd
  • Fix setting names - stephenmcd
  • Added docs for shipping and payment integration - stephenmcd
  • Allow generation of order fields docs to fail as it will in most cases - stephenmcd
  • Removed section from components docs that’s no longer applicable as the features are provided by Mezzanine - stephenmcd

Version 0.1.7 (Jan 28, 2011)

  • Added a depth arg for select_related in the wishlist view - stephenmcd
  • Exposed handlers for billing_shipping and payment forms via settings - stephenmcd
  • Updated auto-generated settings docs - stephenmcd

Version 0.1.6 (Dec 22, 2010)

  • Updated required Mezzanine version - stephenmcd
  • Changed path import for developing against Mezzanine to be cross-platform - jdeblank
  • Updated setup script for Python 2.5 compatibility - stephenmcd

Version 0.1.5 (Dec 22, 2010)

  • Fix with statement for Python 2.5 - stephenmcd
  • Remove redundant JS in admin product change view - stephenmcd
  • Use mezzanine.utils.set_dynamic_settings - stephenmcd
  • Update to multiple DB settings - stephenmcd
  • Revert to old ordering of shop app in INSTALLED_APPS - stephenmcd
  • Fixed buempty wishlist length - stephenmcd
  • Updated render_to_response to Mezzanine’s context-aware version - stephenmcd
  • Removed unused import - stephenmcd
  • Defined template accessible settings - stephenmcd
  • Upgraded local_settings module template to use multi DB format - stephenmcd
  • Removed a ton of unused imports - stephenmcd
  • Updated local_settings template - stephenmcd
  • Renamed fixtures from initial_data to avoid loading on each call to syncdb - stephenmcd
  • Added pyflakes test - stephenmcd
  • Added south migrations - stephenmcd
  • Fixed south introspection rules to use cartridge package name - stephenmcd
  • Updated fixtures installation to support south - stephenmcd
  • Removed redundant setuptools dependency - stephenmcd
  • Updated base template to use Mezzanine’s new page_menu template tag - stephenmcd
  • Updated references to mezzanine.utils to use new module names - stephenmcd
  • Rearranged Mezzanine settings in the settings module - stephenmcd
  • Updated urls.py in the project template to include its own url for the homepage - stephenmcd
  • Added some guards against imported sequences into settings being an unexpected type (list vs tuple) - stephenmcd
  • Added link to mobile site in base template - stephenmcd
  • Added br tag to mobile link - stephenmcd

Version 0.1.4 (Nov 10, 2010)

  • MySQL patches - stephenmcd
  • Remove TEST_DATABASE_COLLATION (will go into Mezzanine) - stephenmcd
  • CSS update for default templates - stephenmcd
  • Fix incorrect import in tests resulting from Mezzanine’s new settings app - stephenmcd
  • Remove thumbnail template tag and replace references with Mezzanine’s - stephenmcd
  • Update ADMIN_MENU_ORDER to include Mezzanine’s settings app and fix setting of ADMIN_MEDIA_PREFIX - stephenmcd
  • Convert settings to Mezzanine’s settings app - stephenmcd
  • Update mezzanine.settings to mezzanine.conf - stephenmcd
  • Update documentation to automatically generate available settings - stephenmcd
  • Require the about to be released Mezzanine version - stephenmcd

Version 0.1.2 (Sep 24, 2010)

  • Docs update - add more info and links around Mezzanine integration - stephenmcd
  • Update editable_loader tag sequence and move default CSS to external files - stephenmcd
  • Fixes to category template - stephenmcd
  • Bundle jQuery - stephenmcd

Version 0.1.1 (Sep 20, 2010)

  • Add csrf_token to forms - stephenmcd
  • Fix Django 1.2 incompatibilities with the admin product form - stephenmcd
  • Fix the fixes - stephenmcd
  • Remove old assets - stephenmcd
  • Add images for fixtures - stephenmcd
  • Use correct db name to exclude in setup.py - stephenmcd

Version 0.1 (Sep 19, 2010)

  • initial import - stephenmcd
  • thumbnail template tag - stephenmcd
  • cleaned up thumbnail filename convention - stephenmcd
  • bugfix imports - stephenmcd
  • settings file - stephenmcd
  • added “view on site” in admin listing for product and category - stephenmcd
  • front-end handling of skus - stephenmcd
  • documented cart object - stephenmcd
  • cleaned up price field names, made variation description from options and removed ability to edit options for variations - stephenmcd
  • clbugfix to cart not updating total price for item, bugfix to checkout form fields and fieldsets - stephenmcd
  • dummy commit testing username in hgrc - stephenmcd
  • added cropping to thumbnail template tag - stephenmcd
  • bugfix on creating option formfields in admin and update to fieldset names - stephenmcd
  • change menu template name to reflect new include tag name - stephenmcd
  • add ssl redirect middleware - stephenmcd
  • add categories to context processors - stephenmcd
  • add breadcrumbs template tag and change category tags to use global category list - stephenmcd
  • add sku to product model and method for building heirarchical slugs - stephenmcd
  • removed all functionality around hierarchical slugs including breadcrumbs tag - stephenmcd
  • added styling to templates - stephenmcd
  • new modules from last commit - stephenmcd
  • template enhancements - stephenmcd
  • added initial unit tests - stephenmcd
  • removed redirects app - stephenmcd
  • fix thumbnail quality - stephenmcd
  • added shop.settings - stephenmcd
  • changed ssl middleware to use shop.settings - stephenmcd
  • removed old cart module - stephenmcd
  • added items in carts to stock checking - stephenmcd
  • added shipping and payment hooks as well as order creation - stephenmcd
  • added calculated total_price fields to SelectedProduct and Order - stephenmcd
  • removed unnecessary custom fields from admin, moved all admin form functionality to forms module and added money widget - stephenmcd
  • moved shipping and payment utils into checkout module - stephenmcd
  • added order_totals inclusion tag - stephenmcd
    • reverted address fields for order model and option fields for variation model back to being dynamically created. - moved all model choices into shop.settings. - implemented checkout_handler functionality for each checkout step. - implemented set_shipping method on order form - stephenmcd
    • re-added shop.utils with make_choices, send_mail_template and moved set_shipping from payment form into utils. - added email receipt to order complete and ORDER_FROM_EMAIL to shop.settings. - added FORCE_HOST to settings which when specified will ensure the host is forced for matching ssl cert - stephenmcd
  • added cartridge site homepage - stephenmcd
  • remove test fixtures and add some more test placeholders - stephenmcd
  • move variations management from admin module to management module - stephenmcd
  • added unit tests for variation management - stephenmcd
  • bugfix for add to basket form on product with no options - stephenmcd
  • bugfix lookup of sku quantity in carts and some enhancements to cached property testability - stephenmcd
  • homepage updates - stephenmcd
  • bugfix incorrect method name for stock checking in add to basket form - stephenmcd
  • changed unit tests for cart to use test client for cart interaction rather than cart object, in order to cover the cart forms also providing a more realistic test case. removed the need for custom test handling in models so removed these also - stephenmcd
  • added cartridge site favicon - stephenmcd
  • added handling for text version of order_totals tag - stephenmcd
  • moved product images to separate model that’s related to both a product and a product’s variation - stephenmcd
  • added image toggling to product template - stephenmcd
  • added collapse classes to product admin fieldsets - stephenmcd
  • used jquery for usability enhancements to product change from in admin - stephenmcd
  • show first image field in product change form if no images have been added - stephenmcd
  • modify “add another image” link in admin product change form to look more like existing admin interface elements - stephenmcd
  • added image thumbnails to admin - stephenmcd
  • bugfix on setting main product image - stephenmcd
  • moved logic for lookup of main product image to variation as this is used when assigning the image for a basket item - stephenmcd
  • made cart item image nullable for unit tests - stephenmcd
  • bugfix to jquery enhancements for images in admin product change form - stephenmcd
  • misc homepage updates - stephenmcd
  • optimized category loading algorithm in menu templatetag and created tree interface for category listing in admin - stephenmcd
  • remove redundant options from category admin - stephenmcd
  • add debug toolbar - stephenmcd
  • added product search - stephenmcd
  • added messages integration - stephenmcd
  • added “0 categories” message to admin tree when there are no categories - stephenmcd
  • added pagination to search results - stephenmcd
  • added initial product actions functionality - stephenmcd
  • added sales functionality - stephenmcd
  • bugfix on admin image field widget - stephenmcd
  • bugfix for setting image on cart item - stephenmcd
  • bugfix on swapping visible image when changing options on product template - stephenmcd
  • bugfix indexes on action model - stephenmcd
  • initial discount codes functionality - stephenmcd
  • admin for discount codes - stephenmcd
  • added ability to define ADMIN_REORDER setting for specifying ordering of admin app/models - stephenmcd
  • implemented handling of discount codes - stephenmcd
  • removed redundant naming convention for abstract models - stephenmcd
  • initial view layout for cookie based wishlist - stephenmcd
  • preparation for the cart add form to also allow adding to wishlist - stephenmcd
  • add to wishlist handling - stephenmcd
  • moved handling of variation images and main product image into variation save method - stephenmcd
  • bugfix to priority of stock error messages - stephenmcd
  • change distinction between adding to cart or wishlist in product view so that add to cart is the default - stephenmcd
  • make product image description optional - stephenmcd
  • fixed bug in product admin where variation management routines were called for every formset - stephenmcd
  • added remaining wishlist elements - view and template - stephenmcd
  • fixed bug where when default variation was saved via admin it would override any changes made to the product - stephenmcd
  • added get_absolute_url to product variations and cart items - stephenmcd
  • added pattern matching structure to dynamic calls in FieldsetForm - stephenmcd
  • removed need for passing app_list and path to admin_reorder template tag - stephenmcd
  • refactored search manager to be chainable and reusable - stephenmcd
  • allow fields for search manager to be set via constructor - stephenmcd
  • bugfix to creation of search fields when none are specified - stephenmcd
  • bugfix to wishlist add/remove - stephenmcd
  • initial layout for docs - stephenmcd
  • added admin url compatibility with django 1.0 - stephenmcd
  • bugfixes to search manager - moved fields lookup to inside search method to avoid missing self.model attribute when queryset is being copied, and renamed attributes to avoid collision wih existing _fields attribute - stephenmcd
  • bugfix to lookup of discount codes - stephenmcd
  • added initial category/product docs - stephenmcd
  • added more docs for product and related models - stephenmcd
  • split docs sections into separate files - stephenmcd
  • added logo to docs - stephenmcd
  • updated docs - moved abstract models into their own descriptions and added initial docs for discounts - stephenmcd
  • added docs for discount codes, sales and carts - stephenmcd
  • change to adding to cart so that if price has changed on an existing item, maintain both prices treating each item separately - stephenmcd
  • added docs for selected products - stephenmcd
  • made the checkout wizard thread-safe by wrapping it in a view function so that it is created on each request - stephenmcd
  • bugfix to variation lookup in add/remove cart item - stephenmcd
  • initial version of checkout confirmation page - stephenmcd
  • Moved the creation of cc expiry year choices to PaymentForm form so that it is generated each time it’s rendered - stephenmcd
  • Added server-side handling for same billing/shipping fields in OrderForm in case Javascript is disabled - stephenmcd
  • Undo test code from last commit - stephenmcd
  • Split templates and tags for order_totals into separate versions for HTML and text - stephenmcd
  • update tests for new method of cart item removal - stephenmcd
  • Removed clone_model and all associated cleverness stemming from it around Address/Order and methods returning lists of fields - stephenmcd
  • Moved creation of default ORDER_FROM_EMAIL using host name from shop.forms into shop.settings - stephenmcd
  • Updated docs layout with wider sidebar and removed numeric toc - stephenmcd
  • Added docs for configuration (settings) and re-ordered shop.settings members to match the alphabetical order in the docs - stephenmcd
  • Initial layout for configurable checkout process - stephenmcd
  • Total rewrite of the checkout process after hitting a variety of limitations with Django’s FormWizard. Now supports going backwards through process as well as configuring the number of steps in the checkout process from 1 to 3 via settings - stephenmcd
  • Fixed issue #1 - removed broken/redundant import - stephenmcd
  • Added support for South - stephenmcd
  • Added auth integration - stephenmcd
  • Moved product options into a model and made slugs and titles for categories contain their parents - stephenmcd
  • Added drag and drop ordering for category tree in admin - stephenmcd
  • Bugfix to managing list of IDs for open branches in admin category tree - stephenmcd
  • Convert from a project to an app with a project template piggy-backing Mezzanine - stephenmcd
  • Reorganize docs - stephenmcd
  • Add packaging tools: setup.py and MANIFEST - stephenmcd
  • Mark the required version of Mezzanine as the yet to be released 0.8 - stephenmcd
  • Convert Cartridge to a Mezzanine app - stephenmcd
  • Integrate default templates with Mezzanine templates - stephenmcd
  • Update tests for Mezzanine - stephenmcd
  • Clean up comments - stephenmcd
  • Fix the category template to use correct base.html and title - stephenmcd
  • Upgrade create_test_products.py script to use Mezzanine - stephenmcd
  • Fix the layout of the category template - stephenmcd
  • Revert user check around jQuery loading - stephenmcd
  • Include further Django settings in the project_temlate.settings module - stephenmcd
  • Set settings.MEZZANINE_ADMIN_MENU_ORDER to include the shop - stephenmcd
  • Add content field to Category model - stephenmcd
  • Add fixtures and images for dummy data - stephenmcd