Skip to content

Commit

Permalink
parkstay: split profile update functionality into new API
Browse files Browse the repository at this point in the history
  • Loading branch information
Scott Percival committed Jan 16, 2018
1 parent 68a5f07 commit 44e5433
Show file tree
Hide file tree
Showing 5 changed files with 439 additions and 8 deletions.
87 changes: 82 additions & 5 deletions parkstay/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@
UserAddressSerializer,
ContactSerializer as UserContactSerializer,
PersonalSerializer,
PhoneSerializer,
OracleSerializer,
BookingHistorySerializer
)
Expand Down Expand Up @@ -2066,7 +2067,7 @@ def list(self, request, *args, **kwargs):
serializer = self.get_serializer(queryset,many=True)
return Response(serializer.data)

@detail_route(methods=['POST',],permission_classes=[])
@detail_route(methods=['POST',])
def update_personal(self, request, *args, **kwargs):
try:
instance = self.get_object()
Expand All @@ -2085,7 +2086,7 @@ def update_personal(self, request, *args, **kwargs):
print(traceback.print_exc())
raise serializers.ValidationError(str(e))

@detail_route(methods=['POST',],permission_classes=[])
@detail_route(methods=['POST',])
def update_contact(self, request, *args, **kwargs):
try:
instance = self.get_object()
Expand All @@ -2104,7 +2105,7 @@ def update_contact(self, request, *args, **kwargs):
print(traceback.print_exc())
raise serializers.ValidationError(str(e))

@detail_route(methods=['POST',],permission_classes=[])
@detail_route(methods=['POST',])
def update_address(self, request, *args, **kwargs):
try:
instance = self.get_object()
Expand Down Expand Up @@ -2262,7 +2263,7 @@ def get(self,request,format=None):

class GetProfile(views.APIView):
renderer_classes = [JSONRenderer,]
permission_classes = []
permission_classes = [IsAuthenticated]
def get(self, request, format=None):
# Check if the user has any address and set to residential address
user = request.user
Expand All @@ -2272,9 +2273,85 @@ def get(self, request, format=None):
serializer = UserSerializer(request.user)
return Response(serializer.data)


class UpdateProfilePersonal(views.APIView):
renderer_classes = [JSONRenderer,]
permission_classes = [IsAuthenticated]

def post(self, request, *args, **kwargs):
try:
instance = request.user
serializer = PersonalSerializer(instance,data=request.data)
serializer.is_valid(raise_exception=True)
instance = serializer.save()
serializer = UserSerializer(instance)
return Response(serializer.data);
except serializers.ValidationError:
print(traceback.print_exc())
raise
except ValidationError as e:
print(traceback.print_exc())
raise serializers.ValidationError(repr(e.error_dict))
except Exception as e:
print(traceback.print_exc())
raise serializers.ValidationError(str(e))

class UpdateProfileContact(views.APIView):
renderer_classes = [JSONRenderer,]
permission_classes = [IsAuthenticated]

def post(self, request, *args, **kwargs):
try:
instance = request.user
serializer = PhoneSerializer(instance,data=request.data)
serializer.is_valid(raise_exception=True)
instance = serializer.save()
serializer = UserSerializer(instance)
return Response(serializer.data);
except serializers.ValidationError:
print(traceback.print_exc())
raise
except ValidationError as e:
print(traceback.print_exc())
raise serializers.ValidationError(repr(e.error_dict))
except Exception as e:
print(traceback.print_exc())
raise serializers.ValidationError(str(e))

class UpdateProfileAddress(views.APIView):
renderer_classes = [JSONRenderer,]
permission_classes = [IsAuthenticated]

def post(self, request, *args, **kwargs):
try:
instance = request.user
serializer = UserAddressSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
address, created = Address.objects.get_or_create(
line1 = serializer.validated_data.get('line1'),
locality = serializer.validated_data.get('locality'),
state = serializer.validated_data.get('state'),
country = serializer.validated_data.get('country'),
postcode = serializer.validated_data.get('postcode'),
user = instance
)
instance.residential_address = address
instance.save()
serializer = UserSerializer(instance)
return Response(serializer.data);
except serializers.ValidationError:
print(traceback.print_exc())
raise
except ValidationError as e:
print(traceback.print_exc())
raise serializers.ValidationError(repr(e.error_dict))
except Exception as e:
print(traceback.print_exc())
raise serializers.ValidationError(str(e))


class OracleJob(views.APIView):
renderer_classes = [JSONRenderer,]
#permission_classes = []
def get(self, request, format=None):
try:
data = {
Expand Down
15 changes: 15 additions & 0 deletions parkstay/serialisers.py
Original file line number Diff line number Diff line change
Expand Up @@ -715,6 +715,21 @@ class Meta:
'first_name',
)

class PhoneSerializer(serializers.ModelSerializer):
class Meta:
model = EmailUser
fields = (
'id',
'phone_number',
'mobile_number',
)

def validate(self, obj):
if not obj.get('phone_number') and not obj.get('mobile_number'):
raise serializers.ValidationError('You must provide a mobile/phone number')
return obj


class ContactSerializer(serializers.ModelSerializer):
class Meta:
model = EmailUser
Expand Down
Loading

0 comments on commit 44e5433

Please sign in to comment.