diff --git a/README.md b/README.md index 3594520..ba5cdc3 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ Modify your settings.py ... 'django_countries', 'tabbed_admin', + 'rest_framework', # since v0.19.3 'driver27' ] diff --git a/README.rst b/README.rst index fa5f11b..c1bbe07 100644 --- a/README.rst +++ b/README.rst @@ -17,6 +17,7 @@ Modify your settings.py ... 'django_countries', 'tabbed_admin', + 'rest_framework', # since v0.19.3 'driver27' ] diff --git a/demo/dr27_demo/settings.py b/demo/dr27_demo/settings.py index cdcaf21..3180697 100644 --- a/demo/dr27_demo/settings.py +++ b/demo/dr27_demo/settings.py @@ -40,6 +40,7 @@ 'django.contrib.staticfiles', 'django_countries', 'tabbed_admin', + 'rest_framework', 'driver27' ] diff --git a/driver27/api.py b/driver27/api.py new file mode 100644 index 0000000..5538150 --- /dev/null +++ b/driver27/api.py @@ -0,0 +1,35 @@ +from .models import Competition, Season +from rest_framework import routers, serializers, viewsets +from django_countries.serializer_fields import CountryField + + +class SeasonSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Season + fields = ('year', 'competition', 'round', 'punctuation') + + +# ViewSets define the view behavior. +class SeasonViewSet(viewsets.ModelViewSet): + queryset = Season.objects.all() + serializer_class = SeasonSerializer + + +class CompetitionSerializer(serializers.HyperlinkedModelSerializer): + # https://github.com/SmileyChris/django-countries/issues/106 + country = CountryField() + + class Meta: + model = Competition + fields = ('name', 'full_name', 'country', 'slug') + + +# ViewSets define the view behavior. +class CompetitionViewSet(viewsets.ModelViewSet): + queryset = Competition.objects.all() + serializer_class = CompetitionSerializer + +# Routers provide an easy way of automatically determining the URL conf. +router = routers.DefaultRouter() +router.register(r'competitions', CompetitionViewSet) +router.register(r'seasons', SeasonViewSet) diff --git a/driver27/urls/__init__.py b/driver27/urls/__init__.py index 975be98..6626b56 100644 --- a/driver27/urls/__init__.py +++ b/driver27/urls/__init__.py @@ -1,9 +1,14 @@ from django.conf.urls import url, include -from driver27 import views +from .. import views +from ..api import router urlpatterns = [ url(r'^$', views.competition_view, name='competition-list'), + url(r'^api/auth/', include('rest_framework.urls')), + url(r'^api/', include(router.urls)), url(r'^(?P[-\w\d]+)$', views.competition_view, name='competition-view'), url(r'^(?P[-\w\d]+)/(?P\d+)/', include('driver27.urls.season')), + + ] \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 0229b71..bdbaa3f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,4 @@ django-tabbed-admin python-slugify tox django-exclusivebooleanfield +djangorestframework diff --git a/setup.py b/setup.py index 7e8ca9f..dfdae6d 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ setup( name='django-driver27', - version='0.19.2.1', + version='0.19.3x', include_package_data=True, packages=find_packages(), url='https://github.com/SRJ9/django-driver27.git',