Large diffs are not rendered by default.

Binary file not shown.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="/_OFFLINE/email.png" />
</info>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="/_OFFLINE/email_over.png" />
</info>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="/_OFFLINE/github.png" />
</info>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="/_OFFLINE/github_over.png" />
</info>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="/_OFFLINE/google-plus.png" />
</info>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="/_OFFLINE/google-plus_over.png" />
</info>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="/_OFFLINE/mailing-list.png" />
</info>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="/_OFFLINE/mailing-list_over.png" />
</info>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="file:///C|/Users/cbradbury/Desktop/face.png" />
</info>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="file:///C|/Users/cbradbury/Desktop/Oscar logo.png" />
</info>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="/_OFFLINE/mailing-list_over.png" />
</info>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="/assets/images/priority_complete.png" />
</info>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="/assets/images/priority_planned.png" />
</info>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<info>
<infoitem key="fw_source" value="/assets/images/priority_progress.png" />
</info>
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN +1.32 KB assets/images/face.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN +17.5 KB assets/images/logo.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

Large diffs are not rendered by default.

@@ -0,0 +1,232 @@
/**
* jQuery ticker plugin
*
* By Andrew Betts <andrew.betts@assanka.net>
*
* Copyright (c) 2010 Assanka Limited
*
* -----------
*
* Licenced under the terms of the MIT licence, reproduced below:
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* -----------
*
* A ticker tape animation plugin, designed to emulate continuous tickers of the
* type typically seen on 24 hour news channels. Requires native CSS3
* transitions which are currently only available in webkit based browsers.
*
* Features:
*
* + When the ticker reaches the end of the text, the text
* at the beginning of the ticker follows on immediately,
* creating a continuous loop
*
* + Changes to the contents of the ticker are reflected
* seamlessly - content is never added or removed in the
* visible portion of the ticker
*
* @author Andrew Betts <andrew.betts@assanka.net>
* @copyright Assanka Limited
* @licence http://www.opensource.org/licenses/mit-license.php
*/
(function ($){

$.fn.ticker = function(options) {
settings = jQuery.extend({
pxpersec: 30
}, options);
if (this.length != 1) throw "Ticker can only be attached to a single element";
if (this.children('ul').length != 1) throw "Ticker container must contain a UL, eg <div id='ticker'><ul></ul></div>";
return new $.ticker(this, settings);
}

$.ticker = function(el, settings) {

var addqueue = [];
var removequeue = [];
var numsegs;
var updatecount = 0;
var thisticker = this;
var msgwidth = 0;
var isscrolling = 0;

var elcont = el;
var eltape = el.children().first();
eltape.css({"margin":0, "padding":0, "listStyleType":'none', "whiteSpace":'nowrap', 'float':'left', "position":'absolute', "right":0, "msTransition":'right 0s linear 0', "oTransition":'right 0s linear 0', "webkitTransition":'right 0s linear 0', "MozTransition":'right 0s linear 0', "transition":'right 0s linear 0'});
elcont.css({overflow:'hidden'});
if (!elcont.css('float') || elcont.css('float') == 'none') elcont.css('display', 'block');

if (eltape.children('li').length) initTape();


/* Private methods */

function initTape() {

numsegs = 1;

// Mark each message in the list
if (!eltape.children('li').length) throw "Cannot initialise ticker: Nothing in it";
eltape.children('li').each(function() {
if (!$(this).attr('id')) $(this).attr('id', 'msg'+Math.ceil(Math.random()*99999999));
$(this).addClass('seg1').attr('seg', 1);
});

// Apply transiton CSS to the tape
isscrolling = 1;
updatecount = 1;
eltape.bind('msTransitionEnd', slide);
eltape.bind('webkitTransitionEnd', slide);
eltape.bind('oTransitionEnd', slide);
eltape.bind('MozTransitionEnd', slide);
eltape.bind('transitionEnd', slide);
slide();
}

function slide(e) {

// Copy each segment over the one preceding it
if (updatecount) {
if (numsegs > 1) {
for (var i=(numsegs-1); i>=1; i--) {
eltape.find('.seg'+(i+1)).remove();
eltape.find('.seg'+i).clone().removeClass('seg'+i).removeAttr('id').addClass('seg'+(i+1)).attr('seg', (i+1)).insertBefore(eltape.find('.seg'+i).first());
}
}

// If the ticker is now empty, delete all shadow segments and stop
if (eltape.find('.empty').length) {
eltape.unbind().css({webkitTransitionDuration:'0s'}).children().remove();
isscrolling = 0;
return;
}

// Add or remove segments as necessary
var widths = calcWidths();
if (widths.total < (elcont.width()+widths.seg1)) {
var content = eltape.children('.seg'+numsegs);
var content = content.clone().removeAttr('id').removeClass('seg'+numsegs);
if (!widths['seg'+numsegs]) throw "Ticker is zero-width"
var numrequired = Math.ceil((elcont.width()+widths.seg1-widths.total)/widths['seg'+numsegs]);
for (var i=1; i<=numrequired; i++) {
numsegs++;
eltape.prepend(content.clone().addClass('seg'+numsegs).attr('seg',numsegs));
widths['seg'+numsegs] = widths['seg'+(numsegs-1)];
widths.total += widths['seg'+numsegs];
}
}
if (widths.total > (elcont.width()+(widths.seg1*2))) {
eltape.find('.seg'+numsegs).remove();
numsegs--;
widths.total -= widths['seg'+(numsegs+1)];
delete widths['seg'+(numsegs+1)];
}

msgwidth = widths.seg1;
eltape.width(widths.total);
updatecount--;
}

// Modify the last segment to add/remove queued elements
if (removequeue.length || addqueue.length) {
if (removequeue.length) {
for (var i=removequeue.length-1; i>=0; i--) $(removequeue[i]).remove();
removequeue = [];

// If master segment is now zero-width, add a .empty message that is the width of the parent container
if (!eltape.find('.seg1').length) $('<li class="seg1 empty"></li>').width(elcont.width()).appendTo(eltape);
}
if (addqueue.length) {
for (var i=addqueue.length-1; i>=0; i--) {
$(addqueue[i]).addClass('seg1').attr('seg', 1).appendTo(eltape);
}
addqueue = [];

// Remove any .empty messages
eltape.find('.seg1').filter('.empty').remove();
}

// Recalculate widths
var widths = calcWidths();
msgwidth = widths.seg1;
eltape.width(widths.total);

// Start cascade
updatecount = numsegs;
}

// Reposition the tape to move the last segment just off the right side of the screen
eltape.css({"msTransitionDuration":'0s', "webkitTransitionDuration":'0s', "MozTransitionDuration":'0s', "oTransitionDuration":'0s', "transitionDuration":'0s'});
eltape.css({"right":'-'+msgwidth+'px'});

// Calculate duration of animation to achieve desired speed, resume scrolling
dur = Math.floor(msgwidth/settings.pxpersec);
setTimeout(function() {
eltape.css({"msTransitionDuration":dur+'s', "webkitTransitionDuration":dur+'s', "MozTransitionDuration":dur+'s', "oTransitionDuration":dur+'s', "transitionDuration":'0s'});
eltape.css({right:0+'px'});
}, 0);
}


/* Private methods */

function calcWidths() {
var widths = {total:0}
eltape.children().each(function() {
if (typeof widths['seg'+$(this).attr('seg')] == 'undefined') widths['seg'+$(this).attr('seg')] = 0;
widths['seg'+$(this).attr('seg')] += $(this).outerWidth();
widths.total += $(this).outerWidth();
});
return widths;
}


/* Public methods */

// Add a new item to the ticker. Pass a reference to an LI that is to be added to the ticker
this.addMsg = function(el) {
if (typeof el == 'string') el = $('<li>'+el+'</li>');
if (!el.attr('id')) el.attr('id', 'msg'+Math.ceil(Math.random()*99999999));
if (isscrolling) {
addqueue.push(el);
} else {
eltape.append(el);
}
return el.attr('id');
}

// Remove an item from the ticker. Pass a reference to an LI in segment 1.
this.removeMsg = function(el) {
if (typeof el == 'string') el = $('#'+el);
removequeue.push(el);
}

// Start if not already running
this.start = function() {
if (!isscrolling) initTape();
}

// Report current status of ticker
this.isScrolling = function() {
return (isscrolling == true);
}
}
})(jQuery);
@@ -0,0 +1,20 @@
---
layout: default
title: Blog / Oscar - Domain-driven e-commerce for Django
container_class: blog
---
<h1 class="main"><span><em>Latest news, views and tips from Team Oscar</em></span></h1>

