This is an extension for django-oscar that adds support for stores. It provides:
- A store locator page using Google maps for geocoding. It also supports using the browser's location to show the nearest stores.
- Store detail pages including opening hours
- Store groups
- A dashboard for managing stores
It's highly extensible and can be used as a foundation for building sophisticated stores functionality within Oscar sites.
Spatialite is another option although it can be tricky to set up. On Ubuntu, you can do the following:
$ sudo apt-get install spatialite-bin libspatialite3 libgeos++-dev libgdal-dev libproj0
pysqlite python package is also required although it doesn't support C
extensions by default. To work-around this, there are two options:
- Download the package, edit
setup.cfgto enable C extensions and install:
$ pip install pysqlite --no-install $ vim $VIRTUAL_ENV/build/pysqlite/setup.cfg $ pip install pysqlite
- Use a custom branch:
$ pip install git+git://github.com/tinio/pysqlite.git@extension-enabled#egg=pysqlite
First, ensure you are using a spatial database and have django-oscar installed.
INSTALLED_APPS. Now update your root
You also need to download the GeoIP data files and set
GEOIP_PATH to point to the
3577). This is used for distance calculations. See http://spatialreference.org for more details.
STORES_MAX_SEARCH_DISTANCE(default: None). This filters stores in queries by distance. Units can be set using distance object:
from django.contrib.gis.measure import D # Maximal distance of 150 miles STORES_MAX_SEARCH_DISTANCE = D(mi=150) # Maximal distance of 150 kilometers STORES_MAX_SEARCH_DISTANCE = D(km=150)
There is sandbox site within the repo which is a sample Oscar project that uses the stores extension. Set this up with:
$ make sandbox
then fetch the GeoIP files with:
$ make geoip
This loads a fixture which provides a superuser to test the dashboard with:
email: email@example.com username: superuser password: testing
Run tests with:
django-oscar-stores is released under the permissive New BSD license.