Search code examples
djangopython-2.7django-shop

django-shop skipping shipping


I'm using django-shop and I don't know how to skip shipping because I don't need it. I tried several methods but don't find an issue.

have someone an idea ?

I tried to copy the flate_rate shipping to do my own but I'm facing a problem no reverse match.

Here is my file :

# -*- coding: utf-8 -*-
from decimal import Decimal
from django.conf.urls import patterns, url
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.utils.translation import ugettext_lazy as _
from shop.util.decorators import on_method, shop_login_required, order_required


class PostShipping(object):
"""
This is just an example of a possible flat-rate shipping module, that
charges a flat rate defined in settings.SHOP_SHIPPING_FLAT_RATE
"""
    url_namespace = 'post'
    backend_name = 'La Poste'
    backend_verbose_name = _('La Poste')

    def __init__(self, shop):
        self.shop = shop  # This is the shop reference, it allows this backend
        # to interact with it in a tidy way (look ma', no imports!)
        self.rate = 0

@on_method(shop_login_required)
@on_method(order_required)
def view_process_order(self, request):
    """
    A simple (not class-based) view to process an order.

    This will be called by the selection view (from the template) to do the
    actual processing of the order (the previous view displayed a summary).

    It calls shop.finished() to go to the next step in the checkout
    process.
    """
    self.shop.add_shipping_costs(self.shop.get_order(request),
                                 'la poste',
                                 Decimal(self.rate))
    return self.shop.finished(self.shop.get_order(request))
    # That's an HttpResponseRedirect

@on_method(shop_login_required)
@on_method(order_required)
def view_display_fees(self, request):
    """
    A simple, normal view that displays a template showing how much the
    shipping will be (it's an example, alright)
    """
    ctx = {}
    ctx.update({'shipping_costs': Decimal(self.rate)})
    return render_to_response('shop/shipping/flat_rate/display_fees.html',
        ctx, context_instance=RequestContext(request))

def get_urls(self):
    urlpatterns = patterns('',
        url(r'^$', self.view_display_fees, name='flat'),
        url(r'^process/$', self.view_process_order, name='flat_process'),
    )
    return urlpatterns

Solution

  • After a glance at the github repo it seems there's no setting to disable shipping. You can however define your own shipping backend to customize things (make shipping pass silently).

    In case you are just selling digital products I would recommend you to write your own code, it's not that hard.