{% for post in site.posts %}
{% capture post_url %}{{ post.url }}{% endcapture %}
<div class="news-item-head bg-5 clearfix">
<hgroup>
<h1>{{ post.date | date_to_string }}</h1>
<h2>/ {{ post.title }}</h2>
<h3>{{ post.author }}</h3>
</hgroup>
</div>
<div class="news-item-body bg-5 clearfix">
{{ post.content }}
</div>
{% endfor %}
@@ -0,0 +1,38 @@
---
layout: default
title: Blog / Oscar - Domain-driven e-commerce for Django
container_class: contact
---
<h1 class="main"><span>Starting a new project and need help?</span><span><em>Here's how to get in touch:</em></span></span></h1>
<div class="row bg-5 twitter clearfix">
<h1>Follow us on Twitter</h1>
<div class="panel">
<h2>Project lead</h2>
<a href="http://twitter.com/@codeinthehole" title="Twitter: @codeinthehole">@codeinthehole</a>
<a href="https://twitter.com/codeinthehole" class="twitter-follow-button" data-show-count="false" data-show-screen-name="false" title="Follow @codeinthehole">Follow @codeinthehole</a>
</div>
<div class="panel">
<h2>Project news and tidbits</h2>
<a href="http://twitter.com/@django_oscar" title="Twitter: @django_oscar">@django_oscar</a>
<a href="https://twitter.com/django_oscar" class="twitter-follow-button" data-show-count="false" data-show-screen-name="false" title="Follow @oscar_django">Follow @django_oscar</a>
</div>
<div class="panel">
<h2>Behind the scenes, tips<br>&amp; trends in e-commerce</h2>
<a href="http://twitter.com/@oscarcommerce" title="Twitter: @oscarcommerce">@oscarcommerce</a>
<a href="http://twitter.com/oscarcommerce" class="twitter-follow-button" data-show-count="false" data-show-screen-name="false" title="Follow @oscarcommerce">Follow @oscarcommerce</a>
</div>
</div>
<div class="row contact-options clearfix">
<div class="option">
<span>Join the mailing list</span>
<a href="https://groups.google.com/forum/?fromgroups#!forum/django-oscar" title="Join the mailing list">View</a>
</div>
<div class="option">
<span>Follow us on Github</span>
<a href="https://github.com/tangentlabs/django-oscar" title="Follow us on Github">Github</a>
</div>
<div class="option">
<span>Read the docs</span>
<a href="http://django-oscar.readthedocs.org/en/latest/" title="Read the docs">Go!</a>
</div>
</div>

