gitextract_e8nnqks8/ ├── .gitignore ├── README.md ├── ecommerce.code-workspace ├── ecommerce.sublime-project ├── ecommerce.sublime-workspace ├── fasttracktojquery/ │ └── index.html ├── notes/ │ └── checkout_process.md ├── parse_git_log.py ├── pyvenv.cfg ├── src/ │ ├── .gitignore │ ├── Procfile │ ├── accounts/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── forms.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_user_full_name.py │ │ │ ├── 0003_user_is_active.py │ │ │ ├── 0004_remove_user_active.py │ │ │ ├── 0005_emailactivation.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── passwords/ │ │ │ ├── __init__.py │ │ │ └── urls.py │ │ ├── signals.py │ │ ├── templates/ │ │ │ └── accounts/ │ │ │ ├── detail-update-view.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ ├── register.html │ │ │ └── snippets/ │ │ │ └── form.html │ │ ├── tests.py │ │ ├── urls.py │ │ └── views.py │ ├── addresses/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── forms.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_auto_20171107_0055.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── templates/ │ │ │ └── addresses/ │ │ │ ├── form.html │ │ │ ├── list.html │ │ │ ├── prev_addresses.html │ │ │ └── update.html │ │ ├── tests.py │ │ └── views.py │ ├── analytics/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_usersession.py │ │ │ └── __init__.py │ │ ├── mixins.py │ │ ├── models.py │ │ ├── signals.py │ │ ├── templates/ │ │ │ └── analytics/ │ │ │ └── sales.html │ │ ├── tests.py │ │ ├── utils.py │ │ └── views.py │ ├── billing/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_auto_20170928_2052.py │ │ │ ├── 0003_billingprofile_customer_id.py │ │ │ ├── 0004_card.py │ │ │ ├── 0005_card_default.py │ │ │ ├── 0006_charge.py │ │ │ ├── 0007_auto_20171012_1935.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── templates/ │ │ │ └── billing/ │ │ │ └── payment-method.html │ │ ├── tests.py │ │ └── views.py │ ├── carts/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_cart_subtotal.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── templates/ │ │ │ └── carts/ │ │ │ ├── checkout-done.html │ │ │ ├── checkout.html │ │ │ ├── home.html │ │ │ └── snippets/ │ │ │ └── remove-product.html │ │ ├── tests.py │ │ ├── urls.py │ │ └── views.py │ ├── db.sqlite3 │ ├── db2.sqlite3 │ ├── ecommerce/ │ │ ├── __init__.py │ │ ├── aws/ │ │ │ ├── __init__.py │ │ │ ├── conf.py │ │ │ ├── download/ │ │ │ │ ├── __init__.py │ │ │ │ └── utils.py │ │ │ └── utils.py │ │ ├── forms.py │ │ ├── mixins.py │ │ ├── settings/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── local.py │ │ │ └── production.py │ │ ├── urls.py │ │ ├── utils.py │ │ ├── views.py │ │ └── wsgi.py │ ├── manage.py │ ├── marketing/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── forms.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_marketingpreference_mailchimp_subscribed.py │ │ │ ├── 0003_auto_20171018_0142.py │ │ │ └── __init__.py │ │ ├── mixins.py │ │ ├── models.py │ │ ├── tests.py │ │ ├── utils.py │ │ └── views.py │ ├── orders/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_auto_20170928_2224.py │ │ │ ├── 0003_auto_20170929_0013.py │ │ │ ├── 0004_auto_20171025_2216.py │ │ │ ├── 0005_auto_20171107_0035.py │ │ │ ├── 0006_productpurchase_productpurchasemanager.py │ │ │ ├── 0007_auto_20171108_0028.py │ │ │ ├── 0008_delete_productpurchasemanager.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── templates/ │ │ │ └── orders/ │ │ │ ├── library.html │ │ │ ├── order_detail.html │ │ │ └── order_list.html │ │ ├── tests.py │ │ ├── urls.py │ │ └── views.py │ ├── products/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── fixtures/ │ │ │ └── products.json │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_product_price.py │ │ │ ├── 0003_product_image.py │ │ │ ├── 0004_auto_20170901_2159.py │ │ │ ├── 0005_product_featured.py │ │ │ ├── 0006_auto_20170901_2254.py │ │ │ ├── 0007_auto_20170901_2254.py │ │ │ ├── 0008_auto_20170901_2300.py │ │ │ ├── 0009_product_timestamp.py │ │ │ ├── 0010_product_is_digital.py │ │ │ ├── 0011_productfile.py │ │ │ ├── 0012_auto_20171108_2325.py │ │ │ ├── 0013_auto_20171109_0023.py │ │ │ ├── 0014_auto_20171116_0011.py │ │ │ ├── 0015_productfile_name.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── templates/ │ │ │ └── products/ │ │ │ ├── detail.html │ │ │ ├── featured-detail.html │ │ │ ├── list.html │ │ │ ├── snippets/ │ │ │ │ ├── card.html │ │ │ │ └── update-cart.html │ │ │ └── user-history.html │ │ ├── tests.py │ │ ├── understanding_crud.md │ │ ├── urls.py │ │ └── views.py │ ├── requirements.txt │ ├── runtime.txt │ ├── search/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations/ │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── templates/ │ │ │ └── search/ │ │ │ ├── snippets/ │ │ │ │ └── search-form.html │ │ │ └── view.html │ │ ├── tests.py │ │ ├── urls.py │ │ └── views.py │ ├── static_my_proj/ │ │ ├── css/ │ │ │ ├── main.css │ │ │ └── stripe-custom-style.css │ │ └── js/ │ │ ├── csrf.ajax.js │ │ ├── ecommerce.js │ │ ├── ecommerce.main.js │ │ └── ecommerce.sales.js │ ├── tags/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── shell_commands.py │ │ ├── tests.py │ │ └── views.py │ └── templates/ │ ├── 400.html │ ├── 403.html │ ├── 404.html │ ├── 500.html │ ├── base/ │ │ ├── css.html │ │ ├── forms.html │ │ ├── js.html │ │ ├── js_templates.html │ │ └── navbar.html │ ├── base.html │ ├── bootstrap/ │ │ └── example.html │ ├── contact/ │ │ └── view.html │ ├── home_page.html │ └── registration/ │ ├── activation-error.html │ ├── emails/ │ │ ├── verify.html │ │ └── verify.txt │ ├── password_change_done.html │ ├── password_change_form.html │ ├── password_reset_complete.html │ ├── password_reset_confirm.html │ ├── password_reset_done.html │ ├── password_reset_email.html │ ├── password_reset_email.txt │ └── password_reset_form.html └── static_cdn/ ├── media_root/ │ └── products/ │ └── 2473283945/ │ └── 2473283945.sublime-project ├── protected_media/ │ └── product/ │ └── my-awesome-album/ │ ├── basic_audio.m4a │ ├── basic_audio_5W1qjNh.m4a │ ├── basic_audio_5W1qjNh_Ntvw9l5.m4a │ ├── basic_audio_DwLL00o.m4a │ ├── basic_audio_uuyWQIO.m4a │ └── basic_audio_uuyWQIO_soaLtH9.m4a └── static_root/ ├── admin/ │ ├── css/ │ │ ├── base.css │ │ ├── changelists.css │ │ ├── dashboard.css │ │ ├── fonts.css │ │ ├── forms.css │ │ ├── login.css │ │ ├── rtl.css │ │ └── widgets.css │ ├── fonts/ │ │ ├── LICENSE.txt │ │ └── README.txt │ ├── img/ │ │ ├── LICENSE │ │ └── README.txt │ └── js/ │ ├── SelectBox.js │ ├── SelectFilter2.js │ ├── actions.js │ ├── admin/ │ │ ├── DateTimeShortcuts.js │ │ └── RelatedObjectLookups.js │ ├── calendar.js │ ├── cancel.js │ ├── change_form.js │ ├── collapse.js │ ├── core.js │ ├── inlines.js │ ├── jquery.init.js │ ├── popup_response.js │ ├── prepopulate.js │ ├── prepopulate_init.js │ ├── timeparse.js │ ├── urlify.js │ └── vendor/ │ ├── jquery/ │ │ ├── LICENSE-JQUERY.txt │ │ └── jquery.js │ └── xregexp/ │ ├── LICENSE-XREGEXP.txt │ └── xregexp.js ├── css/ │ ├── main.css │ └── stripe-custom-style.css └── js/ ├── csrf.ajax.js ├── ecommerce.js └── ecommerce.main.js