Part API now hyperlinked

This commit is contained in:
Oliver Walters 2017-04-15 00:10:35 +10:00
parent 9e287d85d8
commit f7107008f0
3 changed files with 22 additions and 38 deletions

View File

@ -17,14 +17,14 @@ class PartParameterSerializer(serializers.ModelSerializer):
'units')
class PartSerializer(serializers.ModelSerializer):
class PartSerializer(serializers.HyperlinkedModelSerializer):
""" Serializer for complete detail information of a part.
Used when displaying all details of a single component.
"""
class Meta:
model = Part
fields = ('pk',
fields = ('url',
'name',
'IPN',
'description',
@ -32,21 +32,15 @@ class PartSerializer(serializers.ModelSerializer):
'stock')
class PartCategorySerializer(serializers.ModelSerializer):
children = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
parts = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class PartCategorySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = PartCategory
fields = ('pk',
fields = ('url',
'name',
'description',
'parent',
'path',
'children',
'parts')
'path')
class PartTemplateSerializer(serializers.ModelSerializer):

View File

@ -10,29 +10,29 @@ from . import views
categorypatterns = [
# Part category detail
url(r'^(?P<pk>[0-9]+)/?$', views.PartCategoryDetail.as_view(), name='part-category-detail'),
url(r'^(?P<pk>[0-9]+)/?$', views.PartCategoryDetail.as_view(), name='partcategory-detail'),
# List of top-level categories
url(r'^\?*.*/?$', views.PartCategoryList.as_view(), name='part-category-list'),
url(r'^$', views.PartCategoryList.as_view(), name='part-category-list')
url(r'^\?*.*/?$', views.PartCategoryList.as_view()),
url(r'^$', views.PartCategoryList.as_view())
]
partparampatterns = [
# Detail of a single part parameter
url(r'^(?P<pk>[0-9]+)/?$', views.PartParamDetail.as_view(), name='part-parameter-detail'),
url(r'^(?P<pk>[0-9]+)/?$', views.PartParamDetail.as_view(), name='partparameter-detail'),
# Parameters associated with a particular part
url(r'^\?.*/?$', views.PartParamList.as_view(), name='part-parameter-list'),
url(r'^$', views.PartParamList.as_view(), name='part-parameter-list'),
url(r'^\?.*/?$', views.PartParamList.as_view()),
url(r'^$', views.PartParamList.as_view()),
]
parttemplatepatterns = [
# Detail of a single part field template
url(r'^(?P<pk>[0-9]+)/?$', views.PartTemplateDetail.as_view(), name='part-template-detail'),
url(r'^(?P<pk>[0-9]+)/?$', views.PartTemplateDetail.as_view(), name='partparametertemplate-detail'),
# List all part field templates
url(r'^\?.*/?$', views.PartTemplateList.as_view(), name='part-template-list'),
url(r'^$', views.PartTemplateList.as_view(), name='part-template-list')
url(r'^\?.*/?$', views.PartTemplateList.as_view()),
url(r'^$', views.PartTemplateList.as_view())
]
""" Top-level URL patterns for the Part app:
@ -42,19 +42,19 @@ parttemplatepatterns = [
/part/category -> (refer to categorypatterns)
"""
urlpatterns = [
# Individual part
url(r'^(?P<pk>[0-9]+)/?$', views.PartDetail.as_view(), name='part-detail'),
# Part categories
url(r'^category/', include(categorypatterns)),
# Part parameters
url(r'^parameters/', include(partparampatterns)),
url(r'^parameter/', include(partparampatterns)),
# Part templates
url(r'^templates/', include(parttemplatepatterns)),
url(r'^template/', include(parttemplatepatterns)),
# Individual part
url(r'^(?P<pk>[0-9]+)/?$', views.PartDetail.as_view(), name='part-detail'),
# List parts with optional filters
url(r'^\?.*/?$', views.PartList.as_view(), name='part-list'),
url(r'^$', views.PartList.as_view(), name='part-list'),
url(r'^\?.*/?$', views.PartList.as_view()),
url(r'^$', views.PartList.as_view()),
]

View File

@ -26,20 +26,10 @@ class ProjectSerializer(serializers.HyperlinkedModelSerializer):
class ProjectCategorySerializer(serializers.HyperlinkedModelSerializer):
children = serializers.HyperlinkedRelatedField(many=True,
read_only=True,
view_name='projectcategory-detail')
projects = serializers.HyperlinkedRelatedField(many=True,
read_only=True,
view_name='project-detail')
class Meta:
model = ProjectCategory
fields = ('url',
'name',
'description',
'parent',
'path',
'children',
'projects')
'path')