This file was deleted.

This file was deleted.

This file was deleted.

BIN +581 Bytes favicon.ico
Binary file not shown.
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Binary file not shown.
Binary file not shown.

This file was deleted.

This file was deleted.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Binary file not shown.

This file was deleted.

Binary file not shown.
Deleted file not rendered
Binary file not shown.
Binary file not shown.
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Binary file not shown.
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Binary file not shown.
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Binary file not shown.
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN -10.9 KB img/bgd.jpg
Deleted file not rendered
BIN -24.1 KB img/featured_bgd.png
Deleted file not rendered
BIN -11.1 KB img/nav_bgd.jpg
Deleted file not rendered
BIN -11.1 KB img/oscar.png
Deleted file not rendered
BIN -4.04 KB img/ribbon.gif
Deleted file not rendered
BIN -10.7 KB img/ribbon.png
Deleted file not rendered
BIN -137 Bytes img/scissors.gif
Deleted file not rendered
BIN -3.23 KB img/scissors.png
Deleted file not rendered
BIN -382 Bytes img/shopping_cart.gif
Deleted file not rendered
BIN -3.71 KB img/shopping_cart.png
Deleted file not rendered
BIN -2.99 KB img/star.png
Deleted file not rendered
@@ -1,166 +1,85 @@
---
layout: default
title: Oscar - Domain-driven e-commerce for Django
container_class: home
---
<section id="synopsis" class="body">
<p><span class="synopsis">Django-Oscar is an e-commerce framework for <a href="https://www.djangoproject.com/">Django</a>, designed
to support <a href="http://en.wikipedia.org/wiki/Domain-driven_design">domain-driven design</a>.</span></p>
</span></p>

<p>Oscar was built from the ground up to make very few assumptions about
your domain, allowing virtually any part of the framework to be extended
and customised. In this way, your domain can be accurately modelled -
complex business rules can be captured in an elegant and cohesive way.</p>

<p>For a developer, the key features are:</p>
<ul>
<li>An extensible core - any class can be overridden, replaced and extended. This is
the key feature that allows any domain to be captured accurately in the codebase - no work-arounds!</li>
<li>A well-designed set of models built on the experience of many e-commerce projects, both large and small.</li>
<li><a href="http://django-oscar.readthedocs.org/">Comprehensive documentation</a> including recipes for solving common problems.</li>
<li>Extensive test suite.</li>
</ul>

