Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Hunter T Jozwiak
whats-open
Commits
9bd6df09
Verified
Commit
9bd6df09
authored
Oct 07, 2017
by
Kunal Sarkhel
Browse files
Add Report model, viewset, route, and serializer
parent
de9ef825
Changes
4
Hide whitespace changes
Inline
Side-by-side
whats-open/api/models.py
View file @
9bd6df09
...
...
@@ -12,6 +12,7 @@ from __future__ import (absolute_import, division, print_function,
# Python stdlib Imports
import
datetime
import
uuid
# Django Imports
from
django.db
import
models
...
...
@@ -376,3 +377,28 @@ class Alert(TimeStampedModel):
String representation of an Alert object.
"""
return
"%s"
%
(
self
.
message
)
class
Report
(
TimeStampedModel
):
# DeviceID helps us identify which device sent us the request. This will help identify fraudulent reports.
deviceId
=
models
.
UUIDField
(
default
=
uuid
.
uuid4
,
editable
=
False
)
# The platform the report was submitted from
PLATFORM_CHOICES
=
(
(
'web'
,
'Web'
),
(
'ios'
,
'iOS'
),
(
'android'
,
'Android'
),
(
'alexa'
,
'Alexa'
),
(
'ghome'
,
'Google Home'
),
(
'other'
,
'Other'
),
)
platform
=
models
.
CharField
(
max_length
=
15
,
default
=
'web'
,
choices
=
PLATFORM_CHOICES
)
# Which facility has incorrect hours?
facility
=
models
.
ForeignKey
(
'Facility'
,
related_name
=
'facilities'
)
def
__str__
(
self
):
"""
:return: string representation of a report object
"""
return
"Report: Facility={0}"
.
format
(
self
.
facility
)
whats-open/api/serializers.py
View file @
9bd6df09
...
...
@@ -11,7 +11,7 @@ from __future__ import (absolute_import, division, print_function,
unicode_literals
)
# App Imports
from
.models
import
Category
,
Facility
,
Schedule
,
OpenTime
,
Location
,
Alert
from
.models
import
Category
,
Facility
,
Schedule
,
OpenTime
,
Location
,
Alert
,
Report
# Other Imports
from
rest_framework
import
serializers
...
...
@@ -98,3 +98,22 @@ class FacilitySerializer(serializers.HyperlinkedModelSerializer):
'facility_product_tags'
,
'tapingo_url'
,
'main_schedule'
,
'special_schedules'
,
'modified'
,
)
class
ReportSerializer
(
serializers
.
HyperlinkedModelSerializer
):
"""
Serializer for the Report model.
From the docs:
The HyperlinkedModelSerializer class is similar to the ModelSerializer
class except that it uses hyperlinks to represent relationships, rather
than primary keys.
http://www.django-rest-framework.org/api-guide/serializers/#hyperlinkedmodelserializer
"""
# Append a serialized Category object
facility
=
FacilitySerializer
(
many
=
False
,
read_only
=
True
)
class
Meta
:
model
=
Report
fields
=
(
'deviceId'
,
'platform'
,
'facility'
)
whats-open/api/urls.py
View file @
9bd6df09
...
...
@@ -15,7 +15,7 @@ from django.views.generic.base import RedirectView
# App Imports
from
.views
import
(
CategoryViewSet
,
FacilityViewSet
,
ScheduleViewSet
,
LocationViewSet
,
AlertViewSet
)
LocationViewSet
,
AlertViewSet
,
ReportViewSet
)
# Other Imports
from
rest_framework.routers
import
DefaultRouter
...
...
@@ -29,6 +29,7 @@ ROUTER.register(r'categories', CategoryViewSet, 'category')
ROUTER
.
register
(
r
'facilities'
,
FacilityViewSet
,
'facility'
)
ROUTER
.
register
(
r
'locations'
,
LocationViewSet
,
'location'
)
ROUTER
.
register
(
r
'schedules'
,
ScheduleViewSet
,
'schedule'
)
ROUTER
.
register
(
r
'reports'
,
ReportViewSet
,
'report'
)
urlpatterns
=
[
# / - Default route
...
...
whats-open/api/views.py
View file @
9bd6df09
...
...
@@ -14,10 +14,11 @@ from __future__ import (absolute_import, division, print_function,
import
datetime
# App Imports
from
.models
import
Facility
,
OpenTime
,
Category
,
Schedule
,
Location
,
Alert
from
.models
import
Facility
,
OpenTime
,
Category
,
Schedule
,
Location
,
Alert
,
Report
from
.serializers
import
(
CategorySerializer
,
FacilitySerializer
,
ScheduleSerializer
,
OpenTimeSerializer
,
LocationSerializer
,
AlertSerializer
)
LocationSerializer
,
AlertSerializer
,
ReportSerializer
)
# Other Imports
from
rest_framework
import
viewsets
,
filters
...
...
@@ -531,3 +532,19 @@ class OpenTimeViewSet(viewsets.ModelViewSet):
the API.
"""
return
OpenTime
.
objects
.
all
()
class
ReportViewSet
(
viewsets
.
ModelViewSet
):
"""
Represents a report of incorrect hours.
"""
# Associate a serializer with the ViewSet
serializer_class
=
ReportSerializer
def
get_queryset
(
self
):
"""
Handle incoming GET requests and enumerate objects that get returned by
the API.
"""
return
Report
.
objects
.
all
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment