forked from stephenmcd/cartridge
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
857 lines (759 loc) · 60.2 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
Version 0.13.0 (Jun 15, 2018)
-----------------------------
* Support setting ``SHOP_PRODUCT_SORT_OPTIONS`` = (). - If empty, sort category pages by the current default ``'-date_added'`` by. default. - If empty, don't display the product sorting form - ryneeverett
* Use dict for context. Fix invoices in ``django-1.10``. The invoice view raises a TypeError in ``django-1.10``. The following lines. in the release notes explain the change: > - Django template objects returned by ``get_template()`` and. > ``select_template()`` no longer accept a Context in their render() method. > - Template response APIs enforce the use of dict and backend-dependent. > template objects instead of Context and Template respectively - ryneeverett
* Purge ``SHOP_USE_PRODUCT_TYPES`` settings. As @AlexHill pointed out, it's risky, complex, and not useful - ryneeverett
* Use new ``ContentTyped.set_content_model`` method - ryneeverett
* Update ``project_template`` media library setting. See. ``https://github.com/ryneeverett/mezzanine/commit/7370cb2854fdbc2f45d7533a02218bf49cff619f`` - ryneeverett
* Remove deprecated ``SHOP_CHECKOUT_FORM_CLASS`` docs - ryneeverett
* Update travis to test against ``django-1.10``. (#310). See discussion at ``https://github.com/stephenmcd/cartridge/pull/306`` - ryneeverett
* Fix "Resend Order Email" button on complete view. It currently 404's because the user isn't logged in. Surely I'm missing. something here. Both the `login_required` decorator and the button on. the completion page were present in the initial commit of this view - ryneeverett
* Remove usages of deprecated ``settings.use_editable``. I removed the instance in `default_tax_handler` because it doesn't seem. to serve any purpose. In every other instance I switched to `settings.clear_cache`. I don't. know if this is actually necessary in every case but caution suggests. not changing things one doesn't understand - ryneeverett
* Fix another comma splice - ryneeverett
* Delete cart on last cart item removed - David Sanders
* #317 : use ``static_lazy`` instead of static (#318) - Julien Lirochon
* update ``product_db.py`` to django 1.10. in Django 1.10, ``BaseCommand.option_list`` was removed in favor of. overriding the ``add_arguments`` method - rjewing
* import ``print_function`` from future in ``product_db`` - rjewing
* Also document ``PAYPAL_PASSWORD`` required setting - jpic
* Set ``on_delete`` in migrations - [email protected]
* Update to latest settings - [email protected]
* Don't cache order complete views - [email protected]
Version 0.12.0 (Aug 17, 2016)
-----------------------------
* Document built-in payment handlers - ryneeverett
* Remove nesting of context objects. The same as ``https://github.com/stephenmcd/mezzanine/pull/1520``. Tested with custom project - Henri Hulski
* Wrap invoice PDF call with ``HAS_PDF`` in case pisa None - Sam Kingston
* Replace render() with TemplateResponse(). Replaces `mezzanine.utils.views.render` with `django.template.response.TemplateResponse` as it is deprecated in Mezzanine - Henri Hulski
* Fix for broken carts on expiration - David Sanders
* Compatibility with modern django. - The new ``_meta`` API doesn't include subclass fields in the "fields". attribute, but it provides a `get_fields` method which makes this much. simpler. - Upgraded ``get_content_models`` to mezzanine `Page`'s much simpler. version. Note that unlike `Page`, uncustomized `Product`'s are still. valid. - Switch from adminmedia to staticfiles. - The first template found in the list gets rendered, so we need to. prepend the optional custom product template - ryneeverett
* ``ModelAdmin.in_menu`` -> ``has_module_permission``. This makes the branch compatible with Mezzanine master, now that. ``[mezzanine#1596](https://github.com/stephenmcd/mezzanine/pull/1596)`` is merged - ryneeverett
* Remove unneeded ``jquery_ui`` from ``change_list.html`` - ryneeverett
* Use Mezzanine's custom content types mixins - ryneeverett
* Type dropdown js is now in ``content_typed.html`` - ryneeverett
* Fix payment handler docs code blocks - ryneeverett
* ``Content_typed`` namespace was removed from mezzanine - ryneeverett
* Define min value for cart item quantity field. Closes #299 - Stephen McDonald
* Don't override keywords string in product admin. Closes #301 - Stephen McDonald
* ``django.template.context_processors`` is removed in Django 1.10 - Stephen McDonald
* Prevent Django 1.10 from adding HTML5 required attribute to order form, which causes it to fail - Stephen McDonald
Version 0.11.0 (Jan 17, 2016)
-----------------------------
* Update excluded files in package build - Stephen McDonald
* Allow propagation of additional constructor arguments. for ``cartridge.shop.forms.OrderForm`` descendants - David Unric
* Limit shop category page processor to exact page - David Sanders
* Add database indexing to ``order.key`` - David Sanders
* Update contributing section to reflect ``project_template`` layout - David Sanders
* Change SKU uniqueness constraint to be per site - Stephen McDonald
* Resolve css/js Media paths using static templatetag - David Sanders
* Change the initial migration so that ``Order.status`` references ``settings.SHOP_ORDER_STATUS_CHOICES``, rather than the literal values - Chris Trengove
* Changed reference in ``initial_form_data`` to ``form_class`` - ChrisKuper
* Fix other instances of checkout not using custom form class - Stephen McDonald
* Add support for Python 3.5 in trove classifiers and travis build - Sam Kingston
* Update checkout JS for Universal Analytics - Alex Hill
* Update to latest ``settings.py`` code from Mezzanine - Stephen McDonald
* Update from deprecated features of urlpatterns - Stephen McDonald
* Update Django/Python versions in travis config - Stephen McDonald
* Added missing context update for cart view ``extra_context`` - Kelvin Wong
* Run shipping/tax handlers on every checkout step, since hidden address fields could be modified on any step - Stephen McDonald
Version 0.10.0 (Jul 26, 2015)
-----------------------------
* Replace removed mimetype argument to HttpResponse. The ``mimetype`` argument to HttpResponse has been removed in Django 1.7 after the standard deprecation cycle. Its ``content_type`` has been available as an alias from 1.4, so changing it should be fine - Alex Hill
* Upgrade to latest Mezzanine bits in ``project_template's`` ``settings.py`` - Stephen McDonald
* Clean up styling of front-end order history - Stephen McDonald
* Use POST request for order email from order history page. Closes #209 - Stephen McDonald
* Added support for handling both South and Django 1.7 migrations - Stephen McDonald
* Ensure ProductImage deletion does not delete variations - averagehuman
* Updated ``setup.py`` from Mezzanine - Stephen McDonald
* Remove depth arg from ``select_related`` calls, which is no longer used in Django 1.7. Closes #211 - Stephen McDonald
* Handle installing initial data with Django 1.7's syncdb signals - Stephen McDonald
* Define ``ProductAdminForm.exclude`` for Django 1.8 - Stephen McDonald
* Hide PDF invoice buttons in admin when xhtml2pdf not installed. Closes #214 - Stephen McDonald
* Fix currency symbol on Windows with alternate encodings. Closes #215 - Stephen McDonald
* Remove EmptyCart, use unsaved Cart instead - Alex Hill
* Call ``cart.save()`` in ``add_item()`` if necessary - Alex Hill
* Bind cart to session in ``recalculate_cart`` - Alex Hill
* Revert changes to cart view - Alex Hill
* Added string format method. #218 - Kulbir
* Latest Django patch releases in travis config - Stephen McDonald
* Remove import of Cart in CartManager - Alex Hill
* French po fix for strings :1 item:Wishlist contains 1 item , mo rebuilt - Steve Murphy
* Attempt to fix build, closes #222 - Fernando Macedo
* Remove initial data setup - this needs to incorrectly go in Mezzanine since Django's new migrations signals don't provide a ``created_models`` arg - Stephen McDonald
* Added migrations for changed ``_order`` and image fields - Stephen McDonald
* Allow order email resend view to correctly redirect, even when requested via GET. Closes #225 - Stephen McDonald
* Remove Django versions from travis config that Mezzanine no longer supports - Stephen McDonald
* Account for ``cartridge.shop`` being after ``mezzanine.pages`` in the template rendering pipeline - Mathias
* Change models ``__unicode__`` into ``__str__`` - Mathias
* Migrations for Django 1.8 - Alex Hill
* Explicitly set email field ``max_length=254`` - Alex Hill
* Update Django/Python versions to test against, in line wiht Mezzanine for next release - Stephen McDonald
* Remove all support for South in favour of Django >= 1.7 migrations - Stephen McDonald
* Remove any handling for Django < 1.7 - Stephen McDonald
* Suggest using Mezzanine master during development - Alex Hill
* Updated email address for security issues - Stephen McDonald
* Add ``CHECKOUT_STEP_PAYMENT`` to checkout view context - David Sanders
* Add object-tools-items block to order admin template - David Sanders
* Better use of object-tools-items block in Order admin template - David Sanders
* Fix add/edit checks in order admin for pdf/email links - Stephen McDonald
* Catch up from ``mezzanine.project_template.urls`` - Mathias
* Consistent image manipulations in the admin - Mathias
* Added ``block.super`` call to ``extra_head`` block. It's the only ``extra_*`` block without a ``block.super`` call - David Sanders
* Add ``extra_context`` kwarg to all views - David Sanders
* Drop ``locale.currency`` workaround for Python 2.4 - David Sanders
* Added migration for new ``publish_date`` db index from Mezzanine's Displayable - Stephen McDonald
* Refactor ``CartManager.from_request`` to use update - David Sanders
* Avoid extra DB dip in cart template - David Sanders
* Add a test to fail when Cart changes - Alex Hill
* Improve comments in ``CartManager.from_request()`` - Alex Hill
* Change ``set_locale`` to only catch ``locale.Error`` - David Sanders
* Make ``SHOP_CURRENCY_LOCALE`` non-editable, since it's required at import time - Stephen McDonald
* Fix ``authorize.net`` for python3 - Sergey Maranchuk
* use OrderedDict in ``admin.py``, ``managers.py`` - slav0nic
* fix #258: ``shipping_fields.js`` is broken starting from jquery 1.9 - Sergey Maranchuk
* Upgrade project template to Mezzanine 4.0 - Stephen McDonald
* Restore 'shop' section in ``ADMIN_MENU_ORDER`` example in ``settings.py`` - Stephen McDonald
* Bump required Mezzanine version, and Python version classifiers - Stephen McDonald
Version 0.9.5 (Aug 11, 2014)
----------------------------
* Add tax type label to the order receipt. Closes #194 - Stephen McDonald
* Nicer alignment of labels for order totals in cart display - Stephen McDonald
* Add a comment for the str() call. Comment explains that the str() call fixes issue #195 - Emlyn Clay
* Bring Cartridge in line with Mezzanine's profile changes - Alex Hill
* Handle ``verbose_name`` as a keyword arg on SKUField. Closes #198 #200 - Stephen McDonald
* Fix checkout pre-population from profile model - Stephen McDonald
* Add support for testing via setuptools using Mezzanine's bits - Stephen McDonald
* Update travis config to test via setuptools - Stephen McDonald
* Updated development setup instructions for contributing - Stephen McDonald
* Better explansion example in dev setup docs - Stephen McDonald
Version 0.9.4 (Jun 09, 2014)
----------------------------
* fixed paypal backend url quoting bug - slav0nic
* ``SHOP_PAYMENT_STEP_ENABLED`` shouldn't be editable - Stephen McDonald
* Modify ``SHOP_CURRENCY_LOCALE`` to allow a per-language formating - Mathias Ettinger
* Reflect mezzanine's modifications for country codes list - Mathias Ettinger
* Update Order to inherit from SiteRelated. Add the setting ``SHOP_ORDERS_PER_SITE`` (default False) which if True updates the order Manager to inherit from the CurrentSiteManager - Josh Cartmell
* Orders are always site related - Stephen McDonald
* complete commit 30b641d17007d67f1922ab9035740d40488f43b7 with corrections for other languages - Luc MILLAND
Version 0.9.3 (Apr 17, 2014)
----------------------------
* Revert "Create a setting for which template is used when rendering an invoice as a ``PDF."``. This reverts commit 5ef6db6f71e55d06fb19d3dcc7a3cc5dad4a9190 - David SanderS
* Add a new template for rendering invoices as PDFs. Simply extends the normal order invoice template by default - David SanderS
* Change views which use forms to accept a ``form_name`` argument, which is a dotted path to the form class - David SanderS
* Rename pdf invoice template for consistency and allow it to be overridden as view arg - Stephen McDonald
* Make view args for forms actual class objects, and deprecate the ``SHOP_CHECKOUT_FORM_CLASS`` setting since we'll use a consistent approach for it too - Stephen McDonald
* Add url and view to resend an order complete email, accessible from admin, past orders and order complete pages - Sam Kingston
* Properly look up order in resend view - Sam Kingston
* Fix line length errors for travis - Sam Kingston
* Don't rely on ``HTTP_REFERER``, instead using a ?next query argument - Sam Kingston
* Handle the edge case where the next argument is not given by redirecting to either admin (if staff) or order history (user) - Sam Kingston
* Fix field alignment in order admin - Stephen McDonald
* Move permission checks for retreiving an order into ``OrderManager.get_for_user`` and make the order email re-send require a form post - Stephen McDonald
* Handle the ``APPEND_SLASH`` setting. This is done in mezzanine entirely - Sebastian Clemens
* Restore urlpattern for order email resend - Stephen McDonald
* Handle cart changes invalidating existing discount codes. Closes #168 - Stephen McDonald
* Add settings to toggle related and upsell products - Sam Kingston
* Potentially save some db queries when related/upsell products are disabled - Stephen McDonald
* Fix unicode image names on cart items. Closes #173 - Stephen McDonald
* fix migrations,. assuming cartridge is before mezzanine in ``INSTALLED_APPS`` - Mario Rosa
* Remove duplicate template values - Mario Rosa
* Convert ``shipping_total`` and ``tax_total`` to strings. As of Django 1.6 Decimal's cannot be stored in sessions. Convert ``shipping_total`` and ``tax_total`` to strings before storing in the session - joshcartme
* Adding reportlab 2.7 as a dependency, with a comment that this is due to a bug in pisa, and also that this may not work on Python 3.x - Danny Sag
* Update pdf invoices to use xhtml2pdf. Closes #180 - Stephen McDonald
* Travis fix for installing pypdf - Stephen McDonald
* Added variation sku as search fields to products - Stephen McDonald
* Potential fix for encoding currencies on Windows with python 3 - Stephen McDonald
* Clean up some imports - Stephen McDonald
* Bump Mezzanine version to 3.1 - Stephen McDonald
Version 0.9.2 (Jan 17, 2014)
----------------------------
* merge changed Mezzanine settings into Cartridge - Sebastian Clemens
* Patch all migrations to remove generic fields - these break with Django 1.6 and aren't actually necessary with the latest version of south - Stephen McDonald
* Fix initial fixture loading - Stephen McDonald
* Restore old ``product_db`` command - Stephen McDonald
* Move the file browser url to i18n patterns - Sebastian Clemens
* Fix for str/unicode handling of ``SHOP_CURRENCY_LOCALE``. Closes #157 - Stephen McDonald
* Bump Mezzanine version to 3.0.5 - Stephen McDonald
* Unicode fix for product variations in cart - Stephen McDonald
* jquery fix in product admin. Closes #159 - Stephen McDonald
* Remove unnecessary filebrowser setup - Stephen McDonald
* Let ``fail_silently`` email arg fall back to new Mezzanine setting ``EMAIL_FAIL_SILENTLY``. Closes #160 - Stephen McDonald
* Create a setting for which template is used when rendering an invoice as a PDF - David SanderS
* Bump Mezzanine version to 3.0.6 - Stephen McDonald
Version 0.9.1 (Dec 24, 2013)
----------------------------
* No changes listed.
Version 0.9.0 (Dec 24, 2013)
----------------------------
* Fix for true division on F objects in Django 1.4 - Stephen McDonald
* Django 1.6: BooleanField defaults - Stephen McDonald
* Django 1.6 doesn't support decimals in sessions - Stephen McDonald
* Replace deprecated ``richtext_filter`` template tag with ``richtext_filters`` (plural) - Stephen McDonald
* Add Django 1.6 + Python 3.3 to ``travis.yml`` and ``setup.py`` - Stephen McDonald
* Fix some broken imports from futurize conversion - Stephen McDonald
* Upgrade settings as in Mezzanine (merged) - Sebastian Clemens
* Fix initial fixtures. Closes #152 - Stephen McDonald
* Added LANGUAGES since we use a multi-lingual interface in admin - Sebastian Clemens
* Added Django's LocaleMiddleware to ``MIDDLEWARE_CLASSES`` - Sebastian Clemens
* Add config for wheel distribution - Stephen McDonald
* Remove use of deprecated simplejson module - Stephen McDonald
* Bump Mezzanine version to 3.0 - Stephen McDonald
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
* Combine ``recalculate_discount`` and ``recalculate_billship_tax`` into a single function ``recalculate_cart`` - Stephen McDonald
* Bump minimum Mezzanine version to 1.4.15 - Stephen McDonald
Version 0.8.3 (Aug 26, 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
* 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 30, 2013)
----------------------------
* Use ``set_default_images`` in ``product_db`` command - Stephen McDonald
* Added another block to ``checkout.html``, encapsulating the back/next buttons - Evan Leis
* 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
* 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
* Added abstract base class for Product. Defining the manager on an abstract base class means subclasses will. inherit it instead of having to explicitly define their own - Alex Hill
* 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
* 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
* First steps toward extensible Product model - Alex Hill
* Look for a custom template for subclassed Products - Alex Hill
* 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
* ProductAdmin automatically adds custom Product fields. Thanks to Josh Cartmell - Alex Hill
* Add method and templatetag to get custom Product classes - Alex Hill
* Replace "Add Product" button with a select box of Product subclasses - 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
* Rename stripe package and clean up some of the exception handling - 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
* #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
* 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
* 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
* 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 discount code form alignment on the cart page - 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 04, 2012)
----------------------------
* add some verbose names - Dmitry Falk
* Bump Mezzanine version to 1.1.2 - Stephen McDonald
Version 0.5.1 (Jun 04, 2012)
----------------------------
* Bump Mezzanine version to 1.1.1 - Stephen McDonald
Version 0.5.0 (Jun 03, 2012)
----------------------------
* 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
* 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 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
* Don't require debug for test data - Stephen McDonald
* Don't run signals on tests - Stephen McDonald
* Clean up clears on brs - 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
* 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 21, 2012)
----------------------------
* Bump Mezzanine to 1.0.6 - Stephen McDonald
Version 0.4.6 (Mar 19, 2012)
----------------------------
* Bump Mezzanine to 1.0.5 - Stephen McDonald
Version 0.4.5 (Mar 19, 2012)
----------------------------
* No changes listed.
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
Version 0.4.3 (Mar 11, 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 05, 2012)
----------------------------
* Version bump to 0.4.2 - Stephen McDonald
Version 0.4.1 (Mar 05, 2012)
----------------------------
* No changes listed.
Version 0.4.0 (Mar 03, 2012)
----------------------------
* Make the subject line of the order receipt email editable - 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
* 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
* Removed all uses of ifequal and ifnotequal templatetags - Stephen McDonald
* Added model graph to docs - 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
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 08, 2011)
----------------------------
* Fix for subquery update in MySQL. See ``https://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
* 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
* 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
* 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
* Upgraded CSS files to latest Mezzanine versions - stephenmcd
* Added Mezzanine's ratings to products - 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 03, 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
* 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 21, 2010)
----------------------------
* Fix with statement for Python 2.5 - stephenmcd
* Remove redundant JS in admin product change view - 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
* Defined template accessible settings - stephenmcd
* Upgraded ``local_settings`` module template to use multi DB format - stephenmcd
* Removed a ton of unused imports - stephenmcd
* Renamed fixtures from ``initial_data`` to avoid loading on each call to syncdb - 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)
----------------------------
* 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 23, 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
Version 0.1.1 (Sep 19, 2010)
----------------------------
* Add ``csrf_token`` to forms - stephenmcd
* Fix Django 1.2 incompatibilities with the admin product form - stephenmcd
* Add images for fixtures - stephenmcd
* Use correct db name to exclude in ``setup.py`` - stephenmcd
Version 0.1 (Sep 19, 2010)
--------------------------
* cleaned up thumbnail filename convention - stephenmcd
* added "view on site" in admin listing for product and category - stephenmcd
* front-end handling of skus - 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
* added initial unit tests - 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
* 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
* optimized category loading algorithm in menu templatetag and created tree interface for category listing in admin - stephenmcd
* remove redundant options from category admin - 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
* 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
* 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
* 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
* 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