<p>The core of oscar is deliberately kept lean. The key features that oscar ships with are:</p>
<h1 class="main"><span>Oscar is an <em>open-source ecommerce framework for Django.</em></span></h1>
<div class="row buttons clearfix">
<div class="panel bg-5">
<p>Oscar was built from the ground up to make very few assumptions about your project, allowing virtually any part of the framework to be extended and customised. In this way, complex business rules can be solved in an elegant and cohesive way.</p>
</div>
<ul>
<li>A range of merchandising blocks for promoting your products throughout your site. This
can easily be added to or extended.</li>
<li>Highly sophisticated offers and vouchers system, supporting virtually any offer type
you can think of.</li>
<li>A comprehensive dashboard for managing products, orders, offers, vouchers and merchandising.</li>
<li>Support for split-payment orders, complicated order fulfilment pipelines, anonymous checkout.</li>
<li><a href="http://sandbox.oscar.tangentlabs.co.uk" class="bg-1" title="Try the demo store">Try the demo store</a></li>
<li><a href="http://github.com/tangentlabs/django-oscar/" class="bg-2" title="View the source code">View the source code</a></li>
<li><a href="http://django-oscar.readthedocs.org/en/latest/" class="bg-3" title="Read the documentation">Read the documentation</a></li>
</ul>

<p>The key feature of oscar is that it is easy to extend and implement your business rules
in a clean, cohesive way. For example, here are a few of the requirements that have been
developed on top of oscar:</p>

<ul>
<li>A checkout that allows a single order to be paid by up to 9 different payment sources, using multiple
payment partners.</li>
<li>Sales representatives are able to place orders on behalf of their customers, using
allocated budgets, managed within the system</li>
<li>Integration with a series of SAP webservices to provide catalogue and inventory updates</li>
<li>Handling of a catalogue of around 15 million products, with stock provided by a range of
international partners. Stock and biblio updates happening continuous using a Celery-driven backend.</li>
<li>Sophisticated access-control rules governing which customers can see which products.</li>
</ul>

<p>Django-Oscar was created by <a href="http://codeinthehole.com">David Winterbottom</a> (<a
href="https://twitter.com/codeinthehole">@codeinthehole</a>), and is
developed and maintained by <a href="http://www.tangentlabs.co.uk/">Tangent Labs</a>,
a London-based digital agency. It is used in production around the world to sell products
from beer mats to iPads.</p>
<hr />
</section>

<section id="takeapeek" class="body">
<h1>Take a peek</h1>
<p>Oscar ships with a sample shop that you can have up and running in
two minutes. Note that you need to have <a href="http://www.pip-installer.org/en/latest/index.html">pip</a> and
<code>libjpeg</code>.</p>

<p>1. Create a virtual environment and install oscar:</p>
<code class="block">mkvirtualenv oscar
git clone git://github.com/tangentlabs/django-oscar.git
cd django-oscar
python setup.py develop</code>
<p>We use the version from Github rather than PyPi as the official package doesn't
contain the templates and sample data used in the sample shop.</p>
<p>2. Create the database (defaults to using SQLite) and import sample products and images.</p>
<code class="block">cd sandbox
./manage.py syncdb --noinput --settings=settings_simple
./manage.py migrate --settings=settings_simple
./manage.py oscar_import_catalogue data/books-catalogue.csv --settings=settings_simple
./manage.py oscar_import_catalogue_images data/books-images.tar.gz --settings=settings_simple
./manage.py loaddata countries.json fixtures/pages.json --settings=settings_simple</code>
<p>Now run Django's server:</p>
<code class="block">./manage.py runserver --settings=settings_simple</code>
<p>and you can browse the shop at <a href="http://127.0.0.1:8000">http://127.0.0.1:8000</a>.</p>
<p>The sample shop is a vanilla install of oscar - nothing is extended or customised - what you see
is just the core functionality. Hence many domain-specific features, such as shipping charges
and payment methods, are not specified. For a real project with its own business logic, oscar
makes it easy to extend and customise its core to meet the requirements of your domain.
<hr />
</section>

<section id="divein" class="body">
<h1>Dive in</h1>
<p>To use oscar on a real project, it's best to install from PyPi</p>
<code class="block">pip install django-oscar</code>
<p>and use the guides in the <a href="http://django-oscar.readthedocs.org/">documentation</a> on how to customise oscar to suit
your domain.</p>
<hr />
</section>

