From 9817a4ebbac9cf1f20386a7bb4a8bfca7361bc55 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Mon, 19 Jun 2017 00:50:55 +0000 Subject: [PATCH] Refer to Work Type, Price, Management, and Shift by uuid --- caremyway/api/models.py | 5 +++++ caremyway/api/serializers.py | 32 ++++++++++++++++---------------- caremyway/api/views.py | 6 ++++++ 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/caremyway/api/models.py b/caremyway/api/models.py index 78446f5..6b59e2c 100644 --- a/caremyway/api/models.py +++ b/caremyway/api/models.py @@ -1,3 +1,4 @@ +import uuid from django.contrib.auth.models import User from django.db import models from django.core.validators import RegexValidator @@ -26,6 +27,7 @@ class Provider(models.Model): return 'Provider: ' + self.user.username class WorkType(models.Model): + uuid = models.UUIDField(default=uuid.uuid4, editable=False) client = models.ForeignKey(Client, related_name='work_types', on_delete=models.CASCADE) color = models.CharField(max_length=16) label = models.CharField(max_length=100) @@ -35,6 +37,7 @@ class WorkType(models.Model): return 'WorkType: ' + self.label + ' of ' + self.client.user.username class Manage(models.Model): + uuid = models.UUIDField(default=uuid.uuid4, editable=False) client = models.ForeignKey(Client, related_name='employees', on_delete=models.CASCADE) provider = models.ForeignKey(Provider, related_name='employers', on_delete=models.CASCADE) note = models.CharField(max_length=500, blank=True) @@ -45,12 +48,14 @@ class Manage(models.Model): return self.client.user.username + ' manages ' + self.provider.user.username class Price(models.Model): + uuid = models.UUIDField(default=uuid.uuid4, editable=False) management = models.ForeignKey(Manage, related_name='prices', on_delete=models.CASCADE) work_type = models.ForeignKey(WorkType, on_delete=models.CASCADE) amount = models.DecimalField(max_digits=8, decimal_places=2) deleted = models.BooleanField(default=False) class Shift(models.Model): + uuid = models.UUIDField(default=uuid.uuid4, editable=False) price = models.ForeignKey(Price, on_delete=models.CASCADE) set_price = models.DecimalField(max_digits=8, decimal_places=2, null=True) set_date = models.DateField() diff --git a/caremyway/api/serializers.py b/caremyway/api/serializers.py index 95514f8..9372618 100644 --- a/caremyway/api/serializers.py +++ b/caremyway/api/serializers.py @@ -17,7 +17,7 @@ class UserInfoSerializer(serializers.ModelSerializer): class WorkTypeSerializer(serializers.ModelSerializer): class Meta: model = WorkType - fields = ('id', 'color', 'label', 'deleted') + fields = ('uuid', 'color', 'label', 'deleted') read_only_fields =('deleted',) def create(self, validated_data): @@ -25,13 +25,13 @@ class WorkTypeSerializer(serializers.ModelSerializer): return serializers.ModelSerializer.create(self, validated_data) class PriceSerializer(serializers.ModelSerializer): - get_employee_id = serializers.IntegerField(write_only=True) - get_work_type_id = serializers.IntegerField(write_only=True) + get_employee_uuid = serializers.UUIDField(write_only=True) + get_work_type_uuid = serializers.UUIDField(write_only=True) work_type = WorkTypeSerializer(read_only=True) class Meta: model = Price - fields = ('id', 'get_employee_id', 'get_work_type_id', 'work_type', 'amount', 'deleted') + fields = ('uuid', 'get_employee_uuid', 'get_work_type_uuid', 'work_type', 'amount', 'deleted') read_only_fields =('deleted',) depth = 1 @@ -43,11 +43,11 @@ class PriceSerializer(serializers.ModelSerializer): client = user.client manage_objs = Manage.objects.filter(client=client).filter(deleted=False) - employee_id = validated_data.pop('get_employee_id') - employee = get_object_or_404(manage_objs, id=employee_id) + employee_uuid = validated_data.pop('get_employee_uuid') + employee = get_object_or_404(manage_objs, uuid=employee_uuid) worktype_objs = WorkType.objects.filter(client=client).filter(deleted=False) - work_type_id = validated_data.pop('get_work_type_id') - work_type = get_object_or_404(worktype_objs, id=work_type_id) + work_type_uuid = validated_data.pop('get_work_type_uuid') + work_type = get_object_or_404(worktype_objs, uuid=work_type_uuid) if not employee.approved: raise serializers.ValidationError("Employee hasn't approved employment yet.") @@ -76,7 +76,7 @@ class EmployeeSerializer(serializers.ModelSerializer): class Meta: model = Manage - fields = ('id', 'provider', 'provider_email', 'note', 'approved', 'prices', 'deleted') + fields = ('uuid', 'provider', 'provider_email', 'note', 'approved', 'prices', 'deleted') read_only_fields = ('approved', 'deleted') def get_provider(self, obj): @@ -136,7 +136,7 @@ class EmployerSerializer(serializers.ModelSerializer): class Meta: model = Manage - fields = ('id', 'client', 'note', 'approved', 'prices') + fields = ('uuid', 'client', 'note', 'approved', 'prices') read_only_fields = ('note',) def get_client(self, obj): @@ -173,11 +173,11 @@ class UserSerializer(serializers.ModelSerializer): depth = 1 class CShiftSerializer(serializers.ModelSerializer): - get_price_id = serializers.IntegerField(write_only=True) + get_price_uuid = serializers.UUIDField(write_only=True) class Meta: model = Shift - fields = ('id', 'chart', 'get_price_id', 'price', 'set_price', 'set_date', 'set_start', 'set_end', 'actual_start', 'actual_end', 'amount', 'description', 'deleted') + fields = ('uuid', 'chart', 'get_price_uuid', 'price', 'set_price', 'set_date', 'set_start', 'set_end', 'actual_start', 'actual_end', 'amount', 'description', 'deleted') read_only_fields = ('chart', 'price', 'set_price', 'set_date', 'actual_start', 'actual_end', 'amount', 'deleted') def create(self, validated_data): @@ -188,8 +188,8 @@ class CShiftSerializer(serializers.ModelSerializer): client = user.client price_objs = Price.objects.filter(management__client=client).filter(deleted=False) - price_id = validated_data.pop('get_price_id') - price = get_object_or_404(price_objs, id=price_id) + price_uuid = validated_data.pop('get_price_uuid') + price = get_object_or_404(price_objs, uuid=price_uuid) if price.management.deleted: raise serializers.ValidationError("Employment relationship was deleted.") @@ -220,8 +220,8 @@ class PShiftSerializer(serializers.ModelSerializer): class Meta: model = Shift - fields = ('id', 'action', 'chart', 'price', 'set_price', 'set_date', 'set_start', 'set_end', 'actual_start', 'actual_end', 'amount', 'description', 'deleted') - read_only_fields = ('id', 'price', 'set_price', 'set_date', 'set_start', 'set_end', 'actual_start', 'actual_end', 'amount', 'description', 'deleted') + fields = ('uuid', 'action', 'chart', 'price', 'set_price', 'set_date', 'set_start', 'set_end', 'actual_start', 'actual_end', 'amount', 'description', 'deleted') + read_only_fields = ('uuid', 'price', 'set_price', 'set_date', 'set_start', 'set_end', 'actual_start', 'actual_end', 'amount', 'description', 'deleted') def update(self, instance, validated_data): action = validated_data['action'] diff --git a/caremyway/api/views.py b/caremyway/api/views.py index e38cd35..aa73173 100644 --- a/caremyway/api/views.py +++ b/caremyway/api/views.py @@ -48,6 +48,7 @@ class ProviderViewSet(viewsets.ModelViewSet): return Provider.objects.filter(user__username=self.request.user) class WorkTypeViewSet(viewsets.ModelViewSet): + lookup_field = "uuid" serializer_class = WorkTypeSerializer def get_queryset(self): @@ -60,6 +61,7 @@ class WorkTypeViewSet(viewsets.ModelViewSet): return Response(status=status.HTTP_204_NO_CONTENT) class EmployeeViewSet(viewsets.ModelViewSet): + lookup_field = "uuid" serializer_class = EmployeeSerializer def get_queryset(self): @@ -72,6 +74,7 @@ class EmployeeViewSet(viewsets.ModelViewSet): return Response(status=status.HTTP_204_NO_CONTENT) class EmployerViewSet(viewsets.ModelViewSet): + lookup_field = "uuid" serializer_class = EmployerSerializer # Disallow creation and deletions of relationships @@ -81,6 +84,7 @@ class EmployerViewSet(viewsets.ModelViewSet): return Manage.objects.filter(provider__user__username=self.request.user) class PriceViewSet(viewsets.ModelViewSet): + lookup_field = "uuid" serializer_class = PriceSerializer def get_queryset(self): @@ -93,6 +97,7 @@ class PriceViewSet(viewsets.ModelViewSet): return Response(status=status.HTTP_204_NO_CONTENT) class CShiftViewSet(viewsets.ModelViewSet): + lookup_field = "uuid" serializer_class = CShiftSerializer def get_queryset(self): @@ -111,6 +116,7 @@ class CShiftViewSet(viewsets.ModelViewSet): return Response(status=status.HTTP_204_NO_CONTENT) class PShiftViewSet(viewsets.ModelViewSet): + lookup_field = "uuid" serializer_class = PShiftSerializer # Disallow creation and deletions of relationships