diff --git a/api/serializers.py b/api/serializers.py index 8552537c..53596468 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals from rest_framework import serializers -from core.models import Baby, DiaperChange, Feeding, Sleep, TummyTime +from core.models import Baby, DiaperChange, Feeding, Note, Sleep, TummyTime class BabySerializer(serializers.HyperlinkedModelSerializer): @@ -24,6 +24,12 @@ class FeedingSerializer(serializers.HyperlinkedModelSerializer): fields = ('baby', 'start', 'end', 'duration', 'type', 'method') +class NoteSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Note + fields = ('baby', 'note', 'time') + + class SleepSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Sleep diff --git a/api/urls.py b/api/urls.py index 20278b49..cd5cac93 100644 --- a/api/urls.py +++ b/api/urls.py @@ -2,12 +2,13 @@ from django.conf.urls import url, include from rest_framework import routers from .views import (BabyViewSet, DiaperChangeViewSet, FeedingViewSet, - SleepViewSet, TummyTimeViewSet) + NoteViewSet, SleepViewSet, TummyTimeViewSet) router = routers.DefaultRouter() router.register(r'babies', BabyViewSet) router.register(r'diaper-changes', DiaperChangeViewSet) router.register(r'feedings', FeedingViewSet) +router.register(r'notes', NoteViewSet) router.register(r'sleep', SleepViewSet) router.register(r'tummy-times', TummyTimeViewSet) diff --git a/api/views.py b/api/views.py index 1af49d46..333da098 100644 --- a/api/views.py +++ b/api/views.py @@ -3,10 +3,10 @@ from __future__ import unicode_literals from rest_framework import viewsets -from core.models import Baby, DiaperChange, Feeding, Sleep, TummyTime +from core.models import Baby, DiaperChange, Feeding, Note, Sleep, TummyTime from core.utils import filter_by_params from .serializers import (BabySerializer, DiaperChangeSerializer, - FeedingSerializer, SleepSerializer, + FeedingSerializer, NoteSerializer, SleepSerializer, TummyTimeSerializer,) @@ -37,6 +37,15 @@ class FeedingViewSet(viewsets.ModelViewSet): return filter_by_params(self.request, Feeding, params) +class NoteViewSet(viewsets.ModelViewSet): + queryset = Note.objects.all() + serializer_class = NoteSerializer + + def get_queryset(self): + params = ['baby__last_name'] + return filter_by_params(self.request, Note, params) + + class SleepViewSet(viewsets.ModelViewSet): queryset = Sleep.objects.all() serializer_class = SleepSerializer diff --git a/core/admin.py b/core/admin.py index 701415e9..5e7c6ed0 100644 --- a/core/admin.py +++ b/core/admin.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals from django.contrib import admin -from .models import Baby, DiaperChange, Feeding, Sleep, TummyTime +from .models import Baby, DiaperChange, Feeding, Note, Sleep, TummyTime @admin.register(Baby) @@ -27,6 +27,13 @@ class FeedingAdmin(admin.ModelAdmin): search_fields = ('baby__first_name', 'baby__last_name', 'type', 'method',) +@admin.register(Note) +class NoteAdmin(admin.ModelAdmin): + list_display = ('time', 'baby', 'note',) + list_filter = ('baby',) + search_fields = ('baby__last_name',) + + @admin.register(Sleep) class SleepAdmin(admin.ModelAdmin): list_display = ('start', 'end', 'duration', 'baby',) diff --git a/core/models.py b/core/models.py index 399a72f8..f36c2456 100644 --- a/core/models.py +++ b/core/models.py @@ -72,6 +72,21 @@ class Feeding(models.Model): return duration_string(self.start, self.end) +class Note(models.Model): + baby = models.ForeignKey('Baby', related_name='note') + note = models.TextField() + time = models.DateTimeField(auto_now=True) + + objects = models.Manager() + + class Meta: + default_permissions = ('view', 'add', 'change', 'delete') + ordering = ['-time'] + + def __str__(self): + return 'Note about {} on {}'.format(self.baby, self.time.date()) + + class Sleep(models.Model): baby = models.ForeignKey('Baby', related_name='sleep') start = models.DateTimeField(blank=False, null=False)