<section id="extensions" class="body">
<h1>Extensions</h1>
<p>The following libraries complement and extend oscar:</p>
<ul>
<li><a href="https://github.com/tangentlabs/django-oscar-datacash">django-oscar-datacash</a> - integration with the payment gateway, DataCash</li>
<li><a href="https://github.com/tangentlabs/django-oscar-paypal">django-oscar-paypal</a> - integration with PayPal</li>
<li><a href="https://github.com/tangentlabs/django-oscar-gocardless">django-oscar-gocardless</a> - integration with the GoCardless service</li>
</ul>
<p>More to come soon!</p>
<hr />
</section>

<section id="news" class="body">
<h1>News</h1>
{% if site.posts != empty %}
<ol id="posts_list" class="hfeed">
{% for post in site.posts %}
{% capture post_url %}{{ post.url }}{% endcapture %}
<li>
<article class="hentry">
<header>
<h2 class="entry_title">
<a href="{{ post_url }}" rel="bookmark" title="Permalink to {{ post.title }}">{{ post.title }}</a>
</h2>
</header>
<abbr class="published" title="{{ post.date }}">{{ post.date | date_to_string }}</abbr>
<!--
<address class="vcard author">
Posted by <a class="author" href="#">{author}</a>
</address>
-->
<div class="entry_content">
<p>{{ post.content | strip_html | truncatewords:"30" }} <a href="{{ post_url }}">Read More &raquo;</a></p>
</div>
</article>
</li>
{% endfor %}
</ol>
{% endif %}
<p>For micro-updates, follow <a href="https://twitter.com/codeinthehole">@codeinthehole</a> on twitter.
Mailing list and IRC to come.</p>
<hr />
</section>

<section id="roadmap" class="body">
<h1>Roadmap</h1>
<p>We're currently working the following features:</p>
</div>
<div class="row panels clearfix">
<div class="panel bg-5">
<h1>Why choose Oscar:</h1>
<ul>
<li>An extensible core - any class can be overridden, replaced and extended. </li>
<li>This is the key feature that allows any project to be captured accurately in the codebase - no work-arounds!</li>
<li>A well-designed set of models built on the experience of many e-commerce projects, both large and small.</li>
<li>Comprehensive documentation including recipes for solving common problems.</li>
<li>Extensive test suite.</li>
</ul>
</div>
<div class="panel bg-5">
<h1>Problems Oscar is already solving:</h1>
<ul>
<li>A checkout that allows a single order to be paid by up to 9 different payment sources, using multiple payment partners.</li>
<li>Sales representatives are able to place orders on behalf of their customers, using allocated budgets, managed within the system.</li>
<li>Integration with a series of SAP webservices to provide catalogue and inventory updates.</li>
<li>Handling of a catalogue of around 15 million products, with stock provided by a range of international partners. Stock and biblio updates happening continuous using a Celery-driven backend.</li>
<li>Sophisticated access-control rules governing which customers can see which products.</li>
<li>Manages a 13 million catalogue supported by 100+ suppliers for a single project.</li>
</ul>
</div>
</div>
<aside class="row clearfix">
<img src="assets/images/ribbon.png" alt="Whats New?" />
<hgroup>
<h1>Roadmap</h1>
<h2>We're currently working<br>on the following features:</h2>
</hgroup>
<ul>
<li>A comprehensive dashboard including product, offer, order and content management.</li>
<li>A new extension, django-oscar-bootstrap - A Vagrant-backed project which provides a fully set
up virtual machine, ready to run a django-oscar site.</li>
<li>A new extension, django-oscar-bootstrap - A Vagrant-backed project which provides a fully set up virtual machine, ready to run a django-oscar site.</li>
</ul>
<hr />
</section>

<section id="contributing" class="body">
<h1>Contributing</h1>
<p>The source code can be <a href="https://github.com/tangentlabs/django-oscar">found on Github</a>.</p>
<p>First install oscar as <a href="#takeapeek">specified above</a>. You then need to install the
testing requirements.</p>
<code class="block">pip install -r requirements.txt</code>
<p>The test suite can be run using:</p>
<code class="block">./run_tests.py</code>
<p>Generate a HTML coverage report (in htmlcov/index.html) using</p>
<code class="block">./run_tests.py --coverage</code>
<p>To report an issue, use the <a href="https://github.com/tangentlabs/django-oscar/issues">issue tracker</a></p>
</section>




<a href="roadmap.html" title="See the full roadmap" class="bg-2">See the full roadmap</a>
</aside>
<footer>
<div id="ticker" class="row bg-2">
<div id='ticker1' class="ticker">
<ul>
<li><span class="triangle-isosceles right">Watchers</span>217</li>
<li><span class="triangle-isosceles right">Forks</span>54</li>
<li><span class="triangle-isosceles right">Downloads from PyPI</span>13707</li>
<li><span class="triangle-isosceles right">Contributors</span>32</li>
<li><span class="triangle-isosceles right">Commits on master</span>7045</li>
<li><span class="triangle-isosceles right">Pull requests</span>99</li>
<li><span class="triangle-isosceles right">Mailing list topics</span>4</li>
<li><span class="triangle-isosceles right">Number of projects in production</span>3</li>
<li><span class="triangle-isosceles right">Number of products</span>12,274,631</li>
<li><span class="triangle-isosceles right">Number of orders processed</span>90928</li>
<li><span class="triangle-isosceles right">Total revenue processed</span>&pound;2m+</li>
</ul>
</div>
</div>
<div class="logos-row clearfix">
<div class="logos">
<h1>Using Oscar:</h1>
<img src="assets/images/logos1.jpg" alt="" />
</div>
<div class="logos">
<h1>Extensions:</h1>
<img src="assets/images/logos2.jpg" alt="" />
</div>
<div class="logos">
<h1>Integrations:</h1>
<img src="assets/images/logos3.jpg" alt="" />
</div>
</div>
</footer>
@@ -0,0 +1,65 @@
---
layout: default
title: Blog / Oscar - Domain-driven e-commerce for Django
container_class: roadmap
---
<h1 class="main"><span><em>Welcome to the Oscar Framework Roadmap!</em> Here you will find</span> <span>a quick look at our product priorities over the next 12 months.</span></h1>
<!--
<div class="row priority-levels clearfix">
<h1>Filter:</h1>
<ul>
<li class="planned" title="Filter: Planned"><span class="triangle-isosceles right">Planned</span></li>
<li class="progress" title="Filter: In Progress"><span class="triangle-isosceles right">In Progress</span></li>
<li class="complete" title="Filter: Completed"><span class="triangle-isosceles right">Completed</span></li>
<li class="voting" title="Filter: Voting Order"><span class="triangle-isosceles right">Voting Order</span></li>
</ul>
</div>
-->
<div class="row priority planned clearfix">
<h1>Search refactor</h1>
<div class="status"><a class="planned bg-6" title="Planned">Planned</a></div>
<p>Oscar's search app will be rewritten to support faceting and autocomplete as standard.</p>
<!--
<a href="mailto:aaa@aaa.com?subject=Vote%20Now" title="Vote Now">Vote Now</a>
<div class="meter triangle-isosceles right">
<span class="progress triangle-isosceles right" style="width: 45%;">45 votes</span>
</div>
<a href="mailto:aaa@aaa.com?subject=Volunteer" title="Volunteer"></a>
-->
</div>

<div class="row priority progress clearfix">
<h1>Payflow Pro support for PayPal</h1>
<div class="status">
<a class="progress bg-8" title="In Progress">In Progress</a>
<span class="triangle-isosceles right">75%</span>
</div>
<p>Oscar's PayPal extension is being expanded to support Payflow Pro. This allows PayPal to be treated as a payment gateway without
requiring the customer to be redirected to the PayPal site.</p>
</div>

<div class="row priority progress clearfix">
<h1>GoCardless extension</h1>
<div class="status">
<a class="progress bg-8" title="In Progress">In Progress</a>
<span class="triangle-isosceles right">60%</span>
</div>
<p>A new Oscar extension is in preparation that integrates with the GoCardless payment gateway.</p>
</div>

<div class="row priority progress clearfix">
<h1>Improved demo site</h1>
<div class="status">
<a class="progress bg-8" title="In Progress">In Progress</a>
<span class="triangle-isosceles right">30%</span>
</div>
<p>The current demo site is a vanilla build of Oscar's master branch. A better demo site is in preparation that
demonstrates handling of a range of product types and has a fully fleshed out checkout.</p>
</div>

<div class="row priority complete clearfix">
<h1>Digital product support</h1>
<div class="status"><a class="complete bg-7" title="Completed">Completed</a></div>
<p>Oscar 0.3 will include better support for digital products, allowing purchasing and checkout
to be streamlined.</p>
</div>